[Python-checkins] cpython: don't depend on __debug__ because it's baked in at freeze time (issue #16046)
georg.brandl
python-checkins at python.org
Sat Sep 29 09:27:44 CEST 2012
http://hg.python.org/cpython/rev/ff50579241cd
changeset: 79231:ff50579241cd
user: Benjamin Peterson <benjamin at python.org>
date: Tue Sep 25 11:22:59 2012 -0400
summary:
don't depend on __debug__ because it's baked in at freeze time (issue #16046)
files:
Lib/importlib/_bootstrap.py | 17 +-
Misc/NEWS | 2 +
Python/importlib.h | 8533 +++++++++++-----------
3 files changed, 4282 insertions(+), 4270 deletions(-)
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -411,25 +411,21 @@
DEBUG_BYTECODE_SUFFIXES = ['.pyc']
OPTIMIZED_BYTECODE_SUFFIXES = ['.pyo']
-if __debug__:
- BYTECODE_SUFFIXES = DEBUG_BYTECODE_SUFFIXES
-else:
- BYTECODE_SUFFIXES = OPTIMIZED_BYTECODE_SUFFIXES
def cache_from_source(path, debug_override=None):
"""Given the path to a .py file, return the path to its .pyc/.pyo file.
The .py file does not need to exist; this simply returns the path to the
.pyc/.pyo file calculated as if the .py file were imported. The extension
- will be .pyc unless __debug__ is not defined, then it will be .pyo.
+ will be .pyc unless sys.flags.optimize is non-zero, then it will be .pyo.
If debug_override is not None, then it must be a boolean and is taken as
- the value of __debug__ instead.
+ the value of bool(sys.flags.optimize) instead.
If sys.implementation.cache_tag is None then NotImplementedError is raised.
"""
- debug = __debug__ if debug_override is None else debug_override
+ debug = not sys.flags.optimize if debug_override is None else debug_override
if debug:
suffixes = DEBUG_BYTECODE_SUFFIXES
else:
@@ -1688,10 +1684,15 @@
modules, those two modules must be explicitly passed in.
"""
- global _imp, sys
+ global _imp, sys, BYTECODE_SUFFIXES
_imp = _imp_module
sys = sys_module
+ if sys.flags.optimize:
+ BYTECODE_SUFFIXES = OPTIMIZED_BYTECODE_SUFFIXES
+ else:
+ BYTECODE_SUFFIXES = DEBUG_BYTECODE_SUFFIXES
+
for module in (_imp, sys):
if not hasattr(module, '__loader__'):
module.__loader__ = BuiltinImporter
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,8 @@
Core and Builtins
-----------------
+- Issue #16046: Fix loading sourceless legacy .pyo files.
+
Library
-------
diff --git a/Python/importlib.h b/Python/importlib.h
--- a/Python/importlib.h
+++ b/Python/importlib.h
[stripped]
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list