Voice et bot modif

This commit is contained in:
pi 2026-06-16 17:09:34 +00:00
parent 189d56026b
commit 7333a22bcd
10774 changed files with 634644 additions and 933308 deletions

View file

@ -167,6 +167,12 @@ class Command(_Command):
command_consumes_arguments = False
distribution: Distribution # override distutils.dist.Distribution with setuptools.dist.Distribution
dry_run = False # type: ignore[assignment] # pyright: ignore[reportAssignmentType] (until #4689; see #4872)
"""
For compatibility with vendored bdist_wheel.
https://github.com/pypa/setuptools/pull/4872/files#r1986395142
"""
def __init__(self, dist: Distribution, **kw) -> None:
"""
Construct the command for dist, updating

View file

@ -61,7 +61,6 @@ def make_tarball(
base_dir: str | os.PathLike[str],
compress: Literal["gzip", "bzip2", "xz"] | None = "gzip",
verbose: bool = False,
dry_run: bool = False,
owner: str | None = None,
group: str | None = None,
) -> str:
@ -96,7 +95,7 @@ def make_tarball(
archive_name = base_name + '.tar'
archive_name += compress_ext.get(compress, '')
mkpath(os.path.dirname(archive_name), dry_run=dry_run)
mkpath(os.path.dirname(archive_name))
# creating the tarball
import tarfile # late import so Python build itself doesn't break
@ -115,21 +114,19 @@ def make_tarball(
tarinfo.uname = owner
return tarinfo
if not dry_run:
tar = tarfile.open(archive_name, f'w|{tar_compression[compress]}')
try:
tar.add(base_dir, filter=_set_uid_gid)
finally:
tar.close()
tar = tarfile.open(archive_name, f'w|{tar_compression[compress]}')
try:
tar.add(base_dir, filter=_set_uid_gid)
finally:
tar.close()
return archive_name
def make_zipfile( # noqa: C901
def make_zipfile(
base_name: str,
base_dir: str | os.PathLike[str],
verbose: bool = False,
dry_run: bool = False,
) -> str:
"""Create a zip file from all the files under 'base_dir'.
@ -140,7 +137,7 @@ def make_zipfile( # noqa: C901
file.
"""
zip_filename = base_name + ".zip"
mkpath(os.path.dirname(zip_filename), dry_run=dry_run)
mkpath(os.path.dirname(zip_filename))
# If zipfile module is not available, try spawning an external
# 'zip' command.
@ -151,7 +148,7 @@ def make_zipfile( # noqa: C901
zipoptions = "-rq"
try:
spawn(["zip", zipoptions, zip_filename, base_dir], dry_run=dry_run)
spawn(["zip", zipoptions, zip_filename, base_dir])
except DistutilsExecError:
# XXX really should distinguish between "couldn't find
# external 'zip' command" and "zip failed".
@ -164,29 +161,26 @@ def make_zipfile( # noqa: C901
else:
log.info("creating '%s' and adding '%s' to it", zip_filename, base_dir)
if not dry_run:
try:
zip = zipfile.ZipFile(
zip_filename, "w", compression=zipfile.ZIP_DEFLATED
)
except RuntimeError:
zip = zipfile.ZipFile(zip_filename, "w", compression=zipfile.ZIP_STORED)
try:
zip = zipfile.ZipFile(zip_filename, "w", compression=zipfile.ZIP_DEFLATED)
except RuntimeError:
zip = zipfile.ZipFile(zip_filename, "w", compression=zipfile.ZIP_STORED)
with zip:
if base_dir != os.curdir:
path = os.path.normpath(os.path.join(base_dir, ''))
with zip:
if base_dir != os.curdir:
path = os.path.normpath(os.path.join(base_dir, ''))
zip.write(path, path)
log.info("adding '%s'", path)
for dirpath, dirnames, filenames in os.walk(base_dir):
for name in dirnames:
path = os.path.normpath(os.path.join(dirpath, name, ''))
zip.write(path, path)
log.info("adding '%s'", path)
for dirpath, dirnames, filenames in os.walk(base_dir):
for name in dirnames:
path = os.path.normpath(os.path.join(dirpath, name, ''))
for name in filenames:
path = os.path.normpath(os.path.join(dirpath, name))
if os.path.isfile(path):
zip.write(path, path)
log.info("adding '%s'", path)
for name in filenames:
path = os.path.normpath(os.path.join(dirpath, name))
if os.path.isfile(path):
zip.write(path, path)
log.info("adding '%s'", path)
return zip_filename
@ -219,7 +213,6 @@ def make_archive(
root_dir: str | os.PathLike[str] | bytes | os.PathLike[bytes] | None = None,
base_dir: str | None = None,
verbose: bool = False,
dry_run: bool = False,
owner: str | None = None,
group: str | None = None,
) -> str: ...
@ -230,7 +223,6 @@ def make_archive(
root_dir: str | os.PathLike[str] | bytes | os.PathLike[bytes],
base_dir: str | None = None,
verbose: bool = False,
dry_run: bool = False,
owner: str | None = None,
group: str | None = None,
) -> str: ...
@ -240,7 +232,6 @@ def make_archive(
root_dir: str | os.PathLike[str] | bytes | os.PathLike[bytes] | None = None,
base_dir: str | None = None,
verbose: bool = False,
dry_run: bool = False,
owner: str | None = None,
group: str | None = None,
) -> str:
@ -264,13 +255,12 @@ def make_archive(
if root_dir is not None:
log.debug("changing into '%s'", root_dir)
base_name = os.path.abspath(base_name)
if not dry_run:
os.chdir(root_dir)
os.chdir(root_dir)
if base_dir is None:
base_dir = os.curdir
kwargs = {'dry_run': dry_run}
kwargs: dict[str, bool | None] = {}
try:
format_info = ARCHIVE_FORMATS[format]

View file

@ -91,13 +91,8 @@ class Command:
# Per-command versions of the global flags, so that the user can
# customize Distutils' behaviour command-by-command and let some
# commands fall back on the Distribution's behaviour. None means
# "not defined, check self.distribution's copy", while 0 or 1 mean
# false and true (duh). Note that this means figuring out the real
# value of each flag is a touch complicated -- hence "self._dry_run"
# will be handled by __getattr__, below.
# XXX This needs to be fixed.
self._dry_run = None
# commands fall back on the Distribution's behaviour. None means
# "not defined, check self.distribution's copy".
# verbose is largely ignored, but needs to be set for
# backwards compatibility (I think)?
@ -119,17 +114,6 @@ class Command:
# always calls 'finalize_options()', to respect/update it.
self.finalized = False
# XXX A more explicit way to customize dry_run would be better.
def __getattr__(self, attr):
if attr == 'dry_run':
myval = getattr(self, "_" + attr)
if myval is None:
return getattr(self.distribution, attr)
else:
return myval
else:
raise AttributeError(attr)
def ensure_finalized(self) -> None:
if not self.finalized:
self.finalize_options()
@ -381,10 +365,10 @@ class Command:
msg: object = None,
level: int = 1,
) -> None:
util.execute(func, args, msg, dry_run=self.dry_run)
util.execute(func, args, msg)
def mkpath(self, name: str, mode: int = 0o777) -> None:
dir_util.mkpath(name, mode, dry_run=self.dry_run)
dir_util.mkpath(name, mode)
@overload
def copy_file(
@ -425,7 +409,6 @@ class Command:
preserve_times,
not self.force,
link,
dry_run=self.dry_run,
)
def copy_tree(
@ -447,7 +430,6 @@ class Command:
preserve_times,
preserve_symlinks,
not self.force,
dry_run=self.dry_run,
)
@overload
@ -465,7 +447,7 @@ class Command:
level: int = 1,
) -> str | os.PathLike[str] | bytes | os.PathLike[bytes]:
"""Move a file respecting dry-run flag."""
return file_util.move_file(src, dst, dry_run=self.dry_run)
return file_util.move_file(src, dst)
def spawn(
self, cmd: MutableSequence[str], search_path: bool = True, level: int = 1
@ -473,7 +455,7 @@ class Command:
"""Spawn an external command respecting dry-run flag."""
from distutils.spawn import spawn
spawn(cmd, search_path, dry_run=self.dry_run)
spawn(cmd, search_path)
@overload
def make_archive(
@ -509,7 +491,6 @@ class Command:
format,
root_dir,
base_dir,
dry_run=self.dry_run,
owner=owner,
group=group,
)

View file

@ -138,4 +138,4 @@ class bdist_dumb(Command):
self.distribution.dist_files.append(('bdist_dumb', pyversion, filename))
if not self.keep_temp:
remove_tree(self.bdist_dir, dry_run=self.dry_run)
remove_tree(self.bdist_dir)

View file

@ -378,30 +378,29 @@ class bdist_rpm(Command):
self.spawn(rpm_cmd)
if not self.dry_run:
if self.distribution.has_ext_modules():
pyversion = get_python_version()
else:
pyversion = 'any'
if self.distribution.has_ext_modules():
pyversion = get_python_version()
else:
pyversion = 'any'
if not self.binary_only:
srpm = os.path.join(rpm_dir['SRPMS'], source_rpm)
assert os.path.exists(srpm)
self.move_file(srpm, self.dist_dir)
filename = os.path.join(self.dist_dir, source_rpm)
self.distribution.dist_files.append(('bdist_rpm', pyversion, filename))
if not self.binary_only:
srpm = os.path.join(rpm_dir['SRPMS'], source_rpm)
assert os.path.exists(srpm)
self.move_file(srpm, self.dist_dir)
filename = os.path.join(self.dist_dir, source_rpm)
self.distribution.dist_files.append(('bdist_rpm', pyversion, filename))
if not self.source_only:
for rpm in binary_rpms:
rpm = os.path.join(rpm_dir['RPMS'], rpm)
if os.path.exists(rpm):
self.move_file(rpm, self.dist_dir)
filename = os.path.join(self.dist_dir, os.path.basename(rpm))
self.distribution.dist_files.append((
'bdist_rpm',
pyversion,
filename,
))
if not self.source_only:
for rpm in binary_rpms:
rpm = os.path.join(rpm_dir['RPMS'], rpm)
if os.path.exists(rpm):
self.move_file(rpm, self.dist_dir)
filename = os.path.join(self.dist_dir, os.path.basename(rpm))
self.distribution.dist_files.append((
'bdist_rpm',
pyversion,
filename,
))
def _dist_path(self, path):
return os.path.join(self.dist_dir, os.path.basename(path))

View file

@ -88,9 +88,7 @@ class build_clib(Command):
if not self.libraries:
return
self.compiler = new_compiler(
compiler=self.compiler, dry_run=self.dry_run, force=self.force
)
self.compiler = new_compiler(compiler=self.compiler, force=self.force)
customize_compiler(self.compiler)
if self.include_dirs is not None:

View file

@ -326,7 +326,6 @@ class build_ext(Command):
self.compiler = new_compiler(
compiler=self.compiler,
verbose=self.verbose,
dry_run=self.dry_run,
force=self.force,
)
customize_compiler(self.compiler)

View file

@ -394,14 +394,11 @@ class build_py(Command):
# method of the "install_lib" command, except for the determination
# of the 'prefix' string. Hmmm.
if self.compile:
byte_compile(
files, optimize=0, force=self.force, prefix=prefix, dry_run=self.dry_run
)
byte_compile(files, optimize=0, force=self.force, prefix=prefix)
if self.optimize > 0:
byte_compile(
files,
optimize=self.optimize,
force=self.force,
prefix=prefix,
dry_run=self.dry_run,
)

View file

@ -87,30 +87,24 @@ class build_scripts(Command):
# Always open the file, but ignore failures in dry-run mode
# in order to attempt to copy directly.
try:
f = tokenize.open(script)
except OSError:
if not self.dry_run:
raise
f = None
else:
first_line = f.readline()
if not first_line:
self.warn(f"{script} is an empty file (skipping)")
return
f = tokenize.open(script)
shebang_match = shebang_pattern.match(first_line)
first_line = f.readline()
if not first_line:
self.warn(f"{script} is an empty file (skipping)")
return
shebang_match = shebang_pattern.match(first_line)
updated_files.append(outfile)
if shebang_match:
log.info("copying and adjusting %s -> %s", script, self.build_dir)
if not self.dry_run:
post_interp = shebang_match.group(1) or ''
shebang = "#!" + self.executable + post_interp + "\n"
self._validate_shebang(shebang, f.encoding)
with open(outfile, "w", encoding=f.encoding) as outf:
outf.write(shebang)
outf.writelines(f.readlines())
post_interp = shebang_match.group(1) or ''
shebang = "#!" + self.executable + post_interp + "\n"
self._validate_shebang(shebang, f.encoding)
with open(outfile, "w", encoding=f.encoding) as outf:
outf.write(shebang)
outf.writelines(f.readlines())
if f:
f.close()
else:
@ -126,10 +120,6 @@ class build_scripts(Command):
self._change_mode(file)
def _change_mode(self, file):
if self.dry_run:
log.info("changing mode of %s", file)
return
oldmode = os.stat(file)[ST_MODE] & 0o7777
newmode = (oldmode | 0o555) & 0o7777
if newmode != oldmode:

View file

@ -55,7 +55,7 @@ class clean(Command):
# remove the build/temp.<plat> directory (unless it's already
# gone)
if os.path.exists(self.build_temp):
remove_tree(self.build_temp, dry_run=self.dry_run)
remove_tree(self.build_temp)
else:
log.debug("'%s' does not exist -- can't clean it", self.build_temp)
@ -63,15 +63,14 @@ class clean(Command):
# remove build directories
for directory in (self.build_lib, self.bdist_base, self.build_scripts):
if os.path.exists(directory):
remove_tree(directory, dry_run=self.dry_run)
remove_tree(directory)
else:
log.warning("'%s' does not exist -- can't clean it", directory)
# just for the heck of it, try to remove the base build directory:
# we might have emptied it right now, but if not we don't care
if not self.dry_run:
try:
os.rmdir(self.build_base)
log.info("removing '%s'", self.build_base)
except OSError:
pass
try:
os.rmdir(self.build_base)
log.info("removing '%s'", self.build_base)
except OSError:
pass

View file

@ -90,9 +90,7 @@ class config(Command):
if not, make it one.
"""
if not isinstance(self.compiler, CCompiler):
self.compiler = new_compiler(
compiler=self.compiler, dry_run=self.dry_run, force=True
)
self.compiler = new_compiler(compiler=self.compiler, force=True)
customize_compiler(self.compiler)
if self.include_dirs:
self.compiler.set_include_dirs(self.include_dirs)
@ -157,14 +155,6 @@ class config(Command):
except OSError:
pass
# XXX these ignore the dry-run flag: what to do, what to do? even if
# you want a dry-run build, you still need some sort of configuration
# info. My inclination is to make it up to the real config command to
# consult 'dry_run', and assume a default (minimal) configuration if
# true. The problem with trying to do it here is that you'd have to
# return either true or false from all the 'try' methods, neither of
# which is correct.
# XXX need access to the header search path and maybe default macros.
def try_cpp(self, body=None, headers=None, include_dirs=None, lang="c"):

View file

@ -44,7 +44,7 @@ class install_egg_info(Command):
def run(self):
target = self.target
if os.path.isdir(target) and not os.path.islink(target):
dir_util.remove_tree(target, dry_run=self.dry_run)
dir_util.remove_tree(target)
elif os.path.exists(target):
self.execute(os.unlink, (self.target,), "Removing " + target)
elif not os.path.isdir(self.install_dir):
@ -52,9 +52,8 @@ class install_egg_info(Command):
os.makedirs, (self.install_dir,), "Creating " + self.install_dir
)
log.info("Writing %s", target)
if not self.dry_run:
with open(target, 'w', encoding='UTF-8') as f:
self.distribution.metadata.write_pkg_file(f)
with open(target, 'w', encoding='UTF-8') as f:
self.distribution.metadata.write_pkg_file(f)
def get_outputs(self):
return self.outputs

