From c4cda4369f4b8f33082890d16dfc364a90658ef6 Mon Sep 17 00:00:00 2001 From: Bill Collins Date: Thu, 25 Jul 2019 22:36:58 +0100 Subject: [PATCH] bpo-37641 preserve relative file location in embeddable zip (GH-14884) Previously, pyc files in the embeddable distribution reported their location as /.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 --- PC/layout/main.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/PC/layout/main.py b/PC/layout/main.py index 111f8aad256..fe934bfb1ab 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"))