[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

AltStyle によって変換されたページ (->オリジナル) /