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,28 @@
|
|
|
1
|
+
from collections.abc import Generator
|
|
2
|
+
from contextlib import AbstractContextManager, ExitStack, contextmanager
|
|
3
|
+
from typing import TypeVar
|
|
4
|
+
|
|
5
|
+
_T = TypeVar("_T", covariant=True)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class CommandContextMixIn:
|
|
9
|
+
def __init__(self) -> None:
|
|
10
|
+
super().__init__()
|
|
11
|
+
self._in_main_context = False
|
|
12
|
+
self._main_context = ExitStack()
|
|
13
|
+
|
|
14
|
+
@contextmanager
|
|
15
|
+
def main_context(self) -> Generator[None, None, None]:
|
|
16
|
+
assert not self._in_main_context
|
|
17
|
+
|
|
18
|
+
self._in_main_context = True
|
|
19
|
+
try:
|
|
20
|
+
with self._main_context:
|
|
21
|
+
yield
|
|
22
|
+
finally:
|
|
23
|
+
self._in_main_context = False
|
|
24
|
+
|
|
25
|
+
def enter_context(self, context_provider: AbstractContextManager[_T]) -> _T:
|
|
26
|
+
assert self._in_main_context
|
|
27
|
+
|
|
28
|
+
return self._main_context.enter_context(context_provider)
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Contains command classes which may interact with an index / the network.
|
|
3
|
+
|
|
4
|
+
Unlike its sister module, req_command, this module still uses lazy imports
|
|
5
|
+
so commands which don't always hit the network (e.g. list w/o --outdated or
|
|
6
|
+
--uptodate) don't need waste time importing PipSession and friends.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import logging
|
|
12
|
+
import os
|
|
13
|
+
import sys
|
|
14
|
+
from functools import lru_cache
|
|
15
|
+
from optparse import Values
|
|
16
|
+
from typing import TYPE_CHECKING
|
|
17
|
+
|
|
18
|
+
from pip._vendor import certifi
|
|
19
|
+
|
|
20
|
+
from pip._internal.cli.base_command import Command
|
|
21
|
+
from pip._internal.cli.command_context import CommandContextMixIn
|
|
22
|
+
|
|
23
|
+
if TYPE_CHECKING:
|
|
24
|
+
from ssl import SSLContext
|
|
25
|
+
|
|
26
|
+
from pip._internal.network.session import PipSession
|
|
27
|
+
|
|
28
|
+
logger = logging.getLogger(__name__)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@lru_cache
|
|
32
|
+
def _create_truststore_ssl_context() -> SSLContext | None:
|
|
33
|
+
if sys.version_info < (3, 10):
|
|
34
|
+
logger.debug("Disabling truststore because Python version isn't 3.10+")
|
|
35
|
+
return None
|
|
36
|
+
|
|
37
|
+
try:
|
|
38
|
+
import ssl
|
|
39
|
+
except ImportError:
|
|
40
|
+
logger.warning("Disabling truststore since ssl support is missing")
|
|
41
|
+
return None
|
|
42
|
+
|
|
43
|
+
try:
|
|
44
|
+
from pip._vendor import truststore
|
|
45
|
+
except ImportError:
|
|
46
|
+
logger.warning("Disabling truststore because platform isn't supported")
|
|
47
|
+
return None
|
|
48
|
+
|
|
49
|
+
ctx = truststore.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
|
|
50
|
+
ctx.load_verify_locations(certifi.where())
|
|
51
|
+
return ctx
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class SessionCommandMixin(CommandContextMixIn):
|
|
55
|
+
"""
|
|
56
|
+
A class mixin for command classes needing _build_session().
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
def __init__(self) -> None:
|
|
60
|
+
super().__init__()
|
|
61
|
+
self._session: PipSession | None = None
|
|
62
|
+
|
|
63
|
+
@classmethod
|
|
64
|
+
def _get_index_urls(cls, options: Values) -> list[str] | None:
|
|
65
|
+
"""Return a list of index urls from user-provided options."""
|
|
66
|
+
index_urls = []
|
|
67
|
+
if not getattr(options, "no_index", False):
|
|
68
|
+
url = getattr(options, "index_url", None)
|
|
69
|
+
if url:
|
|
70
|
+
index_urls.append(url)
|
|
71
|
+
urls = getattr(options, "extra_index_urls", None)
|
|
72
|
+
if urls:
|
|
73
|
+
index_urls.extend(urls)
|
|
74
|
+
# Return None rather than an empty list
|
|
75
|
+
return index_urls or None
|
|
76
|
+
|
|
77
|
+
def get_default_session(self, options: Values) -> PipSession:
|
|
78
|
+
"""Get a default-managed session."""
|
|
79
|
+
if self._session is None:
|
|
80
|
+
self._session = self.enter_context(self._build_session(options))
|
|
81
|
+
# there's no type annotation on requests.Session, so it's
|
|
82
|
+
# automatically ContextManager[Any] and self._session becomes Any,
|
|
83
|
+
# then https://github.com/python/mypy/issues/7696 kicks in
|
|
84
|
+
assert self._session is not None
|
|
85
|
+
return self._session
|
|
86
|
+
|
|
87
|
+
def _build_session(
|
|
88
|
+
self,
|
|
89
|
+
options: Values,
|
|
90
|
+
retries: int | None = None,
|
|
91
|
+
timeout: int | None = None,
|
|
92
|
+
) -> PipSession:
|
|
93
|
+
from pip._internal.network.session import PipSession
|
|
94
|
+
|
|
95
|
+
cache_dir = options.cache_dir
|
|
96
|
+
assert not cache_dir or os.path.isabs(cache_dir)
|
|
97
|
+
|
|
98
|
+
if "legacy-certs" not in options.deprecated_features_enabled:
|
|
99
|
+
ssl_context = _create_truststore_ssl_context()
|
|
100
|
+
else:
|
|
101
|
+
ssl_context = None
|
|
102
|
+
|
|
103
|
+
session = PipSession(
|
|
104
|
+
cache=os.path.join(cache_dir, "http-v2") if cache_dir else None,
|
|
105
|
+
retries=retries if retries is not None else options.retries,
|
|
106
|
+
trusted_hosts=options.trusted_hosts,
|
|
107
|
+
index_urls=self._get_index_urls(options),
|
|
108
|
+
ssl_context=ssl_context,
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
# Handle custom ca-bundles from the user
|
|
112
|
+
if options.cert:
|
|
113
|
+
session.verify = options.cert
|
|
114
|
+
|
|
115
|
+
# Handle SSL client certificate
|
|
116
|
+
if options.client_cert:
|
|
117
|
+
session.cert = options.client_cert
|
|
118
|
+
|
|
119
|
+
# Handle timeouts
|
|
120
|
+
if options.timeout or timeout:
|
|
121
|
+
session.timeout = timeout if timeout is not None else options.timeout
|
|
122
|
+
|
|
123
|
+
# Handle configured proxies
|
|
124
|
+
if options.proxy:
|
|
125
|
+
session.proxies = {
|
|
126
|
+
"http": options.proxy,
|
|
127
|
+
"https": options.proxy,
|
|
128
|
+
}
|
|
129
|
+
session.trust_env = False
|
|
130
|
+
session.pip_proxy = options.proxy
|
|
131
|
+
|
|
132
|
+
# Determine if we can prompt the user for authentication or not
|
|
133
|
+
session.auth.prompting = not options.no_input
|
|
134
|
+
session.auth.keyring_provider = options.keyring_provider
|
|
135
|
+
|
|
136
|
+
return session
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def _pip_self_version_check(session: PipSession, options: Values) -> None:
|
|
140
|
+
from pip._internal.self_outdated_check import pip_self_version_check as check
|
|
141
|
+
|
|
142
|
+
check(session, options)
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
class IndexGroupCommand(Command, SessionCommandMixin):
|
|
146
|
+
"""
|
|
147
|
+
Abstract base class for commands with the index_group options.
|
|
148
|
+
|
|
149
|
+
This also corresponds to the commands that permit the pip version check.
|
|
150
|
+
"""
|
|
151
|
+
|
|
152
|
+
def handle_pip_version_check(self, options: Values) -> None:
|
|
153
|
+
"""
|
|
154
|
+
Do the pip version check if not disabled.
|
|
155
|
+
|
|
156
|
+
This overrides the default behavior of not doing the check.
|
|
157
|
+
"""
|
|
158
|
+
# Make sure the index_group options are present.
|
|
159
|
+
assert hasattr(options, "no_index")
|
|
160
|
+
|
|
161
|
+
if options.disable_pip_version_check or options.no_index:
|
|
162
|
+
return
|
|
163
|
+
|
|
164
|
+
try:
|
|
165
|
+
# Otherwise, check if we're using the latest version of pip available.
|
|
166
|
+
session = self._build_session(
|
|
167
|
+
options,
|
|
168
|
+
retries=0,
|
|
169
|
+
timeout=min(5, options.timeout),
|
|
170
|
+
)
|
|
171
|
+
with session:
|
|
172
|
+
_pip_self_version_check(session, options)
|
|
173
|
+
except Exception:
|
|
174
|
+
logger.warning("There was an error checking the latest version of pip.")
|
|
175
|
+
logger.debug("See below for error", exc_info=True)
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"""Primary application entrypoint."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import locale
|
|
6
|
+
import logging
|
|
7
|
+
import os
|
|
8
|
+
import sys
|
|
9
|
+
import warnings
|
|
10
|
+
|
|
11
|
+
from pip._internal.cli.autocompletion import autocomplete
|
|
12
|
+
from pip._internal.cli.main_parser import parse_command
|
|
13
|
+
from pip._internal.commands import create_command
|
|
14
|
+
from pip._internal.exceptions import PipError
|
|
15
|
+
from pip._internal.utils import deprecation
|
|
16
|
+
|
|
17
|
+
logger = logging.getLogger(__name__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
# Do not import and use main() directly! Using it directly is actively
|
|
21
|
+
# discouraged by pip's maintainers. The name, location and behavior of
|
|
22
|
+
# this function is subject to change, so calling it directly is not
|
|
23
|
+
# portable across different pip versions.
|
|
24
|
+
|
|
25
|
+
# In addition, running pip in-process is unsupported and unsafe. This is
|
|
26
|
+
# elaborated in detail at
|
|
27
|
+
# https://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program.
|
|
28
|
+
# That document also provides suggestions that should work for nearly
|
|
29
|
+
# all users that are considering importing and using main() directly.
|
|
30
|
+
|
|
31
|
+
# However, we know that certain users will still want to invoke pip
|
|
32
|
+
# in-process. If you understand and accept the implications of using pip
|
|
33
|
+
# in an unsupported manner, the best approach is to use runpy to avoid
|
|
34
|
+
# depending on the exact location of this entry point.
|
|
35
|
+
|
|
36
|
+
# The following example shows how to use runpy to invoke pip in that
|
|
37
|
+
# case:
|
|
38
|
+
#
|
|
39
|
+
# sys.argv = ["pip", your, args, here]
|
|
40
|
+
# runpy.run_module("pip", run_name="__main__")
|
|
41
|
+
#
|
|
42
|
+
# Note that this will exit the process after running, unlike a direct
|
|
43
|
+
# call to main. As it is not safe to do any processing after calling
|
|
44
|
+
# main, this should not be an issue in practice.
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def main(args: list[str] | None = None) -> int:
|
|
48
|
+
if args is None:
|
|
49
|
+
args = sys.argv[1:]
|
|
50
|
+
|
|
51
|
+
# Suppress the pkg_resources deprecation warning
|
|
52
|
+
# Note - we use a module of .*pkg_resources to cover
|
|
53
|
+
# the normal case (pip._vendor.pkg_resources) and the
|
|
54
|
+
# devendored case (a bare pkg_resources)
|
|
55
|
+
warnings.filterwarnings(
|
|
56
|
+
action="ignore", category=DeprecationWarning, module=".*pkg_resources"
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
# Configure our deprecation warnings to be sent through loggers
|
|
60
|
+
deprecation.install_warning_logger()
|
|
61
|
+
|
|
62
|
+
autocomplete()
|
|
63
|
+
|
|
64
|
+
try:
|
|
65
|
+
cmd_name, cmd_args = parse_command(args)
|
|
66
|
+
except PipError as exc:
|
|
67
|
+
sys.stderr.write(f"ERROR: {exc}")
|
|
68
|
+
sys.stderr.write(os.linesep)
|
|
69
|
+
sys.exit(1)
|
|
70
|
+
|
|
71
|
+
# Needed for locale.getpreferredencoding(False) to work
|
|
72
|
+
# in pip._internal.utils.encoding.auto_decode
|
|
73
|
+
try:
|
|
74
|
+
locale.setlocale(locale.LC_ALL, "")
|
|
75
|
+
except locale.Error as e:
|
|
76
|
+
# setlocale can apparently crash if locale are uninitialized
|
|
77
|
+
logger.debug("Ignoring error %s when setting locale", e)
|
|
78
|
+
command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
|
|
79
|
+
|
|
80
|
+
return command.main(cmd_args)
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"""A single place for constructing and exposing the main parser"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
import subprocess
|
|
7
|
+
import sys
|
|
8
|
+
|
|
9
|
+
from pip._internal.build_env import get_runnable_pip
|
|
10
|
+
from pip._internal.cli import cmdoptions
|
|
11
|
+
from pip._internal.cli.parser import ConfigOptionParser, UpdatingDefaultsHelpFormatter
|
|
12
|
+
from pip._internal.commands import commands_dict, get_similar_commands
|
|
13
|
+
from pip._internal.exceptions import CommandError
|
|
14
|
+
from pip._internal.utils.misc import get_pip_version, get_prog
|
|
15
|
+
|
|
16
|
+
__all__ = ["create_main_parser", "parse_command"]
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def create_main_parser() -> ConfigOptionParser:
|
|
20
|
+
"""Creates and returns the main parser for pip's CLI"""
|
|
21
|
+
|
|
22
|
+
parser = ConfigOptionParser(
|
|
23
|
+
usage="\n%prog <command> [options]",
|
|
24
|
+
add_help_option=False,
|
|
25
|
+
formatter=UpdatingDefaultsHelpFormatter(),
|
|
26
|
+
name="global",
|
|
27
|
+
prog=get_prog(),
|
|
28
|
+
)
|
|
29
|
+
parser.disable_interspersed_args()
|
|
30
|
+
|
|
31
|
+
parser.version = get_pip_version()
|
|
32
|
+
|
|
33
|
+
# add the general options
|
|
34
|
+
gen_opts = cmdoptions.make_option_group(cmdoptions.general_group, parser)
|
|
35
|
+
parser.add_option_group(gen_opts)
|
|
36
|
+
|
|
37
|
+
# so the help formatter knows
|
|
38
|
+
parser.main = True # type: ignore
|
|
39
|
+
|
|
40
|
+
# create command listing for description
|
|
41
|
+
description = [""] + [
|
|
42
|
+
f"{name:27} {command_info.summary}"
|
|
43
|
+
for name, command_info in commands_dict.items()
|
|
44
|
+
]
|
|
45
|
+
parser.description = "\n".join(description)
|
|
46
|
+
|
|
47
|
+
return parser
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def identify_python_interpreter(python: str) -> str | None:
|
|
51
|
+
# If the named file exists, use it.
|
|
52
|
+
# If it's a directory, assume it's a virtual environment and
|
|
53
|
+
# look for the environment's Python executable.
|
|
54
|
+
if os.path.exists(python):
|
|
55
|
+
if os.path.isdir(python):
|
|
56
|
+
# bin/python for Unix, Scripts/python.exe for Windows
|
|
57
|
+
# Try both in case of odd cases like cygwin.
|
|
58
|
+
for exe in ("bin/python", "Scripts/python.exe"):
|
|
59
|
+
py = os.path.join(python, exe)
|
|
60
|
+
if os.path.exists(py):
|
|
61
|
+
return py
|
|
62
|
+
else:
|
|
63
|
+
return python
|
|
64
|
+
|
|
65
|
+
# Could not find the interpreter specified
|
|
66
|
+
return None
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def parse_command(args: list[str]) -> tuple[str, list[str]]:
|
|
70
|
+
parser = create_main_parser()
|
|
71
|
+
|
|
72
|
+
# Note: parser calls disable_interspersed_args(), so the result of this
|
|
73
|
+
# call is to split the initial args into the general options before the
|
|
74
|
+
# subcommand and everything else.
|
|
75
|
+
# For example:
|
|
76
|
+
# args: ['--timeout=5', 'install', '--user', 'INITools']
|
|
77
|
+
# general_options: ['--timeout==5']
|
|
78
|
+
# args_else: ['install', '--user', 'INITools']
|
|
79
|
+
general_options, args_else = parser.parse_args(args)
|
|
80
|
+
|
|
81
|
+
# --python
|
|
82
|
+
if general_options.python and "_PIP_RUNNING_IN_SUBPROCESS" not in os.environ:
|
|
83
|
+
# Re-invoke pip using the specified Python interpreter
|
|
84
|
+
interpreter = identify_python_interpreter(general_options.python)
|
|
85
|
+
if interpreter is None:
|
|
86
|
+
raise CommandError(
|
|
87
|
+
f"Could not locate Python interpreter {general_options.python}"
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
pip_cmd = [
|
|
91
|
+
interpreter,
|
|
92
|
+
get_runnable_pip(),
|
|
93
|
+
]
|
|
94
|
+
pip_cmd.extend(args)
|
|
95
|
+
|
|
96
|
+
# Set a flag so the child doesn't re-invoke itself, causing
|
|
97
|
+
# an infinite loop.
|
|
98
|
+
os.environ["_PIP_RUNNING_IN_SUBPROCESS"] = "1"
|
|
99
|
+
returncode = 0
|
|
100
|
+
try:
|
|
101
|
+
proc = subprocess.run(pip_cmd)
|
|
102
|
+
returncode = proc.returncode
|
|
103
|
+
except (subprocess.SubprocessError, OSError) as exc:
|
|
104
|
+
raise CommandError(f"Failed to run pip under {interpreter}: {exc}")
|
|
105
|
+
sys.exit(returncode)
|
|
106
|
+
|
|
107
|
+
# --version
|
|
108
|
+
if general_options.version:
|
|
109
|
+
sys.stdout.write(parser.version)
|
|
110
|
+
sys.stdout.write(os.linesep)
|
|
111
|
+
sys.exit()
|
|
112
|
+
|
|
113
|
+
# pip || pip help -> print_help()
|
|
114
|
+
if not args_else or (args_else[0] == "help" and len(args_else) == 1):
|
|
115
|
+
parser.print_help()
|
|
116
|
+
sys.exit()
|
|
117
|
+
|
|
118
|
+
# the subcommand name
|
|
119
|
+
cmd_name = args_else[0]
|
|
120
|
+
|
|
121
|
+
if cmd_name not in commands_dict:
|
|
122
|
+
guess = get_similar_commands(cmd_name)
|
|
123
|
+
|
|
124
|
+
msg = [f'unknown command "{cmd_name}"']
|
|
125
|
+
if guess:
|
|
126
|
+
msg.append(f'maybe you meant "{guess}"')
|
|
127
|
+
|
|
128
|
+
raise CommandError(" - ".join(msg))
|
|
129
|
+
|
|
130
|
+
# all the args without the subcommand
|
|
131
|
+
cmd_args = args[:]
|
|
132
|
+
cmd_args.remove(cmd_name)
|
|
133
|
+
|
|
134
|
+
return cmd_name, cmd_args
|