Proposal: runtime validation statement

Ville Vainio ville at
Mon Jul 12 17:22:35 CEST 2004

>>>>> "Paul" == Paul Rubin <> writes:

    Paul> takes care of it, of course, so it's slightly redundant to
    Paul> add a special statement like

    Paul> validate x >= 0, (x, "must not be negative")

    Paul> which works exactly like assert but raises a different
    Paul> exception and is never optimized away.  But the same can be
    Paul> said of the print statement (use sys.stdout.write or a print
    Paul> function instead) and for that matter the addition operator
    Paul> (use "x - (-y)" instead of x+y), the bool type (use 1 and 0
    Paul> instead of True and False), etc.

Yes, and I (and many others, I feel) consider print statement a wart
in the language. Let's not make any more of these... Too bad it's so
widely used it can't be right out deprecated.

    Paul> steering what the common idioms should be.  Using a
    Paul> user-defined function to check input means a couple more
    Paul> program-specific things to remember (the function itself and
    Paul> the exception class it raises), clutters up the code, etc.
    Paul> And so I've come to feel that a "validate" statement (maybe
    Paul> with some different keyword) like the above is in the
    Paul> Pythonic spirit and should be considered for some
    Paul> forthcoming release.

Any specific reason not to make it a builtin function instead of
statement? I wouldn't mind a validation function that could also
verify the data types of the arguments, which could then be used for
code completion assistance and type inference... Since we don't know
when a "real" type declarations happen. Expecting them to hit 2.5 is
probably a bit too optimistic ;-).

def a(x,y):
  validate((x,int), (y,str), x > int(y))

(validate checks every tuple with isinstance(t[0],t[1]), every arg to
validate that is "false" in the pythonic falsehoos sense2 fails the

Before something like that goes "official", help tools and IDEs can't
use the type information.

Ville Vainio

More information about the Python-list mailing list