cli-ih 0.6.3.1__py3-none-any.whl → 0.7.0__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/__init__.py +1 -0
- cli_ih/asyncClient.py +73 -10
- cli_ih/client.py +63 -18
- cli_ih/utils.py +51 -0
- {cli_ih-0.6.3.1.dist-info → cli_ih-0.7.0.dist-info}/METADATA +1 -1
- cli_ih-0.7.0.dist-info/RECORD +9 -0
- {cli_ih-0.6.3.1.dist-info → cli_ih-0.7.0.dist-info}/top_level.txt +0 -1
- cli_ih-0.6.3.1.dist-info/RECORD +0 -425
- venv/Lib/site-packages/__editable___cli_ih_0_6_3_1_finder.py +0 -85
- venv/Lib/site-packages/pip/__init__.py +0 -13
- venv/Lib/site-packages/pip/__main__.py +0 -24
- venv/Lib/site-packages/pip/__pip-runner__.py +0 -50
- venv/Lib/site-packages/pip/_internal/__init__.py +0 -18
- venv/Lib/site-packages/pip/_internal/build_env.py +0 -349
- venv/Lib/site-packages/pip/_internal/cache.py +0 -291
- venv/Lib/site-packages/pip/_internal/cli/__init__.py +0 -3
- venv/Lib/site-packages/pip/_internal/cli/autocompletion.py +0 -184
- venv/Lib/site-packages/pip/_internal/cli/base_command.py +0 -244
- venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py +0 -1138
- venv/Lib/site-packages/pip/_internal/cli/command_context.py +0 -28
- venv/Lib/site-packages/pip/_internal/cli/index_command.py +0 -175
- venv/Lib/site-packages/pip/_internal/cli/main.py +0 -80
- venv/Lib/site-packages/pip/_internal/cli/main_parser.py +0 -134
- venv/Lib/site-packages/pip/_internal/cli/parser.py +0 -298
- venv/Lib/site-packages/pip/_internal/cli/progress_bars.py +0 -151
- venv/Lib/site-packages/pip/_internal/cli/req_command.py +0 -351
- venv/Lib/site-packages/pip/_internal/cli/spinners.py +0 -235
- venv/Lib/site-packages/pip/_internal/cli/status_codes.py +0 -6
- venv/Lib/site-packages/pip/_internal/commands/__init__.py +0 -139
- venv/Lib/site-packages/pip/_internal/commands/cache.py +0 -231
- venv/Lib/site-packages/pip/_internal/commands/check.py +0 -66
- venv/Lib/site-packages/pip/_internal/commands/completion.py +0 -135
- venv/Lib/site-packages/pip/_internal/commands/configuration.py +0 -288
- venv/Lib/site-packages/pip/_internal/commands/debug.py +0 -203
- venv/Lib/site-packages/pip/_internal/commands/download.py +0 -145
- venv/Lib/site-packages/pip/_internal/commands/freeze.py +0 -107
- venv/Lib/site-packages/pip/_internal/commands/hash.py +0 -58
- venv/Lib/site-packages/pip/_internal/commands/help.py +0 -40
- venv/Lib/site-packages/pip/_internal/commands/index.py +0 -159
- venv/Lib/site-packages/pip/_internal/commands/inspect.py +0 -92
- venv/Lib/site-packages/pip/_internal/commands/install.py +0 -798
- venv/Lib/site-packages/pip/_internal/commands/list.py +0 -400
- venv/Lib/site-packages/pip/_internal/commands/lock.py +0 -170
- venv/Lib/site-packages/pip/_internal/commands/search.py +0 -178
- venv/Lib/site-packages/pip/_internal/commands/show.py +0 -231
- venv/Lib/site-packages/pip/_internal/commands/uninstall.py +0 -113
- venv/Lib/site-packages/pip/_internal/commands/wheel.py +0 -181
- venv/Lib/site-packages/pip/_internal/configuration.py +0 -397
- venv/Lib/site-packages/pip/_internal/distributions/__init__.py +0 -21
- venv/Lib/site-packages/pip/_internal/distributions/base.py +0 -55
- venv/Lib/site-packages/pip/_internal/distributions/installed.py +0 -33
- venv/Lib/site-packages/pip/_internal/distributions/sdist.py +0 -165
- venv/Lib/site-packages/pip/_internal/distributions/wheel.py +0 -44
- venv/Lib/site-packages/pip/_internal/exceptions.py +0 -881
- venv/Lib/site-packages/pip/_internal/index/__init__.py +0 -1
- venv/Lib/site-packages/pip/_internal/index/collector.py +0 -489
- venv/Lib/site-packages/pip/_internal/index/package_finder.py +0 -1059
- venv/Lib/site-packages/pip/_internal/index/sources.py +0 -287
- venv/Lib/site-packages/pip/_internal/locations/__init__.py +0 -441
- venv/Lib/site-packages/pip/_internal/locations/_distutils.py +0 -173
- venv/Lib/site-packages/pip/_internal/locations/_sysconfig.py +0 -215
- venv/Lib/site-packages/pip/_internal/locations/base.py +0 -82
- venv/Lib/site-packages/pip/_internal/main.py +0 -12
- venv/Lib/site-packages/pip/_internal/metadata/__init__.py +0 -164
- venv/Lib/site-packages/pip/_internal/metadata/_json.py +0 -87
- venv/Lib/site-packages/pip/_internal/metadata/base.py +0 -685
- venv/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py +0 -6
- venv/Lib/site-packages/pip/_internal/metadata/importlib/_compat.py +0 -87
- venv/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py +0 -223
- venv/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py +0 -143
- venv/Lib/site-packages/pip/_internal/metadata/pkg_resources.py +0 -298
- venv/Lib/site-packages/pip/_internal/models/__init__.py +0 -1
- venv/Lib/site-packages/pip/_internal/models/candidate.py +0 -25
- venv/Lib/site-packages/pip/_internal/models/direct_url.py +0 -227
- venv/Lib/site-packages/pip/_internal/models/format_control.py +0 -78
- venv/Lib/site-packages/pip/_internal/models/index.py +0 -28
- venv/Lib/site-packages/pip/_internal/models/installation_report.py +0 -57
- venv/Lib/site-packages/pip/_internal/models/link.py +0 -613
- venv/Lib/site-packages/pip/_internal/models/pylock.py +0 -188
- venv/Lib/site-packages/pip/_internal/models/scheme.py +0 -25
- venv/Lib/site-packages/pip/_internal/models/search_scope.py +0 -126
- venv/Lib/site-packages/pip/_internal/models/selection_prefs.py +0 -53
- venv/Lib/site-packages/pip/_internal/models/target_python.py +0 -122
- venv/Lib/site-packages/pip/_internal/models/wheel.py +0 -141
- venv/Lib/site-packages/pip/_internal/network/__init__.py +0 -1
- venv/Lib/site-packages/pip/_internal/network/auth.py +0 -564
- venv/Lib/site-packages/pip/_internal/network/cache.py +0 -133
- venv/Lib/site-packages/pip/_internal/network/download.py +0 -342
- venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py +0 -213
- venv/Lib/site-packages/pip/_internal/network/session.py +0 -528
- venv/Lib/site-packages/pip/_internal/network/utils.py +0 -98
- venv/Lib/site-packages/pip/_internal/network/xmlrpc.py +0 -61
- 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 +0 -140
- venv/Lib/site-packages/pip/_internal/operations/build/metadata.py +0 -38
- venv/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py +0 -41
- venv/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py +0 -73
- venv/Lib/site-packages/pip/_internal/operations/build/wheel.py +0 -38
- venv/Lib/site-packages/pip/_internal/operations/build/wheel_editable.py +0 -47
- venv/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py +0 -119
- venv/Lib/site-packages/pip/_internal/operations/check.py +0 -175
- venv/Lib/site-packages/pip/_internal/operations/freeze.py +0 -259
- venv/Lib/site-packages/pip/_internal/operations/install/__init__.py +0 -1
- venv/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py +0 -48
- venv/Lib/site-packages/pip/_internal/operations/install/wheel.py +0 -746
- venv/Lib/site-packages/pip/_internal/operations/prepare.py +0 -742
- venv/Lib/site-packages/pip/_internal/pyproject.py +0 -182
- venv/Lib/site-packages/pip/_internal/req/__init__.py +0 -105
- venv/Lib/site-packages/pip/_internal/req/constructors.py +0 -562
- venv/Lib/site-packages/pip/_internal/req/req_dependency_group.py +0 -75
- venv/Lib/site-packages/pip/_internal/req/req_file.py +0 -620
- venv/Lib/site-packages/pip/_internal/req/req_install.py +0 -937
- venv/Lib/site-packages/pip/_internal/req/req_set.py +0 -81
- venv/Lib/site-packages/pip/_internal/req/req_uninstall.py +0 -639
- venv/Lib/site-packages/pip/_internal/resolution/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/resolution/base.py +0 -20
- venv/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +0 -598
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +0 -142
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +0 -582
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +0 -814
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +0 -166
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +0 -276
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py +0 -85
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py +0 -247
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +0 -336
- venv/Lib/site-packages/pip/_internal/self_outdated_check.py +0 -254
- venv/Lib/site-packages/pip/_internal/utils/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/utils/_jaraco_text.py +0 -109
- venv/Lib/site-packages/pip/_internal/utils/_log.py +0 -38
- venv/Lib/site-packages/pip/_internal/utils/appdirs.py +0 -52
- venv/Lib/site-packages/pip/_internal/utils/compat.py +0 -85
- venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py +0 -201
- venv/Lib/site-packages/pip/_internal/utils/datetime.py +0 -10
- venv/Lib/site-packages/pip/_internal/utils/deprecation.py +0 -126
- venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py +0 -87
- venv/Lib/site-packages/pip/_internal/utils/egg_link.py +0 -81
- venv/Lib/site-packages/pip/_internal/utils/entrypoints.py +0 -88
- venv/Lib/site-packages/pip/_internal/utils/filesystem.py +0 -152
- venv/Lib/site-packages/pip/_internal/utils/filetypes.py +0 -24
- venv/Lib/site-packages/pip/_internal/utils/glibc.py +0 -102
- venv/Lib/site-packages/pip/_internal/utils/hashes.py +0 -150
- venv/Lib/site-packages/pip/_internal/utils/logging.py +0 -364
- venv/Lib/site-packages/pip/_internal/utils/misc.py +0 -765
- venv/Lib/site-packages/pip/_internal/utils/packaging.py +0 -44
- venv/Lib/site-packages/pip/_internal/utils/retry.py +0 -45
- venv/Lib/site-packages/pip/_internal/utils/setuptools_build.py +0 -149
- venv/Lib/site-packages/pip/_internal/utils/subprocess.py +0 -248
- venv/Lib/site-packages/pip/_internal/utils/temp_dir.py +0 -294
- venv/Lib/site-packages/pip/_internal/utils/unpacking.py +0 -337
- venv/Lib/site-packages/pip/_internal/utils/urls.py +0 -55
- venv/Lib/site-packages/pip/_internal/utils/virtualenv.py +0 -105
- venv/Lib/site-packages/pip/_internal/utils/wheel.py +0 -132
- venv/Lib/site-packages/pip/_internal/vcs/__init__.py +0 -15
- venv/Lib/site-packages/pip/_internal/vcs/bazaar.py +0 -130
- venv/Lib/site-packages/pip/_internal/vcs/git.py +0 -571
- venv/Lib/site-packages/pip/_internal/vcs/mercurial.py +0 -186
- venv/Lib/site-packages/pip/_internal/vcs/subversion.py +0 -335
- venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +0 -693
- venv/Lib/site-packages/pip/_internal/wheel_builder.py +0 -334
- venv/Lib/site-packages/pip/_vendor/__init__.py +0 -117
- venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py +0 -29
- venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py +0 -70
- venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py +0 -168
- venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py +0 -75
- venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +0 -8
- venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +0 -145
- venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +0 -48
- venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py +0 -511
- venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py +0 -119
- venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py +0 -157
- venv/Lib/site-packages/pip/_vendor/cachecontrol/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py +0 -146
- venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py +0 -43
- venv/Lib/site-packages/pip/_vendor/certifi/__init__.py +0 -4
- venv/Lib/site-packages/pip/_vendor/certifi/__main__.py +0 -12
- venv/Lib/site-packages/pip/_vendor/certifi/core.py +0 -83
- venv/Lib/site-packages/pip/_vendor/certifi/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/dependency_groups/__init__.py +0 -13
- venv/Lib/site-packages/pip/_vendor/dependency_groups/__main__.py +0 -65
- venv/Lib/site-packages/pip/_vendor/dependency_groups/_implementation.py +0 -209
- venv/Lib/site-packages/pip/_vendor/dependency_groups/_lint_dependency_groups.py +0 -59
- venv/Lib/site-packages/pip/_vendor/dependency_groups/_pip_wrapper.py +0 -62
- venv/Lib/site-packages/pip/_vendor/dependency_groups/_toml_compat.py +0 -9
- venv/Lib/site-packages/pip/_vendor/dependency_groups/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/distlib/__init__.py +0 -33
- venv/Lib/site-packages/pip/_vendor/distlib/compat.py +0 -1137
- venv/Lib/site-packages/pip/_vendor/distlib/resources.py +0 -358
- venv/Lib/site-packages/pip/_vendor/distlib/scripts.py +0 -447
- venv/Lib/site-packages/pip/_vendor/distlib/util.py +0 -1984
- venv/Lib/site-packages/pip/_vendor/distro/__init__.py +0 -54
- venv/Lib/site-packages/pip/_vendor/distro/__main__.py +0 -4
- venv/Lib/site-packages/pip/_vendor/distro/distro.py +0 -1403
- venv/Lib/site-packages/pip/_vendor/distro/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/idna/__init__.py +0 -45
- venv/Lib/site-packages/pip/_vendor/idna/codec.py +0 -122
- venv/Lib/site-packages/pip/_vendor/idna/compat.py +0 -15
- venv/Lib/site-packages/pip/_vendor/idna/core.py +0 -437
- venv/Lib/site-packages/pip/_vendor/idna/idnadata.py +0 -4243
- venv/Lib/site-packages/pip/_vendor/idna/intranges.py +0 -57
- venv/Lib/site-packages/pip/_vendor/idna/package_data.py +0 -1
- venv/Lib/site-packages/pip/_vendor/idna/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/idna/uts46data.py +0 -8681
- venv/Lib/site-packages/pip/_vendor/msgpack/__init__.py +0 -55
- venv/Lib/site-packages/pip/_vendor/msgpack/exceptions.py +0 -48
- venv/Lib/site-packages/pip/_vendor/msgpack/ext.py +0 -170
- venv/Lib/site-packages/pip/_vendor/msgpack/fallback.py +0 -929
- venv/Lib/site-packages/pip/_vendor/packaging/__init__.py +0 -15
- venv/Lib/site-packages/pip/_vendor/packaging/_elffile.py +0 -109
- venv/Lib/site-packages/pip/_vendor/packaging/_manylinux.py +0 -262
- venv/Lib/site-packages/pip/_vendor/packaging/_musllinux.py +0 -85
- venv/Lib/site-packages/pip/_vendor/packaging/_parser.py +0 -353
- venv/Lib/site-packages/pip/_vendor/packaging/_structures.py +0 -61
- venv/Lib/site-packages/pip/_vendor/packaging/_tokenizer.py +0 -195
- venv/Lib/site-packages/pip/_vendor/packaging/licenses/__init__.py +0 -145
- venv/Lib/site-packages/pip/_vendor/packaging/licenses/_spdx.py +0 -759
- venv/Lib/site-packages/pip/_vendor/packaging/markers.py +0 -362
- venv/Lib/site-packages/pip/_vendor/packaging/metadata.py +0 -862
- venv/Lib/site-packages/pip/_vendor/packaging/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/packaging/requirements.py +0 -91
- venv/Lib/site-packages/pip/_vendor/packaging/specifiers.py +0 -1019
- venv/Lib/site-packages/pip/_vendor/packaging/tags.py +0 -656
- venv/Lib/site-packages/pip/_vendor/packaging/utils.py +0 -163
- venv/Lib/site-packages/pip/_vendor/packaging/version.py +0 -582
- venv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py +0 -3676
- venv/Lib/site-packages/pip/_vendor/platformdirs/__init__.py +0 -631
- venv/Lib/site-packages/pip/_vendor/platformdirs/__main__.py +0 -55
- venv/Lib/site-packages/pip/_vendor/platformdirs/android.py +0 -249
- venv/Lib/site-packages/pip/_vendor/platformdirs/api.py +0 -299
- venv/Lib/site-packages/pip/_vendor/platformdirs/macos.py +0 -144
- venv/Lib/site-packages/pip/_vendor/platformdirs/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/unix.py +0 -272
- venv/Lib/site-packages/pip/_vendor/platformdirs/version.py +0 -21
- venv/Lib/site-packages/pip/_vendor/platformdirs/windows.py +0 -272
- venv/Lib/site-packages/pip/_vendor/pygments/__init__.py +0 -82
- venv/Lib/site-packages/pip/_vendor/pygments/__main__.py +0 -17
- venv/Lib/site-packages/pip/_vendor/pygments/console.py +0 -70
- venv/Lib/site-packages/pip/_vendor/pygments/filter.py +0 -70
- venv/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py +0 -940
- venv/Lib/site-packages/pip/_vendor/pygments/formatter.py +0 -129
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py +0 -157
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py +0 -23
- venv/Lib/site-packages/pip/_vendor/pygments/lexer.py +0 -963
- venv/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py +0 -362
- venv/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py +0 -602
- venv/Lib/site-packages/pip/_vendor/pygments/lexers/python.py +0 -1201
- venv/Lib/site-packages/pip/_vendor/pygments/modeline.py +0 -43
- venv/Lib/site-packages/pip/_vendor/pygments/plugin.py +0 -72
- venv/Lib/site-packages/pip/_vendor/pygments/regexopt.py +0 -91
- venv/Lib/site-packages/pip/_vendor/pygments/scanner.py +0 -104
- venv/Lib/site-packages/pip/_vendor/pygments/sphinxext.py +0 -247
- venv/Lib/site-packages/pip/_vendor/pygments/style.py +0 -203
- venv/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py +0 -61
- venv/Lib/site-packages/pip/_vendor/pygments/styles/_mapping.py +0 -54
- venv/Lib/site-packages/pip/_vendor/pygments/token.py +0 -214
- venv/Lib/site-packages/pip/_vendor/pygments/unistring.py +0 -153
- venv/Lib/site-packages/pip/_vendor/pygments/util.py +0 -324
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py +0 -31
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py +0 -410
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +0 -21
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +0 -389
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/requests/__init__.py +0 -179
- venv/Lib/site-packages/pip/_vendor/requests/__version__.py +0 -14
- venv/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +0 -50
- venv/Lib/site-packages/pip/_vendor/requests/adapters.py +0 -719
- venv/Lib/site-packages/pip/_vendor/requests/api.py +0 -157
- venv/Lib/site-packages/pip/_vendor/requests/auth.py +0 -314
- venv/Lib/site-packages/pip/_vendor/requests/certs.py +0 -17
- venv/Lib/site-packages/pip/_vendor/requests/compat.py +0 -90
- venv/Lib/site-packages/pip/_vendor/requests/cookies.py +0 -561
- venv/Lib/site-packages/pip/_vendor/requests/exceptions.py +0 -151
- venv/Lib/site-packages/pip/_vendor/requests/help.py +0 -127
- venv/Lib/site-packages/pip/_vendor/requests/hooks.py +0 -33
- venv/Lib/site-packages/pip/_vendor/requests/models.py +0 -1039
- venv/Lib/site-packages/pip/_vendor/requests/packages.py +0 -25
- venv/Lib/site-packages/pip/_vendor/requests/sessions.py +0 -831
- venv/Lib/site-packages/pip/_vendor/requests/status_codes.py +0 -128
- venv/Lib/site-packages/pip/_vendor/requests/structures.py +0 -99
- venv/Lib/site-packages/pip/_vendor/requests/utils.py +0 -1086
- venv/Lib/site-packages/pip/_vendor/resolvelib/__init__.py +0 -27
- venv/Lib/site-packages/pip/_vendor/resolvelib/providers.py +0 -196
- venv/Lib/site-packages/pip/_vendor/resolvelib/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/reporters.py +0 -55
- venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/__init__.py +0 -27
- venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/abstract.py +0 -47
- venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/criterion.py +0 -48
- venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/exceptions.py +0 -57
- venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py +0 -622
- venv/Lib/site-packages/pip/_vendor/resolvelib/structs.py +0 -209
- venv/Lib/site-packages/pip/_vendor/rich/__init__.py +0 -177
- venv/Lib/site-packages/pip/_vendor/rich/__main__.py +0 -245
- venv/Lib/site-packages/pip/_vendor/rich/_cell_widths.py +0 -454
- venv/Lib/site-packages/pip/_vendor/rich/_emoji_codes.py +0 -3610
- venv/Lib/site-packages/pip/_vendor/rich/_emoji_replace.py +0 -32
- venv/Lib/site-packages/pip/_vendor/rich/_export_format.py +0 -76
- venv/Lib/site-packages/pip/_vendor/rich/_extension.py +0 -10
- venv/Lib/site-packages/pip/_vendor/rich/_fileno.py +0 -24
- venv/Lib/site-packages/pip/_vendor/rich/_inspect.py +0 -268
- venv/Lib/site-packages/pip/_vendor/rich/_log_render.py +0 -94
- venv/Lib/site-packages/pip/_vendor/rich/_loop.py +0 -43
- venv/Lib/site-packages/pip/_vendor/rich/_null_file.py +0 -69
- venv/Lib/site-packages/pip/_vendor/rich/_palettes.py +0 -309
- venv/Lib/site-packages/pip/_vendor/rich/_pick.py +0 -17
- venv/Lib/site-packages/pip/_vendor/rich/_ratio.py +0 -153
- venv/Lib/site-packages/pip/_vendor/rich/_spinners.py +0 -482
- venv/Lib/site-packages/pip/_vendor/rich/_stack.py +0 -16
- venv/Lib/site-packages/pip/_vendor/rich/_timer.py +0 -19
- venv/Lib/site-packages/pip/_vendor/rich/_win32_console.py +0 -661
- venv/Lib/site-packages/pip/_vendor/rich/_windows.py +0 -71
- venv/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py +0 -56
- venv/Lib/site-packages/pip/_vendor/rich/_wrap.py +0 -93
- venv/Lib/site-packages/pip/_vendor/rich/abc.py +0 -33
- venv/Lib/site-packages/pip/_vendor/rich/align.py +0 -306
- venv/Lib/site-packages/pip/_vendor/rich/ansi.py +0 -241
- venv/Lib/site-packages/pip/_vendor/rich/bar.py +0 -93
- venv/Lib/site-packages/pip/_vendor/rich/box.py +0 -474
- venv/Lib/site-packages/pip/_vendor/rich/cells.py +0 -174
- venv/Lib/site-packages/pip/_vendor/rich/color.py +0 -621
- venv/Lib/site-packages/pip/_vendor/rich/color_triplet.py +0 -38
- venv/Lib/site-packages/pip/_vendor/rich/columns.py +0 -187
- venv/Lib/site-packages/pip/_vendor/rich/console.py +0 -2680
- venv/Lib/site-packages/pip/_vendor/rich/constrain.py +0 -37
- venv/Lib/site-packages/pip/_vendor/rich/containers.py +0 -167
- venv/Lib/site-packages/pip/_vendor/rich/control.py +0 -219
- venv/Lib/site-packages/pip/_vendor/rich/default_styles.py +0 -193
- venv/Lib/site-packages/pip/_vendor/rich/diagnose.py +0 -39
- venv/Lib/site-packages/pip/_vendor/rich/emoji.py +0 -91
- venv/Lib/site-packages/pip/_vendor/rich/errors.py +0 -34
- venv/Lib/site-packages/pip/_vendor/rich/file_proxy.py +0 -57
- venv/Lib/site-packages/pip/_vendor/rich/filesize.py +0 -88
- venv/Lib/site-packages/pip/_vendor/rich/highlighter.py +0 -232
- venv/Lib/site-packages/pip/_vendor/rich/json.py +0 -139
- venv/Lib/site-packages/pip/_vendor/rich/jupyter.py +0 -101
- venv/Lib/site-packages/pip/_vendor/rich/layout.py +0 -442
- venv/Lib/site-packages/pip/_vendor/rich/live.py +0 -400
- venv/Lib/site-packages/pip/_vendor/rich/live_render.py +0 -106
- venv/Lib/site-packages/pip/_vendor/rich/logging.py +0 -297
- venv/Lib/site-packages/pip/_vendor/rich/markup.py +0 -251
- venv/Lib/site-packages/pip/_vendor/rich/measure.py +0 -151
- venv/Lib/site-packages/pip/_vendor/rich/padding.py +0 -141
- venv/Lib/site-packages/pip/_vendor/rich/pager.py +0 -34
- venv/Lib/site-packages/pip/_vendor/rich/palette.py +0 -100
- venv/Lib/site-packages/pip/_vendor/rich/panel.py +0 -317
- venv/Lib/site-packages/pip/_vendor/rich/pretty.py +0 -1016
- venv/Lib/site-packages/pip/_vendor/rich/progress.py +0 -1715
- venv/Lib/site-packages/pip/_vendor/rich/progress_bar.py +0 -223
- venv/Lib/site-packages/pip/_vendor/rich/prompt.py +0 -400
- venv/Lib/site-packages/pip/_vendor/rich/protocol.py +0 -42
- venv/Lib/site-packages/pip/_vendor/rich/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/rich/region.py +0 -10
- venv/Lib/site-packages/pip/_vendor/rich/repr.py +0 -149
- venv/Lib/site-packages/pip/_vendor/rich/rule.py +0 -130
- venv/Lib/site-packages/pip/_vendor/rich/scope.py +0 -86
- venv/Lib/site-packages/pip/_vendor/rich/screen.py +0 -54
- venv/Lib/site-packages/pip/_vendor/rich/segment.py +0 -752
- venv/Lib/site-packages/pip/_vendor/rich/spinner.py +0 -132
- venv/Lib/site-packages/pip/_vendor/rich/status.py +0 -131
- venv/Lib/site-packages/pip/_vendor/rich/style.py +0 -796
- venv/Lib/site-packages/pip/_vendor/rich/styled.py +0 -42
- venv/Lib/site-packages/pip/_vendor/rich/syntax.py +0 -985
- venv/Lib/site-packages/pip/_vendor/rich/table.py +0 -1006
- venv/Lib/site-packages/pip/_vendor/rich/terminal_theme.py +0 -153
- venv/Lib/site-packages/pip/_vendor/rich/text.py +0 -1361
- venv/Lib/site-packages/pip/_vendor/rich/theme.py +0 -115
- venv/Lib/site-packages/pip/_vendor/rich/themes.py +0 -5
- venv/Lib/site-packages/pip/_vendor/rich/traceback.py +0 -899
- venv/Lib/site-packages/pip/_vendor/rich/tree.py +0 -257
- venv/Lib/site-packages/pip/_vendor/tomli/__init__.py +0 -8
- venv/Lib/site-packages/pip/_vendor/tomli/_parser.py +0 -770
- venv/Lib/site-packages/pip/_vendor/tomli/_re.py +0 -112
- venv/Lib/site-packages/pip/_vendor/tomli/_types.py +0 -10
- venv/Lib/site-packages/pip/_vendor/tomli/py.typed +0 -1
- venv/Lib/site-packages/pip/_vendor/tomli_w/__init__.py +0 -4
- venv/Lib/site-packages/pip/_vendor/tomli_w/_writer.py +0 -229
- venv/Lib/site-packages/pip/_vendor/tomli_w/py.typed +0 -1
- venv/Lib/site-packages/pip/_vendor/truststore/__init__.py +0 -36
- venv/Lib/site-packages/pip/_vendor/truststore/_api.py +0 -333
- venv/Lib/site-packages/pip/_vendor/truststore/_macos.py +0 -571
- venv/Lib/site-packages/pip/_vendor/truststore/_openssl.py +0 -66
- venv/Lib/site-packages/pip/_vendor/truststore/_ssl_constants.py +0 -31
- venv/Lib/site-packages/pip/_vendor/truststore/_windows.py +0 -567
- venv/Lib/site-packages/pip/_vendor/truststore/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/__init__.py +0 -102
- venv/Lib/site-packages/pip/_vendor/urllib3/_collections.py +0 -355
- venv/Lib/site-packages/pip/_vendor/urllib3/_version.py +0 -2
- venv/Lib/site-packages/pip/_vendor/urllib3/connection.py +0 -572
- venv/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +0 -1140
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +0 -36
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +0 -519
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +0 -397
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py +0 -314
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +0 -130
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +0 -518
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +0 -920
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +0 -216
- venv/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +0 -323
- venv/Lib/site-packages/pip/_vendor/urllib3/fields.py +0 -274
- venv/Lib/site-packages/pip/_vendor/urllib3/filepost.py +0 -98
- 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 +0 -51
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +0 -155
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/six.py +0 -1076
- venv/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +0 -540
- venv/Lib/site-packages/pip/_vendor/urllib3/request.py +0 -191
- venv/Lib/site-packages/pip/_vendor/urllib3/response.py +0 -879
- venv/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py +0 -49
- venv/Lib/site-packages/pip/_vendor/urllib3/util/connection.py +0 -149
- venv/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py +0 -57
- venv/Lib/site-packages/pip/_vendor/urllib3/util/queue.py +0 -22
- venv/Lib/site-packages/pip/_vendor/urllib3/util/request.py +0 -137
- venv/Lib/site-packages/pip/_vendor/urllib3/util/response.py +0 -107
- venv/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +0 -622
- venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +0 -504
- venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +0 -159
- venv/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py +0 -221
- venv/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py +0 -271
- venv/Lib/site-packages/pip/_vendor/urllib3/util/url.py +0 -435
- venv/Lib/site-packages/pip/_vendor/urllib3/util/wait.py +0 -152
- venv/Lib/site-packages/pip/py.typed +0 -4
- {cli_ih-0.6.3.1.dist-info → cli_ih-0.7.0.dist-info}/WHEEL +0 -0
|
@@ -1,351 +0,0 @@
|
|
|
1
|
-
"""Contains the RequirementCommand base class.
|
|
2
|
-
|
|
3
|
-
This class is in a separate module so the commands that do not always
|
|
4
|
-
need PackageFinder capability don't unnecessarily import the
|
|
5
|
-
PackageFinder machinery and all its vendored dependencies, etc.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
from __future__ import annotations
|
|
9
|
-
|
|
10
|
-
import logging
|
|
11
|
-
from functools import partial
|
|
12
|
-
from optparse import Values
|
|
13
|
-
from typing import Any
|
|
14
|
-
|
|
15
|
-
from pip._internal.build_env import SubprocessBuildEnvironmentInstaller
|
|
16
|
-
from pip._internal.cache import WheelCache
|
|
17
|
-
from pip._internal.cli import cmdoptions
|
|
18
|
-
from pip._internal.cli.index_command import IndexGroupCommand
|
|
19
|
-
from pip._internal.cli.index_command import SessionCommandMixin as SessionCommandMixin
|
|
20
|
-
from pip._internal.exceptions import CommandError, PreviousBuildDirError
|
|
21
|
-
from pip._internal.index.collector import LinkCollector
|
|
22
|
-
from pip._internal.index.package_finder import PackageFinder
|
|
23
|
-
from pip._internal.models.selection_prefs import SelectionPreferences
|
|
24
|
-
from pip._internal.models.target_python import TargetPython
|
|
25
|
-
from pip._internal.network.session import PipSession
|
|
26
|
-
from pip._internal.operations.build.build_tracker import BuildTracker
|
|
27
|
-
from pip._internal.operations.prepare import RequirementPreparer
|
|
28
|
-
from pip._internal.req.constructors import (
|
|
29
|
-
install_req_from_editable,
|
|
30
|
-
install_req_from_line,
|
|
31
|
-
install_req_from_parsed_requirement,
|
|
32
|
-
install_req_from_req_string,
|
|
33
|
-
)
|
|
34
|
-
from pip._internal.req.req_dependency_group import parse_dependency_groups
|
|
35
|
-
from pip._internal.req.req_file import parse_requirements
|
|
36
|
-
from pip._internal.req.req_install import InstallRequirement
|
|
37
|
-
from pip._internal.resolution.base import BaseResolver
|
|
38
|
-
from pip._internal.utils.temp_dir import (
|
|
39
|
-
TempDirectory,
|
|
40
|
-
TempDirectoryTypeRegistry,
|
|
41
|
-
tempdir_kinds,
|
|
42
|
-
)
|
|
43
|
-
|
|
44
|
-
logger = logging.getLogger(__name__)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
KEEPABLE_TEMPDIR_TYPES = [
|
|
48
|
-
tempdir_kinds.BUILD_ENV,
|
|
49
|
-
tempdir_kinds.EPHEM_WHEEL_CACHE,
|
|
50
|
-
tempdir_kinds.REQ_BUILD,
|
|
51
|
-
]
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def with_cleanup(func: Any) -> Any:
|
|
55
|
-
"""Decorator for common logic related to managing temporary
|
|
56
|
-
directories.
|
|
57
|
-
"""
|
|
58
|
-
|
|
59
|
-
def configure_tempdir_registry(registry: TempDirectoryTypeRegistry) -> None:
|
|
60
|
-
for t in KEEPABLE_TEMPDIR_TYPES:
|
|
61
|
-
registry.set_delete(t, False)
|
|
62
|
-
|
|
63
|
-
def wrapper(
|
|
64
|
-
self: RequirementCommand, options: Values, args: list[Any]
|
|
65
|
-
) -> int | None:
|
|
66
|
-
assert self.tempdir_registry is not None
|
|
67
|
-
if options.no_clean:
|
|
68
|
-
configure_tempdir_registry(self.tempdir_registry)
|
|
69
|
-
|
|
70
|
-
try:
|
|
71
|
-
return func(self, options, args)
|
|
72
|
-
except PreviousBuildDirError:
|
|
73
|
-
# This kind of conflict can occur when the user passes an explicit
|
|
74
|
-
# build directory with a pre-existing folder. In that case we do
|
|
75
|
-
# not want to accidentally remove it.
|
|
76
|
-
configure_tempdir_registry(self.tempdir_registry)
|
|
77
|
-
raise
|
|
78
|
-
|
|
79
|
-
return wrapper
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
class RequirementCommand(IndexGroupCommand):
|
|
83
|
-
def __init__(self, *args: Any, **kw: Any) -> None:
|
|
84
|
-
super().__init__(*args, **kw)
|
|
85
|
-
|
|
86
|
-
self.cmd_opts.add_option(cmdoptions.dependency_groups())
|
|
87
|
-
self.cmd_opts.add_option(cmdoptions.no_clean())
|
|
88
|
-
|
|
89
|
-
@staticmethod
|
|
90
|
-
def determine_resolver_variant(options: Values) -> str:
|
|
91
|
-
"""Determines which resolver should be used, based on the given options."""
|
|
92
|
-
if "legacy-resolver" in options.deprecated_features_enabled:
|
|
93
|
-
return "legacy"
|
|
94
|
-
|
|
95
|
-
return "resolvelib"
|
|
96
|
-
|
|
97
|
-
@classmethod
|
|
98
|
-
def make_requirement_preparer(
|
|
99
|
-
cls,
|
|
100
|
-
temp_build_dir: TempDirectory,
|
|
101
|
-
options: Values,
|
|
102
|
-
build_tracker: BuildTracker,
|
|
103
|
-
session: PipSession,
|
|
104
|
-
finder: PackageFinder,
|
|
105
|
-
use_user_site: bool,
|
|
106
|
-
download_dir: str | None = None,
|
|
107
|
-
verbosity: int = 0,
|
|
108
|
-
) -> RequirementPreparer:
|
|
109
|
-
"""
|
|
110
|
-
Create a RequirementPreparer instance for the given parameters.
|
|
111
|
-
"""
|
|
112
|
-
temp_build_dir_path = temp_build_dir.path
|
|
113
|
-
assert temp_build_dir_path is not None
|
|
114
|
-
legacy_resolver = False
|
|
115
|
-
|
|
116
|
-
resolver_variant = cls.determine_resolver_variant(options)
|
|
117
|
-
if resolver_variant == "resolvelib":
|
|
118
|
-
lazy_wheel = "fast-deps" in options.features_enabled
|
|
119
|
-
if lazy_wheel:
|
|
120
|
-
logger.warning(
|
|
121
|
-
"pip is using lazily downloaded wheels using HTTP "
|
|
122
|
-
"range requests to obtain dependency information. "
|
|
123
|
-
"This experimental feature is enabled through "
|
|
124
|
-
"--use-feature=fast-deps and it is not ready for "
|
|
125
|
-
"production."
|
|
126
|
-
)
|
|
127
|
-
else:
|
|
128
|
-
legacy_resolver = True
|
|
129
|
-
lazy_wheel = False
|
|
130
|
-
if "fast-deps" in options.features_enabled:
|
|
131
|
-
logger.warning(
|
|
132
|
-
"fast-deps has no effect when used with the legacy resolver."
|
|
133
|
-
)
|
|
134
|
-
|
|
135
|
-
return RequirementPreparer(
|
|
136
|
-
build_dir=temp_build_dir_path,
|
|
137
|
-
src_dir=options.src_dir,
|
|
138
|
-
download_dir=download_dir,
|
|
139
|
-
build_isolation=options.build_isolation,
|
|
140
|
-
build_isolation_installer=SubprocessBuildEnvironmentInstaller(finder),
|
|
141
|
-
check_build_deps=options.check_build_deps,
|
|
142
|
-
build_tracker=build_tracker,
|
|
143
|
-
session=session,
|
|
144
|
-
progress_bar=options.progress_bar,
|
|
145
|
-
finder=finder,
|
|
146
|
-
require_hashes=options.require_hashes,
|
|
147
|
-
use_user_site=use_user_site,
|
|
148
|
-
lazy_wheel=lazy_wheel,
|
|
149
|
-
verbosity=verbosity,
|
|
150
|
-
legacy_resolver=legacy_resolver,
|
|
151
|
-
resume_retries=options.resume_retries,
|
|
152
|
-
)
|
|
153
|
-
|
|
154
|
-
@classmethod
|
|
155
|
-
def make_resolver(
|
|
156
|
-
cls,
|
|
157
|
-
preparer: RequirementPreparer,
|
|
158
|
-
finder: PackageFinder,
|
|
159
|
-
options: Values,
|
|
160
|
-
wheel_cache: WheelCache | None = None,
|
|
161
|
-
use_user_site: bool = False,
|
|
162
|
-
ignore_installed: bool = True,
|
|
163
|
-
ignore_requires_python: bool = False,
|
|
164
|
-
force_reinstall: bool = False,
|
|
165
|
-
upgrade_strategy: str = "to-satisfy-only",
|
|
166
|
-
use_pep517: bool | None = None,
|
|
167
|
-
py_version_info: tuple[int, ...] | None = None,
|
|
168
|
-
) -> BaseResolver:
|
|
169
|
-
"""
|
|
170
|
-
Create a Resolver instance for the given parameters.
|
|
171
|
-
"""
|
|
172
|
-
make_install_req = partial(
|
|
173
|
-
install_req_from_req_string,
|
|
174
|
-
isolated=options.isolated_mode,
|
|
175
|
-
use_pep517=use_pep517,
|
|
176
|
-
)
|
|
177
|
-
resolver_variant = cls.determine_resolver_variant(options)
|
|
178
|
-
# The long import name and duplicated invocation is needed to convince
|
|
179
|
-
# Mypy into correctly typechecking. Otherwise it would complain the
|
|
180
|
-
# "Resolver" class being redefined.
|
|
181
|
-
if resolver_variant == "resolvelib":
|
|
182
|
-
import pip._internal.resolution.resolvelib.resolver
|
|
183
|
-
|
|
184
|
-
return pip._internal.resolution.resolvelib.resolver.Resolver(
|
|
185
|
-
preparer=preparer,
|
|
186
|
-
finder=finder,
|
|
187
|
-
wheel_cache=wheel_cache,
|
|
188
|
-
make_install_req=make_install_req,
|
|
189
|
-
use_user_site=use_user_site,
|
|
190
|
-
ignore_dependencies=options.ignore_dependencies,
|
|
191
|
-
ignore_installed=ignore_installed,
|
|
192
|
-
ignore_requires_python=ignore_requires_python,
|
|
193
|
-
force_reinstall=force_reinstall,
|
|
194
|
-
upgrade_strategy=upgrade_strategy,
|
|
195
|
-
py_version_info=py_version_info,
|
|
196
|
-
)
|
|
197
|
-
import pip._internal.resolution.legacy.resolver
|
|
198
|
-
|
|
199
|
-
return pip._internal.resolution.legacy.resolver.Resolver(
|
|
200
|
-
preparer=preparer,
|
|
201
|
-
finder=finder,
|
|
202
|
-
wheel_cache=wheel_cache,
|
|
203
|
-
make_install_req=make_install_req,
|
|
204
|
-
use_user_site=use_user_site,
|
|
205
|
-
ignore_dependencies=options.ignore_dependencies,
|
|
206
|
-
ignore_installed=ignore_installed,
|
|
207
|
-
ignore_requires_python=ignore_requires_python,
|
|
208
|
-
force_reinstall=force_reinstall,
|
|
209
|
-
upgrade_strategy=upgrade_strategy,
|
|
210
|
-
py_version_info=py_version_info,
|
|
211
|
-
)
|
|
212
|
-
|
|
213
|
-
def get_requirements(
|
|
214
|
-
self,
|
|
215
|
-
args: list[str],
|
|
216
|
-
options: Values,
|
|
217
|
-
finder: PackageFinder,
|
|
218
|
-
session: PipSession,
|
|
219
|
-
) -> list[InstallRequirement]:
|
|
220
|
-
"""
|
|
221
|
-
Parse command-line arguments into the corresponding requirements.
|
|
222
|
-
"""
|
|
223
|
-
requirements: list[InstallRequirement] = []
|
|
224
|
-
for filename in options.constraints:
|
|
225
|
-
for parsed_req in parse_requirements(
|
|
226
|
-
filename,
|
|
227
|
-
constraint=True,
|
|
228
|
-
finder=finder,
|
|
229
|
-
options=options,
|
|
230
|
-
session=session,
|
|
231
|
-
):
|
|
232
|
-
req_to_add = install_req_from_parsed_requirement(
|
|
233
|
-
parsed_req,
|
|
234
|
-
isolated=options.isolated_mode,
|
|
235
|
-
user_supplied=False,
|
|
236
|
-
)
|
|
237
|
-
requirements.append(req_to_add)
|
|
238
|
-
|
|
239
|
-
for req in args:
|
|
240
|
-
req_to_add = install_req_from_line(
|
|
241
|
-
req,
|
|
242
|
-
comes_from=None,
|
|
243
|
-
isolated=options.isolated_mode,
|
|
244
|
-
use_pep517=options.use_pep517,
|
|
245
|
-
user_supplied=True,
|
|
246
|
-
config_settings=getattr(options, "config_settings", None),
|
|
247
|
-
)
|
|
248
|
-
requirements.append(req_to_add)
|
|
249
|
-
|
|
250
|
-
if options.dependency_groups:
|
|
251
|
-
for req in parse_dependency_groups(options.dependency_groups):
|
|
252
|
-
req_to_add = install_req_from_req_string(
|
|
253
|
-
req,
|
|
254
|
-
isolated=options.isolated_mode,
|
|
255
|
-
use_pep517=options.use_pep517,
|
|
256
|
-
user_supplied=True,
|
|
257
|
-
)
|
|
258
|
-
requirements.append(req_to_add)
|
|
259
|
-
|
|
260
|
-
for req in options.editables:
|
|
261
|
-
req_to_add = install_req_from_editable(
|
|
262
|
-
req,
|
|
263
|
-
user_supplied=True,
|
|
264
|
-
isolated=options.isolated_mode,
|
|
265
|
-
use_pep517=options.use_pep517,
|
|
266
|
-
config_settings=getattr(options, "config_settings", None),
|
|
267
|
-
)
|
|
268
|
-
requirements.append(req_to_add)
|
|
269
|
-
|
|
270
|
-
# NOTE: options.require_hashes may be set if --require-hashes is True
|
|
271
|
-
for filename in options.requirements:
|
|
272
|
-
for parsed_req in parse_requirements(
|
|
273
|
-
filename, finder=finder, options=options, session=session
|
|
274
|
-
):
|
|
275
|
-
req_to_add = install_req_from_parsed_requirement(
|
|
276
|
-
parsed_req,
|
|
277
|
-
isolated=options.isolated_mode,
|
|
278
|
-
use_pep517=options.use_pep517,
|
|
279
|
-
user_supplied=True,
|
|
280
|
-
config_settings=(
|
|
281
|
-
parsed_req.options.get("config_settings")
|
|
282
|
-
if parsed_req.options
|
|
283
|
-
else None
|
|
284
|
-
),
|
|
285
|
-
)
|
|
286
|
-
requirements.append(req_to_add)
|
|
287
|
-
|
|
288
|
-
# If any requirement has hash options, enable hash checking.
|
|
289
|
-
if any(req.has_hash_options for req in requirements):
|
|
290
|
-
options.require_hashes = True
|
|
291
|
-
|
|
292
|
-
if not (
|
|
293
|
-
args
|
|
294
|
-
or options.editables
|
|
295
|
-
or options.requirements
|
|
296
|
-
or options.dependency_groups
|
|
297
|
-
):
|
|
298
|
-
opts = {"name": self.name}
|
|
299
|
-
if options.find_links:
|
|
300
|
-
raise CommandError(
|
|
301
|
-
"You must give at least one requirement to {name} "
|
|
302
|
-
'(maybe you meant "pip {name} {links}"?)'.format(
|
|
303
|
-
**dict(opts, links=" ".join(options.find_links))
|
|
304
|
-
)
|
|
305
|
-
)
|
|
306
|
-
else:
|
|
307
|
-
raise CommandError(
|
|
308
|
-
"You must give at least one requirement to {name} "
|
|
309
|
-
'(see "pip help {name}")'.format(**opts)
|
|
310
|
-
)
|
|
311
|
-
|
|
312
|
-
return requirements
|
|
313
|
-
|
|
314
|
-
@staticmethod
|
|
315
|
-
def trace_basic_info(finder: PackageFinder) -> None:
|
|
316
|
-
"""
|
|
317
|
-
Trace basic information about the provided objects.
|
|
318
|
-
"""
|
|
319
|
-
# Display where finder is looking for packages
|
|
320
|
-
search_scope = finder.search_scope
|
|
321
|
-
locations = search_scope.get_formatted_locations()
|
|
322
|
-
if locations:
|
|
323
|
-
logger.info(locations)
|
|
324
|
-
|
|
325
|
-
def _build_package_finder(
|
|
326
|
-
self,
|
|
327
|
-
options: Values,
|
|
328
|
-
session: PipSession,
|
|
329
|
-
target_python: TargetPython | None = None,
|
|
330
|
-
ignore_requires_python: bool | None = None,
|
|
331
|
-
) -> PackageFinder:
|
|
332
|
-
"""
|
|
333
|
-
Create a package finder appropriate to this requirement command.
|
|
334
|
-
|
|
335
|
-
:param ignore_requires_python: Whether to ignore incompatible
|
|
336
|
-
"Requires-Python" values in links. Defaults to False.
|
|
337
|
-
"""
|
|
338
|
-
link_collector = LinkCollector.create(session, options=options)
|
|
339
|
-
selection_prefs = SelectionPreferences(
|
|
340
|
-
allow_yanked=True,
|
|
341
|
-
format_control=options.format_control,
|
|
342
|
-
allow_all_prereleases=options.pre,
|
|
343
|
-
prefer_binary=options.prefer_binary,
|
|
344
|
-
ignore_requires_python=ignore_requires_python,
|
|
345
|
-
)
|
|
346
|
-
|
|
347
|
-
return PackageFinder.create(
|
|
348
|
-
link_collector=link_collector,
|
|
349
|
-
selection_prefs=selection_prefs,
|
|
350
|
-
target_python=target_python,
|
|
351
|
-
)
|
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import contextlib
|
|
4
|
-
import itertools
|
|
5
|
-
import logging
|
|
6
|
-
import sys
|
|
7
|
-
import time
|
|
8
|
-
from collections.abc import Generator
|
|
9
|
-
from typing import IO, Final
|
|
10
|
-
|
|
11
|
-
from pip._vendor.rich.console import (
|
|
12
|
-
Console,
|
|
13
|
-
ConsoleOptions,
|
|
14
|
-
RenderableType,
|
|
15
|
-
RenderResult,
|
|
16
|
-
)
|
|
17
|
-
from pip._vendor.rich.live import Live
|
|
18
|
-
from pip._vendor.rich.measure import Measurement
|
|
19
|
-
from pip._vendor.rich.text import Text
|
|
20
|
-
|
|
21
|
-
from pip._internal.utils.compat import WINDOWS
|
|
22
|
-
from pip._internal.utils.logging import get_console, get_indentation
|
|
23
|
-
|
|
24
|
-
logger = logging.getLogger(__name__)
|
|
25
|
-
|
|
26
|
-
SPINNER_CHARS: Final = r"-\|/"
|
|
27
|
-
SPINS_PER_SECOND: Final = 8
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
class SpinnerInterface:
|
|
31
|
-
def spin(self) -> None:
|
|
32
|
-
raise NotImplementedError()
|
|
33
|
-
|
|
34
|
-
def finish(self, final_status: str) -> None:
|
|
35
|
-
raise NotImplementedError()
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
class InteractiveSpinner(SpinnerInterface):
|
|
39
|
-
def __init__(
|
|
40
|
-
self,
|
|
41
|
-
message: str,
|
|
42
|
-
file: IO[str] | None = None,
|
|
43
|
-
spin_chars: str = SPINNER_CHARS,
|
|
44
|
-
# Empirically, 8 updates/second looks nice
|
|
45
|
-
min_update_interval_seconds: float = 1 / SPINS_PER_SECOND,
|
|
46
|
-
):
|
|
47
|
-
self._message = message
|
|
48
|
-
if file is None:
|
|
49
|
-
file = sys.stdout
|
|
50
|
-
self._file = file
|
|
51
|
-
self._rate_limiter = RateLimiter(min_update_interval_seconds)
|
|
52
|
-
self._finished = False
|
|
53
|
-
|
|
54
|
-
self._spin_cycle = itertools.cycle(spin_chars)
|
|
55
|
-
|
|
56
|
-
self._file.write(" " * get_indentation() + self._message + " ... ")
|
|
57
|
-
self._width = 0
|
|
58
|
-
|
|
59
|
-
def _write(self, status: str) -> None:
|
|
60
|
-
assert not self._finished
|
|
61
|
-
# Erase what we wrote before by backspacing to the beginning, writing
|
|
62
|
-
# spaces to overwrite the old text, and then backspacing again
|
|
63
|
-
backup = "\b" * self._width
|
|
64
|
-
self._file.write(backup + " " * self._width + backup)
|
|
65
|
-
# Now we have a blank slate to add our status
|
|
66
|
-
self._file.write(status)
|
|
67
|
-
self._width = len(status)
|
|
68
|
-
self._file.flush()
|
|
69
|
-
self._rate_limiter.reset()
|
|
70
|
-
|
|
71
|
-
def spin(self) -> None:
|
|
72
|
-
if self._finished:
|
|
73
|
-
return
|
|
74
|
-
if not self._rate_limiter.ready():
|
|
75
|
-
return
|
|
76
|
-
self._write(next(self._spin_cycle))
|
|
77
|
-
|
|
78
|
-
def finish(self, final_status: str) -> None:
|
|
79
|
-
if self._finished:
|
|
80
|
-
return
|
|
81
|
-
self._write(final_status)
|
|
82
|
-
self._file.write("\n")
|
|
83
|
-
self._file.flush()
|
|
84
|
-
self._finished = True
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
# Used for dumb terminals, non-interactive installs (no tty), etc.
|
|
88
|
-
# We still print updates occasionally (once every 60 seconds by default) to
|
|
89
|
-
# act as a keep-alive for systems like Travis-CI that take lack-of-output as
|
|
90
|
-
# an indication that a task has frozen.
|
|
91
|
-
class NonInteractiveSpinner(SpinnerInterface):
|
|
92
|
-
def __init__(self, message: str, min_update_interval_seconds: float = 60.0) -> None:
|
|
93
|
-
self._message = message
|
|
94
|
-
self._finished = False
|
|
95
|
-
self._rate_limiter = RateLimiter(min_update_interval_seconds)
|
|
96
|
-
self._update("started")
|
|
97
|
-
|
|
98
|
-
def _update(self, status: str) -> None:
|
|
99
|
-
assert not self._finished
|
|
100
|
-
self._rate_limiter.reset()
|
|
101
|
-
logger.info("%s: %s", self._message, status)
|
|
102
|
-
|
|
103
|
-
def spin(self) -> None:
|
|
104
|
-
if self._finished:
|
|
105
|
-
return
|
|
106
|
-
if not self._rate_limiter.ready():
|
|
107
|
-
return
|
|
108
|
-
self._update("still running...")
|
|
109
|
-
|
|
110
|
-
def finish(self, final_status: str) -> None:
|
|
111
|
-
if self._finished:
|
|
112
|
-
return
|
|
113
|
-
self._update(f"finished with status '{final_status}'")
|
|
114
|
-
self._finished = True
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
class RateLimiter:
|
|
118
|
-
def __init__(self, min_update_interval_seconds: float) -> None:
|
|
119
|
-
self._min_update_interval_seconds = min_update_interval_seconds
|
|
120
|
-
self._last_update: float = 0
|
|
121
|
-
|
|
122
|
-
def ready(self) -> bool:
|
|
123
|
-
now = time.time()
|
|
124
|
-
delta = now - self._last_update
|
|
125
|
-
return delta >= self._min_update_interval_seconds
|
|
126
|
-
|
|
127
|
-
def reset(self) -> None:
|
|
128
|
-
self._last_update = time.time()
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
@contextlib.contextmanager
|
|
132
|
-
def open_spinner(message: str) -> Generator[SpinnerInterface, None, None]:
|
|
133
|
-
# Interactive spinner goes directly to sys.stdout rather than being routed
|
|
134
|
-
# through the logging system, but it acts like it has level INFO,
|
|
135
|
-
# i.e. it's only displayed if we're at level INFO or better.
|
|
136
|
-
# Non-interactive spinner goes through the logging system, so it is always
|
|
137
|
-
# in sync with logging configuration.
|
|
138
|
-
if sys.stdout.isatty() and logger.getEffectiveLevel() <= logging.INFO:
|
|
139
|
-
spinner: SpinnerInterface = InteractiveSpinner(message)
|
|
140
|
-
else:
|
|
141
|
-
spinner = NonInteractiveSpinner(message)
|
|
142
|
-
try:
|
|
143
|
-
with hidden_cursor(sys.stdout):
|
|
144
|
-
yield spinner
|
|
145
|
-
except KeyboardInterrupt:
|
|
146
|
-
spinner.finish("canceled")
|
|
147
|
-
raise
|
|
148
|
-
except Exception:
|
|
149
|
-
spinner.finish("error")
|
|
150
|
-
raise
|
|
151
|
-
else:
|
|
152
|
-
spinner.finish("done")
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
class _PipRichSpinner:
|
|
156
|
-
"""
|
|
157
|
-
Custom rich spinner that matches the style of the legacy spinners.
|
|
158
|
-
|
|
159
|
-
(*) Updates will be handled in a background thread by a rich live panel
|
|
160
|
-
which will call render() automatically at the appropriate time.
|
|
161
|
-
"""
|
|
162
|
-
|
|
163
|
-
def __init__(self, label: str) -> None:
|
|
164
|
-
self.label = label
|
|
165
|
-
self._spin_cycle = itertools.cycle(SPINNER_CHARS)
|
|
166
|
-
self._spinner_text = ""
|
|
167
|
-
self._finished = False
|
|
168
|
-
self._indent = get_indentation() * " "
|
|
169
|
-
|
|
170
|
-
def __rich_console__(
|
|
171
|
-
self, console: Console, options: ConsoleOptions
|
|
172
|
-
) -> RenderResult:
|
|
173
|
-
yield self.render()
|
|
174
|
-
|
|
175
|
-
def __rich_measure__(
|
|
176
|
-
self, console: Console, options: ConsoleOptions
|
|
177
|
-
) -> Measurement:
|
|
178
|
-
text = self.render()
|
|
179
|
-
return Measurement.get(console, options, text)
|
|
180
|
-
|
|
181
|
-
def render(self) -> RenderableType:
|
|
182
|
-
if not self._finished:
|
|
183
|
-
self._spinner_text = next(self._spin_cycle)
|
|
184
|
-
|
|
185
|
-
return Text.assemble(self._indent, self.label, " ... ", self._spinner_text)
|
|
186
|
-
|
|
187
|
-
def finish(self, status: str) -> None:
|
|
188
|
-
"""Stop spinning and set a final status message."""
|
|
189
|
-
self._spinner_text = status
|
|
190
|
-
self._finished = True
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
@contextlib.contextmanager
|
|
194
|
-
def open_rich_spinner(label: str, console: Console | None = None) -> Generator[None]:
|
|
195
|
-
if not logger.isEnabledFor(logging.INFO):
|
|
196
|
-
# Don't show spinner if --quiet is given.
|
|
197
|
-
yield
|
|
198
|
-
return
|
|
199
|
-
|
|
200
|
-
console = console or get_console()
|
|
201
|
-
spinner = _PipRichSpinner(label)
|
|
202
|
-
with Live(spinner, refresh_per_second=SPINS_PER_SECOND, console=console):
|
|
203
|
-
try:
|
|
204
|
-
yield
|
|
205
|
-
except KeyboardInterrupt:
|
|
206
|
-
spinner.finish("canceled")
|
|
207
|
-
raise
|
|
208
|
-
except Exception:
|
|
209
|
-
spinner.finish("error")
|
|
210
|
-
raise
|
|
211
|
-
else:
|
|
212
|
-
spinner.finish("done")
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
HIDE_CURSOR = "\x1b[?25l"
|
|
216
|
-
SHOW_CURSOR = "\x1b[?25h"
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
@contextlib.contextmanager
|
|
220
|
-
def hidden_cursor(file: IO[str]) -> Generator[None, None, None]:
|
|
221
|
-
# The Windows terminal does not support the hide/show cursor ANSI codes,
|
|
222
|
-
# even via colorama. So don't even try.
|
|
223
|
-
if WINDOWS:
|
|
224
|
-
yield
|
|
225
|
-
# We don't want to clutter the output with control characters if we're
|
|
226
|
-
# writing to a file, or if the user is running with --quiet.
|
|
227
|
-
# See https://github.com/pypa/pip/issues/3418
|
|
228
|
-
elif not file.isatty() or logger.getEffectiveLevel() > logging.INFO:
|
|
229
|
-
yield
|
|
230
|
-
else:
|
|
231
|
-
file.write(HIDE_CURSOR)
|
|
232
|
-
try:
|
|
233
|
-
yield
|
|
234
|
-
finally:
|
|
235
|
-
file.write(SHOW_CURSOR)
|