from __future__ import annotations from distutils import log import distutils.command.install_scripts as orig import os import sys from .._path import ensure_directory class install_scripts(orig.install_scripts): """Do normal script install, plus any egg_info wrapper scripts""" def initialize_options(self): orig.install_scripts.initialize_options(self) self.no_ep = False def run(self) -> None: self.run_command("egg_info") if self.distribution.scripts: orig.install_scripts.run(self) # run first to set up self.outfiles else: self.outfiles: list[str] = [] if self.no_ep: # don't install entry point scripts into .egg file! return self._install_ep_scripts() def _install_ep_scripts(self): # Delay import side-effects from pkg_resources import Distribution, PathMetadata from . import easy_install as ei ei_cmd = self.get_finalized_command("egg_info") dist = Distribution( ei_cmd.egg_base, PathMetadata(ei_cmd.egg_base, ei_cmd.egg_info), ei_cmd.egg_name, ei_cmd.egg_version, ) bs_cmd = self.get_finalized_command('build_scripts') exec_param = getattr(bs_cmd, 'executable', None) writer = ei.ScriptWriter if exec_param == sys.executable: # In case the path to the Python executable contains a space, wrap # it so it's not split up. exec_param = [exec_param] # resolve the writer to the environment writer = writer.best() cmd = writer.command_spec_class.best().from_param(exec_param) for args in writer.get_args(dist, cmd.as_header()): self.write_script(*args) def write_script(self, script_name, contents, mode="t", *ignored): """Write an executable file to the scripts directory""" from setuptools.command.easy_install import chmod, current_umask log.info("Installing %s script to %s", script_name, self.install_dir) target = os.path.join(self.install_dir, script_name) self.outfiles.append(target) encoding = None if "b" in mode else "utf-8" mask = current_umask() if not self.dry_run: ensure_directory(target) with open(target, "w" + mode, encoding=encoding) as f: f.write(contents) chmod(target, 0o777 - mask)
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
__init__.py | File | 396 B | 0644 |
|
_requirestxt.py | File | 4.15 KB | 0644 |
|
alias.py | File | 2.33 KB | 0644 |
|
bdist_egg.py | File | 16.14 KB | 0644 |
|
bdist_rpm.py | File | 1.26 KB | 0644 |
|
bdist_wheel.py | File | 20.91 KB | 0644 |
|
build.py | File | 5.68 KB | 0644 |
|
build_clib.py | File | 4.43 KB | 0644 |
|
build_ext.py | File | 17.34 KB | 0644 |
|
build_py.py | File | 14.84 KB | 0644 |
|
develop.py | File | 6.73 KB | 0644 |
|
dist_info.py | File | 3.42 KB | 0644 |
|
easy_install.py | File | 84.96 KB | 0644 |
|
editable_wheel.py | File | 34.45 KB | 0644 |
|
egg_info.py | File | 25.9 KB | 0644 |
|
install.py | File | 5.64 KB | 0644 |
|
install_egg_info.py | File | 2.02 KB | 0644 |
|
install_lib.py | File | 3.87 KB | 0644 |
|
install_scripts.py | File | 2.42 KB | 0644 |
|
launcher manifest.xml | File | 628 B | 0644 |
|
register.py | File | 466 B | 0644 |
|
rotate.py | File | 2.09 KB | 0644 |
|
saveopts.py | File | 657 B | 0644 |
|
sdist.py | File | 6.65 KB | 0644 |
|
setopt.py | File | 4.9 KB | 0644 |
|
test.py | File | 7.91 KB | 0644 |
|
upload.py | File | 460 B | 0644 |
|
upload_docs.py | File | 7.64 KB | 0644 |
|