[Python-ideas] Runtime assertion with no overhead when not active

Eloi Gaudry Eloi.Gaudry at fft.be
Sat May 5 08:54:25 EDT 2018


I meant avoiding the overhead of the expression evaluation enclosed in the assert itself, not the active/disabled state (that comes at virtually no cost).
ex:
>>> runtime_assert( { i:None for i in range( 10000000 ) } )  

By using the syntax you describe ('boolean and not expr'), you loose all the benefit of the Python grammar:
- self-contained
- able to catch semantic/syntax bugs

ex:
>>> f=1
>>> runtime_assert( f==1 )
>>> runtime_assert( f=1 )
  File "<stdin>", line 1
    runtime_assert( f=1 )
                     ^
SyntaxError: invalid syntax


-----Original Message-----
From: Python-ideas <python-ideas-bounces+eloi.gaudry=fft.be at python.org> On Behalf Of Serhiy Storchaka
Sent: Saturday, May 5, 2018 2:05 PM
To: python-ideas at python.org
Subject: Re: [Python-ideas] Runtime assertion with no overhead when not active

05.05.18 11:04, Eloi Gaudry пише:
>     Briefly, the idea is to add a new assert that can be switch on/off
>     depending on some variable/mechanism at runtime. The whole point of
>     this assert is that it should not bring any overhead when off, i.e.
>     by avoiding evaluating the expression enclosed in the runtime
>     assert. It thus relies on Python grammar.

You should have an overhead for checking if it is switched on/off, isn't? And this overhead is virtually the same as testing the value of the global boolean variable.

> runtime_assert( expr )
> 
> #would result in if expr and runtime_assert_active:
> 
> print RuntimeAssertionError()

How this will be different from

     if debug and not expr:
         print(RuntimeAssertionError())

?

_______________________________________________
Python-ideas mailing list
Python-ideas at python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/


More information about the Python-ideas mailing list