On Thu, Jun 14, 2012 at 6:06 AM, Terry Reedy <tjre...@udel.edu> wrote: > On 6/13/2012 2:46 PM, Antoine Pitrou wrote: > >> Not only docstrings, but also asserts. I think running a pyo without -O >> would be a bug. > > > That cat is already out of the bag ;-) > People are doing that now by renaming x.pyo to x.pyc. > Brett claims that it is also easy to do in 3.3 with a custom importer.
Right, but by resorting to either of those approaches, people are clearly doing something that isn't formally supported by the core. Yes, you can do it, and most of the time it will work out OK, but any weird glitches that result are officially *not our problem*. The main reason this matters is that the "__debug__" flag is *supposed* to be process global - if you check it in one place, the answer should be correct for all Python code loaded in the process. If you load a .pyo file into a process running without -O (or a .pyc file into a process running *with* -O), then you have broken that assumption. Because the compiler understands __debug__, and is explicitly free to make optimisations based on the value of that flag at compile time (such as throwing away unreachable branches in if statements or applying constant folding operations), the following code will do different things if loaded from a .pyo file instead of .pyc: print("__debug__ is not a builtin, it is checked at compile time") if __debug__: print("A .pyc file always has __debug__ == True") else: print("A .pyo file always has __debug__ == False") $ ./python -c "import foo" __debug__ is not a builtin, it is checked at compile time A .pyc file always has __debug__ == True $ ./python -O -c "import foo" __debug__ is not a builtin, it is checked at compile time A .pyo file always has __debug__ == False $ ./python __pycache__/foo.cpython-33.pyo __debug__ is not a builtin, it is checked at compile time A .pyo file always has __debug__ == False $ ./python -O __pycache__/foo.cpython-33.pyc __debug__ is not a builtin, it is checked at compile time A .pyc file always has __debug__ == True Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com