[Python-ideas] Repurpose `assert' into a general-purpose check
Petr Viktorin
encukou at gmail.com
Wed Nov 29 17:43:33 EST 2017
On 11/29/2017 08:31 PM, Barry Warsaw wrote:
>
> Nathan Schneider wrote:
>
>> I think it would be interesting to investigate how assert statements are
>> used in the wild. I can think of three kinds of uses:
>
> assert statements are also a form of executable documentation. It says
> something like "I think the internal state of my code must be this way,
> otherwise I don't really understand what I wrote".
>
> Now, maybe you could argue that such use should be enabled
> unconditionally, but I disagree since usually your understanding of the
> state of your code is correct, so the additional checks are unnecessary,
> and people *do* use -O and -OO in practice. And these days it's even
> more practical to do so, given the `opt-*` level of pyc tagging:
>
> % python3 -c "import foo"
> % python3 -O -c "import foo"
> % python3 -OO -c "import foo"
> % ls foo/__pycache__/
> __init__.cpython-36.opt-1.pyc __init__.cpython-36.pyc
> __init__.cpython-36.opt-2.pyc
>
> I also wonder how this would interact with pytest's um, 'hijacking' of
> the assert statement.
Pytest compiles from source, and uses its own cache tags which look like
".cpython-36-PYTEST.pyc".
https://github.com/pytest-dev/pytest/blob/master/_pytest/assertion/rewrite.py
More information about the Python-ideas
mailing list