Skip to content

Commit

Permalink
bpo-37641 preserve relative file location in embeddable zip (pythonGH…
Browse files Browse the repository at this point in the history
…-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@gmail.com>
  • Loading branch information
2 people authored and zooba committed Jul 25, 2019
1 parent 544fa15 commit c4cda43
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions PC/layout/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"))
Expand Down

0 comments on commit c4cda43

Please sign in to comment.