__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
import glob
import os
import subprocess
import sys
import tempfile
from distutils import log
from distutils.errors import DistutilsError
from functools import partial
from . import _reqs
from .wheel import Wheel
from .warnings import SetuptoolsDeprecationWarning
def _fixup_find_links(find_links):
"""Ensure find-links option end-up being a list of strings."""
if isinstance(find_links, str):
return find_links.split()
assert isinstance(find_links, (tuple, list))
return find_links
def fetch_build_egg(dist, req):
"""Fetch an egg needed for building.
Use pip/wheel to fetch/build a wheel."""
_DeprecatedInstaller.emit()
_warn_wheel_not_available(dist)
return _fetch_build_egg_no_warn(dist, req)
def _fetch_build_eggs(dist, requires):
import pkg_resources # Delay import to avoid unnecessary side-effects
_DeprecatedInstaller.emit(stacklevel=3)
_warn_wheel_not_available(dist)
resolved_dists = pkg_resources.working_set.resolve(
_reqs.parse(requires, pkg_resources.Requirement), # required for compatibility
installer=partial(_fetch_build_egg_no_warn, dist), # avoid warning twice
replace_conflicting=True,
)
for dist in resolved_dists:
pkg_resources.working_set.add(dist, replace=True)
return resolved_dists
def _fetch_build_egg_no_warn(dist, req): # noqa: C901 # is too complex (16) # FIXME
import pkg_resources # Delay import to avoid unnecessary side-effects
# Ignore environment markers; if supplied, it is required.
req = strip_marker(req)
# Take easy_install options into account, but do not override relevant
# pip environment variables (like PIP_INDEX_URL or PIP_QUIET); they'll
# take precedence.
opts = dist.get_option_dict('easy_install')
if 'allow_hosts' in opts:
raise DistutilsError(
'the `allow-hosts` option is not supported '
'when using pip to install requirements.'
)
quiet = 'PIP_QUIET' not in os.environ and 'PIP_VERBOSE' not in os.environ
if 'PIP_INDEX_URL' in os.environ:
index_url = None
elif 'index_url' in opts:
index_url = opts['index_url'][1]
else:
index_url = None
find_links = (
_fixup_find_links(opts['find_links'][1])[:] if 'find_links' in opts else []
)
if dist.dependency_links:
find_links.extend(dist.dependency_links)
eggs_dir = os.path.realpath(dist.get_egg_cache_dir())
environment = pkg_resources.Environment()
for egg_dist in pkg_resources.find_distributions(eggs_dir):
if egg_dist in req and environment.can_add(egg_dist):
return egg_dist
with tempfile.TemporaryDirectory() as tmpdir:
cmd = [
sys.executable,
'-m',
'pip',
'--disable-pip-version-check',
'wheel',
'--no-deps',
'-w',
tmpdir,
]
if quiet:
cmd.append('--quiet')
if index_url is not None:
cmd.extend(('--index-url', index_url))
for link in find_links or []:
cmd.extend(('--find-links', link))
# If requirement is a PEP 508 direct URL, directly pass
# the URL to pip, as `req @ url` does not work on the
# command line.
cmd.append(req.url or str(req))
try:
subprocess.check_call(cmd)
except subprocess.CalledProcessError as e:
raise DistutilsError(str(e)) from e
wheel = Wheel(glob.glob(os.path.join(tmpdir, '*.whl'))[0])
dist_location = os.path.join(eggs_dir, wheel.egg_name())
wheel.install_as_egg(dist_location)
dist_metadata = pkg_resources.PathMetadata(
dist_location, os.path.join(dist_location, 'EGG-INFO')
)
dist = pkg_resources.Distribution.from_filename(
dist_location, metadata=dist_metadata
)
return dist
def strip_marker(req):
"""
Return a new requirement without the environment marker to avoid
calling pip with something like `babel; extra == "i18n"`, which
would always be ignored.
"""
import pkg_resources # Delay import to avoid unnecessary side-effects
# create a copy to avoid mutating the input
req = pkg_resources.Requirement.parse(str(req))
req.marker = None
return req
def _warn_wheel_not_available(dist):
import pkg_resources # Delay import to avoid unnecessary side-effects
try:
pkg_resources.get_distribution('wheel')
except pkg_resources.DistributionNotFound:
dist.announce('WARNING: The wheel package is not available.', log.WARN)
class _DeprecatedInstaller(SetuptoolsDeprecationWarning):
_SUMMARY = "setuptools.installer and fetch_build_eggs are deprecated."
_DETAILS = """
Requirements should be satisfied by a PEP 517 installer.
If you are using pip, you can try `pip install --use-pep517`.
"""
# _DUE_DATE not decided yet
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| _distutils | Folder | 0755 |
|
|
| _vendor | Folder | 0755 |
|
|
| command | Folder | 0755 |
|
|
| config | Folder | 0755 |
|
|
| extern | Folder | 0755 |
|
|
| __init__.py | File | 9.04 KB | 0644 |
|
| _entry_points.py | File | 2.18 KB | 0644 |
|
| _imp.py | File | 2.38 KB | 0644 |
|
| _importlib.py | File | 1.43 KB | 0644 |
|
| _itertools.py | File | 675 B | 0644 |
|
| _normalization.py | File | 3.62 KB | 0644 |
|
| _path.py | File | 1.03 KB | 0644 |
|
| _reqs.py | File | 882 B | 0644 |
|
| archive_util.py | File | 7.16 KB | 0644 |
|
| build_meta.py | File | 19.62 KB | 0644 |
|
| dep_util.py | File | 936 B | 0644 |
|
| depends.py | File | 5.4 KB | 0644 |
|
| discovery.py | File | 20.65 KB | 0644 |
|
| dist.py | File | 45.74 KB | 0644 |
|
| errors.py | File | 2.41 KB | 0644 |
|
| extension.py | File | 5.46 KB | 0644 |
|
| glob.py | File | 4.75 KB | 0644 |
|
| installer.py | File | 4.87 KB | 0644 |
|
| launch.py | File | 812 B | 0644 |
|
| logging.py | File | 1.21 KB | 0644 |
|
| monkey.py | File | 4.58 KB | 0644 |
|
| msvc.py | File | 46.38 KB | 0644 |
|
| namespaces.py | File | 2.97 KB | 0644 |
|
| package_index.py | File | 38.96 KB | 0644 |
|
| py312compat.py | File | 330 B | 0644 |
|
| sandbox.py | File | 14.01 KB | 0644 |
|
| script (dev).tmpl | File | 218 B | 0644 |
|
| script.tmpl | File | 138 B | 0644 |
|
| unicode_utils.py | File | 941 B | 0644 |
|
| version.py | File | 161 B | 0644 |
|
| warnings.py | File | 3.61 KB | 0644 |
|
| wheel.py | File | 8.43 KB | 0644 |
|
| windows_support.py | File | 719 B | 0644 |
|