cli-ih 0.6.3__py3-none-any.whl → 0.6.3.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cli_ih/asyncClient.py +13 -7
- cli_ih/client.py +13 -6
- {cli_ih-0.6.3.dist-info → cli_ih-0.6.3.1.dist-info}/METADATA +1 -1
- cli_ih-0.6.3.1.dist-info/RECORD +425 -0
- {cli_ih-0.6.3.dist-info → cli_ih-0.6.3.1.dist-info}/WHEEL +1 -1
- {cli_ih-0.6.3.dist-info → cli_ih-0.6.3.1.dist-info}/top_level.txt +1 -0
- venv/Lib/site-packages/__editable___cli_ih_0_6_3_1_finder.py +85 -0
- venv/Lib/site-packages/pip/__init__.py +13 -0
- venv/Lib/site-packages/pip/__main__.py +24 -0
- venv/Lib/site-packages/pip/__pip-runner__.py +50 -0
- venv/Lib/site-packages/pip/_internal/__init__.py +18 -0
- venv/Lib/site-packages/pip/_internal/build_env.py +349 -0
- venv/Lib/site-packages/pip/_internal/cache.py +291 -0
- venv/Lib/site-packages/pip/_internal/cli/__init__.py +3 -0
- venv/Lib/site-packages/pip/_internal/cli/autocompletion.py +184 -0
- venv/Lib/site-packages/pip/_internal/cli/base_command.py +244 -0
- venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py +1138 -0
- venv/Lib/site-packages/pip/_internal/cli/command_context.py +28 -0
- venv/Lib/site-packages/pip/_internal/cli/index_command.py +175 -0
- venv/Lib/site-packages/pip/_internal/cli/main.py +80 -0
- venv/Lib/site-packages/pip/_internal/cli/main_parser.py +134 -0
- venv/Lib/site-packages/pip/_internal/cli/parser.py +298 -0
- venv/Lib/site-packages/pip/_internal/cli/progress_bars.py +151 -0
- venv/Lib/site-packages/pip/_internal/cli/req_command.py +351 -0
- venv/Lib/site-packages/pip/_internal/cli/spinners.py +235 -0
- venv/Lib/site-packages/pip/_internal/cli/status_codes.py +6 -0
- venv/Lib/site-packages/pip/_internal/commands/__init__.py +139 -0
- venv/Lib/site-packages/pip/_internal/commands/cache.py +231 -0
- venv/Lib/site-packages/pip/_internal/commands/check.py +66 -0
- venv/Lib/site-packages/pip/_internal/commands/completion.py +135 -0
- venv/Lib/site-packages/pip/_internal/commands/configuration.py +288 -0
- venv/Lib/site-packages/pip/_internal/commands/debug.py +203 -0
- venv/Lib/site-packages/pip/_internal/commands/download.py +145 -0
- venv/Lib/site-packages/pip/_internal/commands/freeze.py +107 -0
- venv/Lib/site-packages/pip/_internal/commands/hash.py +58 -0
- venv/Lib/site-packages/pip/_internal/commands/help.py +40 -0
- venv/Lib/site-packages/pip/_internal/commands/index.py +159 -0
- venv/Lib/site-packages/pip/_internal/commands/inspect.py +92 -0
- venv/Lib/site-packages/pip/_internal/commands/install.py +798 -0
- venv/Lib/site-packages/pip/_internal/commands/list.py +400 -0
- venv/Lib/site-packages/pip/_internal/commands/lock.py +170 -0
- venv/Lib/site-packages/pip/_internal/commands/search.py +178 -0
- venv/Lib/site-packages/pip/_internal/commands/show.py +231 -0
- venv/Lib/site-packages/pip/_internal/commands/uninstall.py +113 -0
- venv/Lib/site-packages/pip/_internal/commands/wheel.py +181 -0
- venv/Lib/site-packages/pip/_internal/configuration.py +397 -0
- venv/Lib/site-packages/pip/_internal/distributions/__init__.py +21 -0
- venv/Lib/site-packages/pip/_internal/distributions/base.py +55 -0
- venv/Lib/site-packages/pip/_internal/distributions/installed.py +33 -0
- venv/Lib/site-packages/pip/_internal/distributions/sdist.py +165 -0
- venv/Lib/site-packages/pip/_internal/distributions/wheel.py +44 -0
- venv/Lib/site-packages/pip/_internal/exceptions.py +881 -0
- venv/Lib/site-packages/pip/_internal/index/__init__.py +1 -0
- venv/Lib/site-packages/pip/_internal/index/collector.py +489 -0
- venv/Lib/site-packages/pip/_internal/index/package_finder.py +1059 -0
- venv/Lib/site-packages/pip/_internal/index/sources.py +287 -0
- venv/Lib/site-packages/pip/_internal/locations/__init__.py +441 -0
- venv/Lib/site-packages/pip/_internal/locations/_distutils.py +173 -0
- venv/Lib/site-packages/pip/_internal/locations/_sysconfig.py +215 -0
- venv/Lib/site-packages/pip/_internal/locations/base.py +82 -0
- venv/Lib/site-packages/pip/_internal/main.py +12 -0
- venv/Lib/site-packages/pip/_internal/metadata/__init__.py +164 -0
- venv/Lib/site-packages/pip/_internal/metadata/_json.py +87 -0
- venv/Lib/site-packages/pip/_internal/metadata/base.py +685 -0
- venv/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py +6 -0
- venv/Lib/site-packages/pip/_internal/metadata/importlib/_compat.py +87 -0
- venv/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py +223 -0
- venv/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py +143 -0
- venv/Lib/site-packages/pip/_internal/metadata/pkg_resources.py +298 -0
- venv/Lib/site-packages/pip/_internal/models/__init__.py +1 -0
- venv/Lib/site-packages/pip/_internal/models/candidate.py +25 -0
- venv/Lib/site-packages/pip/_internal/models/direct_url.py +227 -0
- venv/Lib/site-packages/pip/_internal/models/format_control.py +78 -0
- venv/Lib/site-packages/pip/_internal/models/index.py +28 -0
- venv/Lib/site-packages/pip/_internal/models/installation_report.py +57 -0
- venv/Lib/site-packages/pip/_internal/models/link.py +613 -0
- venv/Lib/site-packages/pip/_internal/models/pylock.py +188 -0
- venv/Lib/site-packages/pip/_internal/models/scheme.py +25 -0
- venv/Lib/site-packages/pip/_internal/models/search_scope.py +126 -0
- venv/Lib/site-packages/pip/_internal/models/selection_prefs.py +53 -0
- venv/Lib/site-packages/pip/_internal/models/target_python.py +122 -0
- venv/Lib/site-packages/pip/_internal/models/wheel.py +141 -0
- venv/Lib/site-packages/pip/_internal/network/__init__.py +1 -0
- venv/Lib/site-packages/pip/_internal/network/auth.py +564 -0
- venv/Lib/site-packages/pip/_internal/network/cache.py +133 -0
- venv/Lib/site-packages/pip/_internal/network/download.py +342 -0
- venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py +213 -0
- venv/Lib/site-packages/pip/_internal/network/session.py +528 -0
- venv/Lib/site-packages/pip/_internal/network/utils.py +98 -0
- venv/Lib/site-packages/pip/_internal/network/xmlrpc.py +61 -0
- venv/Lib/site-packages/pip/_internal/operations/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/operations/build/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/operations/build/build_tracker.py +140 -0
- venv/Lib/site-packages/pip/_internal/operations/build/metadata.py +38 -0
- venv/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py +41 -0
- venv/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py +73 -0
- venv/Lib/site-packages/pip/_internal/operations/build/wheel.py +38 -0
- venv/Lib/site-packages/pip/_internal/operations/build/wheel_editable.py +47 -0
- venv/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py +119 -0
- venv/Lib/site-packages/pip/_internal/operations/check.py +175 -0
- venv/Lib/site-packages/pip/_internal/operations/freeze.py +259 -0
- venv/Lib/site-packages/pip/_internal/operations/install/__init__.py +1 -0
- venv/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py +48 -0
- venv/Lib/site-packages/pip/_internal/operations/install/wheel.py +746 -0
- venv/Lib/site-packages/pip/_internal/operations/prepare.py +742 -0
- venv/Lib/site-packages/pip/_internal/pyproject.py +182 -0
- venv/Lib/site-packages/pip/_internal/req/__init__.py +105 -0
- venv/Lib/site-packages/pip/_internal/req/constructors.py +562 -0
- venv/Lib/site-packages/pip/_internal/req/req_dependency_group.py +75 -0
- venv/Lib/site-packages/pip/_internal/req/req_file.py +620 -0
- venv/Lib/site-packages/pip/_internal/req/req_install.py +937 -0
- venv/Lib/site-packages/pip/_internal/req/req_set.py +81 -0
- venv/Lib/site-packages/pip/_internal/req/req_uninstall.py +639 -0
- venv/Lib/site-packages/pip/_internal/resolution/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/resolution/base.py +20 -0
- venv/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +598 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +142 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +582 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +814 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +166 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +276 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py +85 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py +247 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +336 -0
- venv/Lib/site-packages/pip/_internal/self_outdated_check.py +254 -0
- venv/Lib/site-packages/pip/_internal/utils/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/utils/_jaraco_text.py +109 -0
- venv/Lib/site-packages/pip/_internal/utils/_log.py +38 -0
- venv/Lib/site-packages/pip/_internal/utils/appdirs.py +52 -0
- venv/Lib/site-packages/pip/_internal/utils/compat.py +85 -0
- venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py +201 -0
- venv/Lib/site-packages/pip/_internal/utils/datetime.py +10 -0
- venv/Lib/site-packages/pip/_internal/utils/deprecation.py +126 -0
- venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py +87 -0
- venv/Lib/site-packages/pip/_internal/utils/egg_link.py +81 -0
- venv/Lib/site-packages/pip/_internal/utils/entrypoints.py +88 -0
- venv/Lib/site-packages/pip/_internal/utils/filesystem.py +152 -0
- venv/Lib/site-packages/pip/_internal/utils/filetypes.py +24 -0
- venv/Lib/site-packages/pip/_internal/utils/glibc.py +102 -0
- venv/Lib/site-packages/pip/_internal/utils/hashes.py +150 -0
- venv/Lib/site-packages/pip/_internal/utils/logging.py +364 -0
- venv/Lib/site-packages/pip/_internal/utils/misc.py +765 -0
- venv/Lib/site-packages/pip/_internal/utils/packaging.py +44 -0
- venv/Lib/site-packages/pip/_internal/utils/retry.py +45 -0
- venv/Lib/site-packages/pip/_internal/utils/setuptools_build.py +149 -0
- venv/Lib/site-packages/pip/_internal/utils/subprocess.py +248 -0
- venv/Lib/site-packages/pip/_internal/utils/temp_dir.py +294 -0
- venv/Lib/site-packages/pip/_internal/utils/unpacking.py +337 -0
- venv/Lib/site-packages/pip/_internal/utils/urls.py +55 -0
- venv/Lib/site-packages/pip/_internal/utils/virtualenv.py +105 -0
- venv/Lib/site-packages/pip/_internal/utils/wheel.py +132 -0
- venv/Lib/site-packages/pip/_internal/vcs/__init__.py +15 -0
- venv/Lib/site-packages/pip/_internal/vcs/bazaar.py +130 -0
- venv/Lib/site-packages/pip/_internal/vcs/git.py +571 -0
- venv/Lib/site-packages/pip/_internal/vcs/mercurial.py +186 -0
- venv/Lib/site-packages/pip/_internal/vcs/subversion.py +335 -0
- venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +693 -0
- venv/Lib/site-packages/pip/_internal/wheel_builder.py +334 -0
- venv/Lib/site-packages/pip/_vendor/__init__.py +117 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py +29 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py +70 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py +168 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py +75 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +8 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +145 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +48 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py +511 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py +119 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py +157 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py +146 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py +43 -0
- venv/Lib/site-packages/pip/_vendor/certifi/__init__.py +4 -0
- venv/Lib/site-packages/pip/_vendor/certifi/__main__.py +12 -0
- venv/Lib/site-packages/pip/_vendor/certifi/core.py +83 -0
- venv/Lib/site-packages/pip/_vendor/certifi/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/dependency_groups/__init__.py +13 -0
- venv/Lib/site-packages/pip/_vendor/dependency_groups/__main__.py +65 -0
- venv/Lib/site-packages/pip/_vendor/dependency_groups/_implementation.py +209 -0
- venv/Lib/site-packages/pip/_vendor/dependency_groups/_lint_dependency_groups.py +59 -0
- venv/Lib/site-packages/pip/_vendor/dependency_groups/_pip_wrapper.py +62 -0
- venv/Lib/site-packages/pip/_vendor/dependency_groups/_toml_compat.py +9 -0
- venv/Lib/site-packages/pip/_vendor/dependency_groups/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/distlib/__init__.py +33 -0
- venv/Lib/site-packages/pip/_vendor/distlib/compat.py +1137 -0
- venv/Lib/site-packages/pip/_vendor/distlib/resources.py +358 -0
- venv/Lib/site-packages/pip/_vendor/distlib/scripts.py +447 -0
- venv/Lib/site-packages/pip/_vendor/distlib/util.py +1984 -0
- venv/Lib/site-packages/pip/_vendor/distro/__init__.py +54 -0
- venv/Lib/site-packages/pip/_vendor/distro/__main__.py +4 -0
- venv/Lib/site-packages/pip/_vendor/distro/distro.py +1403 -0
- venv/Lib/site-packages/pip/_vendor/distro/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/idna/__init__.py +45 -0
- venv/Lib/site-packages/pip/_vendor/idna/codec.py +122 -0
- venv/Lib/site-packages/pip/_vendor/idna/compat.py +15 -0
- venv/Lib/site-packages/pip/_vendor/idna/core.py +437 -0
- venv/Lib/site-packages/pip/_vendor/idna/idnadata.py +4243 -0
- venv/Lib/site-packages/pip/_vendor/idna/intranges.py +57 -0
- venv/Lib/site-packages/pip/_vendor/idna/package_data.py +1 -0
- venv/Lib/site-packages/pip/_vendor/idna/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/idna/uts46data.py +8681 -0
- venv/Lib/site-packages/pip/_vendor/msgpack/__init__.py +55 -0
- venv/Lib/site-packages/pip/_vendor/msgpack/exceptions.py +48 -0
- venv/Lib/site-packages/pip/_vendor/msgpack/ext.py +170 -0
- venv/Lib/site-packages/pip/_vendor/msgpack/fallback.py +929 -0
- venv/Lib/site-packages/pip/_vendor/packaging/__init__.py +15 -0
- venv/Lib/site-packages/pip/_vendor/packaging/_elffile.py +109 -0
- venv/Lib/site-packages/pip/_vendor/packaging/_manylinux.py +262 -0
- venv/Lib/site-packages/pip/_vendor/packaging/_musllinux.py +85 -0
- venv/Lib/site-packages/pip/_vendor/packaging/_parser.py +353 -0
- venv/Lib/site-packages/pip/_vendor/packaging/_structures.py +61 -0
- venv/Lib/site-packages/pip/_vendor/packaging/_tokenizer.py +195 -0
- venv/Lib/site-packages/pip/_vendor/packaging/licenses/__init__.py +145 -0
- venv/Lib/site-packages/pip/_vendor/packaging/licenses/_spdx.py +759 -0
- venv/Lib/site-packages/pip/_vendor/packaging/markers.py +362 -0
- venv/Lib/site-packages/pip/_vendor/packaging/metadata.py +862 -0
- venv/Lib/site-packages/pip/_vendor/packaging/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/packaging/requirements.py +91 -0
- venv/Lib/site-packages/pip/_vendor/packaging/specifiers.py +1019 -0
- venv/Lib/site-packages/pip/_vendor/packaging/tags.py +656 -0
- venv/Lib/site-packages/pip/_vendor/packaging/utils.py +163 -0
- venv/Lib/site-packages/pip/_vendor/packaging/version.py +582 -0
- venv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py +3676 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/__init__.py +631 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/__main__.py +55 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/android.py +249 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/api.py +299 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/macos.py +144 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/unix.py +272 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/version.py +21 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/windows.py +272 -0
- venv/Lib/site-packages/pip/_vendor/pygments/__init__.py +82 -0
- venv/Lib/site-packages/pip/_vendor/pygments/__main__.py +17 -0
- venv/Lib/site-packages/pip/_vendor/pygments/console.py +70 -0
- venv/Lib/site-packages/pip/_vendor/pygments/filter.py +70 -0
- venv/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py +940 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatter.py +129 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py +157 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py +23 -0
- venv/Lib/site-packages/pip/_vendor/pygments/lexer.py +963 -0
- venv/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py +362 -0
- venv/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py +602 -0
- venv/Lib/site-packages/pip/_vendor/pygments/lexers/python.py +1201 -0
- venv/Lib/site-packages/pip/_vendor/pygments/modeline.py +43 -0
- venv/Lib/site-packages/pip/_vendor/pygments/plugin.py +72 -0
- venv/Lib/site-packages/pip/_vendor/pygments/regexopt.py +91 -0
- venv/Lib/site-packages/pip/_vendor/pygments/scanner.py +104 -0
- venv/Lib/site-packages/pip/_vendor/pygments/sphinxext.py +247 -0
- venv/Lib/site-packages/pip/_vendor/pygments/style.py +203 -0
- venv/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py +61 -0
- venv/Lib/site-packages/pip/_vendor/pygments/styles/_mapping.py +54 -0
- venv/Lib/site-packages/pip/_vendor/pygments/token.py +214 -0
- venv/Lib/site-packages/pip/_vendor/pygments/unistring.py +153 -0
- venv/Lib/site-packages/pip/_vendor/pygments/util.py +324 -0
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py +31 -0
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py +410 -0
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +21 -0
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +389 -0
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/requests/__init__.py +179 -0
- venv/Lib/site-packages/pip/_vendor/requests/__version__.py +14 -0
- venv/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +50 -0
- venv/Lib/site-packages/pip/_vendor/requests/adapters.py +719 -0
- venv/Lib/site-packages/pip/_vendor/requests/api.py +157 -0
- venv/Lib/site-packages/pip/_vendor/requests/auth.py +314 -0
- venv/Lib/site-packages/pip/_vendor/requests/certs.py +17 -0
- venv/Lib/site-packages/pip/_vendor/requests/compat.py +90 -0
- venv/Lib/site-packages/pip/_vendor/requests/cookies.py +561 -0
- venv/Lib/site-packages/pip/_vendor/requests/exceptions.py +151 -0
- venv/Lib/site-packages/pip/_vendor/requests/help.py +127 -0
- venv/Lib/site-packages/pip/_vendor/requests/hooks.py +33 -0
- venv/Lib/site-packages/pip/_vendor/requests/models.py +1039 -0
- venv/Lib/site-packages/pip/_vendor/requests/packages.py +25 -0
- venv/Lib/site-packages/pip/_vendor/requests/sessions.py +831 -0
- venv/Lib/site-packages/pip/_vendor/requests/status_codes.py +128 -0
- venv/Lib/site-packages/pip/_vendor/requests/structures.py +99 -0
- venv/Lib/site-packages/pip/_vendor/requests/utils.py +1086 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/__init__.py +27 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/providers.py +196 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/reporters.py +55 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/__init__.py +27 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/abstract.py +47 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/criterion.py +48 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/exceptions.py +57 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py +622 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/structs.py +209 -0
- venv/Lib/site-packages/pip/_vendor/rich/__init__.py +177 -0
- venv/Lib/site-packages/pip/_vendor/rich/__main__.py +245 -0
- venv/Lib/site-packages/pip/_vendor/rich/_cell_widths.py +454 -0
- venv/Lib/site-packages/pip/_vendor/rich/_emoji_codes.py +3610 -0
- venv/Lib/site-packages/pip/_vendor/rich/_emoji_replace.py +32 -0
- venv/Lib/site-packages/pip/_vendor/rich/_export_format.py +76 -0
- venv/Lib/site-packages/pip/_vendor/rich/_extension.py +10 -0
- venv/Lib/site-packages/pip/_vendor/rich/_fileno.py +24 -0
- venv/Lib/site-packages/pip/_vendor/rich/_inspect.py +268 -0
- venv/Lib/site-packages/pip/_vendor/rich/_log_render.py +94 -0
- venv/Lib/site-packages/pip/_vendor/rich/_loop.py +43 -0
- venv/Lib/site-packages/pip/_vendor/rich/_null_file.py +69 -0
- venv/Lib/site-packages/pip/_vendor/rich/_palettes.py +309 -0
- venv/Lib/site-packages/pip/_vendor/rich/_pick.py +17 -0
- venv/Lib/site-packages/pip/_vendor/rich/_ratio.py +153 -0
- venv/Lib/site-packages/pip/_vendor/rich/_spinners.py +482 -0
- venv/Lib/site-packages/pip/_vendor/rich/_stack.py +16 -0
- venv/Lib/site-packages/pip/_vendor/rich/_timer.py +19 -0
- venv/Lib/site-packages/pip/_vendor/rich/_win32_console.py +661 -0
- venv/Lib/site-packages/pip/_vendor/rich/_windows.py +71 -0
- venv/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py +56 -0
- venv/Lib/site-packages/pip/_vendor/rich/_wrap.py +93 -0
- venv/Lib/site-packages/pip/_vendor/rich/abc.py +33 -0
- venv/Lib/site-packages/pip/_vendor/rich/align.py +306 -0
- venv/Lib/site-packages/pip/_vendor/rich/ansi.py +241 -0
- venv/Lib/site-packages/pip/_vendor/rich/bar.py +93 -0
- venv/Lib/site-packages/pip/_vendor/rich/box.py +474 -0
- venv/Lib/site-packages/pip/_vendor/rich/cells.py +174 -0
- venv/Lib/site-packages/pip/_vendor/rich/color.py +621 -0
- venv/Lib/site-packages/pip/_vendor/rich/color_triplet.py +38 -0
- venv/Lib/site-packages/pip/_vendor/rich/columns.py +187 -0
- venv/Lib/site-packages/pip/_vendor/rich/console.py +2680 -0
- venv/Lib/site-packages/pip/_vendor/rich/constrain.py +37 -0
- venv/Lib/site-packages/pip/_vendor/rich/containers.py +167 -0
- venv/Lib/site-packages/pip/_vendor/rich/control.py +219 -0
- venv/Lib/site-packages/pip/_vendor/rich/default_styles.py +193 -0
- venv/Lib/site-packages/pip/_vendor/rich/diagnose.py +39 -0
- venv/Lib/site-packages/pip/_vendor/rich/emoji.py +91 -0
- venv/Lib/site-packages/pip/_vendor/rich/errors.py +34 -0
- venv/Lib/site-packages/pip/_vendor/rich/file_proxy.py +57 -0
- venv/Lib/site-packages/pip/_vendor/rich/filesize.py +88 -0
- venv/Lib/site-packages/pip/_vendor/rich/highlighter.py +232 -0
- venv/Lib/site-packages/pip/_vendor/rich/json.py +139 -0
- venv/Lib/site-packages/pip/_vendor/rich/jupyter.py +101 -0
- venv/Lib/site-packages/pip/_vendor/rich/layout.py +442 -0
- venv/Lib/site-packages/pip/_vendor/rich/live.py +400 -0
- venv/Lib/site-packages/pip/_vendor/rich/live_render.py +106 -0
- venv/Lib/site-packages/pip/_vendor/rich/logging.py +297 -0
- venv/Lib/site-packages/pip/_vendor/rich/markup.py +251 -0
- venv/Lib/site-packages/pip/_vendor/rich/measure.py +151 -0
- venv/Lib/site-packages/pip/_vendor/rich/padding.py +141 -0
- venv/Lib/site-packages/pip/_vendor/rich/pager.py +34 -0
- venv/Lib/site-packages/pip/_vendor/rich/palette.py +100 -0
- venv/Lib/site-packages/pip/_vendor/rich/panel.py +317 -0
- venv/Lib/site-packages/pip/_vendor/rich/pretty.py +1016 -0
- venv/Lib/site-packages/pip/_vendor/rich/progress.py +1715 -0
- venv/Lib/site-packages/pip/_vendor/rich/progress_bar.py +223 -0
- venv/Lib/site-packages/pip/_vendor/rich/prompt.py +400 -0
- venv/Lib/site-packages/pip/_vendor/rich/protocol.py +42 -0
- venv/Lib/site-packages/pip/_vendor/rich/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/rich/region.py +10 -0
- venv/Lib/site-packages/pip/_vendor/rich/repr.py +149 -0
- venv/Lib/site-packages/pip/_vendor/rich/rule.py +130 -0
- venv/Lib/site-packages/pip/_vendor/rich/scope.py +86 -0
- venv/Lib/site-packages/pip/_vendor/rich/screen.py +54 -0
- venv/Lib/site-packages/pip/_vendor/rich/segment.py +752 -0
- venv/Lib/site-packages/pip/_vendor/rich/spinner.py +132 -0
- venv/Lib/site-packages/pip/_vendor/rich/status.py +131 -0
- venv/Lib/site-packages/pip/_vendor/rich/style.py +796 -0
- venv/Lib/site-packages/pip/_vendor/rich/styled.py +42 -0
- venv/Lib/site-packages/pip/_vendor/rich/syntax.py +985 -0
- venv/Lib/site-packages/pip/_vendor/rich/table.py +1006 -0
- venv/Lib/site-packages/pip/_vendor/rich/terminal_theme.py +153 -0
- venv/Lib/site-packages/pip/_vendor/rich/text.py +1361 -0
- venv/Lib/site-packages/pip/_vendor/rich/theme.py +115 -0
- venv/Lib/site-packages/pip/_vendor/rich/themes.py +5 -0
- venv/Lib/site-packages/pip/_vendor/rich/traceback.py +899 -0
- venv/Lib/site-packages/pip/_vendor/rich/tree.py +257 -0
- venv/Lib/site-packages/pip/_vendor/tomli/__init__.py +8 -0
- venv/Lib/site-packages/pip/_vendor/tomli/_parser.py +770 -0
- venv/Lib/site-packages/pip/_vendor/tomli/_re.py +112 -0
- venv/Lib/site-packages/pip/_vendor/tomli/_types.py +10 -0
- venv/Lib/site-packages/pip/_vendor/tomli/py.typed +1 -0
- venv/Lib/site-packages/pip/_vendor/tomli_w/__init__.py +4 -0
- venv/Lib/site-packages/pip/_vendor/tomli_w/_writer.py +229 -0
- venv/Lib/site-packages/pip/_vendor/tomli_w/py.typed +1 -0
- venv/Lib/site-packages/pip/_vendor/truststore/__init__.py +36 -0
- venv/Lib/site-packages/pip/_vendor/truststore/_api.py +333 -0
- venv/Lib/site-packages/pip/_vendor/truststore/_macos.py +571 -0
- venv/Lib/site-packages/pip/_vendor/truststore/_openssl.py +66 -0
- venv/Lib/site-packages/pip/_vendor/truststore/_ssl_constants.py +31 -0
- venv/Lib/site-packages/pip/_vendor/truststore/_windows.py +567 -0
- venv/Lib/site-packages/pip/_vendor/truststore/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/__init__.py +102 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/_collections.py +355 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/_version.py +2 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/connection.py +572 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +1140 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +36 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +519 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +397 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py +314 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +130 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +518 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +920 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +216 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +323 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/fields.py +274 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/filepost.py +98 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +51 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +155 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/six.py +1076 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +540 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/request.py +191 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/response.py +879 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py +49 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/connection.py +149 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py +57 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/queue.py +22 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/request.py +137 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/response.py +107 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +622 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +504 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +159 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py +221 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py +271 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/url.py +435 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/wait.py +152 -0
- venv/Lib/site-packages/pip/py.typed +4 -0
- cli_ih-0.6.3.dist-info/RECORD +0 -8
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import sys
|
|
3
|
+
from importlib.machinery import ModuleSpec, PathFinder
|
|
4
|
+
from importlib.machinery import all_suffixes as module_suffixes
|
|
5
|
+
from importlib.util import spec_from_file_location
|
|
6
|
+
from itertools import chain
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
MAPPING: dict[str, str] = {'cli_ih': 'D:\\workspace\\Input_Handler\\cli_ih', 'dist': 'D:\\workspace\\Input_Handler\\dist', 'venv': 'D:\\workspace\\Input_Handler\\venv'}
|
|
10
|
+
NAMESPACES: dict[str, list[str]] = {'dist': ['D:\\workspace\\Input_Handler\\dist'], 'venv': ['D:\\workspace\\Input_Handler\\venv'], 'venv.Include': ['D:\\workspace\\Input_Handler\\venv\\Include'], 'venv.Lib': ['D:\\workspace\\Input_Handler\\venv\\Lib'], 'venv.Scripts': ['D:\\workspace\\Input_Handler\\venv\\Scripts'], 'venv.Lib.site-packages': ['D:\\workspace\\Input_Handler\\venv\\Lib\\site-packages']}
|
|
11
|
+
PATH_PLACEHOLDER = '__editable__.cli_ih-0.6.3.1.finder' + ".__path_hook__"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class _EditableFinder: # MetaPathFinder
|
|
15
|
+
@classmethod
|
|
16
|
+
def find_spec(cls, fullname: str, path=None, target=None) -> ModuleSpec | None: # type: ignore
|
|
17
|
+
# Top-level packages and modules (we know these exist in the FS)
|
|
18
|
+
if fullname in MAPPING:
|
|
19
|
+
pkg_path = MAPPING[fullname]
|
|
20
|
+
return cls._find_spec(fullname, Path(pkg_path))
|
|
21
|
+
|
|
22
|
+
# Handle immediate children modules (required for namespaces to work)
|
|
23
|
+
# To avoid problems with case sensitivity in the file system we delegate
|
|
24
|
+
# to the importlib.machinery implementation.
|
|
25
|
+
parent, _, child = fullname.rpartition(".")
|
|
26
|
+
if parent and parent in MAPPING:
|
|
27
|
+
return PathFinder.find_spec(fullname, path=[MAPPING[parent]])
|
|
28
|
+
|
|
29
|
+
# Other levels of nesting should be handled automatically by importlib
|
|
30
|
+
# using the parent path.
|
|
31
|
+
return None
|
|
32
|
+
|
|
33
|
+
@classmethod
|
|
34
|
+
def _find_spec(cls, fullname: str, candidate_path: Path) -> ModuleSpec | None:
|
|
35
|
+
init = candidate_path / "__init__.py"
|
|
36
|
+
candidates = (candidate_path.with_suffix(x) for x in module_suffixes())
|
|
37
|
+
for candidate in chain([init], candidates):
|
|
38
|
+
if candidate.exists():
|
|
39
|
+
return spec_from_file_location(fullname, candidate)
|
|
40
|
+
return None
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class _EditableNamespaceFinder: # PathEntryFinder
|
|
44
|
+
@classmethod
|
|
45
|
+
def _path_hook(cls, path) -> type[_EditableNamespaceFinder]:
|
|
46
|
+
if path == PATH_PLACEHOLDER:
|
|
47
|
+
return cls
|
|
48
|
+
raise ImportError
|
|
49
|
+
|
|
50
|
+
@classmethod
|
|
51
|
+
def _paths(cls, fullname: str) -> list[str]:
|
|
52
|
+
paths = NAMESPACES[fullname]
|
|
53
|
+
if not paths and fullname in MAPPING:
|
|
54
|
+
paths = [MAPPING[fullname]]
|
|
55
|
+
# Always add placeholder, for 2 reasons:
|
|
56
|
+
# 1. __path__ cannot be empty for the spec to be considered namespace.
|
|
57
|
+
# 2. In the case of nested namespaces, we need to force
|
|
58
|
+
# import machinery to query _EditableNamespaceFinder again.
|
|
59
|
+
return [*paths, PATH_PLACEHOLDER]
|
|
60
|
+
|
|
61
|
+
@classmethod
|
|
62
|
+
def find_spec(cls, fullname: str, target=None) -> ModuleSpec | None: # type: ignore
|
|
63
|
+
if fullname in NAMESPACES:
|
|
64
|
+
spec = ModuleSpec(fullname, None, is_package=True)
|
|
65
|
+
spec.submodule_search_locations = cls._paths(fullname)
|
|
66
|
+
return spec
|
|
67
|
+
return None
|
|
68
|
+
|
|
69
|
+
@classmethod
|
|
70
|
+
def find_module(cls, _fullname) -> None:
|
|
71
|
+
return None
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def install():
|
|
75
|
+
if not any(finder == _EditableFinder for finder in sys.meta_path):
|
|
76
|
+
sys.meta_path.append(_EditableFinder)
|
|
77
|
+
|
|
78
|
+
if not NAMESPACES:
|
|
79
|
+
return
|
|
80
|
+
|
|
81
|
+
if not any(hook == _EditableNamespaceFinder._path_hook for hook in sys.path_hooks):
|
|
82
|
+
# PathEntryFinder is needed to create NamespaceSpec without private APIS
|
|
83
|
+
sys.path_hooks.append(_EditableNamespaceFinder._path_hook)
|
|
84
|
+
if PATH_PLACEHOLDER not in sys.path:
|
|
85
|
+
sys.path.append(PATH_PLACEHOLDER) # Used just to trigger the path hook
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
__version__ = "25.2"
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def main(args: list[str] | None = None) -> int:
|
|
7
|
+
"""This is an internal API only meant for use by pip's own console scripts.
|
|
8
|
+
|
|
9
|
+
For additional details, see https://github.com/pypa/pip/issues/7498.
|
|
10
|
+
"""
|
|
11
|
+
from pip._internal.utils.entrypoints import _wrapper
|
|
12
|
+
|
|
13
|
+
return _wrapper(args)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
# Remove '' and current working directory from the first entry
|
|
5
|
+
# of sys.path, if present to avoid using current directory
|
|
6
|
+
# in pip commands check, freeze, install, list and show,
|
|
7
|
+
# when invoked as python -m pip <command>
|
|
8
|
+
if sys.path[0] in ("", os.getcwd()):
|
|
9
|
+
sys.path.pop(0)
|
|
10
|
+
|
|
11
|
+
# If we are running from a wheel, add the wheel to sys.path
|
|
12
|
+
# This allows the usage python pip-*.whl/pip install pip-*.whl
|
|
13
|
+
if __package__ == "":
|
|
14
|
+
# __file__ is pip-*.whl/pip/__main__.py
|
|
15
|
+
# first dirname call strips of '/__main__.py', second strips off '/pip'
|
|
16
|
+
# Resulting path is the name of the wheel itself
|
|
17
|
+
# Add that to sys.path so we can import pip
|
|
18
|
+
path = os.path.dirname(os.path.dirname(__file__))
|
|
19
|
+
sys.path.insert(0, path)
|
|
20
|
+
|
|
21
|
+
if __name__ == "__main__":
|
|
22
|
+
from pip._internal.cli.main import main as _main
|
|
23
|
+
|
|
24
|
+
sys.exit(_main())
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""Execute exactly this copy of pip, within a different environment.
|
|
2
|
+
|
|
3
|
+
This file is named as it is, to ensure that this module can't be imported via
|
|
4
|
+
an import statement.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
# /!\ This version compatibility check section must be Python 2 compatible. /!\
|
|
8
|
+
|
|
9
|
+
import sys
|
|
10
|
+
|
|
11
|
+
# Copied from pyproject.toml
|
|
12
|
+
PYTHON_REQUIRES = (3, 9)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def version_str(version): # type: ignore
|
|
16
|
+
return ".".join(str(v) for v in version)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
if sys.version_info[:2] < PYTHON_REQUIRES:
|
|
20
|
+
raise SystemExit(
|
|
21
|
+
"This version of pip does not support python {} (requires >={}).".format(
|
|
22
|
+
version_str(sys.version_info[:2]), version_str(PYTHON_REQUIRES)
|
|
23
|
+
)
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
# From here on, we can use Python 3 features, but the syntax must remain
|
|
27
|
+
# Python 2 compatible.
|
|
28
|
+
|
|
29
|
+
import runpy # noqa: E402
|
|
30
|
+
from importlib.machinery import PathFinder # noqa: E402
|
|
31
|
+
from os.path import dirname # noqa: E402
|
|
32
|
+
|
|
33
|
+
PIP_SOURCES_ROOT = dirname(dirname(__file__))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class PipImportRedirectingFinder:
|
|
37
|
+
@classmethod
|
|
38
|
+
def find_spec(self, fullname, path=None, target=None): # type: ignore
|
|
39
|
+
if fullname != "pip":
|
|
40
|
+
return None
|
|
41
|
+
|
|
42
|
+
spec = PathFinder.find_spec(fullname, [PIP_SOURCES_ROOT], target)
|
|
43
|
+
assert spec, (PIP_SOURCES_ROOT, fullname)
|
|
44
|
+
return spec
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
sys.meta_path.insert(0, PipImportRedirectingFinder())
|
|
48
|
+
|
|
49
|
+
assert __name__ == "__main__", "Cannot run __pip-runner__.py as a non-main module"
|
|
50
|
+
runpy.run_module("pip", run_name="__main__", alter_sys=True)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from pip._internal.utils import _log
|
|
4
|
+
|
|
5
|
+
# init_logging() must be called before any call to logging.getLogger()
|
|
6
|
+
# which happens at import of most modules.
|
|
7
|
+
_log.init_logging()
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def main(args: list[str] | None = None) -> int:
|
|
11
|
+
"""This is preserved for old console scripts that may still be referencing
|
|
12
|
+
it.
|
|
13
|
+
|
|
14
|
+
For additional details, see https://github.com/pypa/pip/issues/7498.
|
|
15
|
+
"""
|
|
16
|
+
from pip._internal.utils.entrypoints import _wrapper
|
|
17
|
+
|
|
18
|
+
return _wrapper(args)
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
"""Build Environment used for isolation during sdist building"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
import os
|
|
7
|
+
import pathlib
|
|
8
|
+
import site
|
|
9
|
+
import sys
|
|
10
|
+
import textwrap
|
|
11
|
+
from collections import OrderedDict
|
|
12
|
+
from collections.abc import Iterable
|
|
13
|
+
from types import TracebackType
|
|
14
|
+
from typing import TYPE_CHECKING, Protocol
|
|
15
|
+
|
|
16
|
+
from pip._vendor.packaging.version import Version
|
|
17
|
+
|
|
18
|
+
from pip import __file__ as pip_location
|
|
19
|
+
from pip._internal.cli.spinners import open_spinner
|
|
20
|
+
from pip._internal.locations import get_platlib, get_purelib, get_scheme
|
|
21
|
+
from pip._internal.metadata import get_default_environment, get_environment
|
|
22
|
+
from pip._internal.utils.logging import VERBOSE
|
|
23
|
+
from pip._internal.utils.packaging import get_requirement
|
|
24
|
+
from pip._internal.utils.subprocess import call_subprocess
|
|
25
|
+
from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds
|
|
26
|
+
|
|
27
|
+
if TYPE_CHECKING:
|
|
28
|
+
from pip._internal.index.package_finder import PackageFinder
|
|
29
|
+
from pip._internal.req.req_install import InstallRequirement
|
|
30
|
+
|
|
31
|
+
logger = logging.getLogger(__name__)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _dedup(a: str, b: str) -> tuple[str] | tuple[str, str]:
|
|
35
|
+
return (a, b) if a != b else (a,)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class _Prefix:
|
|
39
|
+
def __init__(self, path: str) -> None:
|
|
40
|
+
self.path = path
|
|
41
|
+
self.setup = False
|
|
42
|
+
scheme = get_scheme("", prefix=path)
|
|
43
|
+
self.bin_dir = scheme.scripts
|
|
44
|
+
self.lib_dirs = _dedup(scheme.purelib, scheme.platlib)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def get_runnable_pip() -> str:
|
|
48
|
+
"""Get a file to pass to a Python executable, to run the currently-running pip.
|
|
49
|
+
|
|
50
|
+
This is used to run a pip subprocess, for installing requirements into the build
|
|
51
|
+
environment.
|
|
52
|
+
"""
|
|
53
|
+
source = pathlib.Path(pip_location).resolve().parent
|
|
54
|
+
|
|
55
|
+
if not source.is_dir():
|
|
56
|
+
# This would happen if someone is using pip from inside a zip file. In that
|
|
57
|
+
# case, we can use that directly.
|
|
58
|
+
return str(source)
|
|
59
|
+
|
|
60
|
+
return os.fsdecode(source / "__pip-runner__.py")
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def _get_system_sitepackages() -> set[str]:
|
|
64
|
+
"""Get system site packages
|
|
65
|
+
|
|
66
|
+
Usually from site.getsitepackages,
|
|
67
|
+
but fallback on `get_purelib()/get_platlib()` if unavailable
|
|
68
|
+
(e.g. in a virtualenv created by virtualenv<20)
|
|
69
|
+
|
|
70
|
+
Returns normalized set of strings.
|
|
71
|
+
"""
|
|
72
|
+
if hasattr(site, "getsitepackages"):
|
|
73
|
+
system_sites = site.getsitepackages()
|
|
74
|
+
else:
|
|
75
|
+
# virtualenv < 20 overwrites site.py without getsitepackages
|
|
76
|
+
# fallback on get_purelib/get_platlib.
|
|
77
|
+
# this is known to miss things, but shouldn't in the cases
|
|
78
|
+
# where getsitepackages() has been removed (inside a virtualenv)
|
|
79
|
+
system_sites = [get_purelib(), get_platlib()]
|
|
80
|
+
return {os.path.normcase(path) for path in system_sites}
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class BuildEnvironmentInstaller(Protocol):
|
|
84
|
+
"""
|
|
85
|
+
Interface for installing build dependencies into an isolated build
|
|
86
|
+
environment.
|
|
87
|
+
"""
|
|
88
|
+
|
|
89
|
+
def install(
|
|
90
|
+
self,
|
|
91
|
+
requirements: Iterable[str],
|
|
92
|
+
prefix: _Prefix,
|
|
93
|
+
*,
|
|
94
|
+
kind: str,
|
|
95
|
+
for_req: InstallRequirement | None,
|
|
96
|
+
) -> None: ...
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class SubprocessBuildEnvironmentInstaller:
|
|
100
|
+
"""
|
|
101
|
+
Install build dependencies by calling pip in a subprocess.
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
def __init__(self, finder: PackageFinder) -> None:
|
|
105
|
+
self.finder = finder
|
|
106
|
+
|
|
107
|
+
def install(
|
|
108
|
+
self,
|
|
109
|
+
requirements: Iterable[str],
|
|
110
|
+
prefix: _Prefix,
|
|
111
|
+
*,
|
|
112
|
+
kind: str,
|
|
113
|
+
for_req: InstallRequirement | None,
|
|
114
|
+
) -> None:
|
|
115
|
+
finder = self.finder
|
|
116
|
+
args: list[str] = [
|
|
117
|
+
sys.executable,
|
|
118
|
+
get_runnable_pip(),
|
|
119
|
+
"install",
|
|
120
|
+
"--ignore-installed",
|
|
121
|
+
"--no-user",
|
|
122
|
+
"--prefix",
|
|
123
|
+
prefix.path,
|
|
124
|
+
"--no-warn-script-location",
|
|
125
|
+
"--disable-pip-version-check",
|
|
126
|
+
# As the build environment is ephemeral, it's wasteful to
|
|
127
|
+
# pre-compile everything, especially as not every Python
|
|
128
|
+
# module will be used/compiled in most cases.
|
|
129
|
+
"--no-compile",
|
|
130
|
+
# The prefix specified two lines above, thus
|
|
131
|
+
# target from config file or env var should be ignored
|
|
132
|
+
"--target",
|
|
133
|
+
"",
|
|
134
|
+
]
|
|
135
|
+
if logger.getEffectiveLevel() <= logging.DEBUG:
|
|
136
|
+
args.append("-vv")
|
|
137
|
+
elif logger.getEffectiveLevel() <= VERBOSE:
|
|
138
|
+
args.append("-v")
|
|
139
|
+
for format_control in ("no_binary", "only_binary"):
|
|
140
|
+
formats = getattr(finder.format_control, format_control)
|
|
141
|
+
args.extend(
|
|
142
|
+
(
|
|
143
|
+
"--" + format_control.replace("_", "-"),
|
|
144
|
+
",".join(sorted(formats or {":none:"})),
|
|
145
|
+
)
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
index_urls = finder.index_urls
|
|
149
|
+
if index_urls:
|
|
150
|
+
args.extend(["-i", index_urls[0]])
|
|
151
|
+
for extra_index in index_urls[1:]:
|
|
152
|
+
args.extend(["--extra-index-url", extra_index])
|
|
153
|
+
else:
|
|
154
|
+
args.append("--no-index")
|
|
155
|
+
for link in finder.find_links:
|
|
156
|
+
args.extend(["--find-links", link])
|
|
157
|
+
|
|
158
|
+
if finder.proxy:
|
|
159
|
+
args.extend(["--proxy", finder.proxy])
|
|
160
|
+
for host in finder.trusted_hosts:
|
|
161
|
+
args.extend(["--trusted-host", host])
|
|
162
|
+
if finder.custom_cert:
|
|
163
|
+
args.extend(["--cert", finder.custom_cert])
|
|
164
|
+
if finder.client_cert:
|
|
165
|
+
args.extend(["--client-cert", finder.client_cert])
|
|
166
|
+
if finder.allow_all_prereleases:
|
|
167
|
+
args.append("--pre")
|
|
168
|
+
if finder.prefer_binary:
|
|
169
|
+
args.append("--prefer-binary")
|
|
170
|
+
args.append("--")
|
|
171
|
+
args.extend(requirements)
|
|
172
|
+
with open_spinner(f"Installing {kind}") as spinner:
|
|
173
|
+
call_subprocess(
|
|
174
|
+
args,
|
|
175
|
+
command_desc=f"pip subprocess to install {kind}",
|
|
176
|
+
spinner=spinner,
|
|
177
|
+
)
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
class BuildEnvironment:
|
|
181
|
+
"""Creates and manages an isolated environment to install build deps"""
|
|
182
|
+
|
|
183
|
+
def __init__(self, installer: BuildEnvironmentInstaller) -> None:
|
|
184
|
+
self.installer = installer
|
|
185
|
+
temp_dir = TempDirectory(kind=tempdir_kinds.BUILD_ENV, globally_managed=True)
|
|
186
|
+
|
|
187
|
+
self._prefixes = OrderedDict(
|
|
188
|
+
(name, _Prefix(os.path.join(temp_dir.path, name)))
|
|
189
|
+
for name in ("normal", "overlay")
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
self._bin_dirs: list[str] = []
|
|
193
|
+
self._lib_dirs: list[str] = []
|
|
194
|
+
for prefix in reversed(list(self._prefixes.values())):
|
|
195
|
+
self._bin_dirs.append(prefix.bin_dir)
|
|
196
|
+
self._lib_dirs.extend(prefix.lib_dirs)
|
|
197
|
+
|
|
198
|
+
# Customize site to:
|
|
199
|
+
# - ensure .pth files are honored
|
|
200
|
+
# - prevent access to system site packages
|
|
201
|
+
system_sites = _get_system_sitepackages()
|
|
202
|
+
|
|
203
|
+
self._site_dir = os.path.join(temp_dir.path, "site")
|
|
204
|
+
if not os.path.exists(self._site_dir):
|
|
205
|
+
os.mkdir(self._site_dir)
|
|
206
|
+
with open(
|
|
207
|
+
os.path.join(self._site_dir, "sitecustomize.py"), "w", encoding="utf-8"
|
|
208
|
+
) as fp:
|
|
209
|
+
fp.write(
|
|
210
|
+
textwrap.dedent(
|
|
211
|
+
"""
|
|
212
|
+
import os, site, sys
|
|
213
|
+
|
|
214
|
+
# First, drop system-sites related paths.
|
|
215
|
+
original_sys_path = sys.path[:]
|
|
216
|
+
known_paths = set()
|
|
217
|
+
for path in {system_sites!r}:
|
|
218
|
+
site.addsitedir(path, known_paths=known_paths)
|
|
219
|
+
system_paths = set(
|
|
220
|
+
os.path.normcase(path)
|
|
221
|
+
for path in sys.path[len(original_sys_path):]
|
|
222
|
+
)
|
|
223
|
+
original_sys_path = [
|
|
224
|
+
path for path in original_sys_path
|
|
225
|
+
if os.path.normcase(path) not in system_paths
|
|
226
|
+
]
|
|
227
|
+
sys.path = original_sys_path
|
|
228
|
+
|
|
229
|
+
# Second, add lib directories.
|
|
230
|
+
# ensuring .pth file are processed.
|
|
231
|
+
for path in {lib_dirs!r}:
|
|
232
|
+
assert not path in sys.path
|
|
233
|
+
site.addsitedir(path)
|
|
234
|
+
"""
|
|
235
|
+
).format(system_sites=system_sites, lib_dirs=self._lib_dirs)
|
|
236
|
+
)
|
|
237
|
+
|
|
238
|
+
def __enter__(self) -> None:
|
|
239
|
+
self._save_env = {
|
|
240
|
+
name: os.environ.get(name, None)
|
|
241
|
+
for name in ("PATH", "PYTHONNOUSERSITE", "PYTHONPATH")
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
path = self._bin_dirs[:]
|
|
245
|
+
old_path = self._save_env["PATH"]
|
|
246
|
+
if old_path:
|
|
247
|
+
path.extend(old_path.split(os.pathsep))
|
|
248
|
+
|
|
249
|
+
pythonpath = [self._site_dir]
|
|
250
|
+
|
|
251
|
+
os.environ.update(
|
|
252
|
+
{
|
|
253
|
+
"PATH": os.pathsep.join(path),
|
|
254
|
+
"PYTHONNOUSERSITE": "1",
|
|
255
|
+
"PYTHONPATH": os.pathsep.join(pythonpath),
|
|
256
|
+
}
|
|
257
|
+
)
|
|
258
|
+
|
|
259
|
+
def __exit__(
|
|
260
|
+
self,
|
|
261
|
+
exc_type: type[BaseException] | None,
|
|
262
|
+
exc_val: BaseException | None,
|
|
263
|
+
exc_tb: TracebackType | None,
|
|
264
|
+
) -> None:
|
|
265
|
+
for varname, old_value in self._save_env.items():
|
|
266
|
+
if old_value is None:
|
|
267
|
+
os.environ.pop(varname, None)
|
|
268
|
+
else:
|
|
269
|
+
os.environ[varname] = old_value
|
|
270
|
+
|
|
271
|
+
def check_requirements(
|
|
272
|
+
self, reqs: Iterable[str]
|
|
273
|
+
) -> tuple[set[tuple[str, str]], set[str]]:
|
|
274
|
+
"""Return 2 sets:
|
|
275
|
+
- conflicting requirements: set of (installed, wanted) reqs tuples
|
|
276
|
+
- missing requirements: set of reqs
|
|
277
|
+
"""
|
|
278
|
+
missing = set()
|
|
279
|
+
conflicting = set()
|
|
280
|
+
if reqs:
|
|
281
|
+
env = (
|
|
282
|
+
get_environment(self._lib_dirs)
|
|
283
|
+
if hasattr(self, "_lib_dirs")
|
|
284
|
+
else get_default_environment()
|
|
285
|
+
)
|
|
286
|
+
for req_str in reqs:
|
|
287
|
+
req = get_requirement(req_str)
|
|
288
|
+
# We're explicitly evaluating with an empty extra value, since build
|
|
289
|
+
# environments are not provided any mechanism to select specific extras.
|
|
290
|
+
if req.marker is not None and not req.marker.evaluate({"extra": ""}):
|
|
291
|
+
continue
|
|
292
|
+
dist = env.get_distribution(req.name)
|
|
293
|
+
if not dist:
|
|
294
|
+
missing.add(req_str)
|
|
295
|
+
continue
|
|
296
|
+
if isinstance(dist.version, Version):
|
|
297
|
+
installed_req_str = f"{req.name}=={dist.version}"
|
|
298
|
+
else:
|
|
299
|
+
installed_req_str = f"{req.name}==={dist.version}"
|
|
300
|
+
if not req.specifier.contains(dist.version, prereleases=True):
|
|
301
|
+
conflicting.add((installed_req_str, req_str))
|
|
302
|
+
# FIXME: Consider direct URL?
|
|
303
|
+
return conflicting, missing
|
|
304
|
+
|
|
305
|
+
def install_requirements(
|
|
306
|
+
self,
|
|
307
|
+
requirements: Iterable[str],
|
|
308
|
+
prefix_as_string: str,
|
|
309
|
+
*,
|
|
310
|
+
kind: str,
|
|
311
|
+
for_req: InstallRequirement | None = None,
|
|
312
|
+
) -> None:
|
|
313
|
+
prefix = self._prefixes[prefix_as_string]
|
|
314
|
+
assert not prefix.setup
|
|
315
|
+
prefix.setup = True
|
|
316
|
+
if not requirements:
|
|
317
|
+
return
|
|
318
|
+
self.installer.install(requirements, prefix, kind=kind, for_req=for_req)
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
class NoOpBuildEnvironment(BuildEnvironment):
|
|
322
|
+
"""A no-op drop-in replacement for BuildEnvironment"""
|
|
323
|
+
|
|
324
|
+
def __init__(self) -> None:
|
|
325
|
+
pass
|
|
326
|
+
|
|
327
|
+
def __enter__(self) -> None:
|
|
328
|
+
pass
|
|
329
|
+
|
|
330
|
+
def __exit__(
|
|
331
|
+
self,
|
|
332
|
+
exc_type: type[BaseException] | None,
|
|
333
|
+
exc_val: BaseException | None,
|
|
334
|
+
exc_tb: TracebackType | None,
|
|
335
|
+
) -> None:
|
|
336
|
+
pass
|
|
337
|
+
|
|
338
|
+
def cleanup(self) -> None:
|
|
339
|
+
pass
|
|
340
|
+
|
|
341
|
+
def install_requirements(
|
|
342
|
+
self,
|
|
343
|
+
requirements: Iterable[str],
|
|
344
|
+
prefix_as_string: str,
|
|
345
|
+
*,
|
|
346
|
+
kind: str,
|
|
347
|
+
for_req: InstallRequirement | None = None,
|
|
348
|
+
) -> None:
|
|
349
|
+
raise NotImplementedError()
|