mirror of
https://github.com/python/cpython.git
synced 2025-10-03 05:35:59 +00:00
Clean up byte-compilation code in packaging (#11254 followup).
- Don't use keyword arguments for debug_override; I find it more readable to have a comment explaining that True makes pyc and False pyo than to write out the non-obvious (when you haven’t read the doc) argument name - Move duplicate code from build_py and install_lib into cmd - Remove obsolete verbose argument of util.byte_compile - Remove obsolete passing of -O/-OO to the Python process spawned by util.byte_compile (I’ll remove the whole spawning later, after I write more tests to check the contents of pyc and pyo files; now that byte_compile does not depend on the value of __debug__ in the calling Python, we can call py_compile or compileall directly)
This commit is contained in:
parent
d5d4406c8e
commit
f8361623f0
6 changed files with 57 additions and 78 deletions
|
@ -296,7 +296,7 @@ def strtobool(val):
|
|||
|
||||
|
||||
def byte_compile(py_files, optimize=0, force=False, prefix=None,
|
||||
base_dir=None, verbose=0, dry_run=False, direct=None):
|
||||
base_dir=None, dry_run=False, direct=None):
|
||||
"""Byte-compile a collection of Python source files to either .pyc
|
||||
or .pyo files in a __pycache__ subdirectory.
|
||||
|
||||
|
@ -305,6 +305,9 @@ def byte_compile(py_files, optimize=0, force=False, prefix=None,
|
|||
0 - don't optimize (generate .pyc)
|
||||
1 - normal optimization (like "python -O")
|
||||
2 - extra optimization (like "python -OO")
|
||||
This function is independent from the running Python's -O or -B options;
|
||||
it is fully controlled by the parameters passed in.
|
||||
|
||||
If 'force' is true, all files are recompiled regardless of
|
||||
timestamps.
|
||||
|
||||
|
@ -325,10 +328,9 @@ def byte_compile(py_files, optimize=0, force=False, prefix=None,
|
|||
the source for details). The 'direct' flag is used by the script
|
||||
generated in indirect mode; unless you know what you're doing, leave
|
||||
it set to None.
|
||||
|
||||
This function is independent from the running Python's -O or -B options;
|
||||
it is fully controlled by the parameters passed in.
|
||||
"""
|
||||
# FIXME use compileall + remove direct/indirect shenanigans
|
||||
|
||||
# First, if the caller didn't force us into direct or indirect mode,
|
||||
# figure out which mode we should be in. We take a conservative
|
||||
# approach: choose direct mode *only* if the current interpreter is
|
||||
|
@ -381,15 +383,11 @@ files = [
|
|||
script.write("""
|
||||
byte_compile(files, optimize=%r, force=%r,
|
||||
prefix=%r, base_dir=%r,
|
||||
verbose=%r, dry_run=False,
|
||||
dry_run=False,
|
||||
direct=True)
|
||||
""" % (optimize, force, prefix, base_dir, verbose))
|
||||
""" % (optimize, force, prefix, base_dir))
|
||||
|
||||
cmd = [sys.executable, script_name]
|
||||
if optimize == 1:
|
||||
cmd.insert(1, "-O")
|
||||
elif optimize == 2:
|
||||
cmd.insert(1, "-OO")
|
||||
|
||||
env = os.environ.copy()
|
||||
env['PYTHONPATH'] = os.path.pathsep.join(sys.path)
|
||||
|
@ -415,8 +413,10 @@ byte_compile(files, optimize=%r, force=%r,
|
|||
# Terminology from the py_compile module:
|
||||
# cfile - byte-compiled file
|
||||
# dfile - purported source filename (same as 'file' by default)
|
||||
debug_override = not optimize
|
||||
cfile = imp.cache_from_source(file, debug_override)
|
||||
# The second argument to cache_from_source forces the extension to
|
||||
# be .pyc (if true) or .pyo (if false); without it, the extension
|
||||
# would depend on the calling Python's -O option
|
||||
cfile = imp.cache_from_source(file, not optimize)
|
||||
dfile = file
|
||||
|
||||
if prefix:
|
||||
|
@ -1334,7 +1334,7 @@ def copy_tree(src, dst, preserve_mode=True, preserve_times=True,
|
|||
preserve_symlinks=False, update=False, verbose=True,
|
||||
dry_run=False):
|
||||
# FIXME use of this function is why we get spurious logging message on
|
||||
# stdout when tests run; kill and replace by shuil!
|
||||
# stdout when tests run; kill and replace by shutil!
|
||||
from distutils.file_util import copy_file
|
||||
|
||||
if not dry_run and not os.path.isdir(src):
|
||||
|
@ -1448,8 +1448,7 @@ def encode_multipart(fields, files, boundary=None):
|
|||
|
||||
Returns (content_type: bytes, body: bytes) ready for http.client.HTTP.
|
||||
"""
|
||||
# Taken from
|
||||
# http://code.activestate.com/recipes/146306-http-client-to-post-using-multipartform-data/
|
||||
# Taken from http://code.activestate.com/recipes/146306
|
||||
|
||||
if boundary is None:
|
||||
boundary = b'--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue