diff --git a/.basedpyright/baseline.json b/.basedpyright/baseline.json index f30c85cef3..325ab09c02 100644 --- a/.basedpyright/baseline.json +++ b/.basedpyright/baseline.json @@ -1733,14 +1733,6 @@ "lineCount": 1 } }, - { - "code": "reportUnusedCallResult", - "range": { - "startColumn": 12, - "endColumn": 111, - "lineCount": 1 - } - }, { "code": "reportPossiblyUnboundVariable", "range": { diff --git a/.github/workflows/build_and_release.yml b/.github/workflows/build_and_release.yml index ae04ff45b4..226984733b 100644 --- a/.github/workflows/build_and_release.yml +++ b/.github/workflows/build_and_release.yml @@ -10,6 +10,7 @@ env: BROWSER_NPM_PACKAGE_DIR: packages/browser-pyright # prevent uv from constantly reinstalling the project and overwriting docstubs UV_NO_SYNC: true + GG_GITHUB_TOKEN: ${{ github.token }} on: push @@ -65,8 +66,15 @@ jobs: name: docstubs-linux-and-macos path: docstubs - name: generate docstubs for each python version - run: ./build/generateAllDocstubs.sh - shell: bash + # https://github.com/eirikb/gg/issues/291 + run: | + $ErrorActionPreference = "Stop" + foreach ($pythonVersion in "3.14", "3.13", "3.12", "3.11", "3.10", "3.9") { + ./gg.cmd uv sync --only-group=docstubs --no-install-project --python $pythonVersion + ./gg.cmd uv run --no-sync build/py3_8/generate_docstubs.py + } + # https://github.com/eirikb/gg/issues/292 + shell: powershell - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a with: name: docstubs @@ -97,7 +105,7 @@ jobs: name: docstubs path: docstubs - - run: ./pw uv sync --config-setting regenerate_docstubs=false + - run: ./gg.cmd uv sync --config-setting regenerate_docstubs=false - name: add pyprojectx and npm scripts to PATH # using both relative and absolute path for npm scripts because some binaries are in package-specific node_modules/.bin diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 0f028cc2b8..f91a646d5e 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -28,6 +28,7 @@ jobs: env: REPO_KEY: ${{ secrets.GH_TOKEN }} USERNAME: github-actions[bot] + GG_GITHUB_TOKEN: ${{ github.token }} steps: - name: Checkout # zizmor: ignore[artipacked] @@ -44,13 +45,13 @@ jobs: git config --local user.email "github-actions[bot]@users.noreply.github.com" git config --local user.name "github-actions[bot]" - name: install dependencies - run: ./pw uv sync + run: ./gg.cmd uv sync - name: deploy dev docs if: github.ref == 'refs/heads/main' - run: ./pw uv run mike deploy --push --update-aliases dev + run: ./gg.cmd uv run mike deploy --push --update-aliases dev - name: deploy release docs if: github.ref_type == 'tag' # zizmor: ignore[template-injection] run: | - ./pw uv run mike deploy --push --update-aliases ${{ github.ref_name }} latest - ./pw uv run mike set-default --push latest + ./gg.cmd uv run mike deploy --push --update-aliases ${{ github.ref_name }} latest + ./gg.cmd uv run mike set-default --push latest diff --git a/.github/workflows/mypy_primer_pr.yaml b/.github/workflows/mypy_primer_pr.yaml index 16714c19ec..45ccee5e1c 100644 --- a/.github/workflows/mypy_primer_pr.yaml +++ b/.github/workflows/mypy_primer_pr.yaml @@ -17,6 +17,7 @@ name: Run mypy_primer on PR env: PYRIGHT_DISABLE_GITHUB_ACTIONS_OUTPUT: true + GG_GITHUB_TOKEN: ${{ github.token }} on: # Run on the creation or update of a PR. @@ -55,11 +56,11 @@ jobs: persist-credentials: false submodules: true - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 - - name: Install dependencies + - name: add gg aliases to PATH run: | cd pyright_to_test - ./pw --install-context mypy_primer - realpath ./.pyprojectx/mypy_primer >> $GITHUB_PATH + realpath ./gg >> $GITHUB_PATH + - run: uv --version - name: Run mypy_primer shell: bash env: diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 5e5f729243..0b8d7fb242 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -10,6 +10,9 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +env: + GG_GITHUB_TOKEN: ${{ github.token }} + jobs: static_checks: runs-on: ubuntu-latest @@ -19,23 +22,22 @@ jobs: persist-credentials: false submodules: true # needed to typecheck mypy_primer - # need to use pw script at least once even when activating the context so that the wrapper installs pyprojectx - - run: ./pw uv sync --locked + - name: add gg aliases to PATH + run: realpath ./gg >> $GITHUB_PATH - - name: activate pyprojectx context - run: realpath ./.pyprojectx/main >> $GITHUB_PATH + - run: uv sync --locked - name: typescript typecheck - run: uv run npm run typecheck + run: pnpm run typecheck - name: zizmor # intentionally exclude workflows from the mypy_primer submodule. https://github.com/zizmorcore/zizmor/issues/784 run: uv run zizmor .github --persona=auditor - - run: uv run npm run check + - run: pnpm run check - name: python typecheck - run: uv run npm run typecheck-python + run: pnpm run typecheck-python - name: ruff check run: uv run ruff check --output-format github @@ -44,7 +46,7 @@ jobs: run: uv run ruff format --check --diff - name: pylint - run: uv run npm run pylint + run: pnpm run pylint - name: validate docs run: uv run mkdocs build --strict @@ -53,10 +55,18 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-latest, windows-latest, ubuntu-latest] - - name: Test ${{ matrix.os }} - runs-on: ${{ matrix.os }} + os: + - name: macos-latest + shell: bash + # https://github.com/eirikb/gg/issues/291 + # https://github.com/eirikb/gg/issues/292 + - name: windows-latest + shell: powershell + - name: ubuntu-latest + shell: bash + + name: Test ${{ matrix.os.name }} + runs-on: ${{ matrix.os.name }} steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd with: @@ -65,24 +75,26 @@ jobs: - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 id: install_python - - run: ./pw uv sync + - run: ./gg.cmd uv sync + shell: ${{ matrix.os.shell }} # ideally we would do the same thing with ./node_modules/.bin to ensure that the version of node from nodejs-wheel # is always used, but it seems to be impossible to prevent github actions from using its own node version - - name: add pyprojectx to PATH (linux) - if: runner.os != 'Windows' - run: | - realpath ./.pyprojectx/main >> $GITHUB_PATH - - name: add pyprojectx to PATH (windows) - if: runner.os == 'Windows' - run: | - echo (resolve-path "./.pyprojectx/main").path | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + # currently commented out because this doesn't work on macos, see https://github.com/eirikb/gg/issues/289 + # - name: add gg aliases to PATH (linux/macos) + # if: runner.os != 'Windows' + # run: | + # realpath ./gg >> $GITHUB_PATH + # - name: add gg aliases to PATH (windows) + # if: runner.os == 'Windows' + # run: | + # echo (resolve-path "./gg").path | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - name: python tests - run: uv run npm run test-python -- -m "not needs_all_docstubs" + run: ./gg.cmd uv run npm run test-python -- -m "not needs_all_docstubs" - name: npm test (pyright-internal) - run: uv run npm test + run: ../../gg.cmd uv run npm test working-directory: packages/pyright-internal # TODO: all tests run in a venv now so i dont think any of this stuff is needed anymore @@ -111,13 +123,13 @@ jobs: env: CI_IMPORT_TEST_VENVPATH: '../../' CI_IMPORT_TEST_VENV: '.venv' - run: uv run npm run test:imports + run: ../../gg.cmd pnpm run test:imports working-directory: packages/pyright-internal - name: Run import tests with pythonpath env: CI_IMPORT_TEST_PYTHONPATH: ${{env.python_venv_path}} - run: uv run npm run test:imports + run: ../../gg.cmd pnpm run test:imports working-directory: packages/pyright-internal required: diff --git a/.vscode/settings.json b/.vscode/settings.json index 5dad3afc0f..264178ff23 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -69,7 +69,7 @@ }, "explorer.compactFolders": false, "search.exclude": { - "pw": true + "gg.cmd": true }, "python.terminal.activateEnvInCurrentTerminal": true, "editor.acceptSuggestionOnCommitCharacter": false, @@ -84,20 +84,20 @@ // even though python.terminal.activateEnvInCurrentTerminal is enabled, we still need to add the venv's script folder to the PATH // because vscode's npm tasks do not run with the activated venv "terminal.integrated.env.windows": { - "PATH": "${workspaceFolder}/.pyprojectx/main;${workspaceFolder}/node_modules/.bin;${workspaceFolder}/.venv/Scripts;${env:PATH}" + "PATH": "${workspaceFolder}/gg;${workspaceFolder}/node_modules/.bin;${workspaceFolder}/.venv/Scripts;${env:PATH}" }, "terminal.integrated.env.osx": { - "PATH": "${workspaceFolder}/.pyprojectx/main:${workspaceFolder}/node_modules/.bin:${workspaceFolder}/.venv/bin:${env:PATH}" + "PATH": "${workspaceFolder}/gg:${workspaceFolder}/node_modules/.bin:${workspaceFolder}/.venv/bin:${env:PATH}" }, "terminal.integrated.env.linux": { - "PATH": "${workspaceFolder}/.pyprojectx/main:${workspaceFolder}/node_modules/.bin:${workspaceFolder}/.venv/bin:${env:PATH}" + "PATH": "${workspaceFolder}/gg:${workspaceFolder}/node_modules/.bin:${workspaceFolder}/.venv/bin:${env:PATH}" }, "task.problemMatchers.neverPrompt": true, "editor.unicodeHighlight.nonBasicASCII": true, "ruff.nativeServer": true, "js/ts.inlayHints.parameterNames.enabled": "literals", "js/ts.inlayHints.enumMemberValues.enabled": true, - "jest.jestCommandLine": "node_modules/.bin/pnpm run jest", + "jest.jestCommandLine": "./gg.cmd pnpm run jest", "jest.useJest30": true, "files.readonlyInclude": { ".pdm-build/**/*": true, @@ -112,9 +112,7 @@ "docstubs/**/*": true, "pnpm-lock.yaml": true, "uv.lock": true, - "pw.lock": true, - "pw": true, - "pw.bat": true + "gg.cmd": true, }, // package.json file copied into the pypi package // this is a top-level folder but the ** is still needed due to https://github.com/microsoft/vscode/issues/92114 diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 85db931fb8..bad1751294 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -79,18 +79,19 @@ { "label": "install dependencies", "type": "shell", - "command": "./pw", + "command": "uv", // need to always reinstall the current project because docstubs may be outdated - "args": ["uv", "sync", "--reinstall-package", "basedpyright"], + "args": ["sync", "--reinstall-package", "basedpyright"], "presentation": { "clear": true }, "problemMatcher": [], + // TODO: don't think this is needed anymore since switching to gg, but i don't dev on windows anymore so cbf testing it // https://github.com/microsoft/vscode/issues/160891#issuecomment-2915280629 - "windows": { - "command": "&'${command:python.interpreterPath}'", - "args": ["pw", "uv", "sync", "--reinstall-package", "basedpyright"] - } + // "windows": { + // "command": "&'${command:python.interpreterPath}'", + // "args": ["pw", "uv", "sync", "--reinstall-package", "basedpyright"] + // } }, { "label": "bump version", diff --git a/build/generateAllDocstubs.sh b/build/generateAllDocstubs.sh index d25adceebb..93a99a1fd6 100755 --- a/build/generateAllDocstubs.sh +++ b/build/generateAllDocstubs.sh @@ -1,5 +1,5 @@ set -e for pythonVersion in 3.14 3.13 3.12 3.11 3.10 3.9; do - ./pw uv sync --only-group=docstubs --no-install-project --python $pythonVersion - ./pw uv run --no-sync build/py3_8/generate_docstubs.py + ./gg.cmd uv sync --only-group=docstubs --no-install-project --python $pythonVersion + ./gg.cmd uv run --no-sync build/py3_8/generate_docstubs.py done \ No newline at end of file diff --git a/docs/development/contributing.md b/docs/development/contributing.md index 89db2d9b87..3582b0fcbc 100644 --- a/docs/development/contributing.md +++ b/docs/development/contributing.md @@ -14,7 +14,7 @@ we recommend using vscode, as there are project configuration files in the repo 1. hit `F1` > `Tasks: Run task` > `install dependencies`, or run the following command: ``` - ./pw uv sync + ./gg.cmd uv sync ``` this will install all dependencies required for the project (pyprojectx, uv, node, typescript, etc.). all dependencies are installed locally to `./.venv` and `./node_modules` 2. press "Yes" when prompted by vscode to use the newly created virtualenv diff --git a/docs/development/localization.md b/docs/development/localization.md index ac875d4f54..26147bf0b3 100644 --- a/docs/development/localization.md +++ b/docs/development/localization.md @@ -19,7 +19,7 @@ Run the script: ```shell # use uv -./pw uv run build/py_latest/localization_helper.py +./gg.cmd uv run build/py_latest/localization_helper.py # or from inside the venv npm run localization-helper ``` diff --git a/gg.cmd b/gg.cmd new file mode 100755 index 0000000000..e26bec03b3 Binary files /dev/null and b/gg.cmd differ diff --git a/gg.toml b/gg.toml new file mode 100644 index 0000000000..b992583c46 --- /dev/null +++ b/gg.toml @@ -0,0 +1,5 @@ +[aliases] +uv = "gh/astral-sh/uv@0.11.26" +pnpm = "gh/pnpm/pnpm@11.9" +# we run mypy primer in a separate isolated venv because it can't run in the same venv as the version of basedpyright it's testing +mypy_primer = "uv tool run --from ./mypy_primer mypy_primer" diff --git a/gg/mypy_primer b/gg/mypy_primer new file mode 120000 index 0000000000..6623f4434a --- /dev/null +++ b/gg/mypy_primer @@ -0,0 +1 @@ +../gg.cmd \ No newline at end of file diff --git a/gg/mypy_primer.cmd b/gg/mypy_primer.cmd new file mode 120000 index 0000000000..6623f4434a --- /dev/null +++ b/gg/mypy_primer.cmd @@ -0,0 +1 @@ +../gg.cmd \ No newline at end of file diff --git a/gg/pnpm b/gg/pnpm new file mode 120000 index 0000000000..6623f4434a --- /dev/null +++ b/gg/pnpm @@ -0,0 +1 @@ +../gg.cmd \ No newline at end of file diff --git a/gg/pnpm.cmd b/gg/pnpm.cmd new file mode 120000 index 0000000000..6623f4434a --- /dev/null +++ b/gg/pnpm.cmd @@ -0,0 +1 @@ +../gg.cmd \ No newline at end of file diff --git a/gg/uv b/gg/uv new file mode 120000 index 0000000000..6623f4434a --- /dev/null +++ b/gg/uv @@ -0,0 +1 @@ +../gg.cmd \ No newline at end of file diff --git a/gg/uv.cmd b/gg/uv.cmd new file mode 120000 index 0000000000..6623f4434a --- /dev/null +++ b/gg/uv.cmd @@ -0,0 +1 @@ +../gg.cmd \ No newline at end of file diff --git a/mypy_primer b/mypy_primer index 1fa7455b31..198da277a1 160000 --- a/mypy_primer +++ b/mypy_primer @@ -1 +1 @@ -Subproject commit 1fa7455b317ea4ecdd0734a26067178cde8721c4 +Subproject commit 198da277a1cf692453f4d1b37778cfb50b14e79a diff --git a/package.json b/package.json index 83cdfbc54a..ebdaef3494 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,6 @@ "run:langserver": "pnpm run build:cli:dev && node packages/pyright/langserver.index.js --stdio", "jest": "cd packages/pyright-internal && node_modules/.bin/jest", "update-python-deps": "uv sync --upgrade", - "update-pyprojectx-lockfile": "python pw --lock", "typecheck-python": "uv run --no-sync basedpyright", "typecheck-python:writebaseline": "pnpm run typecheck-python --writebaseline", "ruff-check": "uv run --no-sync ruff check --no-cache && uv run --no-sync ruff format --check --diff", diff --git a/pdm_build.py b/pdm_build.py index f211d0970b..098561e6d4 100644 --- a/pdm_build.py +++ b/pdm_build.py @@ -3,10 +3,9 @@ from json import loads from pathlib import Path from shutil import copy, copyfile, copytree -from subprocess import CompletedProcess # noqa: S404 no user input +from subprocess import run # noqa: S404 no user input from typing import TYPE_CHECKING, TypedDict, cast -from nodejs_wheel.executable import corepack from pdm.backend.hooks.base import BuildHookInterface from typing_extensions import override @@ -20,20 +19,6 @@ class PackageJson(TypedDict): bin: dict[str, str] -def run_corepack(*args: str): - # cast needed because the corepack function doesn't have all the overloads from subprocess.run - # even though the args are forwarded to it - result = cast( - CompletedProcess[str], - corepack(args, return_completed_process=True, capture_output=True, text=True), - ) - if result.returncode != 0: - raise Exception( - f"the following corepack command exited with exit code {result.returncode}: {args}" - f"\n\nstderr:\n{result.stderr}" - ) - - # https://github.com/pdm-project/pdm-backend/issues/247 class Hook(BuildHookInterface): # pyright:ignore[reportImplicitAbstractClass] @override @@ -50,8 +35,13 @@ def pdm_build_update_files(self, context: Context, files: dict[str, Path]): if context.builder.config_settings.get("regenerate_docstubs") != "false": generate_docstubs(overwrite=True) - run_corepack("enable") - run_corepack("pnpm", "run", "build:cli:dev") + _ = run( # noqa: S602 + "./gg.cmd pnpm run build:cli:dev", + capture_output=True, + check=True, + text=True, + shell=True, + ) if context.target == "editable": copy(npm_package_dir / package_json, pypi_package_dir) diff --git a/pw b/pw deleted file mode 100755 index 62b8a04e80..0000000000 --- a/pw +++ /dev/null @@ -1,262 +0,0 @@ -#!/usr/bin/env python3 - -################################################################################## -# Pyprojectx wrapper script # -# https://github.com/pyprojectx/pyprojectx # -# # -# Copyright (c) 2021 Ivo Houbrechts # -# # -# Licensed under the MIT license # -################################################################################## -import argparse -import os -import subprocess -import sys -import sysconfig -import zipfile -from pathlib import Path -from urllib import request - -try: - from venv import EnvBuilder -except ImportError: - EnvBuilder = None - - -VERSION = "3.3.4" -UV_VERSION = "0.11.6" - -PYPROJECTX_INSTALL_DIR_ENV_VAR = "PYPROJECTX_INSTALL_DIR" -PYPROJECTX_PACKAGE_ENV_VAR = "PYPROJECTX_PACKAGE" -PYPROJECTX_USE_UV_ENV_VAR = "PYPROJECTX_USE_UV" -PYPROJECT_TOML = "pyproject.toml" -DEFAULT_INSTALL_DIR = ".pyprojectx" -SCRIPTS_DIR = Path(sysconfig.get_path("scripts")).name -EXE = sysconfig.get_config_var("EXE") - -CYAN = "\033[96m" -BLUE = "\033[94m" -RED = "\033[91m" -RESET = "\033[0m" -if sys.platform.startswith("win"): - os.system("color") - - -def run(args): - try: - options = get_options(args) - if options.upgrade: - download_wrappers() - return - - pyprojectx_script = ensure_pyprojectx(options) - explicit_options = [] - if not options.toml: - explicit_options += ["--toml", str(options.toml_path)] - if not options.install_dir: - explicit_options += ["--install-dir", str(options.install_path)] - - subprocess.run([str(pyprojectx_script), *explicit_options, *args], check=True) - except subprocess.CalledProcessError as e: - raise SystemExit(e.returncode) from e - - -def get_options(args): - options = arg_parser().parse_args(args) - options.install_path = Path( - options.install_dir - or os.environ.get(PYPROJECTX_INSTALL_DIR_ENV_VAR, Path(__file__).with_name(DEFAULT_INSTALL_DIR)) - ) - options.toml_path = Path(options.toml) if options.toml else Path(__file__).with_name(PYPROJECT_TOML) - if os.environ.get(PYPROJECTX_PACKAGE_ENV_VAR): - options.version = "development" - options.pyprojectx_package = os.environ.get(PYPROJECTX_PACKAGE_ENV_VAR) - else: - options.version = VERSION - options.pyprojectx_package = f"pyprojectx=={VERSION}" - options.verbosity = 0 if options.quiet or not options.verbosity else options.verbosity - return options - - -def arg_parser(): - parser = argparse.ArgumentParser( - prog="pw", - description="Execute commands or aliases defined in the [tool.pyprojectx] section of pyproject.toml. " - "Use the -i or --info option to see available tools and aliases.", - allow_abbrev=False, - ) - parser.add_argument("--version", action="version", version=VERSION) - parser.add_argument( - "--toml", - "-t", - action="store", - help="The toml config file. Defaults to 'pyproject.toml' in the same directory as the pw script.", - ) - parser.add_argument( - "--install-dir", - action="store", - help=f"The directory where all tools (including pyprojectx) are installed; defaults to the " - f"{PYPROJECTX_INSTALL_DIR_ENV_VAR} environment value if set, else '.pyprojectx' " - f"in the same directory as the invoked pw script.", - ) - parser.add_argument( - "--force-install", - "-f", - action="store_true", - help="Force clean installation of the virtual environment used to run cmd, if any.", - ) - parser.add_argument( - "--clean", - "-c", - action="store_true", - help="Clean .pyprojectx directory by removing all but the current versions " - "of pyprojectx and context virtual environments.", - ) - parser.add_argument( - "--install-context", - action="store", - metavar="tool-context", - help="Install a tool context without actually running any command.", - ) - parser.add_argument( - "--verbose", - "-v", - action="count", - dest="verbosity", - help="Give more output. This option is additive and can be used up to 2 times.", - ) - parser.add_argument( - "--quiet", - "-q", - action="store_true", - help="Suppress output.", - ) - parser.add_argument( - "--info", - "-i", - action="store_true", - help="Show the configuration details of a command instead of running it. " - "If no command is specified, a list with all available tools and aliases is shown.", - ) - parser.add_argument( - "--add", - action="store", - metavar="[context:],...", - help="Add one or more packages to a tool context. " - "If no context is specified, the packages are added to the main context. " - "Packages can be specified as in 'pip install', except that a ',' can't be used in the version specification.", - ) - parser.add_argument( - "--lock", - action="store_true", - help="Write all dependencies of all tool contexts to 'pw.lock' to guarantee reproducible outcomes.", - ) - parser.add_argument( - "--install-px", action="store_true", help="Install the px and pxg scripts in your home directory." - ) - parser.add_argument( - "--upgrade", - action="store_true", - help="Download the latest pyprojectx wrapper scripts.", - ) - parser.add_argument( - "command", nargs=argparse.REMAINDER, help="The command/alias with optional arguments to execute." - ) - return parser - - -def ensure_pyprojectx(options): # noqa: C901, PLR0912 - venv_dir = ( - options.install_path / "pyprojectx" / f"{options.version}-py{sys.version_info.major}.{sys.version_info.minor}" - ) - pyprojectx_script = venv_dir / SCRIPTS_DIR / f"pyprojectx{EXE}" - - if not pyprojectx_script.is_file(): - if options.quiet: - out = subprocess.DEVNULL - else: - out = sys.stderr - print(f"{CYAN}creating pyprojectx venv in {BLUE}{venv_dir}{RESET}", file=sys.stderr) - - use_uv_install_script = not EnvBuilder or os.environ.get(PYPROJECTX_USE_UV_ENV_VAR) - if not use_uv_install_script: - env_builder = EnvBuilder(with_pip=True) - env_context = env_builder.ensure_directories(venv_dir) - try: - env_builder.create(venv_dir) - except (SystemExit, subprocess.CalledProcessError) as e: - print(f"failed to create virtualenv, falling back to uv install script ({e})") - use_uv_install_script = True - else: - pip_cmd = [env_context.env_exe, "-m", "pip", "install", "--pre"] - subprocess.run( - [*pip_cmd, "--upgrade", "pip"], - stdout=out, - check=True, - ) - if use_uv_install_script: # download and use uv to create the pyprojectx venv - uv_dir = Path(options.install_path) / f"uv-{UV_VERSION}" - release_base_url = ( - "https://github.com/astral-sh/uv/releases/latest/download" - if UV_VERSION == "__uv_version__" - else f"https://github.com/astral-sh/uv/releases/download/{UV_VERSION}" - ) - if sys.platform == "win32": - # https://github.com/PowerShell/PowerShell/issues/18530#issuecomment-1325691850 - os.environ["PSMODULEPATH"] = "" - install_uv_cmd = ( - f'powershell -ExecutionPolicy Bypass -c "irm {release_base_url}/uv-installer.ps1 | iex"' - ) - else: - install_uv_cmd = f"curl --proto '=https' --tlsv1.2 -LsSf irm {release_base_url}/uv-installer.sh | sh" - subprocess.run( - install_uv_cmd, - stdout=out, - check=True, - shell=True, - env={**os.environ, "UV_BUILD_UNMANAGED_INSTALL": str(uv_dir), "UV_UNMANAGED_INSTALL": str(uv_dir)}, - ) - uv = uv_dir / f"uv{EXE}" - subprocess.run( - [uv, "venv", str(venv_dir), "--python", sys.executable, "--clear"], - stdout=out, - check=True, - ) - pip_cmd = [uv, "pip", "install", "--pre", "--python", str(venv_dir / SCRIPTS_DIR / f"python{EXE}")] - - if not options.quiet: - print( - f"{CYAN}installing pyprojectx {BLUE}{options.version}: {options.pyprojectx_package} {RESET}", - file=sys.stderr, - ) - if options.version == "development": - if not options.quiet: - print( - f"{RED}WARNING: {options.pyprojectx_package} is installed in editable mode{RESET}", - file=sys.stderr, - ) - pip_cmd.append("-e") - subprocess.run([*pip_cmd, options.pyprojectx_package], stdout=out, check=True) - # create .gitignore file - gitignore_file = options.install_path / ".gitignore" - if not gitignore_file.is_file(): - gitignore_file.write_text("*\n") - - return pyprojectx_script - - -def download_wrappers(): - latest = "https://github.com/pyprojectx/pyprojectx/releases/latest/download/wrappers.zip" - zip_file, _ = request.urlretrieve(latest) # noqa: S310 - with zipfile.ZipFile(zip_file, "r") as zip_ref: - for entry in zip_ref.namelist(): - if Path(__file__).with_name(entry).is_file(): - zip_ref.extract(entry, Path(__file__).parent) - - -if __name__ == "__main__": - try: - run(sys.argv[1:]) - except KeyboardInterrupt: - sys.tracebacklimit = -1 - raise diff --git a/pw.bat b/pw.bat deleted file mode 100644 index 5a81b0841d..0000000000 --- a/pw.bat +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -python "%~dp0pw" %* diff --git a/pw.lock b/pw.lock deleted file mode 100644 index 84935b5baf..0000000000 --- a/pw.lock +++ /dev/null @@ -1,3 +0,0 @@ -[main] -requirements = ["uv==0.11.14"] -hash = "45210da832f9626829457a65e9e7c4d0" diff --git a/pw.ps1 b/pw.ps1 deleted file mode 100644 index 98524bba52..0000000000 --- a/pw.ps1 +++ /dev/null @@ -1 +0,0 @@ -python "$(Split-Path -Parent $MyInvocation.MyCommand.Definition)\pw" @args diff --git a/pyproject.toml b/pyproject.toml index b8e2b8026e..43f37eae8e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,6 @@ dependencies = [ dev = [ "pylint>=3.0.0a7", "ruff>=0.2.2", - "nodejs-wheel>=24.14.1,<25", "pdm-backend>=2.3.0", "typing_extensions>=4.12.2", "pytest>=8.2.2", @@ -49,11 +48,6 @@ lochelper = ["rich>=13.0", "textual>=0.70.0"] build-backend = "pdm.backend" requires = [ "pdm-backend>=2.3.0", - # required for building the pyright npm package to be bundled in the pypi package. - # cli is required due to dependencies with install scripts that assume node/npm is in the path - # corepack was removed in node 25 and we need it to install pnpm. we also have pnpm listed as a dev depenency - # so we don't have to run it thru corepack after the first install - "nodejs-wheel>=20.13.1,<25", # used in pdm_build.py: "typing_extensions>=4.12.2", "docify>=1.0.0", @@ -66,12 +60,6 @@ repository = "https://github.com/detachhead/basedpyright" basedpyright = 'basedpyright.pyright:main' basedpyright-langserver = 'basedpyright.langserver:main' -[tool.pyprojectx] -lock-python-version = "3.8" -main = ["uv"] -# ideally this would be in an uv dependency group but in the ci we need to install it outside of the project's venv -# so this is the easiest way to do it -mypy_primer = "-e ./mypy_primer" [tool.uv] default-groups = ["dev", "docstubs", "lochelper"] @@ -204,7 +192,6 @@ max-line-length = 200 pythonVersion = "3.8" # https://github.com/DetachHead/basedpyright/issues/31 ignore = [ - "pw", "basedpyright/dist", "packages", "docstubs", @@ -213,7 +200,6 @@ ignore = [ ".venv", ] exclude = [ - "pw", "basedpyright/dist", "packages", "docstubs", @@ -239,7 +225,6 @@ line-length = 100 preview = true unsafe-fixes = true extend-exclude = [ - "pw", "packages/pyright-internal/typeshed-fallback", "docstubs", "packages/pyright-internal/src/tests/samples", diff --git a/uv.lock b/uv.lock index 7c58e38821..292e2d4c87 100644 --- a/uv.lock +++ b/uv.lock @@ -25,7 +25,7 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/0d/3a/22ff5415bf4d296c1e92b07fd746ad42c96781f13295a074d58e77747848/aiosqlite-0.20.0.tar.gz", hash = "sha256:6d35c8c256637f4672f843c31021464090805bf925385ac39473fb16eaaca3d7", size = 21691, upload-time = "2024-02-20T06:12:53.915Z" } wheels = [ @@ -58,7 +58,7 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/9e/53/1067e1113ecaf58312357f2cd93063674924119d80d173adc3f6f2387aa2/astroid-3.2.4.tar.gz", hash = "sha256:0e14202810b30da1b735827f78f5157be2bbd4a7a59b7707ca0bfc2fb4c0063a", size = 397576, upload-time = "2024-07-20T12:57:43.26Z" } wheels = [ @@ -73,7 +73,7 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/18/74/dfb75f9ccd592bbedb175d4a32fc643cf569d7c218508bfbd6ea7ef9c091/astroid-3.3.11.tar.gz", hash = "sha256:1e5a5011af2920c7c67a53f65d536d65bfa7116feeaf2354d8b94f29573bb0ce", size = 400439, upload-time = "2025-07-13T18:04:23.177Z" } wheels = [ @@ -92,7 +92,7 @@ resolution-markers = [ "python_full_version == '3.10.*'", ] dependencies = [ - { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/07/63/0adf26577da5eff6eb7a177876c1cfa213856be9926a000f65c4add9692b/astroid-4.0.4.tar.gz", hash = "sha256:986fed8bcf79fb82c78b18a53352a0b287a73817d6dbcfba3162da36667c49a0", size = 406358, upload-time = "2026-02-07T23:35:07.509Z" } wheels = [ @@ -212,7 +212,6 @@ dev = [ { name = "mkdocs-awesome-pages-plugin", version = "2.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.8.1'" }, { name = "mkdocs-macros-plugin" }, { name = "mkdocs-material" }, - { name = "nodejs-wheel" }, { name = "pdm-backend", version = "2.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, { name = "pdm-backend", version = "2.4.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, { name = "pylint", version = "3.2.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, @@ -251,7 +250,6 @@ dev = [ { name = "mkdocs-awesome-pages-plugin", specifier = ">=2.9.2" }, { name = "mkdocs-macros-plugin", specifier = ">=1.2.0" }, { name = "mkdocs-material", specifier = ">=9.5.37" }, - { name = "nodejs-wheel", specifier = ">=24.14.1,<25" }, { name = "pdm-backend", specifier = ">=2.3.0" }, { name = "pylint", specifier = ">=3.0.0a7" }, { name = "pytest", specifier = ">=8.2.2" }, @@ -305,9 +303,9 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "attrs", version = "25.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "exceptiongroup", marker = "python_full_version < '3.9'" }, - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "attrs", version = "25.3.0", source = { registry = "https://pypi.org/simple" } }, + { name = "exceptiongroup" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/29/7b/da4aa2f95afb2f28010453d03d6eedf018f9e085bd001f039e15731aba89/cattrs-24.1.3.tar.gz", hash = "sha256:981a6ef05875b5bb0c7fb68885546186d306f10f0f6718fe9b96c226e68821ff", size = 426684, upload-time = "2025-03-25T15:01:00.325Z" } wheels = [ @@ -322,9 +320,9 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "attrs", version = "26.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "exceptiongroup", marker = "python_full_version == '3.9.*'" }, - { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "attrs", version = "26.1.0", source = { registry = "https://pypi.org/simple" } }, + { name = "exceptiongroup" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/6e/00/2432bb2d445b39b5407f0a90e01b9a271475eea7caf913d7a86bcb956385/cattrs-25.3.0.tar.gz", hash = "sha256:1ac88d9e5eda10436c4517e390a4142d88638fe682c436c93db7ce4a277b884a", size = 509321, upload-time = "2025-10-07T12:26:08.737Z" } wheels = [ @@ -343,9 +341,9 @@ resolution-markers = [ "python_full_version == '3.10.*'", ] dependencies = [ - { name = "attrs", version = "26.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "exceptiongroup", marker = "python_full_version == '3.10.*'" }, - { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "attrs", version = "26.1.0", source = { registry = "https://pypi.org/simple" } }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/a0/ec/ba18945e7d6e55a58364d9fb2e46049c1c2998b3d805f19b703f14e81057/cattrs-26.1.0.tar.gz", hash = "sha256:fa239e0f0ec0715ba34852ce813986dfed1e12117e209b816ab87401271cdd40", size = 495672, upload-time = "2026-02-18T22:15:19.406Z" } wheels = [ @@ -507,7 +505,7 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "colorama", marker = "python_full_version < '3.10' and sys_platform == 'win32'" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593, upload-time = "2024-12-21T18:38:44.339Z" } wheels = [ @@ -526,7 +524,7 @@ resolution-markers = [ "python_full_version == '3.10.*'", ] dependencies = [ - { name = "colorama", marker = "python_full_version >= '3.10' and sys_platform == 'win32'" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/23/e4/796662cd90cf80e3a363c99db2b88e0e394b988a575f60a17e16440cd011/click-8.4.0.tar.gz", hash = "sha256:638f1338fe1235c8f4e008e4a8a254fb5c5fbdcbb40ece3c9142ebb78e792973", size = 350843, upload-time = "2026-05-17T00:47:58.425Z" } wheels = [ @@ -591,7 +589,7 @@ name = "exceptiongroup" version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9' or python_full_version >= '3.11'" }, { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } @@ -638,7 +636,7 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "zipp", version = "3.20.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "zipp", version = "3.20.2", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", size = 55304, upload-time = "2024-09-11T14:56:08.937Z" } wheels = [ @@ -653,7 +651,7 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "zipp", version = "3.23.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "zipp", version = "3.23.1", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload-time = "2025-12-21T10:00:19.278Z" } wheels = [ @@ -669,7 +667,7 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "zipp", version = "3.20.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "zipp", version = "3.20.2", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/98/be/f3e8c6081b684f176b761e6a2fef02a0be939740ed6f54109a2951d806f3/importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065", size = 43372, upload-time = "2024-09-09T17:03:14.677Z" } wheels = [ @@ -684,7 +682,7 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "zipp", version = "3.23.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "zipp", version = "3.23.1", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693, upload-time = "2025-01-03T18:51:56.698Z" } wheels = [ @@ -742,7 +740,7 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "importlib-metadata", version = "8.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "importlib-metadata", version = "8.7.1", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/1e/82/fa43935523efdfcce6abbae9da7f372b627b27142c3419fcf13bf5b0c397/isort-6.1.0.tar.gz", hash = "sha256:9b8f96a14cfee0677e78e941ff62f03769a06d412aabb9e2a90487b3b7e8d481", size = 824325, upload-time = "2025-10-01T16:26:45.027Z" } wheels = [ @@ -787,9 +785,9 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "pyyaml", marker = "python_full_version < '3.9'" }, - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "typing-inspect", marker = "python_full_version < '3.9'" }, + { name = "pyyaml" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" } }, + { name = "typing-inspect" }, ] sdist = { url = "https://files.pythonhosted.org/packages/81/ef/610498b5e982d9dd64f2af8422ece1be44a946a8dbda15d08087e0e1ff08/libcst-1.1.0.tar.gz", hash = "sha256:0acbacb9a170455701845b7e940e2d7b9519db35a86768d86330a0b0deae1086", size = 764691, upload-time = "2023-10-06T02:50:16.255Z" } wheels = [ @@ -838,9 +836,9 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "pyyaml", marker = "python_full_version >= '3.14' or (python_full_version >= '3.9' and python_full_version < '3.13')" }, + { name = "pyyaml", marker = "python_full_version != '3.13.*'" }, { name = "pyyaml-ft", marker = "python_full_version == '3.13.*'" }, - { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/de/cd/337df968b38d94c5aabd3e1b10630f047a2b345f6e1d4456bd9fe7417537/libcst-1.8.6.tar.gz", hash = "sha256:f729c37c9317126da9475bdd06a7208eb52fcbd180a6341648b45a56b4ba708b", size = 891354, upload-time = "2025-11-03T22:33:30.621Z" } wheels = [ @@ -920,7 +918,7 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "uc-micro-py", version = "1.0.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "uc-micro-py", version = "1.0.3", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/2a/ae/bb56c6828e4797ba5a4821eec7c43b8bf40f69cda4d4f5f8c8a2810ec96a/linkify-it-py-2.0.3.tar.gz", hash = "sha256:68cda27e162e9215c17d786649d1da0021a451bdc436ef9e0fa0ba5234b9b048", size = 27946, upload-time = "2024-02-04T14:48:04.179Z" } wheels = [ @@ -939,7 +937,7 @@ resolution-markers = [ "python_full_version == '3.10.*'", ] dependencies = [ - { name = "uc-micro-py", version = "2.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "uc-micro-py", version = "2.0.0", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/2e/c9/06ea13676ef354f0af6169587ae292d3e2406e212876a413bf9eece4eb23/linkify_it_py-2.1.0.tar.gz", hash = "sha256:43360231720999c10e9328dc3691160e27a718e280673d444c38d7d3aaa3b98b", size = 29158, upload-time = "2026-03-01T07:48:47.683Z" } wheels = [ @@ -955,12 +953,12 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "aiosqlite", version = "0.20.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "importlib-resources", version = "6.4.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "platformdirs", version = "4.3.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "pygls", version = "1.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "stamina", version = "25.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "textual", version = "0.73.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.8.1'" }, + { name = "aiosqlite", version = "0.20.0", source = { registry = "https://pypi.org/simple" } }, + { name = "importlib-resources", version = "6.4.5", source = { registry = "https://pypi.org/simple" } }, + { name = "platformdirs", version = "4.3.6", source = { registry = "https://pypi.org/simple" } }, + { name = "pygls", version = "1.3.1", source = { registry = "https://pypi.org/simple" } }, + { name = "stamina", version = "25.1.0", source = { registry = "https://pypi.org/simple" } }, + { name = "textual", version = "0.73.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.8.1' or python_full_version >= '3.9'" }, { name = "textual", version = "6.2.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.8.1' and python_full_version < '3.9'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f9/a1/1270b2d37c9d012ecfb1aa40352cc8d5fe42fb6b42d4968c5256605740fa/lsp_devtools-0.2.3.tar.gz", hash = "sha256:9c7aee5e1f4f8afe0e8def74633a9af2b093fa23af5b93525462e9e49622f755", size = 27899, upload-time = "2024-05-22T18:49:43.798Z" } @@ -976,11 +974,11 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "aiosqlite", version = "0.22.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "platformdirs", version = "4.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "pygls", version = "2.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "stamina", version = "25.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "textual", version = "8.2.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "aiosqlite", version = "0.22.1", source = { registry = "https://pypi.org/simple" } }, + { name = "platformdirs", version = "4.4.0", source = { registry = "https://pypi.org/simple" } }, + { name = "pygls", version = "2.1.1", source = { registry = "https://pypi.org/simple" } }, + { name = "stamina", version = "25.1.0", source = { registry = "https://pypi.org/simple" } }, + { name = "textual", version = "8.2.7", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/ce/9d/70afc9ed26f1040161e3877d57cd652b0649d4f4e6376b123676f2f20e08/lsp_devtools-0.2.4.tar.gz", hash = "sha256:4966daa77cbbecc43afc1af930859a3a56e689a17e09783fbc99d891a0dfabb6", size = 27078, upload-time = "2024-11-23T19:30:33.665Z" } wheels = [ @@ -999,11 +997,11 @@ resolution-markers = [ "python_full_version == '3.10.*'", ] dependencies = [ - { name = "aiosqlite", version = "0.22.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "platformdirs", version = "4.9.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "pygls", version = "2.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "stamina", version = "26.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "textual", version = "8.2.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "aiosqlite", version = "0.22.1", source = { registry = "https://pypi.org/simple" } }, + { name = "platformdirs", version = "4.9.6", source = { registry = "https://pypi.org/simple" } }, + { name = "pygls", version = "2.1.1", source = { registry = "https://pypi.org/simple" } }, + { name = "stamina", version = "26.1.0", source = { registry = "https://pypi.org/simple" } }, + { name = "textual", version = "8.2.7", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/d3/4d/c68335c76b9bf9ae00aa213c88e7e91da2ff6579b56c38a87e535bc2f33a/lsp_devtools-0.4.0.tar.gz", hash = "sha256:9fdb21b50f9ff0c0cbcdcf8c369195cc08e70dbccf2321db62c60c46b63fb38b", size = 37438, upload-time = "2026-03-23T19:40:36.01Z" } wheels = [ @@ -1019,8 +1017,8 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "attrs", version = "25.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "cattrs", version = "24.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "attrs", version = "25.3.0", source = { registry = "https://pypi.org/simple" } }, + { name = "cattrs", version = "24.1.3", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/9d/f6/6e80484ec078d0b50699ceb1833597b792a6c695f90c645fbaf54b947e6f/lsprotocol-2023.0.1.tar.gz", hash = "sha256:cc5c15130d2403c18b734304339e51242d3018a05c4f7d0f198ad6e0cd21861d", size = 69434, upload-time = "2024-01-09T17:21:12.625Z" } wheels = [ @@ -1040,8 +1038,8 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "attrs", version = "26.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "cattrs", version = "25.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "attrs", version = "26.1.0", source = { registry = "https://pypi.org/simple" } }, + { name = "cattrs", version = "25.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "cattrs", version = "26.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e9/26/67b84e6ec1402f0e6764ef3d2a0aaf9a79522cc1d37738f4e5bb0b21521a/lsprotocol-2025.0.0.tar.gz", hash = "sha256:e879da2b9301e82cfc3e60d805630487ac2f7ab17492f4f5ba5aaba94fe56c29", size = 74896, upload-time = "2025-06-17T21:30:18.156Z" } @@ -1058,7 +1056,7 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "importlib-metadata", version = "8.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "importlib-metadata", version = "8.5.0", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/54/28/3af612670f82f4c056911fbbbb42760255801b3068c48de792d354ff4472/markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2", size = 357086, upload-time = "2024-08-16T15:55:17.812Z" } wheels = [ @@ -1073,7 +1071,7 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "importlib-metadata", version = "8.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "importlib-metadata", version = "8.7.1", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/8d/37/02347f6d6d8279247a5837082ebc26fc0d5aaeaf75aa013fcbb433c777ab/markdown-3.9.tar.gz", hash = "sha256:d2900fe1782bd33bdbbd56859defef70c2e78fc46668f8eb9df3128138f2cb6a", size = 364585, upload-time = "2025-09-04T20:25:22.885Z" } wheels = [ @@ -1106,7 +1104,7 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "mdurl", marker = "python_full_version < '3.10'" }, + { name = "mdurl" }, ] sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload-time = "2023-06-03T06:41:14.443Z" } wheels = [ @@ -1115,10 +1113,10 @@ wheels = [ [package.optional-dependencies] linkify = [ - { name = "linkify-it-py", version = "2.0.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "linkify-it-py", version = "2.0.3", source = { registry = "https://pypi.org/simple" } }, ] plugins = [ - { name = "mdit-py-plugins", version = "0.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "mdit-py-plugins", version = "0.4.2", source = { registry = "https://pypi.org/simple" } }, ] [[package]] @@ -1133,7 +1131,7 @@ resolution-markers = [ "python_full_version == '3.10.*'", ] dependencies = [ - { name = "mdurl", marker = "python_full_version >= '3.10'" }, + { name = "mdurl" }, ] sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49", size = 82454, upload-time = "2026-05-07T12:08:28.36Z" } wheels = [ @@ -1142,7 +1140,7 @@ wheels = [ [package.optional-dependencies] linkify = [ - { name = "linkify-it-py", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "linkify-it-py", version = "2.1.0", source = { registry = "https://pypi.org/simple" } }, ] [[package]] @@ -1330,7 +1328,7 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/19/03/a2ecab526543b152300717cf232bb4bb8605b6edb946c845016fa9c9c9fd/mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5", size = 43542, upload-time = "2024-09-09T20:27:49.564Z" } wheels = [ @@ -1349,7 +1347,7 @@ resolution-markers = [ "python_full_version == '3.10.*'", ] dependencies = [ - { name = "markdown-it-py", version = "4.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "markdown-it-py", version = "4.2.0", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/59/fc/f8d0863f8862f25602c0404d75568e89fb6b4109804645e5cdfb1be5cf56/mdit_py_plugins-0.6.1.tar.gz", hash = "sha256:a2bca0f039f39dbd35fb74ae1b5f998608c437463371f0ff7f49a19a17a114d0", size = 56114, upload-time = "2026-05-13T09:03:38.91Z" } wheels = [ @@ -1439,9 +1437,9 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "mkdocs", marker = "python_full_version < '3.8.1'" }, - { name = "natsort", marker = "python_full_version < '3.8.1'" }, - { name = "wcmatch", version = "10.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.8.1'" }, + { name = "mkdocs" }, + { name = "natsort" }, + { name = "wcmatch", version = "10.0", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/ac/7a/0a783218350dbf56182bfba23666159affb63072db3111f6d3a281798d5b/mkdocs_awesome_pages_plugin-2.9.2.tar.gz", hash = "sha256:c3f7d366ecfe99b64524c49a84d8e13c576c19a918ea2e6f59bb486a259313af", size = 15920, upload-time = "2023-08-19T21:30:33.029Z" } wheels = [ @@ -1462,9 +1460,9 @@ resolution-markers = [ "python_full_version >= '3.8.1' and python_full_version < '3.9'", ] dependencies = [ - { name = "mkdocs", marker = "python_full_version >= '3.8.1'" }, - { name = "natsort", marker = "python_full_version >= '3.8.1'" }, - { name = "wcmatch", version = "10.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.8.1' and python_full_version < '3.9'" }, + { name = "mkdocs" }, + { name = "natsort" }, + { name = "wcmatch", version = "10.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, { name = "wcmatch", version = "10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/92/e8/6ae9c18d8174a5d74ce4ade7a7f4c350955063968bc41ff1e5833cff4a2b/mkdocs_awesome_pages_plugin-2.10.1.tar.gz", hash = "sha256:cda2cb88c937ada81a4785225f20ef77ce532762f4500120b67a1433c1cdbb2f", size = 16303, upload-time = "2024-12-22T21:13:49.19Z" } @@ -1481,10 +1479,10 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "importlib-metadata", version = "8.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "mergedeep", marker = "python_full_version < '3.9'" }, - { name = "platformdirs", version = "4.3.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "pyyaml", marker = "python_full_version < '3.9'" }, + { name = "importlib-metadata", version = "8.5.0", source = { registry = "https://pypi.org/simple" } }, + { name = "mergedeep" }, + { name = "platformdirs", version = "4.3.6", source = { registry = "https://pypi.org/simple" } }, + { name = "pyyaml" }, ] sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload-time = "2023-11-20T17:51:09.981Z" } wheels = [ @@ -1504,11 +1502,11 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "importlib-metadata", version = "8.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "mergedeep", marker = "python_full_version >= '3.9'" }, - { name = "platformdirs", version = "4.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "importlib-metadata", version = "8.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "mergedeep" }, + { name = "platformdirs", version = "4.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "platformdirs", version = "4.9.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "pyyaml", marker = "python_full_version >= '3.9'" }, + { name = "pyyaml" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ce/25/b3cccb187655b9393572bde9b09261d267c3bf2f2cdabe347673be5976a6/mkdocs_get_deps-0.2.2.tar.gz", hash = "sha256:8ee8d5f316cdbbb2834bc1df6e69c08fe769a83e040060de26d3c19fad3599a1", size = 11047, upload-time = "2026-03-10T02:46:33.632Z" } wheels = [ @@ -1598,18 +1596,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ef/82/7a9d0550484a62c6da82858ee9419f3dd1ccc9aa1c26a1e43da3ecd20b0d/natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c", size = 38268, upload-time = "2023-06-20T04:17:17.522Z" }, ] -[[package]] -name = "nodejs-wheel" -version = "24.15.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "nodejs-wheel-binaries" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d0/bd/d08ebc39887cc59669ccc52c3b394f7674352d94b9f642ffa520eb9b8f29/nodejs_wheel-24.15.0.tar.gz", hash = "sha256:4ed5ad3634e0490dd95ebf6fe5cf054d11b78f236a3fc7e7d3c367e16eaec418", size = 2968, upload-time = "2026-04-19T15:48:15.724Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/3e/91fb9aa2de8872e63ded2c95184ce15de8ad24a47afcd25212d4df919d05/nodejs_wheel-24.15.0-py3-none-any.whl", hash = "sha256:4703a436b1a7b933c8769e03117c56181acd616535c37dd439197eab5db9d83d", size = 3985, upload-time = "2026-04-19T15:47:30.753Z" }, -] - [[package]] name = "nodejs-wheel-binaries" version = "24.15.0" @@ -1683,7 +1669,7 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "importlib-metadata", version = "8.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "importlib-metadata", version = "8.5.0", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/d9/bf/d75d568521cef171ae9138d9ab55c169a98ee803853ca87b7096e4636d5b/pdm_backend-2.4.3.tar.gz", hash = "sha256:dbd9047a7ac10d11a5227e97163b617ad5d665050476ff63867d971758200728", size = 117684, upload-time = "2024-10-23T08:27:45.933Z" } wheels = [ @@ -1703,7 +1689,7 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "importlib-metadata", version = "8.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "importlib-metadata", version = "8.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/7c/7e/6d441c8739a30820ec59517a88326789c201ae43a344b2ffb02fb2702d8e/pdm_backend-2.4.8.tar.gz", hash = "sha256:d8ef85d2c4306ee67195412d701fae9983e84ec6574598e26798ae26b7b3c7e0", size = 119572, upload-time = "2026-04-02T02:41:54.711Z" } wheels = [ @@ -1790,8 +1776,8 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "cattrs", version = "24.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "lsprotocol", version = "2023.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "cattrs", version = "24.1.3", source = { registry = "https://pypi.org/simple" } }, + { name = "lsprotocol", version = "2023.0.1", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/86/b9/41d173dad9eaa9db9c785a85671fc3d68961f08d67706dc2e79011e10b5c/pygls-1.3.1.tar.gz", hash = "sha256:140edceefa0da0e9b3c533547c892a42a7d2fd9217ae848c330c53d266a55018", size = 45527, upload-time = "2024-03-26T18:44:25.679Z" } wheels = [ @@ -1811,10 +1797,10 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "attrs", version = "26.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "cattrs", version = "25.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "attrs", version = "26.1.0", source = { registry = "https://pypi.org/simple" } }, + { name = "cattrs", version = "25.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "cattrs", version = "26.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "lsprotocol", version = "2025.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "lsprotocol", version = "2025.0.0", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/da/2e/7bbe061d175c0baddde8fc9edb908a4c31ba5d9165b8c68e3439c3a9f138/pygls-2.1.1.tar.gz", hash = "sha256:1da03ba9053201bb337dcdd8d121df70feb2a91e1a0dcc74de5da79755b1a201", size = 55091, upload-time = "2026-03-25T11:19:10.541Z" } wheels = [ @@ -1860,15 +1846,15 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "astroid", version = "3.2.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "colorama", marker = "python_full_version < '3.9' and sys_platform == 'win32'" }, - { name = "dill", version = "0.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "isort", version = "5.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "mccabe", marker = "python_full_version < '3.9'" }, - { name = "platformdirs", version = "4.3.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "tomli", marker = "python_full_version < '3.9'" }, - { name = "tomlkit", version = "0.13.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "astroid", version = "3.2.4", source = { registry = "https://pypi.org/simple" } }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "dill", version = "0.4.0", source = { registry = "https://pypi.org/simple" } }, + { name = "isort", version = "5.13.2", source = { registry = "https://pypi.org/simple" } }, + { name = "mccabe" }, + { name = "platformdirs", version = "4.3.6", source = { registry = "https://pypi.org/simple" } }, + { name = "tomli" }, + { name = "tomlkit", version = "0.13.3", source = { registry = "https://pypi.org/simple" } }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/cf/e8/d59ce8e54884c9475ed6510685ef4311a10001674c28703b23da30f3b24d/pylint-3.2.7.tar.gz", hash = "sha256:1b7a721b575eaeaa7d39db076b6e7743c993ea44f57979127c517c6c572c803e", size = 1511922, upload-time = "2024-08-31T14:26:26.851Z" } wheels = [ @@ -1883,15 +1869,15 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "astroid", version = "3.3.11", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "colorama", marker = "python_full_version == '3.9.*' and sys_platform == 'win32'" }, - { name = "dill", version = "0.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "isort", version = "6.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "mccabe", marker = "python_full_version == '3.9.*'" }, - { name = "platformdirs", version = "4.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "tomli", marker = "python_full_version == '3.9.*'" }, - { name = "tomlkit", version = "0.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "astroid", version = "3.3.11", source = { registry = "https://pypi.org/simple" } }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "dill", version = "0.4.1", source = { registry = "https://pypi.org/simple" } }, + { name = "isort", version = "6.1.0", source = { registry = "https://pypi.org/simple" } }, + { name = "mccabe" }, + { name = "platformdirs", version = "4.4.0", source = { registry = "https://pypi.org/simple" } }, + { name = "tomli" }, + { name = "tomlkit", version = "0.15.0", source = { registry = "https://pypi.org/simple" } }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/04/9d/81c84a312d1fa8133b0db0c76148542a98349298a01747ab122f9314b04e/pylint-3.3.9.tar.gz", hash = "sha256:d312737d7b25ccf6b01cc4ac629b5dcd14a0fcf3ec392735ac70f137a9d5f83a", size = 1525946, upload-time = "2025-10-05T18:41:43.786Z" } wheels = [ @@ -1910,14 +1896,14 @@ resolution-markers = [ "python_full_version == '3.10.*'", ] dependencies = [ - { name = "astroid", version = "4.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "colorama", marker = "python_full_version >= '3.10' and sys_platform == 'win32'" }, - { name = "dill", version = "0.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "isort", version = "8.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "mccabe", marker = "python_full_version >= '3.10'" }, - { name = "platformdirs", version = "4.9.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "tomli", marker = "python_full_version == '3.10.*'" }, - { name = "tomlkit", version = "0.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "astroid", version = "4.0.4", source = { registry = "https://pypi.org/simple" } }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "dill", version = "0.4.1", source = { registry = "https://pypi.org/simple" } }, + { name = "isort", version = "8.0.1", source = { registry = "https://pypi.org/simple" } }, + { name = "mccabe" }, + { name = "platformdirs", version = "4.9.6", source = { registry = "https://pypi.org/simple" } }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "tomlkit", version = "0.15.0", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/e4/b6/74d9a8a68b8067efce8d07707fe6a236324ee1e7808d2eb3646ec8517c7d/pylint-4.0.5.tar.gz", hash = "sha256:8cd6a618df75deb013bd7eb98327a95f02a6fb839205a6bbf5456ef96afb317c", size = 1572474, upload-time = "2026-02-20T09:07:33.621Z" } wheels = [ @@ -1933,8 +1919,8 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "markdown", version = "3.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "pyyaml", marker = "python_full_version < '3.9'" }, + { name = "markdown", version = "3.7", source = { registry = "https://pypi.org/simple" } }, + { name = "pyyaml" }, ] sdist = { url = "https://files.pythonhosted.org/packages/08/92/a7296491dbf5585b3a987f3f3fc87af0e632121ff3e490c14b5f2d2b4eb5/pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7", size = 852320, upload-time = "2025-04-27T23:48:29.183Z" } wheels = [ @@ -1954,9 +1940,9 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "markdown", version = "3.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "markdown", version = "3.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "markdown", version = "3.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "pyyaml", marker = "python_full_version >= '3.9'" }, + { name = "pyyaml" }, ] sdist = { url = "https://files.pythonhosted.org/packages/9e/26/d1015444da4d952a1ca487a236b522eb979766f0295a0bd0c5fc089989a9/pymdown_extensions-10.21.3.tar.gz", hash = "sha256:72cfcf55f07aea0d4af2c4f11dd4e52466ddfb1bb819673146398e0bd3a77354", size = 854140, upload-time = "2026-05-13T12:57:32.267Z" } wheels = [ @@ -2002,12 +1988,12 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "colorama", marker = "python_full_version < '3.9' and sys_platform == 'win32'" }, - { name = "exceptiongroup", marker = "python_full_version < '3.9'" }, - { name = "iniconfig", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "packaging", marker = "python_full_version < '3.9'" }, - { name = "pluggy", version = "1.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "tomli", marker = "python_full_version < '3.9'" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup" }, + { name = "iniconfig", version = "2.1.0", source = { registry = "https://pypi.org/simple" } }, + { name = "packaging" }, + { name = "pluggy", version = "1.5.0", source = { registry = "https://pypi.org/simple" } }, + { name = "tomli" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } wheels = [ @@ -2022,13 +2008,13 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "colorama", marker = "python_full_version == '3.9.*' and sys_platform == 'win32'" }, - { name = "exceptiongroup", marker = "python_full_version == '3.9.*'" }, - { name = "iniconfig", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "packaging", marker = "python_full_version == '3.9.*'" }, - { name = "pluggy", version = "1.6.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "pygments", version = "2.20.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "tomli", marker = "python_full_version == '3.9.*'" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup" }, + { name = "iniconfig", version = "2.1.0", source = { registry = "https://pypi.org/simple" } }, + { name = "packaging" }, + { name = "pluggy", version = "1.6.0", source = { registry = "https://pypi.org/simple" } }, + { name = "pygments", version = "2.20.0", source = { registry = "https://pypi.org/simple" } }, + { name = "tomli" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } wheels = [ @@ -2047,13 +2033,13 @@ resolution-markers = [ "python_full_version == '3.10.*'", ] dependencies = [ - { name = "colorama", marker = "python_full_version >= '3.10' and sys_platform == 'win32'" }, - { name = "exceptiongroup", marker = "python_full_version == '3.10.*'" }, - { name = "iniconfig", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "packaging", marker = "python_full_version >= '3.10'" }, - { name = "pluggy", version = "1.6.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "pygments", version = "2.20.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "tomli", marker = "python_full_version == '3.10.*'" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "iniconfig", version = "2.3.0", source = { registry = "https://pypi.org/simple" } }, + { name = "packaging" }, + { name = "pluggy", version = "1.6.0", source = { registry = "https://pypi.org/simple" } }, + { name = "pygments", version = "2.20.0", source = { registry = "https://pypi.org/simple" } }, + { name = "tomli", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" } wheels = [ @@ -2070,7 +2056,7 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "pytest", version = "8.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "pytest", version = "8.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version != '3.9.*'" }, { name = "pytest", version = "8.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/39/d4/c54ee6a871eee4a7468e3a8c0dead28e634c0bc2110c694309dcb7563a66/pytest_github_actions_annotate_failures-0.3.0.tar.gz", hash = "sha256:d4c3177c98046c3900a7f8ddebb22ea54b9f6822201b5d3ab8fcdea51e010db7", size = 11248, upload-time = "2025-01-17T22:39:32.722Z" } @@ -2090,7 +2076,7 @@ resolution-markers = [ "python_full_version == '3.10.*'", ] dependencies = [ - { name = "pytest", version = "9.0.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pytest", version = "9.0.3", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/c2/e1/8f2c242e6d75a26a8e5ddcc23f652a411e4aac3eedc4b923808ac0582685/pytest_github_actions_annotate_failures-0.4.0.tar.gz", hash = "sha256:77d6baa29c8c61c2dacc494fa76eb95a185f0ee61666714ac43fb12ea672d217", size = 10857, upload-time = "2026-03-02T18:57:40.919Z" } wheels = [ @@ -2207,7 +2193,7 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "pyyaml", marker = "python_full_version < '3.9'" }, + { name = "pyyaml" }, ] sdist = { url = "https://files.pythonhosted.org/packages/fb/8e/da1c6c58f751b70f8ceb1eb25bc25d524e8f14fe16edcce3f4e3ba08629c/pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", size = 5631, upload-time = "2020-11-12T02:38:26.239Z" } wheels = [ @@ -2227,7 +2213,7 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "pyyaml", marker = "python_full_version >= '3.9'" }, + { name = "pyyaml" }, ] sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737, upload-time = "2025-05-13T15:24:01.64Z" } wheels = [ @@ -2267,10 +2253,10 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "certifi", marker = "python_full_version < '3.9'" }, - { name = "charset-normalizer", marker = "python_full_version < '3.9'" }, - { name = "idna", marker = "python_full_version < '3.9'" }, - { name = "urllib3", version = "2.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3", version = "2.2.3", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } wheels = [ @@ -2285,10 +2271,10 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "certifi", marker = "python_full_version == '3.9.*'" }, - { name = "charset-normalizer", marker = "python_full_version == '3.9.*'" }, - { name = "idna", marker = "python_full_version == '3.9.*'" }, - { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3", version = "2.6.3", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } wheels = [ @@ -2307,10 +2293,10 @@ resolution-markers = [ "python_full_version == '3.10.*'", ] dependencies = [ - { name = "certifi", marker = "python_full_version >= '3.10'" }, - { name = "charset-normalizer", marker = "python_full_version >= '3.10'" }, - { name = "idna", marker = "python_full_version >= '3.10'" }, - { name = "urllib3", version = "2.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3", version = "2.7.0", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } wheels = [ @@ -2326,8 +2312,8 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "pygments", version = "2.19.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" } }, + { name = "pygments", version = "2.19.2", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/e9/67/cae617f1351490c25a4b8ac3b8b63a4dda609295d8222bad12242dfdc629/rich-14.3.4.tar.gz", hash = "sha256:817e02727f2b25b40ef56f5aa2217f400c8489f79ca8f46ea2b70dd5e14558a9", size = 230524, upload-time = "2026-04-11T02:57:45.419Z" } wheels = [ @@ -2347,9 +2333,9 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "markdown-it-py", version = "4.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "pygments", version = "2.20.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "pygments", version = "2.20.0", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680, upload-time = "2026-04-12T08:24:00.75Z" } wheels = [ @@ -2400,9 +2386,9 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "tenacity", version = "9.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "tenacity", version = "9.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version != '3.9.*'" }, { name = "tenacity", version = "9.1.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version != '3.9.*'" }, { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/fd/c4/d242d76ffc88aa1fd14214d3143b542857b32276db4a20f8d99669054a5e/stamina-25.1.0.tar.gz", hash = "sha256:ad674809796ae40512b3b6296cfade826efd63863ff2ca2f59f806342e91e94a", size = 561127, upload-time = "2025-03-12T09:37:08.217Z" } @@ -2422,7 +2408,7 @@ resolution-markers = [ "python_full_version == '3.10.*'", ] dependencies = [ - { name = "tenacity", version = "9.1.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "tenacity", version = "9.1.4", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/80/bd/b2f71ae14368a066f103d182f25bbc6c3bf4aa695889f3ed3cba026d6f36/stamina-26.1.0.tar.gz", hash = "sha256:0214d05fdf5102c518194a4aac7520ce53cf660550ae3b940701aad88cf50c17", size = 568171, upload-time = "2026-04-13T17:44:31.012Z" } wheels = [ @@ -2531,9 +2517,9 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" }, extra = ["linkify", "plugins"], marker = "python_full_version < '3.8.1'" }, - { name = "rich", version = "14.3.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.8.1'" }, - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.8.1'" }, + { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" }, extra = ["linkify", "plugins"] }, + { name = "rich", version = "14.3.4", source = { registry = "https://pypi.org/simple" } }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/d8/e9/4939bf72d4a7d1a37aa5d55ad4438594a9d5e59875195dd89e9d8c14a9a9/textual-0.73.0.tar.gz", hash = "sha256:ccd1e873370577f557dfdf2b3411f2a4f68b57d4365f9d83a00d084afb15f5a6", size = 1291992, upload-time = "2024-07-18T15:42:55.233Z" } wheels = [ @@ -2548,11 +2534,11 @@ resolution-markers = [ "python_full_version >= '3.8.1' and python_full_version < '3.9'", ] dependencies = [ - { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" }, extra = ["linkify", "plugins"], marker = "python_full_version >= '3.8.1' and python_full_version < '3.9'" }, - { name = "platformdirs", version = "4.3.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.8.1' and python_full_version < '3.9'" }, - { name = "pygments", version = "2.19.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.8.1' and python_full_version < '3.9'" }, - { name = "rich", version = "14.3.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.8.1' and python_full_version < '3.9'" }, - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.8.1' and python_full_version < '3.9'" }, + { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" }, extra = ["linkify", "plugins"] }, + { name = "platformdirs", version = "4.3.6", source = { registry = "https://pypi.org/simple" } }, + { name = "pygments", version = "2.19.2", source = { registry = "https://pypi.org/simple" } }, + { name = "rich", version = "14.3.4", source = { registry = "https://pypi.org/simple" } }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/a2/30/38b615f7d4b16f6fdd73e4dcd8913e2d880bbb655e68a076e3d91181a7ee/textual-6.2.1.tar.gz", hash = "sha256:4699d8dfae43503b9c417bd2a6fb0da1c89e323fe91c4baa012f9298acaa83e1", size = 1570645, upload-time = "2025-10-01T16:11:24.467Z" } wheels = [ @@ -2572,15 +2558,15 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" }, extra = ["linkify"], marker = "python_full_version == '3.9.*'" }, + { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" }, extra = ["linkify"], marker = "python_full_version < '3.10'" }, { name = "markdown-it-py", version = "4.2.0", source = { registry = "https://pypi.org/simple" }, extra = ["linkify"], marker = "python_full_version >= '3.10'" }, - { name = "mdit-py-plugins", version = "0.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "mdit-py-plugins", version = "0.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "mdit-py-plugins", version = "0.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "platformdirs", version = "4.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" }, + { name = "platformdirs", version = "4.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "platformdirs", version = "4.9.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "pygments", version = "2.20.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "rich", version = "15.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, - { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "pygments", version = "2.20.0", source = { registry = "https://pypi.org/simple" } }, + { name = "rich", version = "15.0.0", source = { registry = "https://pypi.org/simple" } }, + { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/9b/7a/c519db0aba5024f86e71e9631810bfdd6866ed2c8695bd7fa34b90e7ef59/textual-8.2.7.tar.gz", hash = "sha256:658f568ff81e30ed43890c3e07520390e5cf1b4763822006e060656b0a88f105", size = 1859249, upload-time = "2026-05-19T10:52:49.531Z" } wheels = [ @@ -2718,8 +2704,8 @@ name = "typing-inspect" version = "0.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "mypy-extensions", marker = "python_full_version < '3.9'" }, - { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "mypy-extensions" }, + { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/dc/74/1789779d91f1961fa9438e9a8710cdae6bd138c80d7303996933d117264a/typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78", size = 13825, upload-time = "2023-05-24T20:25:47.612Z" } wheels = [ @@ -2906,7 +2892,7 @@ resolution-markers = [ "python_full_version < '3.8.1'", ] dependencies = [ - { name = "bracex", version = "2.5.post1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "bracex", version = "2.5.post1", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/41/ab/b3a52228538ccb983653c446c1656eddf1d5303b9cb8b9aef6a91299f862/wcmatch-10.0.tar.gz", hash = "sha256:e72f0de09bba6a04e0de70937b0cf06e55f36f37b3deb422dfaf854b867b840a", size = 115578, upload-time = "2024-09-26T18:39:52.505Z" } wheels = [ @@ -2926,7 +2912,7 @@ resolution-markers = [ "python_full_version == '3.9.*'", ] dependencies = [ - { name = "bracex", version = "2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "bracex", version = "2.6", source = { registry = "https://pypi.org/simple" } }, ] sdist = { url = "https://files.pythonhosted.org/packages/79/3e/c0bdc27cf06f4e47680bd5803a07cb3dfd17de84cde92dd217dcb9e05253/wcmatch-10.1.tar.gz", hash = "sha256:f11f94208c8c8484a16f4f48638a85d771d9513f4ab3f37595978801cb9465af", size = 117421, upload-time = "2025-06-22T19:14:02.49Z" } wheels = [