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
|
@@ -73,8 +73,9 @@ def main(args: list[str] | None = None) -> int:
|
|
|
73
73
|
sys.stderr.write(os.linesep)
|
|
74
74
|
sys.exit(1)
|
|
75
75
|
|
|
76
|
-
# Needed for locale
|
|
76
|
+
# Needed for locale encoding detection to work
|
|
77
77
|
# in pip._internal.utils.encoding.auto_decode
|
|
78
|
+
# TODO: Re-evaluate whether this is still needed once pip drops Python 3.10.
|
|
78
79
|
try:
|
|
79
80
|
locale.setlocale(locale.LC_ALL, "")
|
|
80
81
|
except locale.Error as e:
|
|
@@ -8,12 +8,11 @@ import sys
|
|
|
8
8
|
|
|
9
9
|
from pip._vendor.rich.markup import escape
|
|
10
10
|
|
|
11
|
-
from pip._internal.build_env import get_runnable_pip
|
|
12
11
|
from pip._internal.cli import cmdoptions
|
|
13
12
|
from pip._internal.cli.parser import ConfigOptionParser, UpdatingDefaultsHelpFormatter
|
|
14
13
|
from pip._internal.commands import commands_dict, get_similar_commands
|
|
15
14
|
from pip._internal.exceptions import CommandError
|
|
16
|
-
from pip._internal.utils.misc import get_pip_version, get_prog
|
|
15
|
+
from pip._internal.utils.misc import get_pip_version, get_prog, get_runnable_pip
|
|
17
16
|
|
|
18
17
|
__all__ = ["create_main_parser", "parse_command"]
|
|
19
18
|
|
|
@@ -344,7 +344,7 @@ class ConfigOptionParser(CustomOptionParser):
|
|
|
344
344
|
self.print_usage(sys.stderr)
|
|
345
345
|
self.exit(UNKNOWN_ERROR, f"{msg}\n")
|
|
346
346
|
|
|
347
|
-
def
|
|
347
|
+
def _create_console_for_help(self, file: Any = None) -> PipConsole:
|
|
348
348
|
# This is unfortunate but necessary since arguments may have not been
|
|
349
349
|
# parsed yet at this point, so detect --no-color manually.
|
|
350
350
|
no_color = (
|
|
@@ -352,7 +352,15 @@ class ConfigOptionParser(CustomOptionParser):
|
|
|
352
352
|
or bool(strtobool(os.environ.get("PIP_NO_COLOR", "no") or "no"))
|
|
353
353
|
or "NO_COLOR" in os.environ
|
|
354
354
|
)
|
|
355
|
-
|
|
355
|
+
return PipConsole(
|
|
356
356
|
theme=Theme(PrettyHelpFormatter.styles), no_color=no_color, file=file
|
|
357
357
|
)
|
|
358
|
+
|
|
359
|
+
def print_usage(self, file: Any = None) -> None:
|
|
360
|
+
if self.usage:
|
|
361
|
+
console = self._create_console_for_help(file)
|
|
362
|
+
console.print(self.get_usage(), highlight=False)
|
|
363
|
+
|
|
364
|
+
def print_help(self, file: Any = None) -> None:
|
|
365
|
+
console = self._create_console_for_help(file)
|
|
358
366
|
console.print(self.format_help().rstrip(), highlight=False)
|
|
@@ -2,8 +2,8 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import functools
|
|
4
4
|
import sys
|
|
5
|
-
from collections.abc import Generator, Iterable, Iterator
|
|
6
|
-
from typing import TYPE_CHECKING,
|
|
5
|
+
from collections.abc import Callable, Generator, Iterable, Iterator
|
|
6
|
+
from typing import TYPE_CHECKING, Literal, TypeVar
|
|
7
7
|
|
|
8
8
|
from pip._vendor.rich.progress import (
|
|
9
9
|
BarColumn,
|
|
@@ -9,12 +9,14 @@ from __future__ import annotations
|
|
|
9
9
|
|
|
10
10
|
import logging
|
|
11
11
|
import os
|
|
12
|
+
from collections.abc import Callable
|
|
12
13
|
from functools import partial
|
|
13
14
|
from optparse import Values
|
|
14
|
-
from typing import Any,
|
|
15
|
+
from typing import Any, TypeVar
|
|
15
16
|
|
|
16
17
|
from pip._internal.build_env import (
|
|
17
18
|
BuildEnvironmentInstaller,
|
|
19
|
+
BuildIsolationMode,
|
|
18
20
|
InprocessBuildEnvironmentInstaller,
|
|
19
21
|
SubprocessBuildEnvironmentInstaller,
|
|
20
22
|
)
|
|
@@ -61,11 +63,14 @@ from pip._internal.utils.temp_dir import (
|
|
|
61
63
|
logger = logging.getLogger(__name__)
|
|
62
64
|
|
|
63
65
|
|
|
64
|
-
def should_ignore_regular_constraints(
|
|
66
|
+
def should_ignore_regular_constraints() -> bool:
|
|
65
67
|
"""
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
Whether this process should ignore the regular constraints it inherits.
|
|
69
|
+
|
|
70
|
+
The parent pip sets ``_PIP_IN_BUILD_IGNORE_CONSTRAINTS`` whenever it starts
|
|
71
|
+
an isolated build in a subprocess, so that regular constraints the build
|
|
72
|
+
inherits (such as via ``PIP_CONSTRAINT`` or config files) do not affect it.
|
|
73
|
+
Only build constraints apply there.
|
|
69
74
|
"""
|
|
70
75
|
|
|
71
76
|
return os.environ.get("_PIP_IN_BUILD_IGNORE_CONSTRAINTS") == "1"
|
|
@@ -157,6 +162,8 @@ class RequirementCommand(IndexGroupCommand):
|
|
|
157
162
|
build_tracker: BuildTracker,
|
|
158
163
|
session: PipSession,
|
|
159
164
|
finder: PackageFinder,
|
|
165
|
+
*,
|
|
166
|
+
allow_editables: bool,
|
|
160
167
|
use_user_site: bool,
|
|
161
168
|
download_dir: str | None = None,
|
|
162
169
|
verbosity: int = 0,
|
|
@@ -189,9 +196,6 @@ class RequirementCommand(IndexGroupCommand):
|
|
|
189
196
|
|
|
190
197
|
# Handle build constraints
|
|
191
198
|
build_constraints = getattr(options, "build_constraints", [])
|
|
192
|
-
build_constraint_feature_enabled = (
|
|
193
|
-
"build-constraint" in options.features_enabled
|
|
194
|
-
)
|
|
195
199
|
|
|
196
200
|
env_installer: BuildEnvironmentInstaller
|
|
197
201
|
if "inprocess-build-deps" in options.features_enabled:
|
|
@@ -209,14 +213,26 @@ class RequirementCommand(IndexGroupCommand):
|
|
|
209
213
|
env_installer = SubprocessBuildEnvironmentInstaller(
|
|
210
214
|
finder,
|
|
211
215
|
build_constraints=build_constraints,
|
|
212
|
-
build_constraint_feature_enabled=build_constraint_feature_enabled,
|
|
213
216
|
)
|
|
214
217
|
|
|
218
|
+
if not options.build_isolation:
|
|
219
|
+
build_isolation: BuildIsolationMode = "off"
|
|
220
|
+
elif "venv-isolation" in options.features_enabled:
|
|
221
|
+
build_isolation = "venv"
|
|
222
|
+
if "inprocess-build-deps" in options.features_enabled:
|
|
223
|
+
logger.warning(
|
|
224
|
+
"Using --use-feature 'inprocess-build-deps' and 'venv-isolation'"
|
|
225
|
+
" together is currently partially supported. If you encounter"
|
|
226
|
+
" broken behaviour, use only one feature."
|
|
227
|
+
)
|
|
228
|
+
else:
|
|
229
|
+
build_isolation = "virtual"
|
|
230
|
+
|
|
215
231
|
return RequirementPreparer(
|
|
216
232
|
build_dir=temp_build_dir_path,
|
|
217
233
|
src_dir=options.src_dir,
|
|
218
234
|
download_dir=download_dir,
|
|
219
|
-
build_isolation=
|
|
235
|
+
build_isolation=build_isolation,
|
|
220
236
|
build_isolation_installer=env_installer,
|
|
221
237
|
check_build_deps=options.check_build_deps,
|
|
222
238
|
build_tracker=build_tracker,
|
|
@@ -228,6 +244,7 @@ class RequirementCommand(IndexGroupCommand):
|
|
|
228
244
|
lazy_wheel=lazy_wheel,
|
|
229
245
|
verbosity=verbosity,
|
|
230
246
|
legacy_resolver=legacy_resolver,
|
|
247
|
+
allow_editables=allow_editables,
|
|
231
248
|
)
|
|
232
249
|
|
|
233
250
|
@classmethod
|
|
@@ -265,6 +282,7 @@ class RequirementCommand(IndexGroupCommand):
|
|
|
265
282
|
make_install_req=make_install_req,
|
|
266
283
|
use_user_site=use_user_site,
|
|
267
284
|
ignore_dependencies=options.ignore_dependencies,
|
|
285
|
+
only_dependencies=options.only_dependencies,
|
|
268
286
|
ignore_installed=ignore_installed,
|
|
269
287
|
ignore_requires_python=ignore_requires_python,
|
|
270
288
|
force_reinstall=force_reinstall,
|
|
@@ -280,6 +298,7 @@ class RequirementCommand(IndexGroupCommand):
|
|
|
280
298
|
make_install_req=make_install_req,
|
|
281
299
|
use_user_site=use_user_site,
|
|
282
300
|
ignore_dependencies=options.ignore_dependencies,
|
|
301
|
+
only_dependencies=options.only_dependencies,
|
|
283
302
|
ignore_installed=ignore_installed,
|
|
284
303
|
ignore_requires_python=ignore_requires_python,
|
|
285
304
|
force_reinstall=force_reinstall,
|
|
@@ -299,11 +318,15 @@ class RequirementCommand(IndexGroupCommand):
|
|
|
299
318
|
"""
|
|
300
319
|
requirements: list[InstallRequirement] = []
|
|
301
320
|
|
|
302
|
-
if
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
)
|
|
306
|
-
|
|
321
|
+
if should_ignore_regular_constraints():
|
|
322
|
+
# Inside an isolated build subprocess: apply the build constraints
|
|
323
|
+
# (forwarded via --build-constraint) instead of the inherited ones.
|
|
324
|
+
constraint_files = getattr(options, "build_constraints", [])
|
|
325
|
+
else:
|
|
326
|
+
constraint_files = options.constraints
|
|
327
|
+
|
|
328
|
+
constraints = parse_constraint_files(constraint_files, finder, options, session)
|
|
329
|
+
requirements.extend(constraints)
|
|
307
330
|
|
|
308
331
|
for req in args:
|
|
309
332
|
if not req.strip():
|
|
@@ -347,15 +370,15 @@ class RequirementCommand(IndexGroupCommand):
|
|
|
347
370
|
for package, package_dist in select_from_pylock_path_or_url(
|
|
348
371
|
filename, session=session
|
|
349
372
|
):
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
options.format_control,
|
|
356
|
-
user_supplied=True,
|
|
357
|
-
)
|
|
373
|
+
req_to_add, locked_link = install_req_from_pylock_package(
|
|
374
|
+
package,
|
|
375
|
+
package_dist,
|
|
376
|
+
filename,
|
|
377
|
+
user_supplied=True,
|
|
358
378
|
)
|
|
379
|
+
requirements.append(req_to_add)
|
|
380
|
+
if locked_link:
|
|
381
|
+
finder.add_locked_link(package.name, locked_link)
|
|
359
382
|
continue
|
|
360
383
|
for parsed_req in parse_requirements(
|
|
361
384
|
filename, finder=finder, options=options, session=session
|
|
@@ -404,8 +427,17 @@ class RequirementCommand(IndexGroupCommand):
|
|
|
404
427
|
)
|
|
405
428
|
requirements.append(req_to_add)
|
|
406
429
|
|
|
407
|
-
|
|
408
|
-
|
|
430
|
+
if options.require_hashes and options.no_require_hashes:
|
|
431
|
+
raise CommandError(
|
|
432
|
+
"--require-hashes and --no-require-hashes are mutually exclusive"
|
|
433
|
+
)
|
|
434
|
+
|
|
435
|
+
# If any requirement has hash options, enable hash checking for all
|
|
436
|
+
# requirements, unless this mechanism has been explicitly disabled
|
|
437
|
+
# with --no-require-hashes.
|
|
438
|
+
if not options.no_require_hashes and any(
|
|
439
|
+
req.has_hash_options for req in requirements
|
|
440
|
+
):
|
|
409
441
|
options.require_hashes = True
|
|
410
442
|
|
|
411
443
|
if not (
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import textwrap
|
|
3
|
+
from collections.abc import Callable
|
|
3
4
|
from optparse import Values
|
|
4
|
-
from typing import Callable
|
|
5
5
|
|
|
6
6
|
from pip._internal.cli.base_command import Command
|
|
7
7
|
from pip._internal.cli.status_codes import ERROR, SUCCESS
|
|
@@ -107,8 +107,7 @@ class CacheCommand(Command):
|
|
|
107
107
|
wheels_cache_size = filesystem.format_directory_size(wheels_cache_location)
|
|
108
108
|
|
|
109
109
|
message = (
|
|
110
|
-
textwrap.dedent(
|
|
111
|
-
"""
|
|
110
|
+
textwrap.dedent("""
|
|
112
111
|
Package index page cache location (pip v23.3+): {http_cache_location}
|
|
113
112
|
Package index page cache location (older pips): {old_http_cache_location}
|
|
114
113
|
Package index page cache size: {http_cache_size}
|
|
@@ -116,8 +115,7 @@ class CacheCommand(Command):
|
|
|
116
115
|
Locally built wheels location: {wheels_cache_location}
|
|
117
116
|
Locally built wheels size: {wheels_cache_size}
|
|
118
117
|
Number of locally built wheels: {package_count}
|
|
119
|
-
""" # noqa: E501
|
|
120
|
-
)
|
|
118
|
+
""") # noqa: E501
|
|
121
119
|
.format(
|
|
122
120
|
http_cache_location=http_cache_location,
|
|
123
121
|
old_http_cache_location=old_http_cache_location,
|
|
@@ -191,10 +189,13 @@ class CacheCommand(Command):
|
|
|
191
189
|
logger.verbose("Removed %s", filename)
|
|
192
190
|
|
|
193
191
|
http_dirs = filesystem.subdirs_without_files(self._cache_dir(options, "http"))
|
|
192
|
+
http_v2_dirs = filesystem.subdirs_without_files(
|
|
193
|
+
self._cache_dir(options, "http-v2")
|
|
194
|
+
)
|
|
194
195
|
wheel_dirs = filesystem.subdirs_without_wheels(
|
|
195
196
|
self._cache_dir(options, "wheels")
|
|
196
197
|
)
|
|
197
|
-
dirs = [*http_dirs, *wheel_dirs]
|
|
198
|
+
dirs = [*http_dirs, *http_v2_dirs, *wheel_dirs]
|
|
198
199
|
|
|
199
200
|
for subdir in dirs:
|
|
200
201
|
try:
|
|
@@ -3,8 +3,9 @@ from __future__ import annotations
|
|
|
3
3
|
import logging
|
|
4
4
|
import os
|
|
5
5
|
import subprocess
|
|
6
|
+
from collections.abc import Callable
|
|
6
7
|
from optparse import Values
|
|
7
|
-
from typing import Any
|
|
8
|
+
from typing import Any
|
|
8
9
|
|
|
9
10
|
from pip._internal.cli.base_command import Command
|
|
10
11
|
from pip._internal.cli.status_codes import ERROR, SUCCESS
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import locale
|
|
4
3
|
import logging
|
|
5
4
|
import os
|
|
6
5
|
import sys
|
|
@@ -18,7 +17,7 @@ from pip._internal.cli.cmdoptions import make_target_python
|
|
|
18
17
|
from pip._internal.cli.status_codes import SUCCESS
|
|
19
18
|
from pip._internal.configuration import Configuration
|
|
20
19
|
from pip._internal.metadata import get_environment
|
|
21
|
-
from pip._internal.utils.compat import open_text_resource
|
|
20
|
+
from pip._internal.utils.compat import get_locale_encoding, open_text_resource
|
|
22
21
|
from pip._internal.utils.logging import indent_log
|
|
23
22
|
from pip._internal.utils.misc import get_pip_version
|
|
24
23
|
|
|
@@ -134,7 +133,7 @@ def show_tags(options: Values) -> None:
|
|
|
134
133
|
|
|
135
134
|
|
|
136
135
|
def ca_bundle_info(config: Configuration) -> str:
|
|
137
|
-
levels = {key.split(".", 1)[0] for
|
|
136
|
+
levels = {key.split(".", 1)[0] for _, options in config.items() for key in options}
|
|
138
137
|
if not levels:
|
|
139
138
|
return "Not specified"
|
|
140
139
|
|
|
@@ -177,8 +176,8 @@ class DebugCommand(Command):
|
|
|
177
176
|
show_value("sys.getdefaultencoding", sys.getdefaultencoding())
|
|
178
177
|
show_value("sys.getfilesystemencoding", sys.getfilesystemencoding())
|
|
179
178
|
show_value(
|
|
180
|
-
"locale.
|
|
181
|
-
|
|
179
|
+
"locale.getencoding",
|
|
180
|
+
get_locale_encoding(),
|
|
182
181
|
)
|
|
183
182
|
show_value("sys.platform", sys.platform)
|
|
184
183
|
show_sys_implementation()
|
|
@@ -39,8 +39,10 @@ class DownloadCommand(RequirementCommand):
|
|
|
39
39
|
self.cmd_opts.add_option(cmdoptions.requirements())
|
|
40
40
|
self.cmd_opts.add_option(cmdoptions.requirements_from_scripts())
|
|
41
41
|
self.cmd_opts.add_option(cmdoptions.no_deps())
|
|
42
|
+
self.cmd_opts.add_option(cmdoptions.only_deps())
|
|
42
43
|
self.cmd_opts.add_option(cmdoptions.src())
|
|
43
44
|
self.cmd_opts.add_option(cmdoptions.require_hashes())
|
|
45
|
+
self.cmd_opts.add_option(cmdoptions.no_require_hashes())
|
|
44
46
|
self.cmd_opts.add_option(cmdoptions.progress_bar())
|
|
45
47
|
self.cmd_opts.add_option(cmdoptions.no_build_isolation())
|
|
46
48
|
self.cmd_opts.add_option(cmdoptions.use_pep517())
|
|
@@ -84,6 +86,7 @@ class DownloadCommand(RequirementCommand):
|
|
|
84
86
|
cmdoptions.check_dist_restriction(options)
|
|
85
87
|
cmdoptions.check_build_constraints(options)
|
|
86
88
|
cmdoptions.check_release_control_exclusive(options)
|
|
89
|
+
cmdoptions.check_only_deps_option_does_not_conflict(options)
|
|
87
90
|
|
|
88
91
|
options.download_dir = normalize_path(options.download_dir)
|
|
89
92
|
ensure_dir(options.download_dir)
|
|
@@ -117,6 +120,7 @@ class DownloadCommand(RequirementCommand):
|
|
|
117
120
|
download_dir=options.download_dir,
|
|
118
121
|
use_user_site=False,
|
|
119
122
|
verbosity=self.verbosity,
|
|
123
|
+
allow_editables=False,
|
|
120
124
|
)
|
|
121
125
|
|
|
122
126
|
resolver = self.make_resolver(
|
|
@@ -4,8 +4,8 @@ from optparse import Values
|
|
|
4
4
|
from pip._internal.cli import cmdoptions
|
|
5
5
|
from pip._internal.cli.base_command import Command
|
|
6
6
|
from pip._internal.cli.status_codes import SUCCESS
|
|
7
|
+
from pip._internal.metadata.base import stdlib_pkgs
|
|
7
8
|
from pip._internal.operations.freeze import freeze
|
|
8
|
-
from pip._internal.utils.compat import stdlib_pkgs
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
def _should_suppress_build_backends() -> bool:
|
|
@@ -2,9 +2,9 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
4
|
import logging
|
|
5
|
-
from collections.abc import Iterable
|
|
5
|
+
from collections.abc import Callable, Iterable
|
|
6
6
|
from optparse import Values
|
|
7
|
-
from typing import Any
|
|
7
|
+
from typing import Any
|
|
8
8
|
|
|
9
9
|
from pip._vendor.packaging.utils import canonicalize_name
|
|
10
10
|
from pip._vendor.packaging.version import Version
|
|
@@ -16,7 +16,12 @@ from pip._internal.commands.search import (
|
|
|
16
16
|
get_installed_distribution,
|
|
17
17
|
print_dist_installation_info,
|
|
18
18
|
)
|
|
19
|
-
from pip._internal.exceptions import
|
|
19
|
+
from pip._internal.exceptions import (
|
|
20
|
+
CommandError,
|
|
21
|
+
DiagnosticPipError,
|
|
22
|
+
DistributionNotFound,
|
|
23
|
+
PipError,
|
|
24
|
+
)
|
|
20
25
|
from pip._internal.index.collector import LinkCollector
|
|
21
26
|
from pip._internal.index.package_finder import PackageFinder
|
|
22
27
|
from pip._internal.models.selection_prefs import SelectionPreferences
|
|
@@ -80,6 +85,8 @@ class IndexCommand(IndexGroupCommand):
|
|
|
80
85
|
# Error handling happens here, not in the action-handlers.
|
|
81
86
|
try:
|
|
82
87
|
handler_map[action](options, args[1:])
|
|
88
|
+
except DiagnosticPipError:
|
|
89
|
+
raise
|
|
83
90
|
except PipError as e:
|
|
84
91
|
logger.error(e.args[0])
|
|
85
92
|
return ERROR
|
|
@@ -10,7 +10,7 @@ from pip._internal.cli import cmdoptions
|
|
|
10
10
|
from pip._internal.cli.base_command import Command
|
|
11
11
|
from pip._internal.cli.status_codes import SUCCESS
|
|
12
12
|
from pip._internal.metadata import BaseDistribution, get_environment
|
|
13
|
-
from pip._internal.
|
|
13
|
+
from pip._internal.metadata.base import stdlib_pkgs
|
|
14
14
|
from pip._internal.utils.urls import path_to_url
|
|
15
15
|
|
|
16
16
|
logger = logging.getLogger(__name__)
|
|
@@ -76,6 +76,7 @@ _MISSING_MODULES: set[str] = set()
|
|
|
76
76
|
# after installation has started. Importing them eagerly keeps the audit
|
|
77
77
|
# hook from misattributing them to a freshly installed distribution.
|
|
78
78
|
_EAGER_IMPORTS: tuple[str, ...] = (
|
|
79
|
+
"pip._internal.operations.install.wheel",
|
|
79
80
|
# Used by rich when emitting output to a legacy Windows console.
|
|
80
81
|
"pip._vendor.rich._windows_renderer",
|
|
81
82
|
)
|
|
@@ -165,6 +166,7 @@ class InstallCommand(RequirementCommand):
|
|
|
165
166
|
self.cmd_opts.add_option(cmdoptions.build_constraints())
|
|
166
167
|
self.cmd_opts.add_option(cmdoptions.requirements_from_scripts())
|
|
167
168
|
self.cmd_opts.add_option(cmdoptions.no_deps())
|
|
169
|
+
self.cmd_opts.add_option(cmdoptions.only_deps())
|
|
168
170
|
|
|
169
171
|
self.cmd_opts.add_option(cmdoptions.editable())
|
|
170
172
|
self.cmd_opts.add_option(
|
|
@@ -321,6 +323,7 @@ class InstallCommand(RequirementCommand):
|
|
|
321
323
|
help="Do not warn about broken dependencies",
|
|
322
324
|
)
|
|
323
325
|
self.cmd_opts.add_option(cmdoptions.require_hashes())
|
|
326
|
+
self.cmd_opts.add_option(cmdoptions.no_require_hashes())
|
|
324
327
|
self.cmd_opts.add_option(cmdoptions.progress_bar())
|
|
325
328
|
self.cmd_opts.add_option(cmdoptions.root_user_action())
|
|
326
329
|
|
|
@@ -391,6 +394,7 @@ class InstallCommand(RequirementCommand):
|
|
|
391
394
|
if options.upgrade:
|
|
392
395
|
upgrade_strategy = options.upgrade_strategy
|
|
393
396
|
|
|
397
|
+
cmdoptions.check_only_deps_option_does_not_conflict(options)
|
|
394
398
|
cmdoptions.check_build_constraints(options)
|
|
395
399
|
cmdoptions.check_dist_restriction(options, check_target=True)
|
|
396
400
|
cmdoptions.check_release_control_exclusive(options)
|
|
@@ -446,12 +450,6 @@ class InstallCommand(RequirementCommand):
|
|
|
446
450
|
|
|
447
451
|
wheel_cache = WheelCache(options.cache_dir)
|
|
448
452
|
|
|
449
|
-
# Only when installing is it permitted to use PEP 660.
|
|
450
|
-
# In other circumstances (pip wheel, pip download) we generate
|
|
451
|
-
# regular (i.e. non editable) metadata and wheels.
|
|
452
|
-
for req in reqs:
|
|
453
|
-
req.permit_editable_wheels = True
|
|
454
|
-
|
|
455
453
|
preparer = self.make_requirement_preparer(
|
|
456
454
|
temp_build_dir=directory,
|
|
457
455
|
options=options,
|
|
@@ -460,6 +458,7 @@ class InstallCommand(RequirementCommand):
|
|
|
460
458
|
finder=finder,
|
|
461
459
|
use_user_site=options.use_user_site,
|
|
462
460
|
verbosity=self.verbosity,
|
|
461
|
+
allow_editables=True,
|
|
463
462
|
)
|
|
464
463
|
resolver = self.make_resolver(
|
|
465
464
|
preparer=preparer,
|
|
@@ -525,6 +524,7 @@ class InstallCommand(RequirementCommand):
|
|
|
525
524
|
reqs_to_build,
|
|
526
525
|
wheel_cache=wheel_cache,
|
|
527
526
|
verify=True,
|
|
527
|
+
allow_editables=True,
|
|
528
528
|
)
|
|
529
529
|
|
|
530
530
|
if build_failures:
|
|
@@ -16,8 +16,8 @@ from pip._internal.cli.index_command import IndexGroupCommand
|
|
|
16
16
|
from pip._internal.cli.status_codes import SUCCESS
|
|
17
17
|
from pip._internal.exceptions import CommandError
|
|
18
18
|
from pip._internal.metadata import BaseDistribution, get_environment
|
|
19
|
+
from pip._internal.metadata.base import stdlib_pkgs
|
|
19
20
|
from pip._internal.models.selection_prefs import SelectionPreferences
|
|
20
|
-
from pip._internal.utils.compat import stdlib_pkgs
|
|
21
21
|
from pip._internal.utils.misc import tabulate, write_output
|
|
22
22
|
|
|
23
23
|
if TYPE_CHECKING:
|
|
@@ -160,11 +160,14 @@ class ListCommand(IndexGroupCommand):
|
|
|
160
160
|
selection_prefs = SelectionPreferences(
|
|
161
161
|
allow_yanked=False,
|
|
162
162
|
release_control=options.release_control,
|
|
163
|
+
format_control=options.format_control,
|
|
164
|
+
prefer_binary=options.prefer_binary,
|
|
163
165
|
)
|
|
164
166
|
|
|
165
167
|
return PackageFinder.create(
|
|
166
168
|
link_collector=link_collector,
|
|
167
169
|
selection_prefs=selection_prefs,
|
|
170
|
+
uploaded_prior_to=options.uploaded_prior_to,
|
|
168
171
|
)
|
|
169
172
|
|
|
170
173
|
def run(self, options: Values, args: list[str]) -> int:
|
|
@@ -180,10 +183,6 @@ class ListCommand(IndexGroupCommand):
|
|
|
180
183
|
|
|
181
184
|
cmdoptions.check_list_path_option(options)
|
|
182
185
|
|
|
183
|
-
skip = set(stdlib_pkgs)
|
|
184
|
-
if options.excludes:
|
|
185
|
-
skip.update(canonicalize_name(n) for n in options.excludes)
|
|
186
|
-
|
|
187
186
|
packages: _ProcessedDists = [
|
|
188
187
|
cast("_DistWithLatestInfo", d)
|
|
189
188
|
for d in get_environment(options.path).iter_installed_distributions(
|
|
@@ -191,7 +190,7 @@ class ListCommand(IndexGroupCommand):
|
|
|
191
190
|
user_only=options.user,
|
|
192
191
|
editables_only=options.editable,
|
|
193
192
|
include_editables=options.include_editable,
|
|
194
|
-
skip=
|
|
193
|
+
skip=set(stdlib_pkgs),
|
|
195
194
|
)
|
|
196
195
|
]
|
|
197
196
|
|
|
@@ -202,6 +201,12 @@ class ListCommand(IndexGroupCommand):
|
|
|
202
201
|
if options.not_required:
|
|
203
202
|
packages = self.get_not_required(packages, options)
|
|
204
203
|
|
|
204
|
+
if options.excludes:
|
|
205
|
+
excluded_names = {canonicalize_name(n) for n in options.excludes}
|
|
206
|
+
packages = [
|
|
207
|
+
dist for dist in packages if dist.canonical_name not in excluded_names
|
|
208
|
+
]
|
|
209
|
+
|
|
205
210
|
if options.outdated:
|
|
206
211
|
packages = self.get_outdated(packages, options)
|
|
207
212
|
elif options.uptodate:
|
|
@@ -62,6 +62,7 @@ class LockCommand(RequirementCommand):
|
|
|
62
62
|
self.cmd_opts.add_option(cmdoptions.constraints())
|
|
63
63
|
self.cmd_opts.add_option(cmdoptions.build_constraints())
|
|
64
64
|
self.cmd_opts.add_option(cmdoptions.no_deps())
|
|
65
|
+
self.cmd_opts.add_option(cmdoptions.only_deps())
|
|
65
66
|
|
|
66
67
|
self.cmd_opts.add_option(cmdoptions.editable())
|
|
67
68
|
|
|
@@ -75,6 +76,7 @@ class LockCommand(RequirementCommand):
|
|
|
75
76
|
self.cmd_opts.add_option(cmdoptions.config_settings())
|
|
76
77
|
|
|
77
78
|
self.cmd_opts.add_option(cmdoptions.require_hashes())
|
|
79
|
+
self.cmd_opts.add_option(cmdoptions.no_require_hashes())
|
|
78
80
|
self.cmd_opts.add_option(cmdoptions.progress_bar())
|
|
79
81
|
|
|
80
82
|
index_opts = cmdoptions.make_option_group(
|
|
@@ -103,6 +105,7 @@ class LockCommand(RequirementCommand):
|
|
|
103
105
|
|
|
104
106
|
cmdoptions.check_build_constraints(options)
|
|
105
107
|
cmdoptions.check_release_control_exclusive(options)
|
|
108
|
+
cmdoptions.check_only_deps_option_does_not_conflict(options)
|
|
106
109
|
|
|
107
110
|
session = self.get_default_session(options)
|
|
108
111
|
|
|
@@ -123,12 +126,6 @@ class LockCommand(RequirementCommand):
|
|
|
123
126
|
|
|
124
127
|
wheel_cache = WheelCache(options.cache_dir)
|
|
125
128
|
|
|
126
|
-
# Only when installing is it permitted to use PEP 660.
|
|
127
|
-
# In other circumstances (pip wheel, pip download) we generate
|
|
128
|
-
# regular (i.e. non editable) metadata and wheels.
|
|
129
|
-
for req in reqs:
|
|
130
|
-
req.permit_editable_wheels = True
|
|
131
|
-
|
|
132
129
|
preparer = self.make_requirement_preparer(
|
|
133
130
|
temp_build_dir=directory,
|
|
134
131
|
options=options,
|
|
@@ -137,6 +134,7 @@ class LockCommand(RequirementCommand):
|
|
|
137
134
|
finder=finder,
|
|
138
135
|
use_user_site=False,
|
|
139
136
|
verbosity=self.verbosity,
|
|
137
|
+
allow_editables=True,
|
|
140
138
|
)
|
|
141
139
|
resolver = self.make_resolver(
|
|
142
140
|
preparer=preparer,
|
|
@@ -53,7 +53,7 @@ class ShowCommand(Command):
|
|
|
53
53
|
return ERROR
|
|
54
54
|
query = args
|
|
55
55
|
|
|
56
|
-
results = search_packages_info(query)
|
|
56
|
+
results = search_packages_info(query, include_files=options.files)
|
|
57
57
|
if not print_results(
|
|
58
58
|
results, list_files=options.files, verbose=options.verbose
|
|
59
59
|
):
|
|
@@ -82,7 +82,10 @@ class _PackageInfo(NamedTuple):
|
|
|
82
82
|
files: list[str] | None
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
def search_packages_info(
|
|
85
|
+
def search_packages_info(
|
|
86
|
+
query: list[str],
|
|
87
|
+
include_files: bool,
|
|
88
|
+
) -> Generator[_PackageInfo, None, None]:
|
|
86
89
|
"""
|
|
87
90
|
Gather details from installed distributions. Print distribution name,
|
|
88
91
|
version, location, and installed files. Installed files requires a
|
|
@@ -133,11 +136,11 @@ def search_packages_info(query: list[str]) -> Generator[_PackageInfo, None, None
|
|
|
133
136
|
except FileNotFoundError:
|
|
134
137
|
entry_points = []
|
|
135
138
|
|
|
136
|
-
|
|
137
|
-
if
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
139
|
+
files: list[str] | None = None
|
|
140
|
+
if include_files:
|
|
141
|
+
files_iter = dist.iter_declared_entries()
|
|
142
|
+
if files_iter is not None:
|
|
143
|
+
files = sorted(files_iter)
|
|
141
144
|
|
|
142
145
|
metadata = dist.metadata
|
|
143
146
|
|
|
@@ -189,7 +192,10 @@ def print_results(
|
|
|
189
192
|
if i > 0:
|
|
190
193
|
write_output("---")
|
|
191
194
|
|
|
192
|
-
|
|
195
|
+
metadata_version = dist.metadata_version
|
|
196
|
+
metadata_version_tuple = (
|
|
197
|
+
tuple(map(int, metadata_version.split("."))) if metadata_version else ()
|
|
198
|
+
)
|
|
193
199
|
|
|
194
200
|
write_output("Name: %s", dist.name)
|
|
195
201
|
write_output("Version: %s", dist.version)
|