[pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci
This commit is contained in:
pre-commit-ci[bot] 2024-04-13 00:00:18 +00:00
parent 72ad6dc953
commit f4cd1ba0d6
813 changed files with 66015 additions and 58839 deletions

View file

@ -1,25 +1,29 @@
"""setuptools.command.bdist_egg
Build .egg distributions"""
from __future__ import annotations
from distutils.dir_util import remove_tree, mkpath
from distutils import log
from types import CodeType
import sys
import marshal
import os
import re
import sys
import textwrap
import marshal
from sysconfig import get_path
from sysconfig import get_python_version
from types import CodeType
from pkg_resources import get_build_platform, Distribution, ensure_directory
from setuptools.extension import Library
from distutils import log
from distutils.dir_util import mkpath
from distutils.dir_util import remove_tree
from pkg_resources import Distribution
from pkg_resources import ensure_directory
from pkg_resources import get_build_platform
from setuptools import Command
from sysconfig import get_path, get_python_version
from setuptools.extension import Library
def _get_purelib():
return get_path("purelib")
return get_path('purelib')
def strip_module(filename):
@ -60,23 +64,35 @@ class bdist_egg(Command):
description = "create an \"egg\" distribution"
user_options = [
('bdist-dir=', 'b',
"temporary directory for creating the distribution"),
('plat-name=', 'p', "platform name to embed in generated filenames "
"(default: %s)" % get_build_platform()),
('exclude-source-files', None,
"remove all .py files from the generated egg"),
('keep-temp', 'k',
"keep the pseudo-installation tree around after " +
"creating the distribution archive"),
('dist-dir=', 'd',
"directory to put final built distributions in"),
('skip-build', None,
"skip rebuilding everything (for testing/debugging)"),
(
'bdist-dir=', 'b',
'temporary directory for creating the distribution',
),
(
'plat-name=', 'p', 'platform name to embed in generated filenames '
'(default: %s)' % get_build_platform(),
),
(
'exclude-source-files', None,
'remove all .py files from the generated egg',
),
(
'keep-temp', 'k',
'keep the pseudo-installation tree around after ' +
'creating the distribution archive',
),
(
'dist-dir=', 'd',
'directory to put final built distributions in',
),
(
'skip-build', None,
'skip rebuilding everything (for testing/debugging)',
),
]
boolean_options = [
'keep-temp', 'skip-build', 'exclude-source-files'
'keep-temp', 'skip-build', 'exclude-source-files',
]
def initialize_options(self):
@ -89,7 +105,7 @@ class bdist_egg(Command):
self.exclude_source_files = None
def finalize_options(self):
ei_cmd = self.ei_cmd = self.get_finalized_command("egg_info")
ei_cmd = self.ei_cmd = self.get_finalized_command('egg_info')
self.egg_info = ei_cmd.egg_info
if self.bdist_dir is None:
@ -107,7 +123,7 @@ class bdist_egg(Command):
basename = Distribution(
None, None, ei_cmd.egg_name, ei_cmd.egg_version,
get_python_version(),
self.distribution.has_ext_modules() and self.plat_name
self.distribution.has_ext_modules() and self.plat_name,
).egg_name()
self.egg_output = os.path.join(self.dist_dir, basename + '.egg')
@ -125,14 +141,14 @@ class bdist_egg(Command):
realpath = os.path.realpath(item[0])
normalized = os.path.normcase(realpath)
if normalized == site_packages or normalized.startswith(
site_packages + os.sep
site_packages + os.sep,
):
item = realpath[len(site_packages) + 1:], item[1]
# XXX else: raise ???
self.distribution.data_files.append(item)
try:
log.info("installing package data to %s", self.bdist_dir)
log.info('installing package data to %s', self.bdist_dir)
self.call_command('install_data', force=0, root=None)
finally:
self.distribution.data_files = old
@ -152,10 +168,10 @@ class bdist_egg(Command):
def run(self): # noqa: C901 # is too complex (14) # FIXME
# Generate metadata first
self.run_command("egg_info")
self.run_command('egg_info')
# We run install_lib before install_data, because some data hacks
# pull their data path from the install_lib command.
log.info("installing library code to %s", self.bdist_dir)
log.info('installing library code to %s', self.bdist_dir)
instcmd = self.get_finalized_command('install')
old_root = instcmd.root
instcmd.root = None
@ -169,10 +185,12 @@ class bdist_egg(Command):
to_compile = []
for (p, ext_name) in enumerate(ext_outputs):
filename, ext = os.path.splitext(ext_name)
pyfile = os.path.join(self.bdist_dir, strip_module(filename) +
'.py')
pyfile = os.path.join(
self.bdist_dir, strip_module(filename) +
'.py',
)
self.stubs.append(pyfile)
log.info("creating stub loader for %s", ext_name)
log.info('creating stub loader for %s', ext_name)
if not self.dry_run:
write_stub(os.path.basename(ext_name), pyfile)
to_compile.append(pyfile)
@ -189,56 +207,61 @@ class bdist_egg(Command):
self.mkpath(egg_info)
if self.distribution.scripts:
script_dir = os.path.join(egg_info, 'scripts')
log.info("installing scripts to %s", script_dir)
self.call_command('install_scripts', install_dir=script_dir,
no_ep=1)
log.info('installing scripts to %s', script_dir)
self.call_command(
'install_scripts', install_dir=script_dir,
no_ep=1,
)
self.copy_metadata_to(egg_info)
native_libs = os.path.join(egg_info, "native_libs.txt")
native_libs = os.path.join(egg_info, 'native_libs.txt')
if all_outputs:
log.info("writing %s", native_libs)
log.info('writing %s', native_libs)
if not self.dry_run:
ensure_directory(native_libs)
libs_file = open(native_libs, 'wt')
libs_file = open(native_libs, 'w')
libs_file.write('\n'.join(all_outputs))
libs_file.write('\n')
libs_file.close()
elif os.path.isfile(native_libs):
log.info("removing %s", native_libs)
log.info('removing %s', native_libs)
if not self.dry_run:
os.unlink(native_libs)
write_safety_flag(
os.path.join(archive_root, 'EGG-INFO'), self.zip_safe()
os.path.join(archive_root, 'EGG-INFO'), self.zip_safe(),
)
if os.path.exists(os.path.join(self.egg_info, 'depends.txt')):
log.warn(
"WARNING: 'depends.txt' will not be used by setuptools 0.6!\n"
"Use the install_requires/extras_require setup() args instead."
'Use the install_requires/extras_require setup() args instead.',
)
if self.exclude_source_files:
self.zap_pyfiles()
# Make the archive
make_zipfile(self.egg_output, archive_root, verbose=self.verbose,
dry_run=self.dry_run, mode=self.gen_header())
make_zipfile(
self.egg_output, archive_root, verbose=self.verbose,
dry_run=self.dry_run, mode=self.gen_header(),
)
if not self.keep_temp:
remove_tree(self.bdist_dir, dry_run=self.dry_run)
# Add to 'Distribution.dist_files' so that the "upload" command works
getattr(self.distribution, 'dist_files', []).append(
('bdist_egg', get_python_version(), self.egg_output))
('bdist_egg', get_python_version(), self.egg_output),
)
def zap_pyfiles(self):
log.info("Removing .py files from temporary directory")
log.info('Removing .py files from temporary directory')
for base, dirs, files in walk_egg(self.bdist_dir):
for name in files:
path = os.path.join(base, name)
if name.endswith('.py'):
log.debug("Deleting %s", path)
log.debug('Deleting %s', path)
os.unlink(path)
if base.endswith('__pycache__'):
@ -247,10 +270,12 @@ class bdist_egg(Command):
pattern = r'(?P<name>.+)\.(?P<magic>[^.]+)\.pyc'
m = re.match(pattern, name)
path_new = os.path.join(
base, os.pardir, m.group('name') + '.pyc')
base, os.pardir, m.group('name') + '.pyc',
)
log.info(
"Renaming file from [%s] to [%s]"
% (path_old, path_new))
'Renaming file from [%s] to [%s]'
% (path_old, path_new),
)
try:
os.remove(path_new)
except OSError:
@ -261,14 +286,14 @@ class bdist_egg(Command):
safe = getattr(self.distribution, 'zip_safe', None)
if safe is not None:
return safe
log.warn("zip_safe flag not set; analyzing archive contents...")
log.warn('zip_safe flag not set; analyzing archive contents...')
return analyze_egg(self.bdist_dir, self.stubs)
def gen_header(self):
return 'w'
def copy_metadata_to(self, target_dir):
"Copy metadata (egg info) to the target_dir"
'Copy metadata (egg info) to the target_dir'
# normalize the path (so that a forward-slash in egg_info will
# match using startswith below)
norm_egg_info = os.path.normpath(self.egg_info)
@ -291,8 +316,10 @@ class bdist_egg(Command):
if os.path.splitext(filename)[1].lower() in NATIVE_EXTENSIONS:
all_outputs.append(paths[base] + filename)
for filename in dirs:
paths[os.path.join(base, filename)] = (paths[base] +
filename + '/')
paths[os.path.join(base, filename)] = (
paths[base] +
filename + '/'
)
if self.distribution.has_ext_modules():
build_cmd = self.get_finalized_command('build_ext')
@ -318,8 +345,7 @@ def walk_egg(egg_dir):
if 'EGG-INFO' in dirs:
dirs.remove('EGG-INFO')
yield base, dirs, files
for bdf in walker:
yield bdf
yield from walker
def analyze_egg(egg_dir, stubs):
@ -348,7 +374,7 @@ def write_safety_flag(egg_dir, safe):
if safe is None or bool(safe) != flag:
os.unlink(fn)
elif safe is not None and bool(safe) == flag:
f = open(fn, 'wt')
f = open(fn, 'w')
f.write('\n')
f.close()
@ -367,10 +393,7 @@ def scan_module(egg_dir, base, name, stubs):
return True # Extension module
pkg = base[len(egg_dir) + 1:].replace(os.sep, '.')
module = pkg + (pkg and '.' or '') + os.path.splitext(name)[0]
if sys.version_info < (3, 7):
skip = 12 # skip magic & date & file size
else:
skip = 16 # skip magic & reserved? & date & file size
skip = 16 # skip magic & reserved? & date & file size
f = open(filename, 'rb')
f.read(skip)
code = marshal.load(f)
@ -379,51 +402,53 @@ def scan_module(egg_dir, base, name, stubs):
symbols = dict.fromkeys(iter_symbols(code))
for bad in ['__file__', '__path__']:
if bad in symbols:
log.warn("%s: module references %s", module, bad)
log.warn('%s: module references %s', module, bad)
safe = False
if 'inspect' in symbols:
for bad in [
'getsource', 'getabsfile', 'getsourcefile', 'getfile'
'getsourcelines', 'findsource', 'getcomments', 'getframeinfo',
'getinnerframes', 'getouterframes', 'stack', 'trace'
'getinnerframes', 'getouterframes', 'stack', 'trace',
]:
if bad in symbols:
log.warn("%s: module MAY be using inspect.%s", module, bad)
log.warn('%s: module MAY be using inspect.%s', module, bad)
safe = False
return safe
def iter_symbols(code):
"""Yield names and strings used by `code` and its nested code objects"""
for name in code.co_names:
yield name
yield from code.co_names
for const in code.co_consts:
if isinstance(const, str):
yield const
elif isinstance(const, CodeType):
for name in iter_symbols(const):
yield name
yield from iter_symbols(const)
def can_scan():
if not sys.platform.startswith('java') and sys.platform != 'cli':
# CPython, PyPy, etc.
return True
log.warn("Unable to analyze compiled code on this platform.")
log.warn("Please ask the author to include a 'zip_safe'"
" setting (either True or False) in the package's setup.py")
log.warn('Unable to analyze compiled code on this platform.')
log.warn(
"Please ask the author to include a 'zip_safe'"
" setting (either True or False) in the package's setup.py",
)
# Attribute names of options for commands that might need to be convinced to
# install to the egg build directory
INSTALL_DIRECTORY_ATTRS = [
'install_lib', 'install_dir', 'install_data', 'install_base'
'install_lib', 'install_dir', 'install_data', 'install_base',
]
def make_zipfile(zip_filename, base_dir, verbose=0, dry_run=0, compress=True,
mode='w'):
def make_zipfile(
zip_filename, base_dir, verbose=0, dry_run=0, compress=True,
mode='w',
):
"""Create a zip file from all the files under 'base_dir'. The output
zip file will be named 'base_dir' + ".zip". Uses either the "zipfile"
Python module (if available) or the InfoZIP "zip" utility (if installed