New submission from STINNER Victor: Attached patch implements the largest part of the PEP 511:
* add sys.get_code_transformers() and sys.set_code_transformers() * add sys.implementation.optim_tag * add -o command line option setting sys.implementation.optim_tag * modify importlib to use sys.implementation.optim_tag to build .pyc filenames * modify importlib to raise an ImportError when the .pyc file is missing, the .py is available, and the optimizer tag created from code transformers is different than the current sys.implementation.optim_tag * add Lib/test/test_pep511.py: test changes especially bytecode and AST transformers * add a PeepholeOptimizer object created by default for sys.set_code_transformers() * skip the peephole optimizer when -o noopt is used * add sys field to the PyInterpreterState structure: used by _PySys_GetCodeTransformers() to get code transformers * update unit tests to use the optimizer to create the .pyc filename An optimizer tag must contain characters: '.', '-', directory separators or NUL character. Brett Canon proposed to not include the optimizer tag in .pyc filenames if it is "opt" to limit backward incompatible changes. Note: The PEP 511 is under discussion on python-ideas. The patch implements the first version of the PEP, sent to python-ideas, so it doesn't include proposed changes like changing code_transformer() prototype to "def code_transformer(self, code, context)". See also the issue #26100: add test.support.optim_args_from_interpreter_flags(). ---------- files: transformers.patch keywords: patch messages: 258509 nosy: brett.cannon, haypo priority: normal severity: normal status: open title: PEP 511: Add sys.set_code_transformers() type: enhancement versions: Python 3.6 Added file: http://bugs.python.org/file41643/transformers.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue26145> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com