shortcutxl 0.3.76 → 0.3.78
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.
- package/BINARY-INVENTORY.json +813 -813
- package/CHANGELOG.md +14 -0
- package/dist/ai/models.d.ts +10 -6
- package/dist/ai/models.generated.d.ts +72 -0
- package/dist/ai/models.generated.js +33 -0
- package/dist/ai/models.js +36 -13
- package/dist/ai/providers/anthropic.d.ts +4 -2
- package/dist/ai/providers/anthropic.js +59 -29
- package/dist/ai/providers/azure-openai-responses.d.ts +2 -1
- package/dist/ai/providers/azure-openai-responses.js +4 -20
- package/dist/ai/providers/google-vertex.d.ts +8 -2
- package/dist/ai/providers/google-vertex.js +66 -54
- package/dist/ai/providers/google.js +15 -48
- package/dist/ai/providers/openai-completions.d.ts +4 -1
- package/dist/ai/providers/openai-completions.js +26 -10
- package/dist/ai/providers/openai-reasoning.d.ts +5 -0
- package/dist/ai/providers/openai-reasoning.js +13 -0
- package/dist/ai/providers/openai-responses-shared.js +1 -1
- package/dist/ai/providers/openai-responses.d.ts +6 -2
- package/dist/ai/providers/openai-responses.js +28 -23
- package/dist/ai/providers/simple-options.d.ts +2 -3
- package/dist/ai/providers/simple-options.js +4 -6
- package/dist/ai/types.d.ts +19 -2
- package/dist/app/agent-session-runtime-adapter.js +7 -6
- package/dist/app/agent-session.d.ts +0 -15
- package/dist/app/agent-session.js +0 -37
- package/dist/app/approvals/approval-errors.d.ts +15 -0
- package/dist/app/approvals/approval-errors.js +14 -0
- package/dist/app/approvals/runtime-approval-gates.d.ts +1 -2
- package/dist/app/approvals/tool-approval.d.ts +1 -0
- package/dist/app/approvals/tool-approval.js +11 -23
- package/dist/app/approvals/types.d.ts +0 -14
- package/dist/app/approvals/types.js +0 -2
- package/dist/app/background/tool-summaries.js +0 -2
- package/dist/app/extensions/slash-commands.js +1 -3
- package/dist/app/local/tools/execute-code/executor.d.ts +1 -1
- package/dist/app/local/tools/execute-code/executor.js +20 -10
- package/dist/app/local/tools/execute-code/tool.js +21 -2
- package/dist/app/modes/action/agent.js +4 -5
- package/dist/app/modes/ask/agent.js +4 -6
- package/dist/app/modes/index.js +20 -10
- package/dist/app/modes/installation/agent.js +4 -5
- package/dist/app/modes/manage/agent.js +3 -4
- package/dist/app/modes/manage/prompt.js +1 -2
- package/dist/app/modes/metadata.d.ts +31 -0
- package/dist/app/modes/metadata.js +35 -0
- package/dist/app/modes/plan/agent.js +5 -8
- package/dist/app/modes/plan/prompt.js +3 -3
- package/dist/app/permissions/runtime-approval-flow.d.ts +1 -5
- package/dist/app/permissions/runtime-approval-flow.js +0 -28
- package/dist/app/permissions/tool-gates.d.ts +2 -3
- package/dist/app/permissions/tool-gates.js +3 -81
- package/dist/app/prompts/com-api.js +1 -1
- package/dist/app/prompts/shared-guidelines.js +7 -3
- package/dist/app/providers/google-vertex-gateway.js +4 -51
- package/dist/app/providers/model-registry.d.ts +1 -0
- package/dist/app/providers/model-registry.js +39 -0
- package/dist/app/providers/model-resolver.js +10 -7
- package/dist/app/providers/register-shortcut-provider.js +6 -6
- package/dist/app/providers/shortcut-api-v2-transport.js +4 -0
- package/dist/app/providers/shortcut-llm-proxy-client.d.ts +2 -2
- package/dist/app/providers/shortcut-llm-proxy-client.js +1 -0
- package/dist/app/resources/package-manager.js +2 -123
- package/dist/app/resources/resource-patterns.d.ts +9 -0
- package/dist/app/resources/resource-patterns.js +120 -0
- package/dist/app/session/forked-agent.d.ts +2 -2
- package/dist/app/session/model-manager.js +3 -2
- package/dist/app/session/session-lifecycle.js +3 -2
- package/dist/app/session/session-models.d.ts +2 -0
- package/dist/app/session/session-models.js +14 -6
- package/dist/app/settings-manager.d.ts +3 -3
- package/dist/app/shared/tools/execute-code/mog.d.ts +3 -1
- package/dist/app/shared/tools/execute-code/mog.js +18 -2
- package/dist/app/tools/bash.js +3 -3
- package/dist/app/tools/execute-code/index.d.ts +1 -0
- package/dist/app/tools/execute-code/index.js +3 -1
- package/dist/app/tools/find-ignore-files.d.ts +3 -0
- package/dist/app/tools/find-ignore-files.js +33 -0
- package/dist/app/tools/find.js +2 -21
- package/dist/app/tools/llm-analysis.js +0 -2
- package/dist/app/tools/refresh-context.d.ts +1 -1
- package/dist/app/tools/session-settings/update-session-settings.js +2 -2
- package/dist/app/tools/switch-mode.js +2 -2
- package/dist/app/tools/take-screenshot.js +0 -2
- package/dist/app/tools/task/runner.js +1 -2
- package/dist/app/tools/task/task.d.ts +1 -3
- package/dist/app/tools/task/task.js +20 -40
- package/dist/app/tools/web-search.js +12 -2
- package/dist/autocomplete/core.d.ts +33 -0
- package/dist/autocomplete/core.js +113 -0
- package/dist/{tui → autocomplete}/fuzzy.d.ts +0 -1
- package/dist/{tui → autocomplete}/fuzzy.js +0 -1
- package/dist/{tui/autocomplete.d.ts → autocomplete/index.d.ts} +0 -1
- package/dist/{tui/autocomplete.js → autocomplete/index.js} +62 -158
- package/dist/cli/args.js +1 -1
- package/dist/cli/list-models.js +1 -1
- package/dist/cli.js +26227 -30480
- package/dist/constants.d.ts +0 -2
- package/dist/constants.js +0 -3
- package/dist/contracts/agent-session-store.d.ts +1 -1
- package/dist/contracts/agent-settings.d.ts +1 -0
- package/dist/contracts/agent-settings.js +2 -1
- package/dist/contracts/model-call.d.ts +1 -2
- package/dist/contracts/model-call.js +1 -2
- package/dist/contracts/model-stream.d.ts +1 -0
- package/dist/contracts/model-stream.js +1 -0
- package/dist/contracts/wire.d.ts +10 -7
- package/dist/contracts/wire.js +8 -0
- package/dist/core/agent-engine.js +1 -1
- package/dist/core/core-types.d.ts +1 -21
- package/dist/core/defaults.d.ts +1 -1
- package/dist/core/defaults.js +9 -1
- package/dist/core/prompts/agent-guidelines.d.ts +4 -5
- package/dist/core/prompts/agent-guidelines.js +28 -42
- package/dist/core/session-schema.d.ts +1 -1
- package/dist/embedded-agent/ai-invoke.d.ts +1 -2
- package/dist/embedded-agent/ai-invoke.js +2 -70
- package/dist/embedded-agent/anthropic-messages-transport.d.ts +4 -20
- package/dist/embedded-agent/anthropic-messages-transport.js +23 -786
- package/dist/embedded-agent/bootstrap.js +2 -2
- package/dist/embedded-agent/compose.js +8 -7
- package/dist/embedded-agent/gateway-base-url.d.ts +3 -0
- package/dist/embedded-agent/gateway-base-url.js +35 -0
- package/dist/embedded-agent/google-vertex-transport.d.ts +2 -11
- package/dist/embedded-agent/google-vertex-transport.js +20 -117
- package/dist/embedded-agent/host-runtime-options.d.ts +0 -8
- package/dist/embedded-agent/host-runtime-options.js +10 -2
- package/dist/embedded-agent/host-tools/invoke-llm/contract.d.ts +2 -2
- package/dist/embedded-agent/host-tools/invoke-llm/contract.js +4 -2
- package/dist/embedded-agent/host-tools/sandbox-llm/contract.d.ts +8 -3
- package/dist/embedded-agent/host-tools/sandbox-llm/contract.js +12 -8
- package/dist/embedded-agent/host-tools/sandbox-llm/index.d.ts +1 -1
- package/dist/embedded-agent/host-tools/sandbox-llm/index.js +1 -1
- package/dist/embedded-agent/host-tools/shared/index.d.ts +1 -1
- package/dist/embedded-agent/host-tools/shared/index.js +1 -1
- package/dist/embedded-agent/host-tools/shared/llm-stream-error.d.ts +7 -0
- package/dist/embedded-agent/host-tools/shared/llm-stream-error.js +10 -0
- package/dist/embedded-agent/host-tools/take-screenshot/contract.d.ts +0 -2
- package/dist/embedded-agent/host-tools/take-screenshot/contract.js +1 -3
- package/dist/embedded-agent/host-tools/take-screenshot/index.d.ts +1 -1
- package/dist/embedded-agent/host-tools/take-screenshot/index.js +1 -1
- package/dist/embedded-agent/host-tools/task/agents/clone.js +1 -2
- package/dist/embedded-agent/host-tools/task/contract.js +1 -1
- package/dist/embedded-agent/index.d.ts +3 -4
- package/dist/embedded-agent/index.js +2 -3
- package/dist/embedded-agent/model-selection.d.ts +0 -6
- package/dist/embedded-agent/model-selection.js +15 -8
- package/dist/embedded-agent/openai-completions-transport.d.ts +2 -11
- package/dist/embedded-agent/openai-completions-transport.js +20 -120
- package/dist/embedded-agent/openai-responses-transport.d.ts +2 -11
- package/dist/embedded-agent/openai-responses-transport.js +15 -170
- package/dist/embedded-agent/prompt/build.js +1 -2
- package/dist/embedded-agent/prompt/sections.d.ts +1 -1
- package/dist/embedded-agent/prompt/sections.js +2 -0
- package/dist/embedded-agent/provider-native-request.d.ts +29 -0
- package/dist/embedded-agent/provider-native-request.js +65 -0
- package/dist/embedded-agent/run-stats.d.ts +1 -1
- package/dist/embedded-agent/stream.d.ts +10 -96
- package/dist/embedded-agent/stream.js +31 -556
- package/dist/embedded-agent/suggestions.d.ts +1 -1
- package/dist/embedded-agent/suggestions.js +1 -1
- package/dist/embedded-agent/worker-bridge/host-client.d.ts +7 -0
- package/dist/embedded-agent/worker-bridge/host-client.js +15 -0
- package/dist/embedded-agent/worker-bridge/worker-port.js +17 -1
- package/dist/main.js +18 -14
- package/dist/rpc/index.d.ts +1 -1
- package/dist/rpc/rpc-approval-gates.js +1 -2
- package/dist/rpc/rpc-host.d.ts +4 -0
- package/dist/rpc/rpc-host.js +13 -24
- package/dist/rpc/rpc-types.d.ts +6 -17
- package/dist/shared/platform/open.d.ts +4 -1
- package/dist/shared/platform/open.js +14 -2
- package/dist/shell/approvals/runtime-approval-gates.js +1 -3
- package/dist/shell/components/selectors/model-selector.js +2 -1
- package/dist/shell/components/selectors/session-selector-search.js +1 -1
- package/dist/shell/components/selectors/thinking-selector.js +7 -6
- package/dist/shell/index.d.ts +0 -1
- package/dist/shell/index.js +0 -1
- package/dist/shell/interactive/interactive-mode-options.d.ts +10 -0
- package/dist/shell/interactive/interactive-mode.d.ts +6 -12
- package/dist/shell/interactive/interactive-mode.js +39 -158
- package/dist/shell/interactive/slash-commands.d.ts +0 -34
- package/dist/shell/interactive/slash-commands.js +0 -2
- package/dist/shell/links/local-file-link-input.d.ts +15 -0
- package/dist/shell/links/local-file-link-input.js +38 -0
- package/dist/shell/links/local-file-link.d.ts +7 -0
- package/dist/shell/links/local-file-link.js +35 -0
- package/dist/shell/links/local-file-opener.d.ts +16 -0
- package/dist/shell/links/local-file-opener.js +90 -0
- package/dist/shell/session-client.d.ts +0 -1
- package/dist/shell/session-client.js +0 -6
- package/dist/shell/status/update-check-scheduler.d.ts +30 -0
- package/dist/shell/status/update-check-scheduler.js +71 -0
- package/dist/shell/status/update-reminder-controller.d.ts +22 -0
- package/dist/shell/status/update-reminder-controller.js +40 -0
- package/dist/shell/status/update-reminder.d.ts +6 -0
- package/dist/shell/status/update-reminder.js +4 -0
- package/dist/shell/theme/dark.json +1 -2
- package/dist/shell/theme/light.json +1 -2
- package/dist/shell/theme/runtime.d.ts +2 -3
- package/dist/shell/theme/runtime.js +2 -6
- package/dist/shell/theme/theme-schema.json +1 -6
- package/dist/shortcut-model-catalog.d.ts +7 -2
- package/dist/shortcut-model-catalog.js +134 -10
- package/dist/startup/update-manager.d.ts +6 -6
- package/dist/startup/update-manager.js +23 -38
- package/dist/startup/update-prompt.d.ts +1 -0
- package/dist/startup/update-prompt.js +2 -2
- package/dist/tui/components/editor.d.ts +1 -1
- package/dist/tui/components/editor.js +1 -1
- package/dist/tui/components/markdown.js +15 -6
- package/dist/tui/components/settings-list.js +1 -1
- package/dist/tui/editor-component.d.ts +1 -1
- package/dist/tui/index.d.ts +7 -8
- package/dist/tui/index.js +7 -6
- package/dist/tui/tui.d.ts +2 -0
- package/dist/tui/tui.js +16 -1
- package/dist/tui/utils.d.ts +7 -0
- package/dist/tui/utils.js +58 -8
- package/native-app/main/index.js +3200 -48
- package/native-app/main/{photon_rs-SoVDgheu.js → photon_rs-XkYyYTVA.js} +2 -2
- package/native-app/package.json +1 -1
- package/native-app/preload/index.cjs +2 -0
- package/native-app/renderer/assets/{index-CFc-oZuS.js → index-B4jz6epR.js} +825 -155
- package/native-app/renderer/assets/{index-OhGE0UY4.css → index-C__g36ft.css} +412 -162
- package/native-app/renderer/assets/shortcutagent-DxFsGSkw.png +0 -0
- package/native-app/renderer/index.html +2 -2
- package/package.json +17 -3
- package/skills/add-custom-model/SKILL.md +52 -0
- package/user-docs/dist/index.html +1 -1
- package/user-docs/dist/shortcutxl-docs.pdf +0 -0
- package/xll/ShortcutXL.xll +0 -0
- package/xll/modules/shortcut_xl/_managed.py +26 -7
- package/xll/modules/shortcut_xl/_tracking.py +141 -251
- package/xll/modules/shortcut_xl/api/__init__.py +60 -0
- package/xll/modules/shortcut_xl/api/workbook.py +9 -1
- package/xll/modules/shortcut_xl/api/worksheet.py +4 -1
- package/xll/python/Lib/site-packages/httpx-0.28.1.dist-info/RECORD +1 -1
- package/xll/python/Lib/site-packages/idna-3.18.dist-info/RECORD +1 -1
- package/xll/python/Lib/site-packages/pip/__init__.py +1 -1
- package/xll/python/Lib/site-packages/pip/_internal/build_env/__init__.py +25 -0
- package/xll/python/Lib/site-packages/pip/_internal/build_env/base.py +103 -0
- package/xll/python/Lib/site-packages/pip/_internal/build_env/installer.py +333 -0
- package/xll/python/Lib/site-packages/pip/_internal/build_env/noop.py +42 -0
- package/xll/python/Lib/site-packages/pip/_internal/build_env/venv.py +145 -0
- package/xll/python/Lib/site-packages/pip/_internal/build_env/virtual.py +139 -0
- package/xll/python/Lib/site-packages/pip/_internal/cache.py +4 -1
- package/xll/python/Lib/site-packages/pip/_internal/cli/autocompletion.py +4 -1
- package/xll/python/Lib/site-packages/pip/_internal/cli/base_command.py +11 -14
- package/xll/python/Lib/site-packages/pip/_internal/cli/cmdoptions.py +133 -22
- package/xll/python/Lib/site-packages/pip/_internal/cli/index_command.py +11 -6
- package/xll/python/Lib/site-packages/pip/_internal/cli/main.py +2 -1
- package/xll/python/Lib/site-packages/pip/_internal/cli/main_parser.py +1 -2
- package/xll/python/Lib/site-packages/pip/_internal/cli/parser.py +10 -2
- package/xll/python/Lib/site-packages/pip/_internal/cli/progress_bars.py +2 -2
- package/xll/python/Lib/site-packages/pip/_internal/cli/req_command.py +57 -25
- package/xll/python/Lib/site-packages/pip/_internal/cli/status_codes.py +1 -0
- package/xll/python/Lib/site-packages/pip/_internal/commands/cache.py +7 -6
- package/xll/python/Lib/site-packages/pip/_internal/commands/configuration.py +2 -1
- package/xll/python/Lib/site-packages/pip/_internal/commands/debug.py +4 -5
- package/xll/python/Lib/site-packages/pip/_internal/commands/download.py +4 -0
- package/xll/python/Lib/site-packages/pip/_internal/commands/freeze.py +1 -1
- package/xll/python/Lib/site-packages/pip/_internal/commands/index.py +10 -3
- package/xll/python/Lib/site-packages/pip/_internal/commands/inspect.py +1 -1
- package/xll/python/Lib/site-packages/pip/_internal/commands/install.py +6 -6
- package/xll/python/Lib/site-packages/pip/_internal/commands/list.py +11 -6
- package/xll/python/Lib/site-packages/pip/_internal/commands/lock.py +4 -6
- package/xll/python/Lib/site-packages/pip/_internal/commands/show.py +14 -8
- package/xll/python/Lib/site-packages/pip/_internal/commands/wheel.py +7 -1
- package/xll/python/Lib/site-packages/pip/_internal/configuration.py +2 -3
- package/xll/python/Lib/site-packages/pip/_internal/distributions/base.py +5 -3
- package/xll/python/Lib/site-packages/pip/_internal/distributions/installed.py +3 -2
- package/xll/python/Lib/site-packages/pip/_internal/distributions/sdist.py +45 -20
- package/xll/python/Lib/site-packages/pip/_internal/distributions/wheel.py +3 -2
- package/xll/python/Lib/site-packages/pip/_internal/exceptions.py +174 -0
- package/xll/python/Lib/site-packages/pip/_internal/index/collector.py +70 -48
- package/xll/python/Lib/site-packages/pip/_internal/index/package_finder.py +46 -7
- package/xll/python/Lib/site-packages/pip/_internal/index/sources.py +1 -2
- package/xll/python/Lib/site-packages/pip/_internal/locations/_sysconfig.py +1 -1
- package/xll/python/Lib/site-packages/pip/_internal/locations/base.py +1 -1
- package/xll/python/Lib/site-packages/pip/_internal/metadata/base.py +10 -5
- package/xll/python/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py +1 -1
- package/xll/python/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py +8 -3
- package/xll/python/Lib/site-packages/pip/_internal/models/candidate.py +5 -1
- package/xll/python/Lib/site-packages/pip/_internal/models/link.py +53 -13
- package/xll/python/Lib/site-packages/pip/_internal/network/auth.py +38 -21
- package/xll/python/Lib/site-packages/pip/_internal/network/cache.py +2 -2
- package/xll/python/Lib/site-packages/pip/_internal/network/download.py +58 -11
- package/xll/python/Lib/site-packages/pip/_internal/network/session.py +35 -40
- package/xll/python/Lib/site-packages/pip/_internal/network/utils.py +109 -1
- package/xll/python/Lib/site-packages/pip/_internal/operations/check.py +2 -3
- package/xll/python/Lib/site-packages/pip/_internal/operations/install/wheel.py +23 -18
- package/xll/python/Lib/site-packages/pip/_internal/operations/prepare.py +152 -7
- package/xll/python/Lib/site-packages/pip/_internal/req/__init__.py +2 -0
- package/xll/python/Lib/site-packages/pip/_internal/req/constructors.py +54 -69
- package/xll/python/Lib/site-packages/pip/_internal/req/req_file.py +6 -6
- package/xll/python/Lib/site-packages/pip/_internal/req/req_install.py +25 -21
- package/xll/python/Lib/site-packages/pip/_internal/req/req_uninstall.py +13 -8
- package/xll/python/Lib/site-packages/pip/_internal/resolution/base.py +2 -2
- package/xll/python/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +2 -2
- package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +1 -1
- package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +0 -1
- package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +39 -52
- package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +3 -3
- package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +3 -0
- package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +9 -0
- package/xll/python/Lib/site-packages/pip/_internal/utils/compat.py +15 -9
- package/xll/python/Lib/site-packages/pip/_internal/utils/deprecation.py +6 -1
- package/xll/python/Lib/site-packages/pip/_internal/utils/filesystem.py +2 -2
- package/xll/python/Lib/site-packages/pip/_internal/utils/logging.py +11 -3
- package/xll/python/Lib/site-packages/pip/_internal/utils/misc.py +48 -4
- package/xll/python/Lib/site-packages/pip/_internal/utils/pylock.py +18 -2
- package/xll/python/Lib/site-packages/pip/_internal/utils/retry.py +2 -1
- package/xll/python/Lib/site-packages/pip/_internal/utils/subprocess.py +4 -3
- package/xll/python/Lib/site-packages/pip/_internal/utils/temp_dir.py +1 -2
- package/xll/python/Lib/site-packages/pip/_internal/utils/unpacking.py +30 -4
- package/xll/python/Lib/site-packages/pip/_internal/utils/urls.py +5 -2
- package/xll/python/Lib/site-packages/pip/_internal/utils/virtualenv.py +2 -36
- package/xll/python/Lib/site-packages/pip/_internal/vcs/git.py +8 -5
- package/xll/python/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +1 -2
- package/xll/python/Lib/site-packages/pip/_internal/wheel_builder.py +5 -1
- package/xll/python/Lib/site-packages/pip/_vendor/bom.cdx.json +231 -0
- package/xll/python/Lib/site-packages/pip/_vendor/certifi/__init__.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/certifi/cacert.pem +0 -631
- package/xll/python/Lib/site-packages/pip/_vendor/distlib/__init__.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/distlib/compat.py +34 -64
- package/xll/python/Lib/site-packages/pip/_vendor/distlib/resources.py +28 -14
- package/xll/python/Lib/site-packages/pip/_vendor/distlib/scripts.py +7 -3
- package/xll/python/Lib/site-packages/pip/_vendor/distlib/util.py +48 -11
- package/xll/python/Lib/site-packages/pip/_vendor/idna/LICENSE.md +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/idna/__main__.py +6 -0
- package/xll/python/Lib/site-packages/pip/_vendor/idna/cli.py +128 -0
- package/xll/python/Lib/site-packages/pip/_vendor/idna/codec.py +50 -13
- package/xll/python/Lib/site-packages/pip/_vendor/idna/compat.py +26 -0
- package/xll/python/Lib/site-packages/pip/_vendor/idna/core.py +352 -141
- package/xll/python/Lib/site-packages/pip/_vendor/idna/idnadata.py +571 -2983
- package/xll/python/Lib/site-packages/pip/_vendor/idna/intranges.py +5 -7
- package/xll/python/Lib/site-packages/pip/_vendor/idna/package_data.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/idna/uts46data.py +16887 -8832
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/__init__.py +352 -66
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/__main__.py +11 -0
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/_xdg.py +171 -0
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/android.py +92 -41
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/api.py +213 -49
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/macos.py +128 -51
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/unix.py +176 -127
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/version.py +8 -18
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/windows.py +185 -68
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/__init__.py +2 -2
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/__main__.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/console.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/filter.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py +10 -8
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/formatter.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/lexer.py +7 -5
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py +9 -8
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/lexers/python.py +35 -32
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/modeline.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/plugin.py +3 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/regexopt.py +13 -2
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/scanner.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/sphinxext.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/style.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/token.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/unistring.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/util.py +2 -2
- package/xll/python/Lib/site-packages/pip/_vendor/requests/__init__.py +52 -16
- package/xll/python/Lib/site-packages/pip/_vendor/requests/__version__.py +2 -2
- package/xll/python/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +2 -2
- package/xll/python/Lib/site-packages/pip/_vendor/requests/_types.py +183 -0
- package/xll/python/Lib/site-packages/pip/_vendor/requests/adapters.py +101 -50
- package/xll/python/Lib/site-packages/pip/_vendor/requests/api.py +31 -8
- package/xll/python/Lib/site-packages/pip/_vendor/requests/auth.py +80 -40
- package/xll/python/Lib/site-packages/pip/_vendor/requests/compat.py +9 -3
- package/xll/python/Lib/site-packages/pip/_vendor/requests/cookies.py +143 -79
- package/xll/python/Lib/site-packages/pip/_vendor/requests/exceptions.py +15 -5
- package/xll/python/Lib/site-packages/pip/_vendor/requests/help.py +13 -10
- package/xll/python/Lib/site-packages/pip/_vendor/requests/hooks.py +23 -9
- package/xll/python/Lib/site-packages/pip/_vendor/requests/models.py +265 -126
- package/xll/python/Lib/site-packages/pip/_vendor/requests/py.typed +0 -0
- package/xll/python/Lib/site-packages/pip/_vendor/requests/sessions.py +164 -78
- package/xll/python/Lib/site-packages/pip/_vendor/requests/status_codes.py +2 -2
- package/xll/python/Lib/site-packages/pip/_vendor/requests/structures.py +51 -20
- package/xll/python/Lib/site-packages/pip/_vendor/requests/utils.py +161 -89
- package/xll/python/Lib/site-packages/pip/_vendor/tomli/__init__.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/tomli/_parser.py +9 -4
- package/xll/python/Lib/site-packages/pip/_vendor/tomli/_re.py +13 -9
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/_base_connection.py +3 -1
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/_collections.py +0 -1
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/_version.py +8 -18
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/connection.py +4 -4
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +23 -10
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/contrib/emscripten/response.py +5 -1
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +7 -8
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +2 -2
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/fields.py +14 -14
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +8 -6
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/response.py +35 -22
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +8 -0
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +11 -61
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +5 -11
- package/xll/python/Lib/site-packages/pip/_vendor/vendor.txt +8 -8
- package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/METADATA +3 -2
- package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/RECORD +208 -188
- package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/AUTHORS.txt +20 -0
- package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/idna/LICENSE.md +1 -1
- package/xll/python/Lib/site-packages/pywin32-311.dist-info/RECORD +2 -2
- package/xll/python/Scripts/httpx.exe +0 -0
- package/xll/python/Scripts/idna.exe +0 -0
- package/xll/python/Scripts/pip.exe +0 -0
- package/xll/python/Scripts/pip3.13.exe +0 -0
- package/xll/python/Scripts/pip3.exe +0 -0
- package/xll/python/Scripts/pywin32_postinstall.exe +0 -0
- package/xll/python/Scripts/pywin32_testall.exe +0 -0
- package/dist/app/collab/awareness.d.ts +0 -32
- package/dist/app/collab/awareness.js +0 -52
- package/dist/app/collab/collab-client.d.ts +0 -37
- package/dist/app/collab/collab-client.js +0 -208
- package/dist/app/collab/collab-manager.d.ts +0 -91
- package/dist/app/collab/collab-manager.js +0 -218
- package/dist/app/collab/collab-sync.d.ts +0 -62
- package/dist/app/collab/collab-sync.js +0 -215
- package/dist/app/collab/index.d.ts +0 -9
- package/dist/app/collab/index.js +0 -6
- package/dist/app/collab/super-fight.d.ts +0 -90
- package/dist/app/collab/super-fight.js +0 -310
- package/dist/app/collab/sync-bridge.d.ts +0 -35
- package/dist/app/collab/sync-bridge.js +0 -109
- package/dist/app/collab/types.d.ts +0 -75
- package/dist/app/collab/types.js +0 -5
- package/dist/embedded-agent/ai-content.d.ts +0 -52
- package/dist/embedded-agent/ai-content.js +0 -101
- package/dist/embedded-agent/host-tools/shared/llm-stream.d.ts +0 -31
- package/dist/embedded-agent/host-tools/shared/llm-stream.js +0 -136
- package/dist/embedded-agent/model-call-orchestrator.d.ts +0 -22
- package/dist/embedded-agent/model-call-orchestrator.js +0 -22
- package/dist/embedded-agent/stream-errors.d.ts +0 -10
- package/dist/embedded-agent/stream-errors.js +0 -73
- package/dist/embedded-agent/stream-message-state.d.ts +0 -14
- package/dist/embedded-agent/stream-message-state.js +0 -271
- package/dist/embedded-agent/stream-sse.d.ts +0 -78
- package/dist/embedded-agent/stream-sse.js +0 -73
- package/dist/shell/approvals/task-spawn-approval.d.ts +0 -20
- package/dist/shell/approvals/task-spawn-approval.js +0 -93
- package/dist/shell/interactive/collab-command.d.ts +0 -9
- package/dist/shell/interactive/collab-command.js +0 -115
- package/dist/shell/interactive/super-fight-ui.d.ts +0 -80
- package/dist/shell/interactive/super-fight-ui.js +0 -484
- package/dist/shell/status/collab-status.d.ts +0 -18
- package/dist/shell/status/collab-status.js +0 -46
- package/xll/python/Lib/site-packages/pip/_internal/build_env.py +0 -606
- /package/dist/{tui → autocomplete}/skill-autocomplete.js +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/INSTALLER +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/REQUESTED +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/WHEEL +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/entry_points.txt +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/LICENSE.txt +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/cachecontrol/LICENSE.txt +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/certifi/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/distlib/LICENSE.txt +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/distro/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/msgpack/COPYING +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/packaging/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/packaging/LICENSE.APACHE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/packaging/LICENSE.BSD +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/pkg_resources/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/platformdirs/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/pygments/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/pyproject_hooks/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/requests/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/resolvelib/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/rich/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/tomli/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/tomli_w/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/truststore/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/urllib3/LICENSE.txt +0 -0
|
@@ -18,12 +18,11 @@ from collections.abc import Collection, Mapping
|
|
|
18
18
|
from dataclasses import dataclass
|
|
19
19
|
|
|
20
20
|
from pip._vendor.packaging import pylock
|
|
21
|
-
from pip._vendor.packaging.markers import Marker
|
|
21
|
+
from pip._vendor.packaging.markers import InvalidMarker, Marker
|
|
22
22
|
from pip._vendor.packaging.requirements import InvalidRequirement, Requirement
|
|
23
23
|
from pip._vendor.packaging.utils import parse_sdist_filename, parse_wheel_filename
|
|
24
24
|
|
|
25
25
|
from pip._internal.exceptions import InstallationError
|
|
26
|
-
from pip._internal.models.format_control import FormatControl
|
|
27
26
|
from pip._internal.models.index import PyPI, TestPyPI
|
|
28
27
|
from pip._internal.models.link import Link
|
|
29
28
|
from pip._internal.models.wheel import Wheel
|
|
@@ -55,7 +54,7 @@ logger = logging.getLogger(__name__)
|
|
|
55
54
|
operators = ("~=", "==", "!=", "<=", ">=", "<", ">", "===")
|
|
56
55
|
|
|
57
56
|
|
|
58
|
-
def
|
|
57
|
+
def strip_extras(path: str) -> tuple[str, set[str]]:
|
|
59
58
|
m = re.match(r"^(.+)(\[[^\]]+\])$", path)
|
|
60
59
|
extras = None
|
|
61
60
|
if m:
|
|
@@ -64,10 +63,10 @@ def _strip_extras(path: str) -> tuple[str, str | None]:
|
|
|
64
63
|
else:
|
|
65
64
|
path_no_extras = path
|
|
66
65
|
|
|
67
|
-
return path_no_extras, extras
|
|
66
|
+
return path_no_extras, _convert_extras(extras)
|
|
68
67
|
|
|
69
68
|
|
|
70
|
-
def
|
|
69
|
+
def _convert_extras(extras: str | None) -> set[str]:
|
|
71
70
|
if not extras:
|
|
72
71
|
return set()
|
|
73
72
|
return get_requirement("placeholder" + extras.lower()).extras
|
|
@@ -120,7 +119,7 @@ def _parse_pip_syntax_editable(editable_req: str) -> tuple[str | None, str, set[
|
|
|
120
119
|
url = editable_req
|
|
121
120
|
|
|
122
121
|
# If a file path is specified with extras, strip off the extras.
|
|
123
|
-
url_no_extras, extras =
|
|
122
|
+
url_no_extras, extras = strip_extras(url)
|
|
124
123
|
|
|
125
124
|
if os.path.isdir(url_no_extras):
|
|
126
125
|
# Treating it as code that has already been checked out
|
|
@@ -128,14 +127,7 @@ def _parse_pip_syntax_editable(editable_req: str) -> tuple[str | None, str, set[
|
|
|
128
127
|
|
|
129
128
|
if url_no_extras.lower().startswith("file:"):
|
|
130
129
|
package_name = Link(url_no_extras).egg_fragment
|
|
131
|
-
|
|
132
|
-
return (
|
|
133
|
-
package_name,
|
|
134
|
-
url_no_extras,
|
|
135
|
-
get_requirement("placeholder" + extras.lower()).extras,
|
|
136
|
-
)
|
|
137
|
-
else:
|
|
138
|
-
return package_name, url_no_extras, set()
|
|
130
|
+
return (package_name, url_no_extras, extras)
|
|
139
131
|
|
|
140
132
|
for version_control in vcs:
|
|
141
133
|
if url.lower().startswith(f"{version_control}:"):
|
|
@@ -267,7 +259,6 @@ def install_req_from_editable(
|
|
|
267
259
|
hash_options: dict[str, list[str]] | None = None,
|
|
268
260
|
constraint: bool = False,
|
|
269
261
|
user_supplied: bool = False,
|
|
270
|
-
permit_editable_wheels: bool = False,
|
|
271
262
|
config_settings: dict[str, str | list[str]] | None = None,
|
|
272
263
|
) -> InstallRequirement:
|
|
273
264
|
if constraint:
|
|
@@ -279,7 +270,6 @@ def install_req_from_editable(
|
|
|
279
270
|
comes_from=comes_from,
|
|
280
271
|
user_supplied=user_supplied,
|
|
281
272
|
editable=True,
|
|
282
|
-
permit_editable_wheels=permit_editable_wheels,
|
|
283
273
|
link=parts.link,
|
|
284
274
|
constraint=constraint,
|
|
285
275
|
isolated=isolated,
|
|
@@ -353,19 +343,22 @@ def parse_req_from_line(name: str, line_source: str | None) -> RequirementParts:
|
|
|
353
343
|
if not markers_as_string:
|
|
354
344
|
markers = None
|
|
355
345
|
else:
|
|
356
|
-
|
|
346
|
+
try:
|
|
347
|
+
markers = Marker(markers_as_string)
|
|
348
|
+
except InvalidMarker as exc:
|
|
349
|
+
raise InstallationError(f"Invalid requirement: {name.strip()!r}: {exc}")
|
|
357
350
|
else:
|
|
358
351
|
markers = None
|
|
359
352
|
name = name.strip()
|
|
360
353
|
req_as_string = None
|
|
361
354
|
path = os.path.normpath(os.path.abspath(name))
|
|
362
355
|
link = None
|
|
363
|
-
extras_as_string = None
|
|
364
356
|
|
|
365
357
|
if is_url(name):
|
|
366
358
|
link = Link(name)
|
|
359
|
+
extras: set[str] = set()
|
|
367
360
|
else:
|
|
368
|
-
p,
|
|
361
|
+
p, extras = strip_extras(path)
|
|
369
362
|
url = _get_url_from_path(p, name)
|
|
370
363
|
if url is not None:
|
|
371
364
|
link = Link(url)
|
|
@@ -388,8 +381,6 @@ def parse_req_from_line(name: str, line_source: str | None) -> RequirementParts:
|
|
|
388
381
|
else:
|
|
389
382
|
req_as_string = name
|
|
390
383
|
|
|
391
|
-
extras = convert_extras(extras_as_string)
|
|
392
|
-
|
|
393
384
|
def with_source(text: str) -> str:
|
|
394
385
|
if not line_source:
|
|
395
386
|
return text
|
|
@@ -558,7 +549,6 @@ def install_req_drop_extras(ireq: InstallRequirement) -> InstallRequirement:
|
|
|
558
549
|
extras=[],
|
|
559
550
|
config_settings=ireq.config_settings,
|
|
560
551
|
user_supplied=ireq.user_supplied,
|
|
561
|
-
permit_editable_wheels=ireq.permit_editable_wheels,
|
|
562
552
|
)
|
|
563
553
|
|
|
564
554
|
|
|
@@ -594,65 +584,57 @@ def install_req_from_pylock_package(
|
|
|
594
584
|
| pylock.PackageWheel
|
|
595
585
|
),
|
|
596
586
|
pylock_path_or_url: str,
|
|
597
|
-
format_control: FormatControl,
|
|
598
587
|
user_supplied: bool,
|
|
599
|
-
) -> InstallRequirement:
|
|
600
|
-
|
|
588
|
+
) -> tuple[InstallRequirement, Link | None]:
|
|
589
|
+
"""Construct an InstallRequirement from a pylock package and artifact.
|
|
590
|
+
|
|
591
|
+
If the artifact is a Sdist or Wheel, also return a locked Link which
|
|
592
|
+
is meant to override candidates from indexes or --find-links.
|
|
593
|
+
"""
|
|
601
594
|
# TODO: validate file size
|
|
602
595
|
if isinstance(package_dist, pylock.PackageVcs):
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
f"{
|
|
596
|
+
req_url = package_vcs_requirement_url(pylock_path_or_url, package_dist)
|
|
597
|
+
return (
|
|
598
|
+
InstallRequirement(
|
|
599
|
+
req=Requirement(f"{package.name} @ {req_url}"),
|
|
600
|
+
comes_from=pylock_path_or_url,
|
|
601
|
+
user_supplied=user_supplied,
|
|
607
602
|
),
|
|
608
|
-
|
|
609
|
-
user_supplied=user_supplied,
|
|
603
|
+
None,
|
|
610
604
|
)
|
|
611
605
|
elif isinstance(package_dist, pylock.PackageArchive):
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
f"{
|
|
606
|
+
req_url = package_archive_requirement_url(pylock_path_or_url, package_dist)
|
|
607
|
+
return (
|
|
608
|
+
InstallRequirement(
|
|
609
|
+
req=Requirement(f"{package.name} @ {req_url}"),
|
|
610
|
+
comes_from=pylock_path_or_url,
|
|
611
|
+
hash_options=_pylock_hashes_to_hash_options(package_dist.hashes),
|
|
612
|
+
user_supplied=user_supplied,
|
|
616
613
|
),
|
|
617
|
-
|
|
618
|
-
hash_options=_pylock_hashes_to_hash_options(package_dist.hashes),
|
|
619
|
-
user_supplied=user_supplied,
|
|
614
|
+
None,
|
|
620
615
|
)
|
|
621
616
|
elif isinstance(package_dist, pylock.PackageDirectory):
|
|
622
|
-
|
|
617
|
+
req_url = package_directory_requirement_url(pylock_path_or_url, package_dist)
|
|
623
618
|
if package_dist.editable:
|
|
624
|
-
return
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
619
|
+
return (
|
|
620
|
+
install_req_from_editable(
|
|
621
|
+
req_url,
|
|
622
|
+
comes_from=pylock_path_or_url,
|
|
623
|
+
user_supplied=user_supplied,
|
|
624
|
+
),
|
|
625
|
+
None,
|
|
628
626
|
)
|
|
629
627
|
else:
|
|
630
|
-
return
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
628
|
+
return (
|
|
629
|
+
install_req_from_line(
|
|
630
|
+
req_url,
|
|
631
|
+
comes_from=pylock_path_or_url,
|
|
632
|
+
user_supplied=user_supplied,
|
|
633
|
+
),
|
|
634
|
+
None,
|
|
634
635
|
)
|
|
635
636
|
else:
|
|
636
637
|
# wheel or sdist
|
|
637
|
-
allowed_formats = format_control.get_allowed_formats(package.name)
|
|
638
|
-
if (
|
|
639
|
-
isinstance(package_dist, pylock.PackageSdist)
|
|
640
|
-
and "source" not in allowed_formats
|
|
641
|
-
):
|
|
642
|
-
raise InstallationError(
|
|
643
|
-
f"source distributions are not permitted for package {package.name!r} "
|
|
644
|
-
f"and there is no compatible wheel for it in {pylock_path_or_url!r}"
|
|
645
|
-
)
|
|
646
|
-
if (
|
|
647
|
-
isinstance(package_dist, pylock.PackageWheel)
|
|
648
|
-
and "binary" not in allowed_formats
|
|
649
|
-
):
|
|
650
|
-
if not package.sdist:
|
|
651
|
-
raise InstallationError(
|
|
652
|
-
f"binaries are not permitted for package {package.name!r} and "
|
|
653
|
-
f"there is no source distribution for it in {pylock_path_or_url!r}"
|
|
654
|
-
)
|
|
655
|
-
package_dist = package.sdist
|
|
656
638
|
version = package.version
|
|
657
639
|
if isinstance(package_dist, pylock.PackageWheel):
|
|
658
640
|
if not version:
|
|
@@ -669,9 +651,12 @@ def install_req_from_pylock_package(
|
|
|
669
651
|
ireq = InstallRequirement(
|
|
670
652
|
req=Requirement(f"{package.name}=={version}"),
|
|
671
653
|
comes_from=pylock_path_or_url,
|
|
672
|
-
locked_link=Link(requirement_url),
|
|
673
|
-
locked_version=version,
|
|
674
654
|
hash_options=_pylock_hashes_to_hash_options(package_dist.hashes),
|
|
675
655
|
user_supplied=user_supplied,
|
|
676
656
|
)
|
|
677
|
-
|
|
657
|
+
locked_link = Link(
|
|
658
|
+
requirement_url,
|
|
659
|
+
comes_from=pylock_path_or_url,
|
|
660
|
+
upload_time=package_dist.upload_time,
|
|
661
|
+
)
|
|
662
|
+
return ireq, locked_link
|
|
@@ -5,7 +5,6 @@ Requirements file parsing
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
7
|
import codecs
|
|
8
|
-
import locale
|
|
9
8
|
import logging
|
|
10
9
|
import optparse
|
|
11
10
|
import os
|
|
@@ -13,13 +12,12 @@ import re
|
|
|
13
12
|
import shlex
|
|
14
13
|
import sys
|
|
15
14
|
import urllib.parse
|
|
16
|
-
from collections.abc import Generator, Iterable
|
|
15
|
+
from collections.abc import Callable, Generator, Iterable
|
|
17
16
|
from dataclasses import dataclass
|
|
18
17
|
from optparse import Values
|
|
19
18
|
from typing import (
|
|
20
19
|
TYPE_CHECKING,
|
|
21
20
|
Any,
|
|
22
|
-
Callable,
|
|
23
21
|
NoReturn,
|
|
24
22
|
)
|
|
25
23
|
|
|
@@ -27,6 +25,7 @@ from pip._internal.cli import cmdoptions
|
|
|
27
25
|
from pip._internal.exceptions import InstallationError, RequirementsFileParseError
|
|
28
26
|
from pip._internal.models.release_control import ReleaseControl
|
|
29
27
|
from pip._internal.models.search_scope import SearchScope
|
|
28
|
+
from pip._internal.utils.compat import get_locale_encoding
|
|
30
29
|
|
|
31
30
|
if TYPE_CHECKING:
|
|
32
31
|
from pip._internal.index.package_finder import PackageFinder
|
|
@@ -59,6 +58,7 @@ SUPPORTED_OPTIONS: list[Callable[..., optparse.Option]] = [
|
|
|
59
58
|
cmdoptions.only_binary,
|
|
60
59
|
cmdoptions.prefer_binary,
|
|
61
60
|
cmdoptions.require_hashes,
|
|
61
|
+
cmdoptions.no_require_hashes,
|
|
62
62
|
cmdoptions.pre,
|
|
63
63
|
cmdoptions.all_releases,
|
|
64
64
|
cmdoptions.only_final,
|
|
@@ -225,6 +225,8 @@ def handle_option_line(
|
|
|
225
225
|
# percolate options upward
|
|
226
226
|
if opts.require_hashes:
|
|
227
227
|
options.require_hashes = opts.require_hashes
|
|
228
|
+
if opts.no_require_hashes:
|
|
229
|
+
options.no_require_hashes = opts.no_require_hashes
|
|
228
230
|
if opts.features_enabled:
|
|
229
231
|
options.features_enabled.extend(
|
|
230
232
|
f for f in opts.features_enabled if f not in options.features_enabled
|
|
@@ -519,8 +521,6 @@ def join_lines(lines_enum: ReqFileLines) -> ReqFileLines:
|
|
|
519
521
|
assert primary_line_number is not None
|
|
520
522
|
yield primary_line_number, "".join(new_line)
|
|
521
523
|
|
|
522
|
-
# TODO: handle space after '\'.
|
|
523
|
-
|
|
524
524
|
|
|
525
525
|
def ignore_comments(lines_enum: ReqFileLines) -> ReqFileLines:
|
|
526
526
|
"""
|
|
@@ -608,7 +608,7 @@ def _decode_req_file(data: bytes, url: str) -> str:
|
|
|
608
608
|
try:
|
|
609
609
|
return data.decode(DEFAULT_ENCODING)
|
|
610
610
|
except UnicodeDecodeError:
|
|
611
|
-
locale_encoding =
|
|
611
|
+
locale_encoding = get_locale_encoding() or sys.getdefaultencoding()
|
|
612
612
|
logging.warning(
|
|
613
613
|
"unable to decode data from %s with default encoding %s, "
|
|
614
614
|
"falling back to encoding from locale: %s. "
|
|
@@ -34,7 +34,6 @@ from pip._internal.models.direct_url import DirectUrl
|
|
|
34
34
|
from pip._internal.models.link import Link
|
|
35
35
|
from pip._internal.operations.build.metadata import generate_metadata
|
|
36
36
|
from pip._internal.operations.build.metadata_editable import generate_editable_metadata
|
|
37
|
-
from pip._internal.operations.install.wheel import install_wheel
|
|
38
37
|
from pip._internal.pyproject import load_pyproject_toml, make_pyproject_path
|
|
39
38
|
from pip._internal.req.req_uninstall import UninstallPathSet
|
|
40
39
|
from pip._internal.utils.deprecation import deprecated
|
|
@@ -80,16 +79,12 @@ class InstallRequirement:
|
|
|
80
79
|
constraint: bool = False,
|
|
81
80
|
extras: Collection[str] = (),
|
|
82
81
|
user_supplied: bool = False,
|
|
83
|
-
permit_editable_wheels: bool = False,
|
|
84
|
-
locked_link: Link | None = None,
|
|
85
|
-
locked_version: Version | None = None,
|
|
86
82
|
) -> None:
|
|
87
83
|
assert req is None or isinstance(req, Requirement), req
|
|
88
84
|
self.req = req
|
|
89
85
|
self.comes_from = comes_from
|
|
90
86
|
self.constraint = constraint
|
|
91
87
|
self.editable = editable
|
|
92
|
-
self.permit_editable_wheels = permit_editable_wheels
|
|
93
88
|
|
|
94
89
|
# source_dir is the local directory where the linked requirement is
|
|
95
90
|
# located, or unpacked. In case unpacking is needed, creating and
|
|
@@ -109,14 +104,6 @@ class InstallRequirement:
|
|
|
109
104
|
link = Link(req.url)
|
|
110
105
|
self.link = self.original_link = link
|
|
111
106
|
|
|
112
|
-
# locked_link is the link from the lock file that must be used.
|
|
113
|
-
# A locked link InstallRequirement behaves similarly as a regular requirement
|
|
114
|
-
# that would be searched in indexes, except its artifact URL is known
|
|
115
|
-
# in advance. Notably, and contrarily to direct URL requirements and direct URL
|
|
116
|
-
# constraints, they do not cause the recording of direct_url.json.
|
|
117
|
-
self.locked_link = locked_link
|
|
118
|
-
self.locked_version = locked_version
|
|
119
|
-
|
|
120
107
|
# When this InstallRequirement is a wheel obtained from the cache of locally
|
|
121
108
|
# built wheels, this is the source link corresponding to the cache entry, which
|
|
122
109
|
# was used to download and build the cached wheel.
|
|
@@ -180,6 +167,8 @@ class InstallRequirement:
|
|
|
180
167
|
self.requirements_to_check: list[str] = []
|
|
181
168
|
|
|
182
169
|
# The PEP 517 backend we should use to build the project
|
|
170
|
+
self._pep517_backend_spec: str
|
|
171
|
+
self._pep517_backend_path: str | None
|
|
183
172
|
self.pep517_backend: BuildBackendHookCaller | None = None
|
|
184
173
|
|
|
185
174
|
# This requirement needs more preparation before it can be built
|
|
@@ -496,11 +485,21 @@ class InstallRequirement:
|
|
|
496
485
|
requires, backend, check, backend_path = pyproject_toml_data
|
|
497
486
|
self.requirements_to_check = check
|
|
498
487
|
self.pyproject_requires = requires
|
|
488
|
+
self._pep517_backend_spec = backend
|
|
489
|
+
self._pep517_backend_path = backend_path
|
|
490
|
+
|
|
491
|
+
def configure_backend(self, python_executable: str) -> None:
|
|
492
|
+
"""Set up the build backend hook caller.
|
|
493
|
+
|
|
494
|
+
This is done separately after pyproject.toml loading as the backend
|
|
495
|
+
need to be called with the build environment's Python executable,
|
|
496
|
+
which can vary."""
|
|
499
497
|
self.pep517_backend = ConfiguredBuildBackendHookCaller(
|
|
500
498
|
self,
|
|
501
499
|
self.unpacked_source_directory,
|
|
502
|
-
|
|
503
|
-
backend_path=
|
|
500
|
+
self._pep517_backend_spec,
|
|
501
|
+
backend_path=self._pep517_backend_path,
|
|
502
|
+
python_executable=python_executable,
|
|
504
503
|
)
|
|
505
504
|
|
|
506
505
|
def editable_sanity_check(self) -> None:
|
|
@@ -516,7 +515,7 @@ class InstallRequirement:
|
|
|
516
515
|
f"Consider using a build backend that supports PEP 660."
|
|
517
516
|
)
|
|
518
517
|
|
|
519
|
-
def prepare_metadata(self) -> None:
|
|
518
|
+
def prepare_metadata(self, allow_editables: bool) -> None:
|
|
520
519
|
"""Ensure that project metadata is available.
|
|
521
520
|
|
|
522
521
|
Under PEP 517 and PEP 660, call the backend hook to prepare the metadata.
|
|
@@ -526,11 +525,7 @@ class InstallRequirement:
|
|
|
526
525
|
details = self.name or f"from {self.link}"
|
|
527
526
|
|
|
528
527
|
assert self.pep517_backend is not None
|
|
529
|
-
if
|
|
530
|
-
self.editable
|
|
531
|
-
and self.permit_editable_wheels
|
|
532
|
-
and self.supports_pyproject_editable
|
|
533
|
-
):
|
|
528
|
+
if self.editable and allow_editables and self.supports_pyproject_editable:
|
|
534
529
|
self.metadata_directory = generate_editable_metadata(
|
|
535
530
|
build_env=self.build_env,
|
|
536
531
|
backend=self.pep517_backend,
|
|
@@ -774,7 +769,15 @@ class InstallRequirement:
|
|
|
774
769
|
warn_script_location: bool = True,
|
|
775
770
|
use_user_site: bool = False,
|
|
776
771
|
pycompile: bool = True,
|
|
772
|
+
script_executable: str | None = None,
|
|
777
773
|
) -> None:
|
|
774
|
+
# Lazy import to avoid transitively importing `_vendor.distlib.compat`
|
|
775
|
+
# which in turn imports `urllib.request` which is slow.
|
|
776
|
+
# During an actual installation, `urllib.request` will end up imported anyway,
|
|
777
|
+
# but `req.req_install` (this module) is also imported from commands that
|
|
778
|
+
# don't actually install anything (e.g. `pip freeze` or `pip show`).
|
|
779
|
+
from pip._internal.operations.install.wheel import install_wheel
|
|
780
|
+
|
|
778
781
|
assert self.req is not None
|
|
779
782
|
scheme = get_scheme(
|
|
780
783
|
self.req.name,
|
|
@@ -797,6 +800,7 @@ class InstallRequirement:
|
|
|
797
800
|
warn_script_location=warn_script_location,
|
|
798
801
|
direct_url=self.download_info if self.is_direct else None,
|
|
799
802
|
requested=self.user_supplied,
|
|
803
|
+
script_executable=script_executable,
|
|
800
804
|
)
|
|
801
805
|
self.install_succeeded = True
|
|
802
806
|
|
|
@@ -4,9 +4,9 @@ import functools
|
|
|
4
4
|
import os
|
|
5
5
|
import sys
|
|
6
6
|
import sysconfig
|
|
7
|
-
from collections.abc import Generator, Iterable
|
|
7
|
+
from collections.abc import Callable, Generator, Iterable
|
|
8
8
|
from importlib.util import cache_from_source
|
|
9
|
-
from typing import Any
|
|
9
|
+
from typing import Any
|
|
10
10
|
|
|
11
11
|
from pip._internal.exceptions import LegacyDistutilsInstall, UninstallMissingRecord
|
|
12
12
|
from pip._internal.locations import get_bin_prefix, get_bin_user
|
|
@@ -96,14 +96,19 @@ def compact(paths: Iterable[str]) -> set[str]:
|
|
|
96
96
|
|
|
97
97
|
sep = os.path.sep
|
|
98
98
|
short_paths: set[str] = set()
|
|
99
|
+
prefixes: set[str] = set()
|
|
100
|
+
|
|
99
101
|
for path in sorted(paths, key=len):
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
current = path[:-1] if path.endswith(sep + "*") else path
|
|
103
|
+
parent = current.rstrip(sep)
|
|
104
|
+
while parent:
|
|
105
|
+
if parent in prefixes:
|
|
106
|
+
break
|
|
107
|
+
next_parent = os.path.dirname(parent).rstrip(sep)
|
|
108
|
+
parent = "" if next_parent == parent else next_parent
|
|
109
|
+
else:
|
|
106
110
|
short_paths.add(path)
|
|
111
|
+
prefixes.add(current.rstrip(sep))
|
|
107
112
|
return short_paths
|
|
108
113
|
|
|
109
114
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
from
|
|
1
|
+
from collections.abc import Callable
|
|
2
2
|
|
|
3
3
|
from pip._internal.req.req_install import InstallRequirement
|
|
4
4
|
from pip._internal.req.req_set import RequirementSet
|
|
5
5
|
|
|
6
6
|
InstallRequirementProvider = Callable[
|
|
7
|
-
[str,
|
|
7
|
+
[str, InstallRequirement | None], InstallRequirement
|
|
8
8
|
]
|
|
9
9
|
|
|
10
10
|
|
|
@@ -17,7 +17,6 @@ import sys
|
|
|
17
17
|
from collections import defaultdict
|
|
18
18
|
from collections.abc import Iterable
|
|
19
19
|
from itertools import chain
|
|
20
|
-
from typing import Optional
|
|
21
20
|
|
|
22
21
|
from pip._vendor.packaging import specifiers
|
|
23
22
|
from pip._vendor.packaging.requirements import Requirement
|
|
@@ -52,7 +51,7 @@ from pip._internal.utils.packaging import check_requires_python
|
|
|
52
51
|
|
|
53
52
|
logger = logging.getLogger(__name__)
|
|
54
53
|
|
|
55
|
-
DiscoveredDependencies = defaultdict[
|
|
54
|
+
DiscoveredDependencies = defaultdict[str | None, list[InstallRequirement]]
|
|
56
55
|
|
|
57
56
|
|
|
58
57
|
def _check_dist_requires_python(
|
|
@@ -124,6 +123,7 @@ class Resolver(BaseResolver):
|
|
|
124
123
|
make_install_req: InstallRequirementProvider,
|
|
125
124
|
use_user_site: bool,
|
|
126
125
|
ignore_dependencies: bool,
|
|
126
|
+
only_dependencies: bool, # unused, for compatibility with new resolver
|
|
127
127
|
ignore_installed: bool,
|
|
128
128
|
ignore_requires_python: bool,
|
|
129
129
|
force_reinstall: bool,
|
|
@@ -12,7 +12,7 @@ from pip._internal.models.link import Link, links_equivalent
|
|
|
12
12
|
from pip._internal.req.req_install import InstallRequirement
|
|
13
13
|
from pip._internal.utils.hashes import Hashes
|
|
14
14
|
|
|
15
|
-
CandidateLookup = tuple[Optional["Candidate"],
|
|
15
|
+
CandidateLookup = tuple[Optional["Candidate"], InstallRequirement | None]
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
def format_name(project: NormalizedName, extras: frozenset[NormalizedName]) -> str:
|
|
@@ -101,7 +101,6 @@ def make_install_req_from_editable(
|
|
|
101
101
|
comes_from=template.comes_from,
|
|
102
102
|
isolated=template.isolated,
|
|
103
103
|
constraint=template.constraint,
|
|
104
|
-
permit_editable_wheels=template.permit_editable_wheels,
|
|
105
104
|
hash_options=template.hash_options,
|
|
106
105
|
config_settings=template.config_settings,
|
|
107
106
|
)
|
|
@@ -4,10 +4,9 @@ import contextlib
|
|
|
4
4
|
import copy
|
|
5
5
|
import functools
|
|
6
6
|
import logging
|
|
7
|
-
from collections.abc import Iterable, Iterator, Mapping, Sequence
|
|
7
|
+
from collections.abc import Callable, Iterable, Iterator, Mapping, Sequence
|
|
8
8
|
from typing import (
|
|
9
9
|
TYPE_CHECKING,
|
|
10
|
-
Callable,
|
|
11
10
|
NamedTuple,
|
|
12
11
|
Protocol,
|
|
13
12
|
TypeVar,
|
|
@@ -19,6 +18,7 @@ from pip._vendor.packaging.specifiers import SpecifierSet
|
|
|
19
18
|
from pip._vendor.packaging.utils import NormalizedName, canonicalize_name
|
|
20
19
|
from pip._vendor.packaging.version import InvalidVersion, Version
|
|
21
20
|
from pip._vendor.resolvelib import ResolutionImpossible
|
|
21
|
+
from pip._vendor.rich.markup import escape
|
|
22
22
|
|
|
23
23
|
from pip._internal.cache import CacheEntry, WheelCache
|
|
24
24
|
from pip._internal.exceptions import (
|
|
@@ -32,7 +32,6 @@ from pip._internal.exceptions import (
|
|
|
32
32
|
)
|
|
33
33
|
from pip._internal.index.package_finder import PackageFinder
|
|
34
34
|
from pip._internal.metadata import BaseDistribution, get_default_environment
|
|
35
|
-
from pip._internal.models.candidate import InstallationCandidate
|
|
36
35
|
from pip._internal.models.link import Link
|
|
37
36
|
from pip._internal.models.wheel import Wheel
|
|
38
37
|
from pip._internal.operations.prepare import RequirementPreparer
|
|
@@ -214,8 +213,8 @@ class Factory:
|
|
|
214
213
|
except (MetadataInconsistent, MetadataInvalid) as e:
|
|
215
214
|
logger.info(
|
|
216
215
|
"Discarding [blue underline]%s[/]: [yellow]%s[reset]",
|
|
217
|
-
link,
|
|
218
|
-
e,
|
|
216
|
+
escape(str(link)),
|
|
217
|
+
escape(str(e)),
|
|
219
218
|
extra={"markup": True},
|
|
220
219
|
)
|
|
221
220
|
self._build_failures[link] = e
|
|
@@ -235,39 +234,14 @@ class Factory:
|
|
|
235
234
|
except MetadataInconsistent as e:
|
|
236
235
|
logger.info(
|
|
237
236
|
"Discarding [blue underline]%s[/]: [yellow]%s[reset]",
|
|
238
|
-
link,
|
|
239
|
-
e,
|
|
237
|
+
escape(str(link)),
|
|
238
|
+
escape(str(e)),
|
|
240
239
|
extra={"markup": True},
|
|
241
240
|
)
|
|
242
241
|
self._build_failures[link] = e
|
|
243
242
|
return None
|
|
244
243
|
return self._link_candidate_cache[link]
|
|
245
244
|
|
|
246
|
-
def _get_locked_installation_candidate(
|
|
247
|
-
self, ireqs: Sequence[InstallRequirement], name: str, specifier: SpecifierSet
|
|
248
|
-
) -> InstallationCandidate | None:
|
|
249
|
-
locked_ireqs = [ireq for ireq in ireqs if ireq.locked_link]
|
|
250
|
-
if not locked_ireqs:
|
|
251
|
-
return None
|
|
252
|
-
if len(locked_ireqs) > 1:
|
|
253
|
-
raise InstallationError(
|
|
254
|
-
f"Multiple locks provided for package {name!r} in "
|
|
255
|
-
f"{', '.join(str(lir.comes_from) for lir in locked_ireqs)}"
|
|
256
|
-
)
|
|
257
|
-
locked_ireq = locked_ireqs[0]
|
|
258
|
-
assert locked_ireq.locked_link
|
|
259
|
-
assert locked_ireq.locked_version
|
|
260
|
-
if not specifier.contains(locked_ireq.locked_version):
|
|
261
|
-
raise InstallationError(
|
|
262
|
-
f"Locked version {locked_ireq.locked_version!s} "
|
|
263
|
-
f"for package {name!r} from {locked_ireq.comes_from!r} "
|
|
264
|
-
f"is not compatible with other requirements "
|
|
265
|
-
f"for the same package ({specifier!s})"
|
|
266
|
-
)
|
|
267
|
-
return InstallationCandidate(
|
|
268
|
-
name, str(locked_ireq.locked_version), locked_ireq.locked_link
|
|
269
|
-
)
|
|
270
|
-
|
|
271
245
|
def _iter_found_candidates(
|
|
272
246
|
self,
|
|
273
247
|
ireqs: Sequence[InstallRequirement],
|
|
@@ -335,20 +309,12 @@ class Factory:
|
|
|
335
309
|
return candidate
|
|
336
310
|
|
|
337
311
|
def iter_index_candidate_infos() -> Iterator[IndexCandidateInfo]:
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
icans = [locked_ican]
|
|
345
|
-
else:
|
|
346
|
-
result = self._finder.find_best_candidate(
|
|
347
|
-
project_name=name,
|
|
348
|
-
specifier=specifier,
|
|
349
|
-
hashes=hashes,
|
|
350
|
-
)
|
|
351
|
-
icans = result.applicable_candidates
|
|
312
|
+
result = self._finder.find_best_candidate(
|
|
313
|
+
project_name=name,
|
|
314
|
+
specifier=specifier,
|
|
315
|
+
hashes=hashes,
|
|
316
|
+
)
|
|
317
|
+
icans = result.applicable_candidates
|
|
352
318
|
|
|
353
319
|
# PEP 592: Yanked releases are ignored unless the specifier
|
|
354
320
|
# explicitly pins a version (via '==' or '===') that can be
|
|
@@ -757,6 +723,7 @@ class Factory:
|
|
|
757
723
|
|
|
758
724
|
# Check if only final releases are allowed for this package
|
|
759
725
|
version_type = "version"
|
|
726
|
+
allows_pre = None
|
|
760
727
|
if self._finder.release_control is not None:
|
|
761
728
|
allows_pre = self._finder.release_control.allows_prereleases(
|
|
762
729
|
canonicalize_name(req.project_name)
|
|
@@ -764,12 +731,32 @@ class Factory:
|
|
|
764
731
|
if allows_pre is False:
|
|
765
732
|
version_type = "final version"
|
|
766
733
|
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
734
|
+
if len(cands) == 1 and cands[0].locked:
|
|
735
|
+
# The package finder ensures that requirements from pylock files
|
|
736
|
+
# have exactly one candidate. So we can provide a specific error
|
|
737
|
+
# message in this case.
|
|
738
|
+
if cands[0].version.is_prerelease and allows_pre is False:
|
|
739
|
+
logger.critical(
|
|
740
|
+
"A pre-release version %s is specified in a provided lock file "
|
|
741
|
+
"for %s but only final versions are allowed",
|
|
742
|
+
cands[0].version,
|
|
743
|
+
cands[0].name,
|
|
744
|
+
)
|
|
745
|
+
else:
|
|
746
|
+
logger.critical(
|
|
747
|
+
"The requirement %s is not compatible with "
|
|
748
|
+
"version %s specified in a provided lock file",
|
|
749
|
+
req_disp,
|
|
750
|
+
", ".join(versions),
|
|
751
|
+
)
|
|
752
|
+
else:
|
|
753
|
+
logger.critical(
|
|
754
|
+
"Could not find a %s that satisfies the requirement %s "
|
|
755
|
+
"(from versions: %s)",
|
|
756
|
+
version_type,
|
|
757
|
+
req_disp,
|
|
758
|
+
", ".join(versions) or "none",
|
|
759
|
+
)
|
|
773
760
|
if str(req) == "requirements.txt":
|
|
774
761
|
logger.info(
|
|
775
762
|
"HINT: You are attempting to install a package literally "
|