View file

@ -142,7 +142,6 @@ class install_lib(Command):
optimize=0,
force=self.force,
prefix=install_root,
dry_run=self.dry_run,
)
if self.optimize > 0:
byte_compile(
@ -151,7 +150,6 @@ class install_lib(Command):
force=self.force,
prefix=install_root,
verbose=self.verbose,
dry_run=self.dry_run,
)
# -- Utility methods -----------------------------------------------

View file

@ -48,12 +48,9 @@ class install_scripts(Command):
# Set the executable bits (owner, group, and world) on
# all the scripts we just installed.
for file in self.get_outputs():
if self.dry_run:
log.info("changing mode of %s", file)
else:
mode = ((os.stat(file)[ST_MODE]) | 0o555) & 0o7777
log.info("changing mode of %s to %o", file, mode)
os.chmod(file, mode)
mode = ((os.stat(file)[ST_MODE]) | 0o555) & 0o7777
log.info("changing mode of %s to %o", file, mode)
os.chmod(file, mode)
def get_inputs(self):
return self.distribution.scripts or []

View file

@ -450,7 +450,7 @@ class sdist(Command):
# put 'files' there; the 'mkpath()' is just so we don't die
# if the manifest happens to be empty.
self.mkpath(base_dir)
dir_util.create_tree(base_dir, files, dry_run=self.dry_run)
dir_util.create_tree(base_dir, files)
# And walk over the list of files, either making a hard link (if
# os.link exists) to each one that doesn't already exist in its
@ -508,7 +508,7 @@ class sdist(Command):
self.archive_files = archive_files
if not self.keep_temp:
dir_util.remove_tree(base_dir, dry_run=self.dry_run)
dir_util.remove_tree(base_dir)
def get_archive_files(self):
"""Return the list of archive files created when the command

Some files were not shown because too many files have changed in this diff Show more