On Mon, Sep 13, 2021 at 1:37 AM Serhiy Storchaka <storch...@gmail.com> wrote:
>
> 12.09.21 17:28, Guido van Rossum пише:
> > This is cool.
> >
> > AFAIK pytest does something like this. How does your implementation differ?
>
> What pytest does is awesome. I though about implementing it in the
> standard compiler since seen it the first time.
>
> > What is your argument for making this part of the language? Why not a
> > 3rd party library?
>
> It needs a support in the compiler. The condition expression should be
> compiled to keep all immediate results of subexpressions on the stack.
> If the final result is true, immediate results are dropped. If it is
> false, the second argument of assert is evaluated and its value together
> with all immediate results of the first expression, together with
> references to corresponding subexpressions (as strings, ranges or AST
> nodes) are passed to the special handler. That handler can be
> implemented in a third-party library, because formatting and outputting
> a report is a complex task. The default handler can just raise an
> AttributeError.
>

I wonder, could this be simplified a bit, on the assumption that a
well-written assertion shouldn't have a problem with being executed
twice? Instead of keeping all the subexpressions around (a run-time
cost), keep the AST of the expression itself (a compile-time cost).
Then, when the exception is about to be printed to the console,
re-evaluate it and do the display.

ChrisA
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/IXPY4BRCZ3MPSSVBKWFYJGMR6ZHFGCJF/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to