I should not attempt the perfect stairway to the top of each mountain. Get to the top, then build a staircase if time allows. ---- Python Dynamic Type System idea @constrain(name=str, value=int_between_0_and_100) def foo(name, value): pass def foo(name, value): """ Where: - name (unicode) - value (int): > 0, < 100 """ @alt(foo) def foo(name, coef): """ Where: - name (str) - value (float): > 0 """