[Python-checkins] bpo-37641 preserve relative file location in embeddable zip (GH-14884)

Miss Islington (bot) webhook-mailer at python.org
Thu Jul 25 17:55:48 EDT 2019


https://github.com/python/cpython/commit/0f211979c29109dcffc3039a24a9d3ecdfd900c9
commit: 0f211979c29109dcffc3039a24a9d3ecdfd900c9
branch: 3.8
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2019-07-25T14:55:43-07:00
summary:

bpo-37641 preserve relative file location in embeddable zip (GH-14884)


Previously, pyc files in the embeddable distribution reported their
location as <build path>/<file stem>.py. This causes a little confusion
when interpreting stack traces as the file is in a (almost certainly)
incorrect location, and lacks the full relative path to Lib (e.g.
email/mime/image.py will only show image.py).

This change preserves the Lib relative location of the source file as a
path so that stack traces are (hopefully) less misleading and more
informative.

Co-Authored-By: Kyle Stanley <aeros167 at gmail.com>
(cherry picked from commit c4cda4369f4b8f33082890d16dfc364a90658ef6)

Co-authored-by: Bill Collins <bilbocollins at gmail.com>

files:
M PC/layout/main.py

diff --git a/PC/layout/main.py b/PC/layout/main.py
index 111f8aad2561..fe934bfb1ab3 100644
--- a/PC/layout/main.py
+++ b/PC/layout/main.py
@@ -287,19 +287,18 @@ def _compile_one_py(src, dest, name, optimize, checked=True):
         log_warning("Failed to compile {}", src)
         return None
 
-
-def _py_temp_compile(src, ns, dest_dir=None, checked=True):
+# name argument added to address bpo-37641
+def _py_temp_compile(src, name, ns, dest_dir=None, checked=True):
     if not ns.precompile or src not in PY_FILES or src.parent in DATA_DIRS:
         return None
-
-    dest = (dest_dir or ns.temp) / (src.stem + ".py")
+    dest = (dest_dir or ns.temp) / (src.stem + ".pyc")
     return _compile_one_py(
-        src, dest.with_suffix(".pyc"), dest, optimize=2, checked=checked
+        src, dest, name, optimize=2, checked=checked
     )
 
 
 def _write_to_zip(zf, dest, src, ns, checked=True):
-    pyc = _py_temp_compile(src, ns, checked=checked)
+    pyc = _py_temp_compile(src, dest, ns, checked=checked)
     if pyc:
         try:
             zf.write(str(pyc), dest.with_suffix(".pyc"))



More information about the Python-checkins mailing list