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
|
@@ -5,9 +5,12 @@ from __future__ import annotations
|
|
|
5
5
|
import os
|
|
6
6
|
import sys
|
|
7
7
|
from configparser import ConfigParser
|
|
8
|
+
from functools import cached_property
|
|
8
9
|
from pathlib import Path
|
|
10
|
+
from tempfile import gettempdir
|
|
9
11
|
from typing import TYPE_CHECKING, NoReturn
|
|
10
12
|
|
|
13
|
+
from ._xdg import XDGMixin
|
|
11
14
|
from .api import PlatformDirsABC
|
|
12
15
|
|
|
13
16
|
if TYPE_CHECKING:
|
|
@@ -23,245 +26,291 @@ else:
|
|
|
23
26
|
from os import getuid
|
|
24
27
|
|
|
25
28
|
|
|
26
|
-
class
|
|
27
|
-
"""
|
|
28
|
-
On Unix/Linux, we follow the `XDG Basedir Spec <https://specifications.freedesktop.org/basedir-spec/basedir-spec-
|
|
29
|
-
latest.html>`_.
|
|
29
|
+
class _UnixDefaults(PlatformDirsABC): # noqa: PLR0904
|
|
30
|
+
"""Default directories for Unix/Linux without XDG environment variable overrides.
|
|
30
31
|
|
|
31
|
-
The
|
|
32
|
-
alongside the name of the environment variable that overrides them. Makes use of the `appname
|
|
33
|
-
<platformdirs.api.PlatformDirsABC.appname>`, `version <platformdirs.api.PlatformDirsABC.version>`, `multipath
|
|
34
|
-
<platformdirs.api.PlatformDirsABC.multipath>`, `opinion <platformdirs.api.PlatformDirsABC.opinion>`, `ensure_exists
|
|
35
|
-
<platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
|
32
|
+
The XDG env var handling is in :class:`~platformdirs._xdg.XDGMixin`.
|
|
36
33
|
|
|
37
34
|
"""
|
|
38
35
|
|
|
36
|
+
@cached_property
|
|
37
|
+
def _use_site(self) -> bool:
|
|
38
|
+
return self.use_site_for_root and getuid() == 0
|
|
39
|
+
|
|
39
40
|
@property
|
|
40
41
|
def user_data_dir(self) -> str:
|
|
41
|
-
"""
|
|
42
|
-
|
|
43
|
-
``$XDG_DATA_HOME/$appname/$version``
|
|
44
|
-
"""
|
|
45
|
-
path = os.environ.get("XDG_DATA_HOME", "")
|
|
46
|
-
if not path.strip():
|
|
47
|
-
path = os.path.expanduser("~/.local/share") # noqa: PTH111
|
|
48
|
-
return self._append_app_name_and_version(path)
|
|
42
|
+
""":returns: data directory tied to the user, e.g. ``~/.local/share/$appname/$version`` or ``$XDG_DATA_HOME/$appname/$version``"""
|
|
43
|
+
return self._append_app_name_and_version(os.path.expanduser("~/.local/share")) # noqa: PTH111
|
|
49
44
|
|
|
50
45
|
@property
|
|
51
46
|
def _site_data_dirs(self) -> list[str]:
|
|
52
|
-
|
|
53
|
-
if not path.strip():
|
|
54
|
-
path = f"/usr/local/share{os.pathsep}/usr/share"
|
|
55
|
-
return [self._append_app_name_and_version(p) for p in path.split(os.pathsep)]
|
|
56
|
-
|
|
57
|
-
@property
|
|
58
|
-
def site_data_dir(self) -> str:
|
|
59
|
-
"""
|
|
60
|
-
:return: data directories shared by users (if `multipath <platformdirs.api.PlatformDirsABC.multipath>` is
|
|
61
|
-
enabled and ``XDG_DATA_DIRS`` is set and a multi path the response is also a multi path separated by the
|
|
62
|
-
OS path separator), e.g. ``/usr/local/share/$appname/$version`` or ``/usr/share/$appname/$version``
|
|
63
|
-
"""
|
|
64
|
-
# XDG default for $XDG_DATA_DIRS; only first, if multipath is False
|
|
65
|
-
dirs = self._site_data_dirs
|
|
66
|
-
if not self.multipath:
|
|
67
|
-
return dirs[0]
|
|
68
|
-
return os.pathsep.join(dirs)
|
|
47
|
+
return [self._append_app_name_and_version("/usr/local/share"), self._append_app_name_and_version("/usr/share")]
|
|
69
48
|
|
|
70
49
|
@property
|
|
71
50
|
def user_config_dir(self) -> str:
|
|
72
|
-
"""
|
|
73
|
-
|
|
74
|
-
``$XDG_CONFIG_HOME/$appname/$version``
|
|
75
|
-
"""
|
|
76
|
-
path = os.environ.get("XDG_CONFIG_HOME", "")
|
|
77
|
-
if not path.strip():
|
|
78
|
-
path = os.path.expanduser("~/.config") # noqa: PTH111
|
|
79
|
-
return self._append_app_name_and_version(path)
|
|
51
|
+
""":returns: config directory tied to the user, e.g. ``~/.config/$appname/$version`` or ``$XDG_CONFIG_HOME/$appname/$version``"""
|
|
52
|
+
return self._append_app_name_and_version(os.path.expanduser("~/.config")) # noqa: PTH111
|
|
80
53
|
|
|
81
54
|
@property
|
|
82
55
|
def _site_config_dirs(self) -> list[str]:
|
|
83
|
-
|
|
84
|
-
if not path.strip():
|
|
85
|
-
path = "/etc/xdg"
|
|
86
|
-
return [self._append_app_name_and_version(p) for p in path.split(os.pathsep)]
|
|
87
|
-
|
|
88
|
-
@property
|
|
89
|
-
def site_config_dir(self) -> str:
|
|
90
|
-
"""
|
|
91
|
-
:return: config directories shared by users (if `multipath <platformdirs.api.PlatformDirsABC.multipath>`
|
|
92
|
-
is enabled and ``XDG_CONFIG_DIRS`` is set and a multi path the response is also a multi path separated by
|
|
93
|
-
the OS path separator), e.g. ``/etc/xdg/$appname/$version``
|
|
94
|
-
"""
|
|
95
|
-
# XDG default for $XDG_CONFIG_DIRS only first, if multipath is False
|
|
96
|
-
dirs = self._site_config_dirs
|
|
97
|
-
if not self.multipath:
|
|
98
|
-
return dirs[0]
|
|
99
|
-
return os.pathsep.join(dirs)
|
|
56
|
+
return [self._append_app_name_and_version("/etc/xdg")]
|
|
100
57
|
|
|
101
58
|
@property
|
|
102
59
|
def user_cache_dir(self) -> str:
|
|
103
|
-
"""
|
|
104
|
-
|
|
105
|
-
``~/$XDG_CACHE_HOME/$appname/$version``
|
|
106
|
-
"""
|
|
107
|
-
path = os.environ.get("XDG_CACHE_HOME", "")
|
|
108
|
-
if not path.strip():
|
|
109
|
-
path = os.path.expanduser("~/.cache") # noqa: PTH111
|
|
110
|
-
return self._append_app_name_and_version(path)
|
|
60
|
+
""":returns: cache directory tied to the user, e.g. ``~/.cache/$appname/$version`` or ``$XDG_CACHE_HOME/$appname/$version``"""
|
|
61
|
+
return self._append_app_name_and_version(os.path.expanduser("~/.cache")) # noqa: PTH111
|
|
111
62
|
|
|
112
63
|
@property
|
|
113
64
|
def site_cache_dir(self) -> str:
|
|
114
|
-
""":
|
|
65
|
+
""":returns: cache directory shared by users, e.g. ``/var/cache/$appname/$version``"""
|
|
115
66
|
return self._append_app_name_and_version("/var/cache")
|
|
116
67
|
|
|
117
68
|
@property
|
|
118
69
|
def user_state_dir(self) -> str:
|
|
119
|
-
"""
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
return self._append_app_name_and_version(path)
|
|
70
|
+
""":returns: state directory tied to the user, e.g. ``~/.local/state/$appname/$version`` or ``$XDG_STATE_HOME/$appname/$version``"""
|
|
71
|
+
return self._append_app_name_and_version(os.path.expanduser("~/.local/state")) # noqa: PTH111
|
|
72
|
+
|
|
73
|
+
@property
|
|
74
|
+
def site_state_dir(self) -> str:
|
|
75
|
+
""":returns: state directory shared by users, e.g. ``/var/lib/$appname/$version``"""
|
|
76
|
+
return self._append_app_name_and_version("/var/lib")
|
|
127
77
|
|
|
128
78
|
@property
|
|
129
79
|
def user_log_dir(self) -> str:
|
|
130
|
-
""":
|
|
80
|
+
""":returns: log directory tied to the user, same as `user_state_dir` if not opinionated else ``log`` in it"""
|
|
131
81
|
path = self.user_state_dir
|
|
132
82
|
if self.opinion:
|
|
133
83
|
path = os.path.join(path, "log") # noqa: PTH118
|
|
134
84
|
self._optionally_create_directory(path)
|
|
135
85
|
return path
|
|
136
86
|
|
|
87
|
+
@property
|
|
88
|
+
def site_log_dir(self) -> str:
|
|
89
|
+
""":returns: log directory shared by users, e.g. ``/var/log/$appname/$version``
|
|
90
|
+
|
|
91
|
+
Unlike `user_log_dir`, ``opinion`` has no effect since ``/var/log`` is inherently a log directory.
|
|
92
|
+
|
|
93
|
+
"""
|
|
94
|
+
return self._append_app_name_and_version("/var/log")
|
|
95
|
+
|
|
137
96
|
@property
|
|
138
97
|
def user_documents_dir(self) -> str:
|
|
139
|
-
""":
|
|
98
|
+
""":returns: documents directory tied to the user, e.g. ``~/Documents``"""
|
|
140
99
|
return _get_user_media_dir("XDG_DOCUMENTS_DIR", "~/Documents")
|
|
141
100
|
|
|
142
101
|
@property
|
|
143
102
|
def user_downloads_dir(self) -> str:
|
|
144
|
-
""":
|
|
103
|
+
""":returns: downloads directory tied to the user, e.g. ``~/Downloads``"""
|
|
145
104
|
return _get_user_media_dir("XDG_DOWNLOAD_DIR", "~/Downloads")
|
|
146
105
|
|
|
147
106
|
@property
|
|
148
107
|
def user_pictures_dir(self) -> str:
|
|
149
|
-
""":
|
|
108
|
+
""":returns: pictures directory tied to the user, e.g. ``~/Pictures``"""
|
|
150
109
|
return _get_user_media_dir("XDG_PICTURES_DIR", "~/Pictures")
|
|
151
110
|
|
|
152
111
|
@property
|
|
153
112
|
def user_videos_dir(self) -> str:
|
|
154
|
-
""":
|
|
113
|
+
""":returns: videos directory tied to the user, e.g. ``~/Videos``"""
|
|
155
114
|
return _get_user_media_dir("XDG_VIDEOS_DIR", "~/Videos")
|
|
156
115
|
|
|
157
116
|
@property
|
|
158
117
|
def user_music_dir(self) -> str:
|
|
159
|
-
""":
|
|
118
|
+
""":returns: music directory tied to the user, e.g. ``~/Music``"""
|
|
160
119
|
return _get_user_media_dir("XDG_MUSIC_DIR", "~/Music")
|
|
161
120
|
|
|
162
121
|
@property
|
|
163
122
|
def user_desktop_dir(self) -> str:
|
|
164
|
-
""":
|
|
123
|
+
""":returns: desktop directory tied to the user, e.g. ``~/Desktop``"""
|
|
165
124
|
return _get_user_media_dir("XDG_DESKTOP_DIR", "~/Desktop")
|
|
166
125
|
|
|
126
|
+
@property
|
|
127
|
+
def user_projects_dir(self) -> str:
|
|
128
|
+
""":returns: projects directory tied to the user, e.g. ``~/Projects``"""
|
|
129
|
+
return _get_user_media_dir("XDG_PROJECTS_DIR", "~/Projects")
|
|
130
|
+
|
|
131
|
+
@property
|
|
132
|
+
def user_publicshare_dir(self) -> str:
|
|
133
|
+
""":returns: public share directory tied to the user, e.g. ``~/Public``"""
|
|
134
|
+
return _get_user_media_dir("XDG_PUBLICSHARE_DIR", "~/Public")
|
|
135
|
+
|
|
136
|
+
@property
|
|
137
|
+
def user_templates_dir(self) -> str:
|
|
138
|
+
""":returns: templates directory tied to the user, e.g. ``~/Templates``"""
|
|
139
|
+
return _get_user_media_dir("XDG_TEMPLATES_DIR", "~/Templates")
|
|
140
|
+
|
|
141
|
+
@property
|
|
142
|
+
def user_fonts_dir(self) -> str:
|
|
143
|
+
""":returns: fonts directory tied to the user, e.g. ``~/.local/share/fonts``"""
|
|
144
|
+
return f"{os.path.expanduser('~/.local/share')}/fonts" # noqa: PTH111 # API returns str, not Path
|
|
145
|
+
|
|
146
|
+
@property
|
|
147
|
+
def user_preference_dir(self) -> str:
|
|
148
|
+
""":returns: preference directory tied to the user, same as ``user_config_dir``"""
|
|
149
|
+
return self.user_config_dir
|
|
150
|
+
|
|
151
|
+
@property
|
|
152
|
+
def user_bin_dir(self) -> str:
|
|
153
|
+
""":returns: bin directory tied to the user, e.g. ``~/.local/bin``"""
|
|
154
|
+
return os.path.expanduser("~/.local/bin") # noqa: PTH111
|
|
155
|
+
|
|
156
|
+
@property
|
|
157
|
+
def site_bin_dir(self) -> str:
|
|
158
|
+
""":returns: bin directory shared by users, e.g. ``/usr/local/bin``"""
|
|
159
|
+
return "/usr/local/bin"
|
|
160
|
+
|
|
161
|
+
@property
|
|
162
|
+
def user_applications_dir(self) -> str:
|
|
163
|
+
""":returns: applications directory tied to the user, e.g. ``~/.local/share/applications``"""
|
|
164
|
+
return os.path.join(os.path.expanduser("~/.local/share"), "applications") # noqa: PTH111, PTH118
|
|
165
|
+
|
|
166
|
+
@property
|
|
167
|
+
def _site_applications_dirs(self) -> list[str]:
|
|
168
|
+
return [os.path.join(p, "applications") for p in ["/usr/local/share", "/usr/share"]] # noqa: PTH118
|
|
169
|
+
|
|
170
|
+
@property
|
|
171
|
+
def site_applications_dir(self) -> str:
|
|
172
|
+
""":returns: applications directory shared by users, e.g. ``/usr/share/applications``"""
|
|
173
|
+
dirs = self._site_applications_dirs
|
|
174
|
+
return os.pathsep.join(dirs) if self.multipath else dirs[0]
|
|
175
|
+
|
|
167
176
|
@property
|
|
168
177
|
def user_runtime_dir(self) -> str:
|
|
169
|
-
"""
|
|
170
|
-
|
|
171
|
-
|
|
178
|
+
""":returns: runtime directory tied to the user, e.g. ``$XDG_RUNTIME_DIR/$appname/$version``.
|
|
179
|
+
|
|
180
|
+
If ``$XDG_RUNTIME_DIR`` is unset, tries the platform default (``/tmp/run/user/$(id -u)`` on OpenBSD, ``/var/run/user/$(id -u)`` on FreeBSD/NetBSD, ``/run/user/$(id -u)`` otherwise). If the default is not writable, falls back to a temporary directory.
|
|
172
181
|
|
|
173
|
-
For FreeBSD/OpenBSD/NetBSD, it would return ``/var/run/user/$(id -u)/$appname/$version`` if
|
|
174
|
-
exists, otherwise ``/tmp/runtime-$(id -u)/$appname/$version``, if``$XDG_RUNTIME_DIR``
|
|
175
|
-
is not set.
|
|
176
182
|
"""
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
183
|
+
if sys.platform.startswith("openbsd"):
|
|
184
|
+
path = f"/tmp/run/user/{getuid()}" # noqa: S108
|
|
185
|
+
elif sys.platform.startswith(("freebsd", "netbsd")):
|
|
186
|
+
path = f"/var/run/user/{getuid()}"
|
|
187
|
+
else:
|
|
188
|
+
path = f"/run/user/{getuid()}"
|
|
189
|
+
if not os.access(path, os.W_OK):
|
|
190
|
+
path = f"{gettempdir()}/runtime-{getuid()}"
|
|
185
191
|
return self._append_app_name_and_version(path)
|
|
186
192
|
|
|
187
193
|
@property
|
|
188
194
|
def site_runtime_dir(self) -> str:
|
|
189
|
-
"""
|
|
190
|
-
:return: runtime directory shared by users, e.g. ``/run/$appname/$version`` or \
|
|
191
|
-
``$XDG_RUNTIME_DIR/$appname/$version``.
|
|
195
|
+
""":returns: runtime directory shared by users, e.g. ``/run/$appname/$version`` or ``$XDG_RUNTIME_DIR/$appname/$version``.
|
|
192
196
|
|
|
193
|
-
Note that this behaves almost exactly like `user_runtime_dir` if ``$XDG_RUNTIME_DIR`` is set, but will
|
|
194
|
-
fall back to paths associated to the root user instead of a regular logged-in user if it's not set.
|
|
197
|
+
Note that this behaves almost exactly like `user_runtime_dir` if ``$XDG_RUNTIME_DIR`` is set, but will fall back to paths associated to the root user instead of a regular logged-in user if it's not set.
|
|
195
198
|
|
|
196
|
-
If you wish to ensure that a logged-in root user path is returned e.g. ``/run/user/0``, use `user_runtime_dir`
|
|
197
|
-
instead.
|
|
199
|
+
If you wish to ensure that a logged-in root user path is returned e.g. ``/run/user/0``, use `user_runtime_dir` instead.
|
|
198
200
|
|
|
199
201
|
For FreeBSD/OpenBSD/NetBSD, it would return ``/var/run/$appname/$version`` if ``$XDG_RUNTIME_DIR`` is not set.
|
|
202
|
+
|
|
200
203
|
"""
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
else:
|
|
206
|
-
path = "/run"
|
|
204
|
+
if sys.platform.startswith(("freebsd", "openbsd", "netbsd")):
|
|
205
|
+
path = "/var/run"
|
|
206
|
+
else:
|
|
207
|
+
path = "/run"
|
|
207
208
|
return self._append_app_name_and_version(path)
|
|
208
209
|
|
|
209
210
|
@property
|
|
210
211
|
def site_data_path(self) -> Path:
|
|
211
|
-
""":
|
|
212
|
+
""":returns: data path shared by users. Only return the first item, even if ``multipath`` is set to ``True``"""
|
|
212
213
|
return self._first_item_as_path_if_multipath(self.site_data_dir)
|
|
213
214
|
|
|
214
215
|
@property
|
|
215
216
|
def site_config_path(self) -> Path:
|
|
216
|
-
""":
|
|
217
|
+
""":returns: config path shared by users, returns the first item, even if ``multipath`` is set to ``True``"""
|
|
217
218
|
return self._first_item_as_path_if_multipath(self.site_config_dir)
|
|
218
219
|
|
|
219
220
|
@property
|
|
220
221
|
def site_cache_path(self) -> Path:
|
|
221
|
-
""":
|
|
222
|
+
""":returns: cache path shared by users. Only return the first item, even if ``multipath`` is set to ``True``"""
|
|
222
223
|
return self._first_item_as_path_if_multipath(self.site_cache_dir)
|
|
223
224
|
|
|
224
225
|
def iter_config_dirs(self) -> Iterator[str]:
|
|
225
226
|
""":yield: all user and site configuration directories."""
|
|
226
|
-
|
|
227
|
+
if not self._use_site:
|
|
228
|
+
yield self.user_config_dir
|
|
227
229
|
yield from self._site_config_dirs
|
|
228
230
|
|
|
229
231
|
def iter_data_dirs(self) -> Iterator[str]:
|
|
230
232
|
""":yield: all user and site data directories."""
|
|
231
|
-
|
|
233
|
+
if not self._use_site:
|
|
234
|
+
yield self.user_data_dir
|
|
232
235
|
yield from self._site_data_dirs
|
|
233
236
|
|
|
234
237
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
238
|
+
class Unix(XDGMixin, _UnixDefaults):
|
|
239
|
+
"""On Unix/Linux, we follow the `XDG Basedir Spec <https://specifications.freedesktop.org/basedir/latest/>`_.
|
|
240
|
+
|
|
241
|
+
The spec allows overriding directories with environment variables. The examples shown are the default values,
|
|
242
|
+
alongside the name of the environment variable that overrides them. Makes use of the `appname
|
|
243
|
+
<platformdirs.api.PlatformDirsABC.appname>`, `version <platformdirs.api.PlatformDirsABC.version>`, `multipath
|
|
244
|
+
<platformdirs.api.PlatformDirsABC.multipath>`, `opinion <platformdirs.api.PlatformDirsABC.opinion>`, `ensure_exists
|
|
245
|
+
<platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
|
246
|
+
|
|
247
|
+
"""
|
|
248
|
+
|
|
249
|
+
@property
|
|
250
|
+
def user_data_dir(self) -> str:
|
|
251
|
+
""":returns: data directory tied to the user, or site equivalent when root with ``use_site_for_root``"""
|
|
252
|
+
return self.site_data_dir if self._use_site else super().user_data_dir
|
|
253
|
+
|
|
254
|
+
@property
|
|
255
|
+
def user_config_dir(self) -> str:
|
|
256
|
+
""":returns: config directory tied to the user, or site equivalent when root with ``use_site_for_root``"""
|
|
257
|
+
return self.site_config_dir if self._use_site else super().user_config_dir
|
|
258
|
+
|
|
259
|
+
@property
|
|
260
|
+
def user_cache_dir(self) -> str:
|
|
261
|
+
""":returns: cache directory tied to the user, or site equivalent when root with ``use_site_for_root``"""
|
|
262
|
+
return self.site_cache_dir if self._use_site else super().user_cache_dir
|
|
241
263
|
|
|
242
|
-
|
|
264
|
+
@property
|
|
265
|
+
def user_state_dir(self) -> str:
|
|
266
|
+
""":returns: state directory tied to the user, or site equivalent when root with ``use_site_for_root``"""
|
|
267
|
+
return self.site_state_dir if self._use_site else super().user_state_dir
|
|
268
|
+
|
|
269
|
+
@property
|
|
270
|
+
def user_log_dir(self) -> str:
|
|
271
|
+
""":returns: log directory tied to the user, or site equivalent when root with ``use_site_for_root``"""
|
|
272
|
+
return self.site_log_dir if self._use_site else super().user_log_dir
|
|
273
|
+
|
|
274
|
+
@property
|
|
275
|
+
def user_applications_dir(self) -> str:
|
|
276
|
+
""":returns: applications directory tied to the user, or site equivalent when root with ``use_site_for_root``"""
|
|
277
|
+
return self.site_applications_dir if self._use_site else super().user_applications_dir
|
|
278
|
+
|
|
279
|
+
@property
|
|
280
|
+
def user_runtime_dir(self) -> str:
|
|
281
|
+
""":returns: runtime directory tied to the user, or site equivalent when root with ``use_site_for_root``"""
|
|
282
|
+
return self.site_runtime_dir if self._use_site else super().user_runtime_dir
|
|
283
|
+
|
|
284
|
+
@property
|
|
285
|
+
def user_bin_dir(self) -> str:
|
|
286
|
+
""":returns: bin directory tied to the user, or site equivalent when root with ``use_site_for_root``"""
|
|
287
|
+
return self.site_bin_dir if self._use_site else super().user_bin_dir
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
def _get_user_media_dir(env_var: str, fallback_tilde_path: str) -> str:
|
|
291
|
+
if media_dir := _get_user_dirs_folder(env_var):
|
|
292
|
+
return media_dir
|
|
293
|
+
return os.path.expanduser(fallback_tilde_path) # noqa: PTH111
|
|
243
294
|
|
|
244
295
|
|
|
245
296
|
def _get_user_dirs_folder(key: str) -> str | None:
|
|
246
|
-
"""
|
|
247
|
-
Return directory from user-dirs.dirs config file.
|
|
297
|
+
"""Return directory from user-dirs.dirs config file.
|
|
248
298
|
|
|
249
299
|
See https://freedesktop.org/wiki/Software/xdg-user-dirs/.
|
|
250
300
|
|
|
251
301
|
"""
|
|
252
|
-
|
|
302
|
+
config_home = os.environ.get("XDG_CONFIG_HOME", "").strip() or os.path.expanduser("~/.config") # noqa: PTH111
|
|
303
|
+
user_dirs_config_path = Path(config_home) / "user-dirs.dirs"
|
|
253
304
|
if user_dirs_config_path.exists():
|
|
254
305
|
parser = ConfigParser()
|
|
255
306
|
|
|
256
307
|
with user_dirs_config_path.open() as stream:
|
|
257
|
-
# Add fake section header, so ConfigParser doesn't complain
|
|
258
308
|
parser.read_string(f"[top]\n{stream.read()}")
|
|
259
309
|
|
|
260
310
|
if key not in parser["top"]:
|
|
261
311
|
return None
|
|
262
312
|
|
|
263
313
|
path = parser["top"][key].strip('"')
|
|
264
|
-
# Handle relative home paths
|
|
265
314
|
return path.replace("$HOME", os.path.expanduser("~")) # noqa: PTH111
|
|
266
315
|
|
|
267
316
|
return None
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
# file generated by
|
|
1
|
+
# file generated by vcs-versioning
|
|
2
2
|
# don't change, don't track in version control
|
|
3
|
+
from __future__ import annotations
|
|
3
4
|
|
|
4
5
|
__all__ = [
|
|
5
6
|
"__version__",
|
|
@@ -10,25 +11,14 @@ __all__ = [
|
|
|
10
11
|
"commit_id",
|
|
11
12
|
]
|
|
12
13
|
|
|
13
|
-
TYPE_CHECKING = False
|
|
14
|
-
if TYPE_CHECKING:
|
|
15
|
-
from typing import Tuple
|
|
16
|
-
from typing import Union
|
|
17
|
-
|
|
18
|
-
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
19
|
-
COMMIT_ID = Union[str, None]
|
|
20
|
-
else:
|
|
21
|
-
VERSION_TUPLE = object
|
|
22
|
-
COMMIT_ID = object
|
|
23
|
-
|
|
24
14
|
version: str
|
|
25
15
|
__version__: str
|
|
26
|
-
__version_tuple__:
|
|
27
|
-
version_tuple:
|
|
28
|
-
commit_id:
|
|
29
|
-
__commit_id__:
|
|
16
|
+
__version_tuple__: tuple[int | str, ...]
|
|
17
|
+
version_tuple: tuple[int | str, ...]
|
|
18
|
+
commit_id: str | None
|
|
19
|
+
__commit_id__: str | None
|
|
30
20
|
|
|
31
|
-
__version__ = version = '4.
|
|
32
|
-
__version_tuple__ = version_tuple = (4,
|
|
21
|
+
__version__ = version = '4.10.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (4, 10, 0)
|
|
33
23
|
|
|
34
24
|
__commit_id__ = commit_id = None
|