diff --git a/.flake8 b/.flake8 deleted file mode 100644 index a882cbdd0..000000000 --- a/.flake8 +++ /dev/null @@ -1,6 +0,0 @@ -[flake8] -max-line-length = 140 -extend-ignore = E203 -per-file-ignores = - # imported but unused - __init__.py: F401 diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 66a5787f8..8b2f9a5b6 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -54,17 +54,14 @@ jobs: uses: actions/checkout@v4 if: ${{ !inputs.branch }} - - name: Install Poetry - run: pipx install poetry + - name: Install uv + uses: astral-sh/setup-uv@v3 - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: "3.12" - cache: poetry + run: uv python install 3.12 - name: Install package - run: poetry install --all-extras + run: uv sync - name: Download binary run: curl -sL -o src/viam/rpc/libviam_rust_utils.${{ matrix.ext }} https://github.com/viamrobotics/rust-utils/releases/latest/download/libviam_rust_utils-${{ matrix.arch }}.${{ matrix.ext }} @@ -74,12 +71,12 @@ jobs: run: echo "This file enables arm7l support. PyPI doesn't allow for packages with the same hash, so this file must be added to differentiate this arm7l package from the arm6l package." > src/viam/arm7l.txt - name: Build - run: poetry build -f wheel + run: uv build --wheel - name: Rename run: | - echo "WHL_NAME=viam_sdk-$(poetry run python -c 'import viam; print(viam.__version__)')-py3-none-${{ matrix.whl }}.whl" >> $GITHUB_ENV - mv dist/viam_sdk-$(poetry run python -c "import viam; print(viam.__version__)")-py3-none-any.whl dist/viam_sdk-$(poetry run python -c 'import viam; print(viam.__version__)')-py3-none-${{ matrix.whl }}.whl + echo "WHL_NAME=viam_sdk-$(uv run python3 -c 'import viam; print(viam.__version__)')-py3-none-${{ matrix.whl }}.whl" >> $GITHUB_ENV + mv dist/viam_sdk-$(uv run python3 -c "import viam; print(viam.__version__)")-py3-none-any.whl dist/viam_sdk-$(uv run python3 -c 'import viam; print(viam.__version__)')-py3-none-${{ matrix.whl }}.whl - name: Upload artifacts uses: actions/upload-artifact@v4 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index aa2472094..33dfdf7c6 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -16,23 +16,21 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: "3.12" + - name: Install uv + uses: astral-sh/setup-uv@v3 - - name: Install Poetry - uses: snok/install-poetry@v1 + - name: Setup Python + run: uv python install 3.12 - name: Install package run: make install - name: Generate docs run: | - poetry run python3 -m docs.examples._server & - poetry run python3 -m examples.server.v1.server 0.0.0.0 9091 & + uv run python3 -m docs.examples._server & + uv run python3 -m examples.server.v1.server 0.0.0.0 9091 & sleep 2 - make documentation + uv run make documentation - name: Upload artifacts uses: actions/upload-artifact@v3 diff --git a/.github/workflows/license_finder.yml b/.github/workflows/license_finder.yml index 1feddc2bc..797260510 100644 --- a/.github/workflows/license_finder.yml +++ b/.github/workflows/license_finder.yml @@ -8,7 +8,7 @@ on: jobs: license_finder: - if: github.repository_owner == 'viamrobotics' + # if: github.repository_owner == 'viamrobotics' name: Audit 3rd-Party Licenses runs-on: ubuntu-latest timeout-minutes: 30 @@ -16,13 +16,11 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Install Poetry - run: pipx install poetry + - name: Install uv + uses: astral-sh/setup-uv@v3 - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: "3.11.5" + run: uv python install - uses: ruby/setup-ruby@v1 with: @@ -30,12 +28,9 @@ jobs: - run: gem install license_finder - - name: Install package - run: poetry install --all-extras - - name: Generate requirements.txt (exclude dev dependencies) run: | - poetry export -f requirements.txt --without-hashes > requirements.txt + uv pip compile pyproject.toml -o requirements.txt pip install -r requirements.txt - name: Run license finder diff --git a/.github/workflows/linkcheck.yml b/.github/workflows/linkcheck.yml index 5d420d51d..7a2c9a4a4 100644 --- a/.github/workflows/linkcheck.yml +++ b/.github/workflows/linkcheck.yml @@ -8,7 +8,7 @@ name: run-htmltest-external on: schedule: # 10am UTC on weekdays - - cron: '0 10 * * 1,2,3,4,5' + - cron: "0 10 * * 1,2,3,4,5" jobs: htmltest: runs-on: ubuntu-latest @@ -16,20 +16,19 @@ jobs: - name: Checkout Code uses: actions/checkout@v4 - - name: Setup Python - uses: actions/setup-python@v5 + - name: Install uv + uses: astral-sh/setup-uv@v3 with: - python-version: "3.12" + enable-cache: true - - name: Install Poetry - uses: snok/install-poetry@v1 + - name: Setup Python + run: uv python install 3.12 - name: Install package run: make install - name: Generate docs - run: | - make documentation + run: uv run make documentation - name: Test HTML # https://github.com/wjdp/htmltest-action/ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 682226f84..55e526f8e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: inputs: version: - description: "The type of version bump. Use `-s` for no change. See docs for details: https://python-poetry.org/docs/cli/#version" + description: "The type of version bump. Use `-s` for no change. See docs for details: https://hatch.pypa.io/latest/version/#supported-segments" type: choice required: true default: "-s" @@ -12,45 +12,55 @@ on: - major - minor - patch - - premajor - - preminor - - prepatch - - prerelease - - prerelease --next-phase - "-s" + prerelease: + description: "If this is a prerelease and which type. See docs for details: https://hatch.pypa.io/latest/version/#supported-segments" + type: choice + required: false + options: + - "alpha" + - "beta" + - "rc" jobs: prepare: if: github.repository_owner == 'viamrobotics' runs-on: ubuntu-latest outputs: - version: ${{ steps.bump_version.outputs.version }} + version: ${{ steps.set_version.outputs.version }} steps: - name: Checkout Code uses: actions/checkout@v4 - - name: Install Poetry - run: pipx install poetry + - name: Install uv + uses: astral-sh/setup-uv@v3 - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: "3.12" - cache: poetry + run: uv python install 3.12 - name: Install Package - run: poetry install --all-extras + run: uv sync --all-extras - name: Clean Format Test - run: make clean format typecheck test + run: uv run make clean format typecheck test + + - name: Bump Version + id: bump_version + shell: bash + if: inputs.version != '-s' && inputs.prerelease + run: echo "ABC" && uvx hatch version ${{ inputs.version }},${{ inputs.prerelease }} - name: Bump Version id: bump_version shell: bash + if: inputs.version != '-s' && !inputs.prerelease + run: echo "DEF" && uvx hatch version ${{ inputs.version }} + + - name: Set Version + id: set_version run: | - poetry version ${{ inputs.version }} - echo "SDK_VERSION=$(poetry version -s)" >> $GITHUB_ENV - echo "version=$(poetry version -s)" >> $GITHUB_OUTPUT + echo "SDK_VERSION=$(uvx hatch version)" >> $GITHUB_ENV + echo "version=$(uvx hatch version)" >> $GITHUB_OUTPUT - name: Check if release exists uses: cardinalby/git-get-release-action@1.2.4 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7148fe4b6..65cccc695 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,38 +22,35 @@ jobs: steps: - name: Checkout Push/Workflow Dispatch if: github.event_name == 'workflow_dispatch' || github.event_name == 'push' - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Checkout PR if: github.event_name == 'pull_request_target' - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} - - name: Install Poetry - run: pipx install poetry - - name: Setup python - uses: actions/setup-python@v5 + - name: Install uv + uses: astral-sh/setup-uv@v3 with: - python-version: ${{ matrix.python-version }} - cache: poetry + enable-cache: true - - name: Fix Poetry - run: poetry config installer.modern-installation false + - name: Setup Python + run: uv python install ${{ matrix.python-version }} - name: Install package run: make install - name: Install minimum package versions - run: poetry run pip install -r requirements-test.txt + run: uv pip install -r requirements-test.txt if: ${{ matrix.requirements-version == 'min' }} - name: Type Check - run: make typecheck + run: uv run make typecheck - name: Lint - run: make lint + run: uv run make lint - name: Test - run: make test + run: uv run make test - name: Test Documentation - run: make test_docs + run: uv run make test_docs diff --git a/.github/workflows/update_protos.yml b/.github/workflows/update_protos.yml index 0b6fc95fe..50862c2a1 100644 --- a/.github/workflows/update_protos.yml +++ b/.github/workflows/update_protos.yml @@ -20,25 +20,26 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} version: "28.2" - - name: Install Poetry - uses: snok/install-poetry@v1 + - name: Install uv + uses: astral-sh/setup-uv@v3 + with: + enable-cache: true - - name: Install package - run: | - poetry install --all-extras + - name: Setup Python + run: uv python install - name: Store API version run: | - python3 etc/_update_version_metadata.py src/viam/version_metadata.py ${{ github.event.client_payload.tag }} + uv run python3 etc/_update_version_metadata.py src/viam/version_metadata.py ${{ github.event.client_payload.tag }} echo "Updated API version to ${{ github.event.client_payload.tag }} in src/viam/version_metadata.py" - name: Generate buf - run: make buf + run: uv run make buf env: BUF_TOKEN: ${{ secrets.BUF_TOKEN }} - name: Format - run: make format + run: uv run make format - name: Add + Commit + Open PR shell: bash diff --git a/.vscode/settings.json b/.vscode/settings.json index a203d0ef7..6f25a6e8b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,23 +1,19 @@ { "[python]": { - "editor.defaultFormatter": "ms-python.black-formatter", - "editor.formatOnSave": true + "diffEditor.ignoreTrimWhitespace": false, + "editor.formatOnSave": true, + "editor.formatOnType": true, + "editor.defaultFormatter": "charliermarsh.ruff", + "editor.wordBasedSuggestions": "off", + "editor.rulers": [ + { + "color": "#777777", + "column": 140 + } + ] }, - "editor.formatOnSave": true, - "python.linting.ignorePatterns": [ - "**/site-packages/**/*.py", - ".vscode/*.py", - "gen/**/*", - "viam/proto/**/*" - ], "files.trimTrailingWhitespace": true, "files.insertFinalNewline": true, - "editor.rulers": [ - { - "column": 140, - "color": "#777777" - } - ], "cSpell.words": [ "frombytes", "grpclib", @@ -27,7 +23,7 @@ "segmenters", "TFLITE", "tobytes", - "viam" - ], - "isort.args": ["-l 140 --profile black"] + "viam", + "viamrobotics" + ] } diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 905be2f5a..000000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,7 +0,0 @@ -# Changelog - - - -## v0.1.0 (03/06/2022) - -- First release of `viam`! \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bf46d8c3f..dfe5cc4e8 100755 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,9 +9,9 @@ helps, and credit will always be given. If you are reporting a bug, please include: -* Your operating system name and version. -* Any details about your local setup that might be helpful in troubleshooting. -* Detailed steps to reproduce the bug. +- Your operating system name and version. +- Any details about your local setup that might be helpful in troubleshooting. +- Detailed steps to reproduce the bug. ### Fix Bugs @@ -33,30 +33,36 @@ on the web in blog posts, articles, and such. If you are proposing a feature: -* Explain in detail how it would work. -* Keep the scope as narrow as possible, to make it easier to implement. -* Remember that this is a volunteer-driven project, and that contributions +- Explain in detail how it would work. +- Keep the scope as narrow as possible, to make it easier to implement. +- Remember that this is a volunteer-driven project, and that contributions are welcome :) ## Get Started! Ready to contribute? Here's how to set up `viam` for local development. -1. Download a copy of `viam` locally. +### Prerequisites + +We use [`uv`](https://docs.astral.sh/uv/) to manage our environments and dependencies. Make sure you have `uv` installed. + +1. Download/clone a copy of `viam` locally. 2. Install `viam` using `make`: - ```console - $ make install - ``` + ```console + $ make install + ``` 3. Use `git` (or similar) to create a branch for local development and make your changes: - ```console - $ git checkout -b name-of-your-bugfix-or-feature - ``` + ```console + $ git checkout -b name-of-your-bugfix-or-feature + ``` 4. When you're done making changes, check that your changes conform to any code formatting requirements and pass any tests. +- When testing, make sure you use the correct virtual environment by running either `uv make test` or `source .venv/bin/activate; make test` + 5. Commit your changes and open a pull request. ## Pull Request Guidelines diff --git a/Makefile b/Makefile index 14f752ba8..4a22d1b01 100644 --- a/Makefile +++ b/Makefile @@ -1,85 +1,54 @@ +.PHONY: clean clean: find . -type d -name '__pycache__' | xargs rm -rf -_lint: - flake8 --exclude=**/gen/**,*_grpc.py,*_pb2.py,*_pb2.pyi,.tox,**/venv/**,.direnv - +.PHONY: lint lint: - poetry run $(MAKE) _lint - -_format: - black --exclude ".*/gen/.*" ./src ./tests ./docs/examples - isort ./src ./tests ./docs/examples + ruff check ./src ./tests +.PHONY: format format: - poetry run $(MAKE) _format - -_typecheck: - pyright - -typecheck: - poetry run $(MAKE) _typecheck + ruff format ./src ./tests + ruff check --select I --fix ./src ./tests -_buf: clean +.PHONY: buf +buf: clean rm -rf src/viam/gen chmod +x plugin/main.py - pip install protoletariat mypy-protobuf - poetry install + uv pip install protoletariat + uv pip install protobuf --upgrade $(eval API_VERSION := $(shell grep 'API_VERSION' src/viam/version_metadata.py | awk -F '"' '{print $$2}')) buf generate buf.build/viamrobotics/api:${API_VERSION} buf generate buf.build/viamrobotics/goutils protol -e googl* --in-place -s _grpc.py -s _pb2.py -s _pb2.pyi -o src/viam/gen buf buf.build/viamrobotics/api protol -e googl* --in-place -s _grpc.py -s _pb2.py -s _pb2.pyi -o src/viam/gen buf buf.build/viamrobotics/goutils find src/viam/gen -type d -exec touch {}/__init__.py \; - -buf: - poetry run $(MAKE) _buf - $(MAKE) better_imports - -_better_imports: python3 -m etc.generate_proto_import -v - @echo Add init files for specific documented protos - -better_imports: - poetry run $(MAKE) _better_imports - -_test_watch: - ptw . - -test_watch: - poetry run $(MAKE) _test_watch - -_test: - coverage run -m pytest && coverage html +.PHONY: test test: - poetry run $(MAKE) _test - -_test_docs: - pytest --nbmake "./docs" + coverage run -m pytest && coverage html +.PHONY: test_docs test_docs: kill -9 `ps aux | grep "[d]ocs.examples._server" | awk '{print $$2}'` || true kill -9 `ps aux | grep "[e]xamples.server.v1.server" | awk '{print $$2}'` || true - poetry run python3 -m docs.examples._server & - poetry run python3 -m examples.server.v1.server 0.0.0.0 9091 quiet & + python3 -m docs.examples._server & + python3 -m examples.server.v1.server 0.0.0.0 9091 quiet & sleep 3 - poetry run $(MAKE) _test_docs + pytest --nbmake "./docs" kill -9 `ps aux | grep "[d]ocs.examples._server" | awk '{print $$2}'` kill -9 `ps aux | grep "[e]xamples.server.v1.server" | awk '{print $$2}'` -tox: - poetry run tox - -_documentation: - cd docs && $(MAKE) clean html +.PHONY: typecheck +typecheck: + pyright +.PHONY: documentation documentation: - poetry run $(MAKE) _documentation - -package: clean buf better_imports format test - @echo "TODO: Create pip-installable package" + $(MAKE) -C docs clean html +.PHONY: install install: - poetry install --all-extras + uv sync --all-extras bash etc/postinstall.sh diff --git a/README.md b/README.md index 10eecc40f..9e6ca3eec 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ The Viam Python SDK uses native libraries to support communication over WebRTC, - If you provided the `--release` flag, the enclosing directory will be `release`: `rust-utils/target/release/libviam_rust_utils.*` - The extension of the executable will depend on your operating system. For example, on macOS it will be `libviam_rust_utils.dylib`, whereas on Linux it will be `libviam_rust_utils.so` 1. Copy the compiled library to the directory `viam-python-sdk/src/viam/rpc/` -1. From the `viam-python-sdk` directory, run `poetry build` to create an installable package +1. From the `viam-python-sdk` directory, run `uv build --wheel` to create an installable package 1. Find the newly created installable package located in `viam-python-sdk/dist/` and pip install it directly, for example: `pip install viam-python-sdk/dist/viam_sdk-0.1.0-py3-none-any.whl` If you have a macOS or Linux based operating system and do not want to build rust-utils manually, you can also look for the executable in the [releases](https://github.com/viamrobotics/rust-utils/releases/latest) page of the rust-utils library. @@ -53,7 +53,7 @@ If you have a macOS or Linux based operating system and do not want to build rus If you do **NOT** need communication over WebRTC (and thus, do not need the native library), the steps are: 1. Download/clone this repository -1. Run `poetry build` from the `viam-python-sdk` directory +1. Run `uv build --wheel` from the `viam-python-sdk` directory 1. Find the newly created installable package located in `viam-python-sdk/dist/` and pip install it directly, for example: `pip install viam-python-sdk/dist/viam_sdk-0.1.0-py3-none-any.whl` 1. Ensure that every connection has the option `disable_webrtc` set to `True`: `viam.rpc.dial.DialOptions(disable_webrtc=True)` - For more information about connecting to a robot, see the [documentation](https://python.viam.dev) and [example usage](https://python.viam.dev/examples/example.html) @@ -67,6 +67,7 @@ To create a client application, to navigate to [app.viam.com](https://app.viam.c 1. Create a location (for example `home`) 2. Create a robot (for example `arduino`) 3. Follow the steps on the setup tab: + 1. Setup Viam App Config on Single Board Computer (SBC) 2. Download and Install Viam Server 3. Wait until the robot shows as connected. If this doesn't happen try restarting the viam-server: @@ -127,6 +128,6 @@ The SDK provides a number of abstract base components and services (collectively ## License -Copyright 2021-2023 Viam Inc. +Copyright 2021-2024 Viam Inc. Apache 2.0 - See [LICENSE](https://github.com/viamrobotics/viam-python-sdk/blob/main/LICENSE) file diff --git a/buf.lock b/buf.lock deleted file mode 100644 index 38a602a2f..000000000 --- a/buf.lock +++ /dev/null @@ -1,15 +0,0 @@ -# Generated by buf. DO NOT EDIT. -version: v1 -deps: - - remote: buf.build - owner: googleapis - repository: googleapis - commit: 62f35d8aed1149c291d606d958a7ce32 - - remote: buf.build - owner: viamrobotics - repository: api - commit: ca0b55452786466ab26c1ca07ec6302f - - remote: buf.build - owner: viamrobotics - repository: goutils - commit: 97870753c5dc4acc86deaa33213df626 diff --git a/buf.yaml b/buf.yaml deleted file mode 100644 index 168981dd7..000000000 --- a/buf.yaml +++ /dev/null @@ -1,10 +0,0 @@ -version: v1 -breaking: - use: - - FILE -lint: - use: - - DEFAULT -deps: - - buf.build/viamrobotics/goutils - - buf.build/viamrobotics/api diff --git a/etc/_update_version_metadata.py b/etc/_update_version_metadata.py index 8d64e237e..d2c4c8280 100644 --- a/etc/_update_version_metadata.py +++ b/etc/_update_version_metadata.py @@ -6,7 +6,7 @@ def update_version(file_path: str, new_version: str): with open(file_path, "r") as file: data = file.read() - data = re.sub(r'(API_VERSION\s*=\s*)"[0-9]+\.[0-9]+\.[0-9]+"', f'\\1"{new_version}"', data) + data = re.sub(r'(API_VERSION\s*=\s*)"v[0-9]+\.[0-9]+\.[0-9]+"', f'\\1"{new_version}"', data) with open(file_path, 'w') as file: file.write(data) diff --git a/examples/server/v1/Makefile b/examples/server/v1/Makefile index c87b01ce2..44adbd01b 100644 --- a/examples/server/v1/Makefile +++ b/examples/server/v1/Makefile @@ -1,7 +1,7 @@ ROOT_DIR:=$(shell dirname $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))/../../../..) run_server: - cd ${ROOT_DIR} && poetry run python3 -m examples.server.v1.server + cd ${ROOT_DIR} && uv run python3 -m examples.server.v1.server run_client: - cd ${ROOT_DIR} && poetry run python3 -m examples.server.v1.client + cd ${ROOT_DIR} && uv run python3 -m examples.server.v1.client diff --git a/poetry.lock b/poetry.lock deleted file mode 100644 index 9b664d4eb..000000000 --- a/poetry.lock +++ /dev/null @@ -1,4068 +0,0 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. - -[[package]] -name = "alabaster" -version = "0.7.13" -description = "A configurable sidebar-enabled Sphinx theme" -optional = false -python-versions = ">=3.6" -files = [ - {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, - {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, -] - -[[package]] -name = "anyascii" -version = "0.3.2" -description = "Unicode to ASCII transliteration" -optional = false -python-versions = ">=3.3" -files = [ - {file = "anyascii-0.3.2-py3-none-any.whl", hash = "sha256:3b3beef6fc43d9036d3b0529050b0c48bfad8bc960e9e562d7223cfb94fe45d4"}, - {file = "anyascii-0.3.2.tar.gz", hash = "sha256:9d5d32ef844fe225b8bc7cba7f950534fae4da27a9bf3a6bea2cb0ea46ce4730"}, -] - -[[package]] -name = "anyio" -version = "4.5.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.8" -files = [ - {file = "anyio-4.5.0-py3-none-any.whl", hash = "sha256:fdeb095b7cc5a5563175eedd926ec4ae55413bb4be5770c424af0ba46ccb4a78"}, - {file = "anyio-4.5.0.tar.gz", hash = "sha256:c5a275fe5ca0afd788001f58fca1e69e29ce706d746e317d660e21f70c530ef9"}, -] - -[package.dependencies] -exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} -idna = ">=2.8" -sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} - -[package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] -trio = ["trio (>=0.26.1)"] - -[[package]] -name = "appnope" -version = "0.1.4" -description = "Disable App Nap on macOS >= 10.9" -optional = false -python-versions = ">=3.6" -files = [ - {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, - {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, -] - -[[package]] -name = "argon2-cffi" -version = "23.1.0" -description = "Argon2 for Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, - {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, -] - -[package.dependencies] -argon2-cffi-bindings = "*" - -[package.extras] -dev = ["argon2-cffi[tests,typing]", "tox (>4)"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"] -tests = ["hypothesis", "pytest"] -typing = ["mypy"] - -[[package]] -name = "argon2-cffi-bindings" -version = "21.2.0" -description = "Low-level CFFI bindings for Argon2" -optional = false -python-versions = ">=3.6" -files = [ - {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, - {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, -] - -[package.dependencies] -cffi = ">=1.0.1" - -[package.extras] -dev = ["cogapp", "pre-commit", "pytest", "wheel"] -tests = ["pytest"] - -[[package]] -name = "arrow" -version = "1.3.0" -description = "Better dates & times for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, - {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, -] - -[package.dependencies] -python-dateutil = ">=2.7.0" -types-python-dateutil = ">=2.8.10" - -[package.extras] -doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] -test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] - -[[package]] -name = "astroid" -version = "3.2.4" -description = "An abstract syntax tree for Python with inference support." -optional = false -python-versions = ">=3.8.0" -files = [ - {file = "astroid-3.2.4-py3-none-any.whl", hash = "sha256:413658a61eeca6202a59231abb473f932038fbcbf1666587f66d482083413a25"}, - {file = "astroid-3.2.4.tar.gz", hash = "sha256:0e14202810b30da1b735827f78f5157be2bbd4a7a59b7707ca0bfc2fb4c0063a"}, -] - -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} - -[[package]] -name = "astroid" -version = "3.3.4" -description = "An abstract syntax tree for Python with inference support." -optional = false -python-versions = ">=3.9.0" -files = [ - {file = "astroid-3.3.4-py3-none-any.whl", hash = "sha256:5eba185467253501b62a9f113c263524b4f5d55e1b30456370eed4cdbd6438fd"}, - {file = "astroid-3.3.4.tar.gz", hash = "sha256:e73d0b62dd680a7c07cb2cd0ce3c22570b044dd01bd994bc3a2dd16c6cbba162"}, -] - -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} - -[[package]] -name = "asttokens" -version = "2.4.1" -description = "Annotate AST trees with source code positions" -optional = false -python-versions = "*" -files = [ - {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, - {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, -] - -[package.dependencies] -six = ">=1.12.0" - -[package.extras] -astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] -test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] - -[[package]] -name = "async-lru" -version = "2.0.4" -description = "Simple LRU cache for asyncio" -optional = false -python-versions = ">=3.8" -files = [ - {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, - {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"}, -] - -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} - -[[package]] -name = "attrs" -version = "24.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - -[[package]] -name = "autopep8" -version = "2.2.0" -description = "A tool that automatically formats Python code to conform to the PEP 8 style guide" -optional = false -python-versions = ">=3.8" -files = [ - {file = "autopep8-2.2.0-py2.py3-none-any.whl", hash = "sha256:05418a981f038969d8bdcd5636bf15948db7555ae944b9f79b5a34b35f1370d4"}, - {file = "autopep8-2.2.0.tar.gz", hash = "sha256:d306a0581163ac29908280ad557773a95a9bede072c0fafed6f141f5311f43c1"}, -] - -[package.dependencies] -pycodestyle = ">=2.11.0" -tomli = {version = "*", markers = "python_version < \"3.11\""} - -[[package]] -name = "babel" -version = "2.16.0" -description = "Internationalization utilities" -optional = false -python-versions = ">=3.8" -files = [ - {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, - {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, -] - -[package.dependencies] -pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} - -[package.extras] -dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] - -[[package]] -name = "backcall" -version = "0.2.0" -description = "Specifications for callback functions passed in to an API" -optional = false -python-versions = "*" -files = [ - {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, - {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, -] - -[[package]] -name = "beautifulsoup4" -version = "4.12.3" -description = "Screen-scraping library" -optional = false -python-versions = ">=3.6.0" -files = [ - {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, - {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, -] - -[package.dependencies] -soupsieve = ">1.2" - -[package.extras] -cchardet = ["cchardet"] -chardet = ["chardet"] -charset-normalizer = ["charset-normalizer"] -html5lib = ["html5lib"] -lxml = ["lxml"] - -[[package]] -name = "black" -version = "23.12.1" -description = "The uncompromising code formatter." -optional = false -python-versions = ">=3.8" -files = [ - {file = "black-23.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0aaf6041986767a5e0ce663c7a2f0e9eaf21e6ff87a5f95cbf3675bfd4c41d2"}, - {file = "black-23.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c88b3711d12905b74206227109272673edce0cb29f27e1385f33b0163c414bba"}, - {file = "black-23.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920b569dc6b3472513ba6ddea21f440d4b4c699494d2e972a1753cdc25df7b0"}, - {file = "black-23.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:3fa4be75ef2a6b96ea8d92b1587dd8cb3a35c7e3d51f0738ced0781c3aa3a5a3"}, - {file = "black-23.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d4df77958a622f9b5a4c96edb4b8c0034f8434032ab11077ec6c56ae9f384ba"}, - {file = "black-23.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:602cfb1196dc692424c70b6507593a2b29aac0547c1be9a1d1365f0d964c353b"}, - {file = "black-23.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c4352800f14be5b4864016882cdba10755bd50805c95f728011bcb47a4afd59"}, - {file = "black-23.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:0808494f2b2df923ffc5723ed3c7b096bd76341f6213989759287611e9837d50"}, - {file = "black-23.12.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:25e57fd232a6d6ff3f4478a6fd0580838e47c93c83eaf1ccc92d4faf27112c4e"}, - {file = "black-23.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d9e13db441c509a3763a7a3d9a49ccc1b4e974a47be4e08ade2a228876500ec"}, - {file = "black-23.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1bd9c210f8b109b1762ec9fd36592fdd528485aadb3f5849b2740ef17e674e"}, - {file = "black-23.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:ae76c22bde5cbb6bfd211ec343ded2163bba7883c7bc77f6b756a1049436fbb9"}, - {file = "black-23.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1fa88a0f74e50e4487477bc0bb900c6781dbddfdfa32691e780bf854c3b4a47f"}, - {file = "black-23.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a4d6a9668e45ad99d2f8ec70d5c8c04ef4f32f648ef39048d010b0689832ec6d"}, - {file = "black-23.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b18fb2ae6c4bb63eebe5be6bd869ba2f14fd0259bda7d18a46b764d8fb86298a"}, - {file = "black-23.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:c04b6d9d20e9c13f43eee8ea87d44156b8505ca8a3c878773f68b4e4812a421e"}, - {file = "black-23.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e1b38b3135fd4c025c28c55ddfc236b05af657828a8a6abe5deec419a0b7055"}, - {file = "black-23.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4f0031eaa7b921db76decd73636ef3a12c942ed367d8c3841a0739412b260a54"}, - {file = "black-23.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97e56155c6b737854e60a9ab1c598ff2533d57e7506d97af5481141671abf3ea"}, - {file = "black-23.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:dd15245c8b68fe2b6bd0f32c1556509d11bb33aec9b5d0866dd8e2ed3dba09c2"}, - {file = "black-23.12.1-py3-none-any.whl", hash = "sha256:78baad24af0f033958cad29731e27363183e140962595def56423e626f4bee3e"}, - {file = "black-23.12.1.tar.gz", hash = "sha256:4ce3ef14ebe8d9509188014d96af1c456a910d5b5cbf434a09fef7e024b3d0d5"}, -] - -[package.dependencies] -click = ">=8.0.0" -ipython = {version = ">=7.8.0", optional = true, markers = "extra == \"jupyter\""} -mypy-extensions = ">=0.4.3" -packaging = ">=22.0" -pathspec = ">=0.9.0" -platformdirs = ">=2" -tokenize-rt = {version = ">=3.2.0", optional = true, markers = "extra == \"jupyter\""} -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} - -[package.extras] -colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] -jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] -uvloop = ["uvloop (>=0.15.2)"] - -[[package]] -name = "bleach" -version = "6.1.0" -description = "An easy safelist-based HTML-sanitizing tool." -optional = false -python-versions = ">=3.8" -files = [ - {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, - {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, -] - -[package.dependencies] -six = ">=1.9.0" -webencodings = "*" - -[package.extras] -css = ["tinycss2 (>=1.1.0,<1.3)"] - -[[package]] -name = "cachetools" -version = "5.5.0" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, - {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, -] - -[[package]] -name = "certifi" -version = "2024.8.30" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, -] - -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, -] - -[package.dependencies] -pycparser = "*" - -[[package]] -name = "chardet" -version = "5.2.0" -description = "Universal encoding detector for Python 3" -optional = false -python-versions = ">=3.7" -files = [ - {file = "chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"}, - {file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"}, -] - -[[package]] -name = "charset-normalizer" -version = "3.3.2" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, -] - -[[package]] -name = "click" -version = "8.1.7" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.7" -files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "comm" -version = "0.2.2" -description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -optional = false -python-versions = ">=3.8" -files = [ - {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, - {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, -] - -[package.dependencies] -traitlets = ">=4" - -[package.extras] -test = ["pytest"] - -[[package]] -name = "coverage" -version = "7.6.1" -description = "Code coverage measurement for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "coverage-7.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b06079abebbc0e89e6163b8e8f0e16270124c154dc6e4a47b413dd538859af16"}, - {file = "coverage-7.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cf4b19715bccd7ee27b6b120e7e9dd56037b9c0681dcc1adc9ba9db3d417fa36"}, - {file = "coverage-7.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61c0abb4c85b095a784ef23fdd4aede7a2628478e7baba7c5e3deba61070a02"}, - {file = "coverage-7.6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd21f6ae3f08b41004dfb433fa895d858f3f5979e7762d052b12aef444e29afc"}, - {file = "coverage-7.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f59d57baca39b32db42b83b2a7ba6f47ad9c394ec2076b084c3f029b7afca23"}, - {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a1ac0ae2b8bd743b88ed0502544847c3053d7171a3cff9228af618a068ed9c34"}, - {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e6a08c0be454c3b3beb105c0596ebdc2371fab6bb90c0c0297f4e58fd7e1012c"}, - {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f5796e664fe802da4f57a168c85359a8fbf3eab5e55cd4e4569fbacecc903959"}, - {file = "coverage-7.6.1-cp310-cp310-win32.whl", hash = "sha256:7bb65125fcbef8d989fa1dd0e8a060999497629ca5b0efbca209588a73356232"}, - {file = "coverage-7.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:3115a95daa9bdba70aea750db7b96b37259a81a709223c8448fa97727d546fe0"}, - {file = "coverage-7.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7dea0889685db8550f839fa202744652e87c60015029ce3f60e006f8c4462c93"}, - {file = "coverage-7.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed37bd3c3b063412f7620464a9ac1314d33100329f39799255fb8d3027da50d3"}, - {file = "coverage-7.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85f5e9a5f8b73e2350097c3756ef7e785f55bd71205defa0bfdaf96c31616ff"}, - {file = "coverage-7.6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bc572be474cafb617672c43fe989d6e48d3c83af02ce8de73fff1c6bb3c198d"}, - {file = "coverage-7.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0420b573964c760df9e9e86d1a9a622d0d27f417e1a949a8a66dd7bcee7bc6"}, - {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1f4aa8219db826ce6be7099d559f8ec311549bfc4046f7f9fe9b5cea5c581c56"}, - {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:fc5a77d0c516700ebad189b587de289a20a78324bc54baee03dd486f0855d234"}, - {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b48f312cca9621272ae49008c7f613337c53fadca647d6384cc129d2996d1133"}, - {file = "coverage-7.6.1-cp311-cp311-win32.whl", hash = "sha256:1125ca0e5fd475cbbba3bb67ae20bd2c23a98fac4e32412883f9bcbaa81c314c"}, - {file = "coverage-7.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:8ae539519c4c040c5ffd0632784e21b2f03fc1340752af711f33e5be83a9d6c6"}, - {file = "coverage-7.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:95cae0efeb032af8458fc27d191f85d1717b1d4e49f7cb226cf526ff28179778"}, - {file = "coverage-7.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5621a9175cf9d0b0c84c2ef2b12e9f5f5071357c4d2ea6ca1cf01814f45d2391"}, - {file = "coverage-7.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:260933720fdcd75340e7dbe9060655aff3af1f0c5d20f46b57f262ab6c86a5e8"}, - {file = "coverage-7.6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07e2ca0ad381b91350c0ed49d52699b625aab2b44b65e1b4e02fa9df0e92ad2d"}, - {file = "coverage-7.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c44fee9975f04b33331cb8eb272827111efc8930cfd582e0320613263ca849ca"}, - {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:877abb17e6339d96bf08e7a622d05095e72b71f8afd8a9fefc82cf30ed944163"}, - {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3e0cadcf6733c09154b461f1ca72d5416635e5e4ec4e536192180d34ec160f8a"}, - {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c3c02d12f837d9683e5ab2f3d9844dc57655b92c74e286c262e0fc54213c216d"}, - {file = "coverage-7.6.1-cp312-cp312-win32.whl", hash = "sha256:e05882b70b87a18d937ca6768ff33cc3f72847cbc4de4491c8e73880766718e5"}, - {file = "coverage-7.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:b5d7b556859dd85f3a541db6a4e0167b86e7273e1cdc973e5b175166bb634fdb"}, - {file = "coverage-7.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a4acd025ecc06185ba2b801f2de85546e0b8ac787cf9d3b06e7e2a69f925b106"}, - {file = "coverage-7.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a6d3adcf24b624a7b778533480e32434a39ad8fa30c315208f6d3e5542aeb6e9"}, - {file = "coverage-7.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0c212c49b6c10e6951362f7c6df3329f04c2b1c28499563d4035d964ab8e08c"}, - {file = "coverage-7.6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e81d7a3e58882450ec4186ca59a3f20a5d4440f25b1cff6f0902ad890e6748a"}, - {file = "coverage-7.6.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78b260de9790fd81e69401c2dc8b17da47c8038176a79092a89cb2b7d945d060"}, - {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a78d169acd38300060b28d600344a803628c3fd585c912cacc9ea8790fe96862"}, - {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2c09f4ce52cb99dd7505cd0fc8e0e37c77b87f46bc9c1eb03fe3bc9991085388"}, - {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6878ef48d4227aace338d88c48738a4258213cd7b74fd9a3d4d7582bb1d8a155"}, - {file = "coverage-7.6.1-cp313-cp313-win32.whl", hash = "sha256:44df346d5215a8c0e360307d46ffaabe0f5d3502c8a1cefd700b34baf31d411a"}, - {file = "coverage-7.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:8284cf8c0dd272a247bc154eb6c95548722dce90d098c17a883ed36e67cdb129"}, - {file = "coverage-7.6.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d3296782ca4eab572a1a4eca686d8bfb00226300dcefdf43faa25b5242ab8a3e"}, - {file = "coverage-7.6.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:502753043567491d3ff6d08629270127e0c31d4184c4c8d98f92c26f65019962"}, - {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a89ecca80709d4076b95f89f308544ec8f7b4727e8a547913a35f16717856cb"}, - {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a318d68e92e80af8b00fa99609796fdbcdfef3629c77c6283566c6f02c6d6704"}, - {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13b0a73a0896988f053e4fbb7de6d93388e6dd292b0d87ee51d106f2c11b465b"}, - {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4421712dbfc5562150f7554f13dde997a2e932a6b5f352edcce948a815efee6f"}, - {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:166811d20dfea725e2e4baa71fffd6c968a958577848d2131f39b60043400223"}, - {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:225667980479a17db1048cb2bf8bfb39b8e5be8f164b8f6628b64f78a72cf9d3"}, - {file = "coverage-7.6.1-cp313-cp313t-win32.whl", hash = "sha256:170d444ab405852903b7d04ea9ae9b98f98ab6d7e63e1115e82620807519797f"}, - {file = "coverage-7.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b9f222de8cded79c49bf184bdbc06630d4c58eec9459b939b4a690c82ed05657"}, - {file = "coverage-7.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6db04803b6c7291985a761004e9060b2bca08da6d04f26a7f2294b8623a0c1a0"}, - {file = "coverage-7.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f1adfc8ac319e1a348af294106bc6a8458a0f1633cc62a1446aebc30c5fa186a"}, - {file = "coverage-7.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a95324a9de9650a729239daea117df21f4b9868ce32e63f8b650ebe6cef5595b"}, - {file = "coverage-7.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b43c03669dc4618ec25270b06ecd3ee4fa94c7f9b3c14bae6571ca00ef98b0d3"}, - {file = "coverage-7.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8929543a7192c13d177b770008bc4e8119f2e1f881d563fc6b6305d2d0ebe9de"}, - {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a09ece4a69cf399510c8ab25e0950d9cf2b42f7b3cb0374f95d2e2ff594478a6"}, - {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9054a0754de38d9dbd01a46621636689124d666bad1936d76c0341f7d71bf569"}, - {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0dbde0f4aa9a16fa4d754356a8f2e36296ff4d83994b2c9d8398aa32f222f989"}, - {file = "coverage-7.6.1-cp38-cp38-win32.whl", hash = "sha256:da511e6ad4f7323ee5702e6633085fb76c2f893aaf8ce4c51a0ba4fc07580ea7"}, - {file = "coverage-7.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:3f1156e3e8f2872197af3840d8ad307a9dd18e615dc64d9ee41696f287c57ad8"}, - {file = "coverage-7.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abd5fd0db5f4dc9289408aaf34908072f805ff7792632250dcb36dc591d24255"}, - {file = "coverage-7.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:547f45fa1a93154bd82050a7f3cddbc1a7a4dd2a9bf5cb7d06f4ae29fe94eaf8"}, - {file = "coverage-7.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:645786266c8f18a931b65bfcefdbf6952dd0dea98feee39bd188607a9d307ed2"}, - {file = "coverage-7.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e0b2df163b8ed01d515807af24f63de04bebcecbd6c3bfeff88385789fdf75a"}, - {file = "coverage-7.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:609b06f178fe8e9f89ef676532760ec0b4deea15e9969bf754b37f7c40326dbc"}, - {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:702855feff378050ae4f741045e19a32d57d19f3e0676d589df0575008ea5004"}, - {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2bdb062ea438f22d99cba0d7829c2ef0af1d768d1e4a4f528087224c90b132cb"}, - {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9c56863d44bd1c4fe2abb8a4d6f5371d197f1ac0ebdee542f07f35895fc07f36"}, - {file = "coverage-7.6.1-cp39-cp39-win32.whl", hash = "sha256:6e2cd258d7d927d09493c8df1ce9174ad01b381d4729a9d8d4e38670ca24774c"}, - {file = "coverage-7.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:06a737c882bd26d0d6ee7269b20b12f14a8704807a01056c80bb881a4b2ce6ca"}, - {file = "coverage-7.6.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:e9a6e0eb86070e8ccaedfbd9d38fec54864f3125ab95419970575b42af7541df"}, - {file = "coverage-7.6.1.tar.gz", hash = "sha256:953510dfb7b12ab69d20135a0662397f077c59b1e6379a768e97c59d852ee51d"}, -] - -[package.extras] -toml = ["tomli"] - -[[package]] -name = "debugpy" -version = "1.8.5" -description = "An implementation of the Debug Adapter Protocol for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "debugpy-1.8.5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:7e4d594367d6407a120b76bdaa03886e9eb652c05ba7f87e37418426ad2079f7"}, - {file = "debugpy-1.8.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4413b7a3ede757dc33a273a17d685ea2b0c09dbd312cc03f5534a0fd4d40750a"}, - {file = "debugpy-1.8.5-cp310-cp310-win32.whl", hash = "sha256:dd3811bd63632bb25eda6bd73bea8e0521794cda02be41fa3160eb26fc29e7ed"}, - {file = "debugpy-1.8.5-cp310-cp310-win_amd64.whl", hash = "sha256:b78c1250441ce893cb5035dd6f5fc12db968cc07f91cc06996b2087f7cefdd8e"}, - {file = "debugpy-1.8.5-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:606bccba19f7188b6ea9579c8a4f5a5364ecd0bf5a0659c8a5d0e10dcee3032a"}, - {file = "debugpy-1.8.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db9fb642938a7a609a6c865c32ecd0d795d56c1aaa7a7a5722d77855d5e77f2b"}, - {file = "debugpy-1.8.5-cp311-cp311-win32.whl", hash = "sha256:4fbb3b39ae1aa3e5ad578f37a48a7a303dad9a3d018d369bc9ec629c1cfa7408"}, - {file = "debugpy-1.8.5-cp311-cp311-win_amd64.whl", hash = "sha256:345d6a0206e81eb68b1493ce2fbffd57c3088e2ce4b46592077a943d2b968ca3"}, - {file = "debugpy-1.8.5-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:5b5c770977c8ec6c40c60d6f58cacc7f7fe5a45960363d6974ddb9b62dbee156"}, - {file = "debugpy-1.8.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0a65b00b7cdd2ee0c2cf4c7335fef31e15f1b7056c7fdbce9e90193e1a8c8cb"}, - {file = "debugpy-1.8.5-cp312-cp312-win32.whl", hash = "sha256:c9f7c15ea1da18d2fcc2709e9f3d6de98b69a5b0fff1807fb80bc55f906691f7"}, - {file = "debugpy-1.8.5-cp312-cp312-win_amd64.whl", hash = "sha256:28ced650c974aaf179231668a293ecd5c63c0a671ae6d56b8795ecc5d2f48d3c"}, - {file = "debugpy-1.8.5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:3df6692351172a42af7558daa5019651f898fc67450bf091335aa8a18fbf6f3a"}, - {file = "debugpy-1.8.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cd04a73eb2769eb0bfe43f5bfde1215c5923d6924b9b90f94d15f207a402226"}, - {file = "debugpy-1.8.5-cp38-cp38-win32.whl", hash = "sha256:8f913ee8e9fcf9d38a751f56e6de12a297ae7832749d35de26d960f14280750a"}, - {file = "debugpy-1.8.5-cp38-cp38-win_amd64.whl", hash = "sha256:a697beca97dad3780b89a7fb525d5e79f33821a8bc0c06faf1f1289e549743cf"}, - {file = "debugpy-1.8.5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:0a1029a2869d01cb777216af8c53cda0476875ef02a2b6ff8b2f2c9a4b04176c"}, - {file = "debugpy-1.8.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84c276489e141ed0b93b0af648eef891546143d6a48f610945416453a8ad406"}, - {file = "debugpy-1.8.5-cp39-cp39-win32.whl", hash = "sha256:ad84b7cde7fd96cf6eea34ff6c4a1b7887e0fe2ea46e099e53234856f9d99a34"}, - {file = "debugpy-1.8.5-cp39-cp39-win_amd64.whl", hash = "sha256:7b0fe36ed9d26cb6836b0a51453653f8f2e347ba7348f2bbfe76bfeb670bfb1c"}, - {file = "debugpy-1.8.5-py2.py3-none-any.whl", hash = "sha256:55919dce65b471eff25901acf82d328bbd5b833526b6c1364bd5133754777a44"}, - {file = "debugpy-1.8.5.zip", hash = "sha256:b2112cfeb34b4507399d298fe7023a16656fc553ed5246536060ca7bd0e668d0"}, -] - -[[package]] -name = "decorator" -version = "5.1.1" -description = "Decorators for Humans" -optional = false -python-versions = ">=3.5" -files = [ - {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, - {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, -] - -[[package]] -name = "defusedxml" -version = "0.7.1" -description = "XML bomb protection for Python stdlib modules" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, - {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, -] - -[[package]] -name = "distlib" -version = "0.3.8" -description = "Distribution utilities" -optional = false -python-versions = "*" -files = [ - {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, - {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, -] - -[[package]] -name = "docutils" -version = "0.19" -description = "Docutils -- Python Documentation Utilities" -optional = false -python-versions = ">=3.7" -files = [ - {file = "docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc"}, - {file = "docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6"}, -] - -[[package]] -name = "docutils" -version = "0.20.1" -description = "Docutils -- Python Documentation Utilities" -optional = false -python-versions = ">=3.7" -files = [ - {file = "docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6"}, - {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, -] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "executing" -version = "2.1.0" -description = "Get the currently executing AST node of a frame, and other information" -optional = false -python-versions = ">=3.8" -files = [ - {file = "executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf"}, - {file = "executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab"}, -] - -[package.extras] -tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] - -[[package]] -name = "fastjsonschema" -version = "2.20.0" -description = "Fastest Python implementation of JSON schema" -optional = false -python-versions = "*" -files = [ - {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, - {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"}, -] - -[package.extras] -devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] - -[[package]] -name = "filelock" -version = "3.16.1" -description = "A platform independent file lock." -optional = false -python-versions = ">=3.8" -files = [ - {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, - {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] -typing = ["typing-extensions (>=4.12.2)"] - -[[package]] -name = "flake8" -version = "6.1.0" -description = "the modular source code checker: pep8 pyflakes and co" -optional = false -python-versions = ">=3.8.1" -files = [ - {file = "flake8-6.1.0-py2.py3-none-any.whl", hash = "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5"}, - {file = "flake8-6.1.0.tar.gz", hash = "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23"}, -] - -[package.dependencies] -mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.11.0,<2.12.0" -pyflakes = ">=3.1.0,<3.2.0" - -[[package]] -name = "fqdn" -version = "1.5.1" -description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" -optional = false -python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" -files = [ - {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, - {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, -] - -[[package]] -name = "googleapis-common-protos" -version = "1.65.0" -description = "Common protobufs used in Google APIs" -optional = false -python-versions = ">=3.7" -files = [ - {file = "googleapis_common_protos-1.65.0-py2.py3-none-any.whl", hash = "sha256:2972e6c496f435b92590fd54045060867f3fe9be2c82ab148fc8885035479a63"}, - {file = "googleapis_common_protos-1.65.0.tar.gz", hash = "sha256:334a29d07cddc3aa01dee4988f9afd9b2916ee2ff49d6b757155dc0d197852c0"}, -] - -[package.dependencies] -protobuf = ">=3.20.2,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<6.0.0.dev0" - -[package.extras] -grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] - -[[package]] -name = "greenlet" -version = "3.1.1" -description = "Lightweight in-process concurrent programming" -optional = false -python-versions = ">=3.7" -files = [ - {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"}, - {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"}, - {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"}, - {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"}, - {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"}, - {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"}, - {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"}, - {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"}, - {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"}, - {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"}, - {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"}, - {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"}, - {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"}, - {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"}, - {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"}, - {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"}, - {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"}, - {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"}, - {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"}, - {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"}, - {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"}, - {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"}, - {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"}, - {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"}, - {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"}, - {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"}, - {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"}, - {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"}, - {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"}, - {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"}, - {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"}, - {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"}, - {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"}, - {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"}, - {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"}, - {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"}, - {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"}, - {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"}, - {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"}, - {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"}, - {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"}, - {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"}, - {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"}, - {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"}, - {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"}, - {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"}, - {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"}, - {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"}, - {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"}, - {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"}, - {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"}, - {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"}, - {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"}, - {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"}, - {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"}, - {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"}, - {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"}, - {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"}, - {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"}, - {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"}, - {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"}, - {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"}, - {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"}, - {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"}, - {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"}, - {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"}, - {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"}, - {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"}, - {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"}, - {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"}, - {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"}, - {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"}, - {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"}, -] - -[package.extras] -docs = ["Sphinx", "furo"] -test = ["objgraph", "psutil"] - -[[package]] -name = "grpclib" -version = "0.4.7" -description = "Pure-Python gRPC implementation for asyncio" -optional = false -python-versions = ">=3.7" -files = [ - {file = "grpclib-0.4.7.tar.gz", hash = "sha256:2988ef57c02b22b7a2e8e961792c41ccf97efc2ace91ae7a5b0de03c363823c3"}, -] - -[package.dependencies] -h2 = ">=3.1.0,<5" -multidict = "*" - -[package.extras] -protobuf = ["protobuf (>=3.20.0)"] - -[[package]] -name = "h11" -version = "0.14.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.7" -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - -[[package]] -name = "h2" -version = "4.1.0" -description = "HTTP/2 State-Machine based protocol implementation" -optional = false -python-versions = ">=3.6.1" -files = [ - {file = "h2-4.1.0-py3-none-any.whl", hash = "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d"}, - {file = "h2-4.1.0.tar.gz", hash = "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb"}, -] - -[package.dependencies] -hpack = ">=4.0,<5" -hyperframe = ">=6.0,<7" - -[[package]] -name = "hpack" -version = "4.0.0" -description = "Pure-Python HPACK header compression" -optional = false -python-versions = ">=3.6.1" -files = [ - {file = "hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c"}, - {file = "hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095"}, -] - -[[package]] -name = "httpcore" -version = "1.0.5" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, -] - -[package.dependencies] -certifi = "*" -h11 = ">=0.13,<0.15" - -[package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] - -[[package]] -name = "httpx" -version = "0.27.2" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, - {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, -] - -[package.dependencies] -anyio = "*" -certifi = "*" -httpcore = "==1.*" -idna = "*" -sniffio = "*" - -[package.extras] -brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "hyperframe" -version = "6.0.1" -description = "HTTP/2 framing layer for Python" -optional = false -python-versions = ">=3.6.1" -files = [ - {file = "hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15"}, - {file = "hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914"}, -] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.6" -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "imagesize" -version = "1.4.1" -description = "Getting image size from png/jpeg/jpeg2000/gif file" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, - {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, -] - -[[package]] -name = "importlib-metadata" -version = "8.5.0" -description = "Read metadata from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"}, - {file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"}, -] - -[package.dependencies] -zipp = ">=3.20" - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=2.2)"] -perf = ["ipython"] -test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] -type = ["pytest-mypy"] - -[[package]] -name = "importlib-resources" -version = "6.4.5" -description = "Read resources from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717"}, - {file = "importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065"}, -] - -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["jaraco.test (>=5.4)", "pytest (>=6,!=8.1.*)", "zipp (>=3.17)"] -type = ["pytest-mypy"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "ipykernel" -version = "6.29.5" -description = "IPython Kernel for Jupyter" -optional = false -python-versions = ">=3.8" -files = [ - {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, - {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, -] - -[package.dependencies] -appnope = {version = "*", markers = "platform_system == \"Darwin\""} -comm = ">=0.1.1" -debugpy = ">=1.6.5" -ipython = ">=7.23.1" -jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -matplotlib-inline = ">=0.1" -nest-asyncio = "*" -packaging = "*" -psutil = "*" -pyzmq = ">=24" -tornado = ">=6.1" -traitlets = ">=5.4.0" - -[package.extras] -cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] -pyqt5 = ["pyqt5"] -pyside6 = ["pyside6"] -test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] - -[[package]] -name = "ipython" -version = "8.12.3" -description = "IPython: Productive Interactive Computing" -optional = false -python-versions = ">=3.8" -files = [ - {file = "ipython-8.12.3-py3-none-any.whl", hash = "sha256:b0340d46a933d27c657b211a329d0be23793c36595acf9e6ef4164bc01a1804c"}, - {file = "ipython-8.12.3.tar.gz", hash = "sha256:3910c4b54543c2ad73d06579aa771041b7d5707b033bd488669b4cf544e3b363"}, -] - -[package.dependencies] -appnope = {version = "*", markers = "sys_platform == \"darwin\""} -backcall = "*" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -decorator = "*" -jedi = ">=0.16" -matplotlib-inline = "*" -pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} -pickleshare = "*" -prompt-toolkit = ">=3.0.30,<3.0.37 || >3.0.37,<3.1.0" -pygments = ">=2.4.0" -stack-data = "*" -traitlets = ">=5" -typing-extensions = {version = "*", markers = "python_version < \"3.10\""} - -[package.extras] -all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] -black = ["black"] -doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] -kernel = ["ipykernel"] -nbconvert = ["nbconvert"] -nbformat = ["nbformat"] -notebook = ["ipywidgets", "notebook"] -parallel = ["ipyparallel"] -qtconsole = ["qtconsole"] -test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] -test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"] - -[[package]] -name = "ipywidgets" -version = "8.1.5" -description = "Jupyter interactive widgets" -optional = false -python-versions = ">=3.7" -files = [ - {file = "ipywidgets-8.1.5-py3-none-any.whl", hash = "sha256:3290f526f87ae6e77655555baba4f36681c555b8bdbbff430b70e52c34c86245"}, - {file = "ipywidgets-8.1.5.tar.gz", hash = "sha256:870e43b1a35656a80c18c9503bbf2d16802db1cb487eec6fab27d683381dde17"}, -] - -[package.dependencies] -comm = ">=0.1.3" -ipython = ">=6.1.0" -jupyterlab-widgets = ">=3.0.12,<3.1.0" -traitlets = ">=4.3.1" -widgetsnbextension = ">=4.0.12,<4.1.0" - -[package.extras] -test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] - -[[package]] -name = "isoduration" -version = "20.11.0" -description = "Operations with ISO 8601 durations" -optional = false -python-versions = ">=3.7" -files = [ - {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, - {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, -] - -[package.dependencies] -arrow = ">=0.15.0" - -[[package]] -name = "isort" -version = "5.13.2" -description = "A Python utility / library to sort Python imports." -optional = false -python-versions = ">=3.8.0" -files = [ - {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, - {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, -] - -[package.extras] -colors = ["colorama (>=0.4.6)"] - -[[package]] -name = "jedi" -version = "0.19.1" -description = "An autocompletion tool for Python that can be used for text editors." -optional = false -python-versions = ">=3.6" -files = [ - {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, - {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, -] - -[package.dependencies] -parso = ">=0.8.3,<0.9.0" - -[package.extras] -docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] - -[[package]] -name = "jinja2" -version = "3.1.4" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "json5" -version = "0.9.25" -description = "A Python implementation of the JSON5 data format." -optional = false -python-versions = ">=3.8" -files = [ - {file = "json5-0.9.25-py3-none-any.whl", hash = "sha256:34ed7d834b1341a86987ed52f3f76cd8ee184394906b6e22a1e0deb9ab294e8f"}, - {file = "json5-0.9.25.tar.gz", hash = "sha256:548e41b9be043f9426776f05df8635a00fe06104ea51ed24b67f908856e151ae"}, -] - -[[package]] -name = "jsonpointer" -version = "3.0.0" -description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, - {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, -] - -[[package]] -name = "jsonschema" -version = "4.23.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, - {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, -] - -[package.dependencies] -attrs = ">=22.2.0" -fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} -isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} -jsonschema-specifications = ">=2023.03.6" -pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} -referencing = ">=0.28.4" -rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} -rpds-py = ">=0.7.1" -uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -webcolors = {version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\""} - -[package.extras] -format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=24.6.0)"] - -[[package]] -name = "jsonschema-specifications" -version = "2023.12.1" -description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" -optional = false -python-versions = ">=3.8" -files = [ - {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, - {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, -] - -[package.dependencies] -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} -referencing = ">=0.31.0" - -[[package]] -name = "jupyter" -version = "1.1.1" -description = "Jupyter metapackage. Install all the Jupyter components in one go." -optional = false -python-versions = "*" -files = [ - {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"}, - {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"}, -] - -[package.dependencies] -ipykernel = "*" -ipywidgets = "*" -jupyter-console = "*" -jupyterlab = "*" -nbconvert = "*" -notebook = "*" - -[[package]] -name = "jupyter-cache" -version = "0.6.1" -description = "A defined interface for working with a cache of jupyter notebooks." -optional = false -python-versions = "~=3.8" -files = [ - {file = "jupyter-cache-0.6.1.tar.gz", hash = "sha256:26f83901143edf4af2f3ff5a91e2d2ad298e46e2cee03c8071d37a23a63ccbfc"}, - {file = "jupyter_cache-0.6.1-py3-none-any.whl", hash = "sha256:2fce7d4975805c77f75bdfc1bc2e82bc538b8e5b1af27f2f5e06d55b9f996a82"}, -] - -[package.dependencies] -attrs = "*" -click = "*" -importlib-metadata = "*" -nbclient = ">=0.2,<0.8" -nbformat = "*" -pyyaml = "*" -sqlalchemy = ">=1.3.12,<3" -tabulate = "*" - -[package.extras] -cli = ["click-log"] -code-style = ["pre-commit (>=2.12,<4.0)"] -rtd = ["ipykernel", "jupytext", "myst-nb", "nbdime", "sphinx-book-theme", "sphinx-copybutton"] -testing = ["coverage", "ipykernel", "jupytext", "matplotlib", "nbdime", "nbformat (>=5.1)", "numpy", "pandas", "pytest (>=6,<8)", "pytest-cov", "pytest-regressions", "sympy"] - -[[package]] -name = "jupyter-cache" -version = "1.0.0" -description = "A defined interface for working with a cache of jupyter notebooks." -optional = false -python-versions = ">=3.9" -files = [ - {file = "jupyter_cache-1.0.0-py3-none-any.whl", hash = "sha256:594b1c4e29b488b36547e12477645f489dbdc62cc939b2408df5679f79245078"}, - {file = "jupyter_cache-1.0.0.tar.gz", hash = "sha256:d0fa7d7533cd5798198d8889318269a8c1382ed3b22f622c09a9356521f48687"}, -] - -[package.dependencies] -attrs = "*" -click = "*" -importlib-metadata = "*" -nbclient = ">=0.2" -nbformat = "*" -pyyaml = "*" -sqlalchemy = ">=1.3.12,<3" -tabulate = "*" - -[package.extras] -cli = ["click-log"] -code-style = ["pre-commit (>=2.12)"] -rtd = ["ipykernel", "jupytext", "myst-nb", "nbdime", "sphinx-book-theme", "sphinx-copybutton"] -testing = ["coverage", "ipykernel", "jupytext", "matplotlib", "nbdime", "nbformat (>=5.1)", "numpy", "pandas", "pytest (>=6,<8)", "pytest-cov", "pytest-regressions", "sympy"] - -[[package]] -name = "jupyter-client" -version = "8.6.3" -description = "Jupyter protocol implementation and client libraries" -optional = false -python-versions = ">=3.8" -files = [ - {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, - {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, -] - -[package.dependencies] -importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -python-dateutil = ">=2.8.2" -pyzmq = ">=23.0" -tornado = ">=6.2" -traitlets = ">=5.3" - -[package.extras] -docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] - -[[package]] -name = "jupyter-console" -version = "6.6.3" -description = "Jupyter terminal console" -optional = false -python-versions = ">=3.7" -files = [ - {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, - {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, -] - -[package.dependencies] -ipykernel = ">=6.14" -ipython = "*" -jupyter-client = ">=7.0.0" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -prompt-toolkit = ">=3.0.30" -pygments = "*" -pyzmq = ">=17" -traitlets = ">=5.4" - -[package.extras] -test = ["flaky", "pexpect", "pytest"] - -[[package]] -name = "jupyter-core" -version = "5.7.2" -description = "Jupyter core package. A base package on which Jupyter projects rely." -optional = false -python-versions = ">=3.8" -files = [ - {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, - {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, -] - -[package.dependencies] -platformdirs = ">=2.5" -pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} -traitlets = ">=5.3" - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] -test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] - -[[package]] -name = "jupyter-events" -version = "0.10.0" -description = "Jupyter Event System library" -optional = false -python-versions = ">=3.8" -files = [ - {file = "jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960"}, - {file = "jupyter_events-0.10.0.tar.gz", hash = "sha256:670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22"}, -] - -[package.dependencies] -jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} -python-json-logger = ">=2.0.4" -pyyaml = ">=5.3" -referencing = "*" -rfc3339-validator = "*" -rfc3986-validator = ">=0.1.1" -traitlets = ">=5.3" - -[package.extras] -cli = ["click", "rich"] -docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"] -test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] - -[[package]] -name = "jupyter-lsp" -version = "2.2.5" -description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" -optional = false -python-versions = ">=3.8" -files = [ - {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, - {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, -] - -[package.dependencies] -importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} -jupyter-server = ">=1.1.2" - -[[package]] -name = "jupyter-server" -version = "2.14.2" -description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." -optional = false -python-versions = ">=3.8" -files = [ - {file = "jupyter_server-2.14.2-py3-none-any.whl", hash = "sha256:47ff506127c2f7851a17bf4713434208fc490955d0e8632e95014a9a9afbeefd"}, - {file = "jupyter_server-2.14.2.tar.gz", hash = "sha256:66095021aa9638ced276c248b1d81862e4c50f292d575920bbe960de1c56b12b"}, -] - -[package.dependencies] -anyio = ">=3.1.0" -argon2-cffi = ">=21.1" -jinja2 = ">=3.0.3" -jupyter-client = ">=7.4.4" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -jupyter-events = ">=0.9.0" -jupyter-server-terminals = ">=0.4.4" -nbconvert = ">=6.4.4" -nbformat = ">=5.3.0" -overrides = ">=5.0" -packaging = ">=22.0" -prometheus-client = ">=0.9" -pywinpty = {version = ">=2.0.1", markers = "os_name == \"nt\""} -pyzmq = ">=24" -send2trash = ">=1.8.2" -terminado = ">=0.8.3" -tornado = ">=6.2.0" -traitlets = ">=5.6.0" -websocket-client = ">=1.7" - -[package.extras] -docs = ["ipykernel", "jinja2", "jupyter-client", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] -test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.7)", "pytest-timeout", "requests"] - -[[package]] -name = "jupyter-server-terminals" -version = "0.5.3" -description = "A Jupyter Server Extension Providing Terminals." -optional = false -python-versions = ">=3.8" -files = [ - {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, - {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, -] - -[package.dependencies] -pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""} -terminado = ">=0.8.3" - -[package.extras] -docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] -test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] - -[[package]] -name = "jupyterlab" -version = "4.2.5" -description = "JupyterLab computational environment" -optional = false -python-versions = ">=3.8" -files = [ - {file = "jupyterlab-4.2.5-py3-none-any.whl", hash = "sha256:73b6e0775d41a9fee7ee756c80f58a6bed4040869ccc21411dc559818874d321"}, - {file = "jupyterlab-4.2.5.tar.gz", hash = "sha256:ae7f3a1b8cb88b4f55009ce79fa7c06f99d70cd63601ee4aa91815d054f46f75"}, -] - -[package.dependencies] -async-lru = ">=1.0.0" -httpx = ">=0.25.0" -importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} -importlib-resources = {version = ">=1.4", markers = "python_version < \"3.9\""} -ipykernel = ">=6.5.0" -jinja2 = ">=3.0.3" -jupyter-core = "*" -jupyter-lsp = ">=2.0.0" -jupyter-server = ">=2.4.0,<3" -jupyterlab-server = ">=2.27.1,<3" -notebook-shim = ">=0.2" -packaging = "*" -setuptools = ">=40.1.0" -tomli = {version = ">=1.2.2", markers = "python_version < \"3.11\""} -tornado = ">=6.2.0" -traitlets = "*" - -[package.extras] -dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.3.5)"] -docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"] -docs-screenshots = ["altair (==5.3.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.2)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.1.post2)", "matplotlib (==3.8.3)", "nbconvert (>=7.0.0)", "pandas (==2.2.1)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"] -test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] -upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] - -[[package]] -name = "jupyterlab-pygments" -version = "0.3.0" -description = "Pygments theme using JupyterLab CSS variables" -optional = false -python-versions = ">=3.8" -files = [ - {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, - {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, -] - -[[package]] -name = "jupyterlab-server" -version = "2.27.3" -description = "A set of server components for JupyterLab and JupyterLab like applications." -optional = false -python-versions = ">=3.8" -files = [ - {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, - {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, -] - -[package.dependencies] -babel = ">=2.10" -importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} -jinja2 = ">=3.0.3" -json5 = ">=0.9.0" -jsonschema = ">=4.18.0" -jupyter-server = ">=1.21,<3" -packaging = ">=21.3" -requests = ">=2.31" - -[package.extras] -docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"] -openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"] -test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0,<8)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] - -[[package]] -name = "jupyterlab-widgets" -version = "3.0.13" -description = "Jupyter interactive widgets for JupyterLab" -optional = false -python-versions = ">=3.7" -files = [ - {file = "jupyterlab_widgets-3.0.13-py3-none-any.whl", hash = "sha256:e3cda2c233ce144192f1e29914ad522b2f4c40e77214b0cc97377ca3d323db54"}, - {file = "jupyterlab_widgets-3.0.13.tar.gz", hash = "sha256:a2966d385328c1942b683a8cd96b89b8dd82c8b8f81dda902bb2bc06d46f5bed"}, -] - -[[package]] -name = "markdown-it-py" -version = "2.2.0" -description = "Python port of markdown-it. Markdown parsing, done right!" -optional = false -python-versions = ">=3.7" -files = [ - {file = "markdown-it-py-2.2.0.tar.gz", hash = "sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1"}, - {file = "markdown_it_py-2.2.0-py3-none-any.whl", hash = "sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30"}, -] - -[package.dependencies] -mdurl = ">=0.1,<1.0" - -[package.extras] -benchmarking = ["psutil", "pytest", "pytest-benchmark"] -code-style = ["pre-commit (>=3.0,<4.0)"] -compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] -linkify = ["linkify-it-py (>=1,<3)"] -plugins = ["mdit-py-plugins"] -profiling = ["gprof2dot"] -rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] - -[[package]] -name = "markdown-it-py" -version = "3.0.0" -description = "Python port of markdown-it. Markdown parsing, done right!" -optional = false -python-versions = ">=3.8" -files = [ - {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, - {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, -] - -[package.dependencies] -mdurl = ">=0.1,<1.0" - -[package.extras] -benchmarking = ["psutil", "pytest", "pytest-benchmark"] -code-style = ["pre-commit (>=3.0,<4.0)"] -compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] -linkify = ["linkify-it-py (>=1,<3)"] -plugins = ["mdit-py-plugins"] -profiling = ["gprof2dot"] -rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] - -[[package]] -name = "markupsafe" -version = "2.1.5" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, -] - -[[package]] -name = "matplotlib-inline" -version = "0.1.7" -description = "Inline Matplotlib backend for Jupyter" -optional = false -python-versions = ">=3.8" -files = [ - {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, - {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, -] - -[package.dependencies] -traitlets = "*" - -[[package]] -name = "mccabe" -version = "0.7.0" -description = "McCabe checker, plugin for flake8" -optional = false -python-versions = ">=3.6" -files = [ - {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, - {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, -] - -[[package]] -name = "mdit-py-plugins" -version = "0.3.5" -description = "Collection of plugins for markdown-it-py" -optional = false -python-versions = ">=3.7" -files = [ - {file = "mdit-py-plugins-0.3.5.tar.gz", hash = "sha256:eee0adc7195e5827e17e02d2a258a2ba159944a0748f59c5099a4a27f78fcf6a"}, - {file = "mdit_py_plugins-0.3.5-py3-none-any.whl", hash = "sha256:ca9a0714ea59a24b2b044a1831f48d817dd0c817e84339f20e7889f392d77c4e"}, -] - -[package.dependencies] -markdown-it-py = ">=1.0.0,<3.0.0" - -[package.extras] -code-style = ["pre-commit"] -rtd = ["attrs", "myst-parser (>=0.16.1,<0.17.0)", "sphinx-book-theme (>=0.1.0,<0.2.0)"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] - -[[package]] -name = "mdit-py-plugins" -version = "0.4.2" -description = "Collection of plugins for markdown-it-py" -optional = false -python-versions = ">=3.8" -files = [ - {file = "mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636"}, - {file = "mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5"}, -] - -[package.dependencies] -markdown-it-py = ">=1.0.0,<4.0.0" - -[package.extras] -code-style = ["pre-commit"] -rtd = ["myst-parser", "sphinx-book-theme"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] - -[[package]] -name = "mdurl" -version = "0.1.2" -description = "Markdown URL utilities" -optional = false -python-versions = ">=3.7" -files = [ - {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, - {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, -] - -[[package]] -name = "mistune" -version = "3.0.2" -description = "A sane and fast Markdown parser with useful plugins and renderers" -optional = false -python-versions = ">=3.7" -files = [ - {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, - {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, -] - -[[package]] -name = "multidict" -version = "6.1.0" -description = "multidict implementation" -optional = false -python-versions = ">=3.8" -files = [ - {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, - {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, - {file = "multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53"}, - {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5"}, - {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581"}, - {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56"}, - {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429"}, - {file = "multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748"}, - {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db"}, - {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056"}, - {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76"}, - {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160"}, - {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7"}, - {file = "multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0"}, - {file = "multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d"}, - {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6"}, - {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156"}, - {file = "multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753"}, - {file = "multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80"}, - {file = "multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926"}, - {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa"}, - {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436"}, - {file = "multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761"}, - {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e"}, - {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef"}, - {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95"}, - {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925"}, - {file = "multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966"}, - {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305"}, - {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2"}, - {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2"}, - {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6"}, - {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3"}, - {file = "multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133"}, - {file = "multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1"}, - {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008"}, - {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f"}, - {file = "multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28"}, - {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b"}, - {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c"}, - {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3"}, - {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44"}, - {file = "multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2"}, - {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3"}, - {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa"}, - {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa"}, - {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4"}, - {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6"}, - {file = "multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81"}, - {file = "multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774"}, - {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392"}, - {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a"}, - {file = "multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2"}, - {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc"}, - {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478"}, - {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4"}, - {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d"}, - {file = "multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6"}, - {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2"}, - {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd"}, - {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6"}, - {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492"}, - {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd"}, - {file = "multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167"}, - {file = "multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef"}, - {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c"}, - {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1"}, - {file = "multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c"}, - {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c"}, - {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f"}, - {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875"}, - {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255"}, - {file = "multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30"}, - {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057"}, - {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657"}, - {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28"}, - {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972"}, - {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43"}, - {file = "multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada"}, - {file = "multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a"}, - {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"}, - {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"}, -] - -[package.dependencies] -typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} - -[[package]] -name = "mypy-extensions" -version = "1.0.0" -description = "Type system extensions for programs checked with the mypy type checker." -optional = false -python-versions = ">=3.5" -files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, -] - -[[package]] -name = "myst-nb" -version = "0.17.2" -description = "A Jupyter Notebook Sphinx reader built on top of the MyST markdown parser." -optional = false -python-versions = ">=3.7" -files = [ - {file = "myst-nb-0.17.2.tar.gz", hash = "sha256:0f61386515fab07c73646adca97fff2f69f41e90d313a260217c5bbe419d858b"}, - {file = "myst_nb-0.17.2-py3-none-any.whl", hash = "sha256:132ca4d0f5c308fdd4b6fdaba077712e28e119ccdafd04d6e41b51aac5483494"}, -] - -[package.dependencies] -importlib_metadata = "*" -ipykernel = "*" -ipython = "*" -jupyter-cache = ">=0.5,<0.7" -myst-parser = ">=0.18.0,<0.19.0" -nbclient = "*" -nbformat = ">=5.0,<6.0" -pyyaml = "*" -sphinx = ">=4,<6" -typing-extensions = "*" - -[package.extras] -code-style = ["pre-commit"] -rtd = ["alabaster", "altair", "bokeh", "coconut (>=1.4.3,<2.3.0)", "ipykernel (>=5.5,<6.0)", "ipywidgets", "jupytext (>=1.11.2,<1.12.0)", "matplotlib", "numpy", "pandas", "plotly", "sphinx-book-theme (>=0.3.0,<0.4.0)", "sphinx-copybutton", "sphinx-design (>=0.4.0,<0.5.0)", "sphinxcontrib-bibtex", "sympy"] -testing = ["beautifulsoup4", "coverage (>=6.4,<8.0)", "ipykernel (>=5.5,<6.0)", "ipython (!=8.1.0,<8.5)", "ipywidgets (>=8)", "jupytext (>=1.11.2,<1.12.0)", "matplotlib (>=3.5.3,<3.6)", "nbdime", "numpy", "pandas", "pytest (>=7.1,<8.0)", "pytest-cov (>=3,<5)", "pytest-param-files (>=0.3.3,<0.4.0)", "pytest-regressions", "sympy (>=1.10.1)"] - -[[package]] -name = "myst-nb" -version = "1.1.1" -description = "A Jupyter Notebook Sphinx reader built on top of the MyST markdown parser." -optional = false -python-versions = ">=3.9" -files = [ - {file = "myst_nb-1.1.1-py3-none-any.whl", hash = "sha256:8b8f9085287d948eef46cb3764aafc21915e0e981882b8c742719f5b1a84c36f"}, - {file = "myst_nb-1.1.1.tar.gz", hash = "sha256:74227c11f76d03494f43b7788659b161b94f4dedef230a2912412bc8c3c9e553"}, -] - -[package.dependencies] -importlib_metadata = "*" -ipykernel = "*" -ipython = "*" -jupyter-cache = ">=0.5" -myst-parser = ">=1.0.0" -nbclient = "*" -nbformat = ">=5.0" -pyyaml = "*" -sphinx = ">=5" -typing-extensions = "*" - -[package.extras] -code-style = ["pre-commit"] -rtd = ["alabaster", "altair", "bokeh", "coconut (>=1.4.3,<3.1.0)", "ipykernel (>=5.5,<7.0)", "ipywidgets", "jupytext (>=1.11.2,<1.16.0)", "matplotlib", "numpy", "pandas", "plotly", "sphinx-book-theme (>=0.3)", "sphinx-copybutton", "sphinx-design (>=0.4.0,<0.5.0)", "sphinxcontrib-bibtex", "sympy"] -testing = ["beautifulsoup4", "coverage (>=6.4,<8.0)", "ipykernel (>=5.5,<7.0)", "ipython (!=8.1.0,<8.17)", "ipywidgets (>=8)", "jupytext (>=1.11.2,<1.16.0)", "matplotlib (==3.7.*)", "nbdime", "numpy", "pandas (==1.5.*)", "pyarrow", "pytest (>=7.1,<8.0)", "pytest-cov (>=3,<5)", "pytest-param-files (>=0.3.3,<0.4.0)", "pytest-regressions", "sympy (>=1.10.1)"] - -[[package]] -name = "myst-parser" -version = "0.18.1" -description = "An extended commonmark compliant parser, with bridges to docutils & sphinx." -optional = false -python-versions = ">=3.7" -files = [ - {file = "myst-parser-0.18.1.tar.gz", hash = "sha256:79317f4bb2c13053dd6e64f9da1ba1da6cd9c40c8a430c447a7b146a594c246d"}, - {file = "myst_parser-0.18.1-py3-none-any.whl", hash = "sha256:61b275b85d9f58aa327f370913ae1bec26ebad372cc99f3ab85c8ec3ee8d9fb8"}, -] - -[package.dependencies] -docutils = ">=0.15,<0.20" -jinja2 = "*" -markdown-it-py = ">=1.0.0,<3.0.0" -mdit-py-plugins = ">=0.3.1,<0.4.0" -pyyaml = "*" -sphinx = ">=4,<6" -typing-extensions = "*" - -[package.extras] -code-style = ["pre-commit (>=2.12,<3.0)"] -linkify = ["linkify-it-py (>=1.0,<2.0)"] -rtd = ["ipython", "sphinx-book-theme", "sphinx-design", "sphinxcontrib.mermaid (>=0.7.1,<0.8.0)", "sphinxext-opengraph (>=0.6.3,<0.7.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] -testing = ["beautifulsoup4", "coverage[toml]", "pytest (>=6,<7)", "pytest-cov", "pytest-param-files (>=0.3.4,<0.4.0)", "pytest-regressions", "sphinx (<5.2)", "sphinx-pytest"] - -[[package]] -name = "myst-parser" -version = "3.0.1" -description = "An extended [CommonMark](https://spec.commonmark.org/) compliant parser," -optional = false -python-versions = ">=3.8" -files = [ - {file = "myst_parser-3.0.1-py3-none-any.whl", hash = "sha256:6457aaa33a5d474aca678b8ead9b3dc298e89c68e67012e73146ea6fd54babf1"}, - {file = "myst_parser-3.0.1.tar.gz", hash = "sha256:88f0cb406cb363b077d176b51c476f62d60604d68a8dcdf4832e080441301a87"}, -] - -[package.dependencies] -docutils = ">=0.18,<0.22" -jinja2 = "*" -markdown-it-py = ">=3.0,<4.0" -mdit-py-plugins = ">=0.4,<1.0" -pyyaml = "*" -sphinx = ">=6,<8" - -[package.extras] -code-style = ["pre-commit (>=3.0,<4.0)"] -linkify = ["linkify-it-py (>=2.0,<3.0)"] -rtd = ["ipython", "sphinx (>=7)", "sphinx-autodoc2 (>=0.5.0,<0.6.0)", "sphinx-book-theme (>=1.1,<2.0)", "sphinx-copybutton", "sphinx-design", "sphinx-pyscript", "sphinx-tippy (>=0.4.3)", "sphinx-togglebutton", "sphinxext-opengraph (>=0.9.0,<0.10.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] -testing = ["beautifulsoup4", "coverage[toml]", "defusedxml", "pytest (>=8,<9)", "pytest-cov", "pytest-param-files (>=0.6.0,<0.7.0)", "pytest-regressions", "sphinx-pytest"] -testing-docutils = ["pygments", "pytest (>=8,<9)", "pytest-param-files (>=0.6.0,<0.7.0)"] - -[[package]] -name = "nbclient" -version = "0.6.8" -description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "nbclient-0.6.8-py3-none-any.whl", hash = "sha256:7cce8b415888539180535953f80ea2385cdbb444944cdeb73ffac1556fdbc228"}, - {file = "nbclient-0.6.8.tar.gz", hash = "sha256:268fde3457cafe1539e32eb1c6d796bbedb90b9e92bacd3e43d83413734bb0e8"}, -] - -[package.dependencies] -jupyter-client = ">=6.1.5" -nbformat = ">=5.0" -nest-asyncio = "*" -traitlets = ">=5.2.2" - -[package.extras] -sphinx = ["Sphinx (>=1.7)", "autodoc-traits", "mock", "moto", "myst-parser", "sphinx-book-theme"] -test = ["black", "check-manifest", "flake8", "ipykernel", "ipython", "ipywidgets", "mypy", "nbconvert", "pip (>=18.1)", "pre-commit", "pytest (>=4.1)", "pytest-asyncio", "pytest-cov (>=2.6.1)", "setuptools (>=60.0)", "testpath", "twine (>=1.11.0)", "xmltodict"] - -[[package]] -name = "nbconvert" -version = "7.16.4" -description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." -optional = false -python-versions = ">=3.8" -files = [ - {file = "nbconvert-7.16.4-py3-none-any.whl", hash = "sha256:05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3"}, - {file = "nbconvert-7.16.4.tar.gz", hash = "sha256:86ca91ba266b0a448dc96fa6c5b9d98affabde2867b363258703536807f9f7f4"}, -] - -[package.dependencies] -beautifulsoup4 = "*" -bleach = "!=5.0.0" -defusedxml = "*" -importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} -jinja2 = ">=3.0" -jupyter-core = ">=4.7" -jupyterlab-pygments = "*" -markupsafe = ">=2.0" -mistune = ">=2.0.3,<4" -nbclient = ">=0.5.0" -nbformat = ">=5.7" -packaging = "*" -pandocfilters = ">=1.4.1" -pygments = ">=2.4.1" -tinycss2 = "*" -traitlets = ">=5.1" - -[package.extras] -all = ["flaky", "ipykernel", "ipython", "ipywidgets (>=7.5)", "myst-parser", "nbsphinx (>=0.2.12)", "playwright", "pydata-sphinx-theme", "pyqtwebengine (>=5.15)", "pytest (>=7)", "sphinx (==5.0.2)", "sphinxcontrib-spelling", "tornado (>=6.1)"] -docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"] -qtpdf = ["pyqtwebengine (>=5.15)"] -qtpng = ["pyqtwebengine (>=5.15)"] -serve = ["tornado (>=6.1)"] -test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest (>=7)"] -webpdf = ["playwright"] - -[[package]] -name = "nbformat" -version = "5.10.4" -description = "The Jupyter Notebook format" -optional = false -python-versions = ">=3.8" -files = [ - {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, - {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, -] - -[package.dependencies] -fastjsonschema = ">=2.15" -jsonschema = ">=2.6" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -traitlets = ">=5.1" - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["pep440", "pre-commit", "pytest", "testpath"] - -[[package]] -name = "nbmake" -version = "1.5.4" -description = "Pytest plugin for testing notebooks" -optional = false -python-versions = "<4.0.0,>=3.8.0" -files = [ - {file = "nbmake-1.5.4-py3-none-any.whl", hash = "sha256:8e440a61a7d4ab303064aa86b8d2c088177c89960e2b4a0f91a768dc9f68382b"}, - {file = "nbmake-1.5.4.tar.gz", hash = "sha256:56417fe80d50069671122955532df6e26369a23f68b9c6e2191ae9cfef19abb2"}, -] - -[package.dependencies] -ipykernel = ">=5.4.0" -nbclient = ">=0.6.6,<0.7.0" -nbformat = ">=5.0.8,<6.0.0" -Pygments = ">=2.7.3,<3.0.0" -pytest = ">=6.1.0" - -[[package]] -name = "nest-asyncio" -version = "1.6.0" -description = "Patch asyncio to allow nested event loops" -optional = false -python-versions = ">=3.5" -files = [ - {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, - {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, -] - -[[package]] -name = "nodeenv" -version = "1.9.1" -description = "Node.js virtual environment builder" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, - {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, -] - -[[package]] -name = "notebook" -version = "7.2.2" -description = "Jupyter Notebook - A web-based notebook environment for interactive computing" -optional = false -python-versions = ">=3.8" -files = [ - {file = "notebook-7.2.2-py3-none-any.whl", hash = "sha256:c89264081f671bc02eec0ed470a627ed791b9156cad9285226b31611d3e9fe1c"}, - {file = "notebook-7.2.2.tar.gz", hash = "sha256:2ef07d4220421623ad3fe88118d687bc0450055570cdd160814a59cf3a1c516e"}, -] - -[package.dependencies] -jupyter-server = ">=2.4.0,<3" -jupyterlab = ">=4.2.0,<4.3" -jupyterlab-server = ">=2.27.1,<3" -notebook-shim = ">=0.2,<0.3" -tornado = ">=6.2.0" - -[package.extras] -dev = ["hatch", "pre-commit"] -docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] - -[[package]] -name = "notebook-shim" -version = "0.2.4" -description = "A shim layer for notebook traits and config" -optional = false -python-versions = ">=3.7" -files = [ - {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, - {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, -] - -[package.dependencies] -jupyter-server = ">=1.8,<3" - -[package.extras] -test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"] - -[[package]] -name = "numpy" -version = "1.24.4" -description = "Fundamental package for array computing in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"}, - {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"}, - {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"}, - {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"}, - {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"}, - {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"}, - {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"}, - {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"}, - {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"}, - {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"}, - {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"}, - {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"}, - {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"}, - {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"}, - {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"}, - {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"}, - {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"}, - {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"}, - {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"}, - {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"}, - {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"}, - {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"}, - {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"}, - {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"}, - {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"}, -] - -[[package]] -name = "numpy" -version = "1.26.4" -description = "Fundamental package for array computing in Python" -optional = false -python-versions = ">=3.9" -files = [ - {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, - {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, - {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, - {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, - {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, - {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, - {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, - {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, - {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, - {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, - {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, -] - -[[package]] -name = "overrides" -version = "7.7.0" -description = "A decorator to automatically detect mismatch when overriding a method." -optional = false -python-versions = ">=3.6" -files = [ - {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, - {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, -] - -[[package]] -name = "packaging" -version = "24.1" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, -] - -[[package]] -name = "pandocfilters" -version = "1.5.1" -description = "Utilities for writing pandoc filters in python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, - {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, -] - -[[package]] -name = "parso" -version = "0.8.4" -description = "A Python Parser" -optional = false -python-versions = ">=3.6" -files = [ - {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, - {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, -] - -[package.extras] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["docopt", "pytest"] - -[[package]] -name = "pathspec" -version = "0.12.1" -description = "Utility library for gitignore style pattern matching of file paths." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, - {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, -] - -[[package]] -name = "pexpect" -version = "4.9.0" -description = "Pexpect allows easy control of interactive console applications." -optional = false -python-versions = "*" -files = [ - {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, - {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, -] - -[package.dependencies] -ptyprocess = ">=0.5" - -[[package]] -name = "pickleshare" -version = "0.7.5" -description = "Tiny 'shelve'-like database with concurrency support" -optional = false -python-versions = "*" -files = [ - {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, - {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, -] - -[[package]] -name = "pillow" -version = "10.4.0" -description = "Python Imaging Library (Fork)" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"}, - {file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc"}, - {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e"}, - {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46"}, - {file = "pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984"}, - {file = "pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141"}, - {file = "pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"}, - {file = "pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c"}, - {file = "pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319"}, - {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d"}, - {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696"}, - {file = "pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496"}, - {file = "pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91"}, - {file = "pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22"}, - {file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"}, - {file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a"}, - {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b"}, - {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9"}, - {file = "pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42"}, - {file = "pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a"}, - {file = "pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9"}, - {file = "pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3"}, - {file = "pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc"}, - {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a"}, - {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309"}, - {file = "pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060"}, - {file = "pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea"}, - {file = "pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d"}, - {file = "pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736"}, - {file = "pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd"}, - {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84"}, - {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0"}, - {file = "pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e"}, - {file = "pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab"}, - {file = "pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d"}, - {file = "pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c"}, - {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1"}, - {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df"}, - {file = "pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef"}, - {file = "pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5"}, - {file = "pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3"}, - {file = "pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06"}, -] - -[package.extras] -docs = ["furo", "olefile", "sphinx (>=7.3)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] -fpx = ["olefile"] -mic = ["olefile"] -tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] -typing = ["typing-extensions"] -xmp = ["defusedxml"] - -[[package]] -name = "pkgutil-resolve-name" -version = "1.3.10" -description = "Resolve a name to an object." -optional = false -python-versions = ">=3.6" -files = [ - {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, - {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, -] - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "prometheus-client" -version = "0.21.0" -description = "Python client for the Prometheus monitoring system." -optional = false -python-versions = ">=3.8" -files = [ - {file = "prometheus_client-0.21.0-py3-none-any.whl", hash = "sha256:4fa6b4dd0ac16d58bb587c04b1caae65b8c5043e85f778f42f5f632f6af2e166"}, - {file = "prometheus_client-0.21.0.tar.gz", hash = "sha256:96c83c606b71ff2b0a433c98889d275f51ffec6c5e267de37c7a2b5c9aa9233e"}, -] - -[package.extras] -twisted = ["twisted"] - -[[package]] -name = "prompt-toolkit" -version = "3.0.47" -description = "Library for building powerful interactive command lines in Python" -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "prompt_toolkit-3.0.47-py3-none-any.whl", hash = "sha256:0d7bfa67001d5e39d02c224b663abc33687405033a8c422d0d675a5a13361d10"}, - {file = "prompt_toolkit-3.0.47.tar.gz", hash = "sha256:1e1b29cb58080b1e69f207c893a1a7bf16d127a5c30c9d17a25a5d77792e5360"}, -] - -[package.dependencies] -wcwidth = "*" - -[[package]] -name = "protobuf" -version = "5.28.2" -description = "" -optional = false -python-versions = ">=3.8" -files = [ - {file = "protobuf-5.28.2-cp310-abi3-win32.whl", hash = "sha256:eeea10f3dc0ac7e6b4933d32db20662902b4ab81bf28df12218aa389e9c2102d"}, - {file = "protobuf-5.28.2-cp310-abi3-win_amd64.whl", hash = "sha256:2c69461a7fcc8e24be697624c09a839976d82ae75062b11a0972e41fd2cd9132"}, - {file = "protobuf-5.28.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a8b9403fc70764b08d2f593ce44f1d2920c5077bf7d311fefec999f8c40f78b7"}, - {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:35cfcb15f213449af7ff6198d6eb5f739c37d7e4f1c09b5d0641babf2cc0c68f"}, - {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:5e8a95246d581eef20471b5d5ba010d55f66740942b95ba9b872d918c459452f"}, - {file = "protobuf-5.28.2-cp38-cp38-win32.whl", hash = "sha256:87317e9bcda04a32f2ee82089a204d3a2f0d3c8aeed16568c7daf4756e4f1fe0"}, - {file = "protobuf-5.28.2-cp38-cp38-win_amd64.whl", hash = "sha256:c0ea0123dac3399a2eeb1a1443d82b7afc9ff40241433296769f7da42d142ec3"}, - {file = "protobuf-5.28.2-cp39-cp39-win32.whl", hash = "sha256:ca53faf29896c526863366a52a8f4d88e69cd04ec9571ed6082fa117fac3ab36"}, - {file = "protobuf-5.28.2-cp39-cp39-win_amd64.whl", hash = "sha256:8ddc60bf374785fb7cb12510b267f59067fa10087325b8e1855b898a0d81d276"}, - {file = "protobuf-5.28.2-py3-none-any.whl", hash = "sha256:52235802093bd8a2811abbe8bf0ab9c5f54cca0a751fdd3f6ac2a21438bffece"}, - {file = "protobuf-5.28.2.tar.gz", hash = "sha256:59379674ff119717404f7454647913787034f03fe7049cbef1d74a97bb4593f0"}, -] - -[[package]] -name = "psutil" -version = "6.0.0" -description = "Cross-platform lib for process and system monitoring in Python." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -files = [ - {file = "psutil-6.0.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a021da3e881cd935e64a3d0a20983bda0bb4cf80e4f74fa9bfcb1bc5785360c6"}, - {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:1287c2b95f1c0a364d23bc6f2ea2365a8d4d9b726a3be7294296ff7ba97c17f0"}, - {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:a9a3dbfb4de4f18174528d87cc352d1f788b7496991cca33c6996f40c9e3c92c"}, - {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6ec7588fb3ddaec7344a825afe298db83fe01bfaaab39155fa84cf1c0d6b13c3"}, - {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:1e7c870afcb7d91fdea2b37c24aeb08f98b6d67257a5cb0a8bc3ac68d0f1a68c"}, - {file = "psutil-6.0.0-cp27-none-win32.whl", hash = "sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35"}, - {file = "psutil-6.0.0-cp27-none-win_amd64.whl", hash = "sha256:21f1fb635deccd510f69f485b87433460a603919b45e2a324ad65b0cc74f8fb1"}, - {file = "psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0"}, - {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0"}, - {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd"}, - {file = "psutil-6.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e8d0054fc88153ca0544f5c4d554d42e33df2e009c4ff42284ac9ebdef4132"}, - {file = "psutil-6.0.0-cp36-cp36m-win32.whl", hash = "sha256:fc8c9510cde0146432bbdb433322861ee8c3efbf8589865c8bf8d21cb30c4d14"}, - {file = "psutil-6.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:34859b8d8f423b86e4385ff3665d3f4d94be3cdf48221fbe476e883514fdb71c"}, - {file = "psutil-6.0.0-cp37-abi3-win32.whl", hash = "sha256:a495580d6bae27291324fe60cea0b5a7c23fa36a7cd35035a16d93bdcf076b9d"}, - {file = "psutil-6.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:33ea5e1c975250a720b3a6609c490db40dae5d83a4eb315170c4fe0d8b1f34b3"}, - {file = "psutil-6.0.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:ffe7fc9b6b36beadc8c322f84e1caff51e8703b88eee1da46d1e3a6ae11b4fd0"}, - {file = "psutil-6.0.0.tar.gz", hash = "sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2"}, -] - -[package.extras] -test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] - -[[package]] -name = "ptyprocess" -version = "0.7.0" -description = "Run a subprocess in a pseudo terminal" -optional = false -python-versions = "*" -files = [ - {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, - {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, -] - -[[package]] -name = "pure-eval" -version = "0.2.3" -description = "Safely evaluate AST nodes without side effects" -optional = false -python-versions = "*" -files = [ - {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, - {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, -] - -[package.extras] -tests = ["pytest"] - -[[package]] -name = "pycodestyle" -version = "2.11.1" -description = "Python style guide checker" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"}, - {file = "pycodestyle-2.11.1.tar.gz", hash = "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f"}, -] - -[[package]] -name = "pycparser" -version = "2.22" -description = "C parser in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, -] - -[[package]] -name = "pyflakes" -version = "3.1.0" -description = "passive checker of Python programs" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyflakes-3.1.0-py2.py3-none-any.whl", hash = "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774"}, - {file = "pyflakes-3.1.0.tar.gz", hash = "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"}, -] - -[[package]] -name = "pygments" -version = "2.18.0" -description = "Pygments is a syntax highlighting package written in Python." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, -] - -[package.extras] -windows-terminal = ["colorama (>=0.4.6)"] - -[[package]] -name = "pyproject-api" -version = "1.8.0" -description = "API to interact with the python pyproject.toml based projects" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyproject_api-1.8.0-py3-none-any.whl", hash = "sha256:3d7d347a047afe796fd5d1885b1e391ba29be7169bd2f102fcd378f04273d228"}, - {file = "pyproject_api-1.8.0.tar.gz", hash = "sha256:77b8049f2feb5d33eefcc21b57f1e279636277a8ac8ad6b5871037b243778496"}, -] - -[package.dependencies] -packaging = ">=24.1" -tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} - -[package.extras] -docs = ["furo (>=2024.8.6)", "sphinx-autodoc-typehints (>=2.4.1)"] -testing = ["covdefaults (>=2.3)", "pytest (>=8.3.3)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "setuptools (>=75.1)"] - -[[package]] -name = "pyright" -version = "1.1.381" -description = "Command line wrapper for pyright" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyright-1.1.381-py3-none-any.whl", hash = "sha256:5dc0aa80a265675d36abab59c674ae01dbe476714f91845b61b841d34aa99081"}, - {file = "pyright-1.1.381.tar.gz", hash = "sha256:314cf0c1351c189524fb10c7ac20688ecd470e8cc505c394d642c9c80bf7c3a5"}, -] - -[package.dependencies] -nodeenv = ">=1.6.0" - -[package.extras] -all = ["twine (>=3.4.1)"] -dev = ["twine (>=3.4.1)"] - -[[package]] -name = "pytest" -version = "7.4.4" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, - {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} - -[package.extras] -testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "pytest-asyncio" -version = "0.23.8" -description = "Pytest support for asyncio" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest_asyncio-0.23.8-py3-none-any.whl", hash = "sha256:50265d892689a5faefb84df80819d1ecef566eb3549cf915dfb33569359d1ce2"}, - {file = "pytest_asyncio-0.23.8.tar.gz", hash = "sha256:759b10b33a6dc61cce40a8bd5205e302978bbbcc00e279a8b61d9a6a3c82e4d3"}, -] - -[package.dependencies] -pytest = ">=7.0.0,<9" - -[package.extras] -docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1.0)"] -testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] - -[[package]] -name = "pytest-mock" -version = "3.14.0" -description = "Thin-wrapper around the mock package for easier use with pytest" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, - {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, -] - -[package.dependencies] -pytest = ">=6.2.5" - -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] - -[[package]] -name = "pytest-watcher" -version = "0.3.5" -description = "Automatically rerun your tests on file modifications" -optional = false -python-versions = ">=3.7.0,<4.0.0" -files = [ - {file = "pytest_watcher-0.3.5-py3-none-any.whl", hash = "sha256:af00ca52c7be22dc34c0fd3d7ffef99057207a73b05dc5161fe3b2fe91f58130"}, - {file = "pytest_watcher-0.3.5.tar.gz", hash = "sha256:8896152460ba2b1a8200c12117c6611008ec96c8b2d811f0a05ab8a82b043ff8"}, -] - -[package.dependencies] -tomli = {version = ">=2.0.1,<3.0.0", markers = "python_version < \"3.11\""} -watchdog = ">=2.0.0" - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "python-json-logger" -version = "2.0.7" -description = "A python library adding a json log formatter" -optional = false -python-versions = ">=3.6" -files = [ - {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"}, - {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"}, -] - -[[package]] -name = "pytz" -version = "2024.2" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, - {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, -] - -[[package]] -name = "pywin32" -version = "306" -description = "Python for Window Extensions" -optional = false -python-versions = "*" -files = [ - {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, - {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, - {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, - {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, - {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, - {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, - {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, - {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, - {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, - {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, - {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, - {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, - {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, - {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, -] - -[[package]] -name = "pywinpty" -version = "2.0.13" -description = "Pseudo terminal support for Windows from Python." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pywinpty-2.0.13-cp310-none-win_amd64.whl", hash = "sha256:697bff211fb5a6508fee2dc6ff174ce03f34a9a233df9d8b5fe9c8ce4d5eaf56"}, - {file = "pywinpty-2.0.13-cp311-none-win_amd64.whl", hash = "sha256:b96fb14698db1284db84ca38c79f15b4cfdc3172065b5137383910567591fa99"}, - {file = "pywinpty-2.0.13-cp312-none-win_amd64.whl", hash = "sha256:2fd876b82ca750bb1333236ce98488c1be96b08f4f7647cfdf4129dfad83c2d4"}, - {file = "pywinpty-2.0.13-cp38-none-win_amd64.whl", hash = "sha256:61d420c2116c0212808d31625611b51caf621fe67f8a6377e2e8b617ea1c1f7d"}, - {file = "pywinpty-2.0.13-cp39-none-win_amd64.whl", hash = "sha256:71cb613a9ee24174730ac7ae439fd179ca34ccb8c5349e8d7b72ab5dea2c6f4b"}, - {file = "pywinpty-2.0.13.tar.gz", hash = "sha256:c34e32351a3313ddd0d7da23d27f835c860d32fe4ac814d372a3ea9594f41dde"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "pyzmq" -version = "26.2.0" -description = "Python bindings for 0MQ" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629"}, - {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dacd995031a01d16eec825bf30802fceb2c3791ef24bcce48fa98ce40918c27b"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89289a5ee32ef6c439086184529ae060c741334b8970a6855ec0b6ad3ff28764"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5506f06d7dc6ecf1efacb4a013b1f05071bb24b76350832c96449f4a2d95091c"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ea039387c10202ce304af74def5021e9adc6297067f3441d348d2b633e8166a"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2224fa4a4c2ee872886ed00a571f5e967c85e078e8e8c2530a2fb01b3309b88"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:28ad5233e9c3b52d76196c696e362508959741e1a005fb8fa03b51aea156088f"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1c17211bc037c7d88e85ed8b7d8f7e52db6dc8eca5590d162717c654550f7282"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b8f86dd868d41bea9a5f873ee13bf5551c94cf6bc51baebc6f85075971fe6eea"}, - {file = "pyzmq-26.2.0-cp310-cp310-win32.whl", hash = "sha256:46a446c212e58456b23af260f3d9fb785054f3e3653dbf7279d8f2b5546b21c2"}, - {file = "pyzmq-26.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:49d34ab71db5a9c292a7644ce74190b1dd5a3475612eefb1f8be1d6961441971"}, - {file = "pyzmq-26.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:bfa832bfa540e5b5c27dcf5de5d82ebc431b82c453a43d141afb1e5d2de025fa"}, - {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:8f7e66c7113c684c2b3f1c83cdd3376103ee0ce4c49ff80a648643e57fb22218"}, - {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3a495b30fc91db2db25120df5847d9833af237546fd59170701acd816ccc01c4"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77eb0968da535cba0470a5165468b2cac7772cfb569977cff92e240f57e31bef"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ace4f71f1900a548f48407fc9be59c6ba9d9aaf658c2eea6cf2779e72f9f317"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92a78853d7280bffb93df0a4a6a2498cba10ee793cc8076ef797ef2f74d107cf"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:689c5d781014956a4a6de61d74ba97b23547e431e9e7d64f27d4922ba96e9d6e"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aca98bc423eb7d153214b2df397c6421ba6373d3397b26c057af3c904452e37"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f3496d76b89d9429a656293744ceca4d2ac2a10ae59b84c1da9b5165f429ad3"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5c2b3bfd4b9689919db068ac6c9911f3fcb231c39f7dd30e3138be94896d18e6"}, - {file = "pyzmq-26.2.0-cp311-cp311-win32.whl", hash = "sha256:eac5174677da084abf378739dbf4ad245661635f1600edd1221f150b165343f4"}, - {file = "pyzmq-26.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:5a509df7d0a83a4b178d0f937ef14286659225ef4e8812e05580776c70e155d5"}, - {file = "pyzmq-26.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0e6091b157d48cbe37bd67233318dbb53e1e6327d6fc3bb284afd585d141003"}, - {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:ded0fc7d90fe93ae0b18059930086c51e640cdd3baebdc783a695c77f123dcd9"}, - {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17bf5a931c7f6618023cdacc7081f3f266aecb68ca692adac015c383a134ca52"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55cf66647e49d4621a7e20c8d13511ef1fe1efbbccf670811864452487007e08"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4661c88db4a9e0f958c8abc2b97472e23061f0bc737f6f6179d7a27024e1faa5"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7f69de383cb47522c9c208aec6dd17697db7875a4674c4af3f8cfdac0bdeae"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f98f6dfa8b8ccaf39163ce872bddacca38f6a67289116c8937a02e30bbe9711"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3e0210287329272539eea617830a6a28161fbbd8a3271bf4150ae3e58c5d0e6"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6b274e0762c33c7471f1a7471d1a2085b1a35eba5cdc48d2ae319f28b6fc4de3"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29c6a4635eef69d68a00321e12a7d2559fe2dfccfa8efae3ffb8e91cd0b36a8b"}, - {file = "pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7"}, - {file = "pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a"}, - {file = "pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b"}, - {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726"}, - {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e"}, - {file = "pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5"}, - {file = "pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad"}, - {file = "pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797"}, - {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a"}, - {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0"}, - {file = "pyzmq-26.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3b55a4229ce5da9497dd0452b914556ae58e96a4381bb6f59f1305dfd7e53fc8"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9cb3a6460cdea8fe8194a76de8895707e61ded10ad0be97188cc8463ffa7e3a8"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8ab5cad923cc95c87bffee098a27856c859bd5d0af31bd346035aa816b081fe1"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ed69074a610fad1c2fda66180e7b2edd4d31c53f2d1872bc2d1211563904cd9"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cccba051221b916a4f5e538997c45d7d136a5646442b1231b916d0164067ea27"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:0eaa83fc4c1e271c24eaf8fb083cbccef8fde77ec8cd45f3c35a9a123e6da097"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9edda2df81daa129b25a39b86cb57dfdfe16f7ec15b42b19bfac503360d27a93"}, - {file = "pyzmq-26.2.0-cp37-cp37m-win32.whl", hash = "sha256:ea0eb6af8a17fa272f7b98d7bebfab7836a0d62738e16ba380f440fceca2d951"}, - {file = "pyzmq-26.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4ff9dc6bc1664bb9eec25cd17506ef6672d506115095411e237d571e92a58231"}, - {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2eb7735ee73ca1b0d71e0e67c3739c689067f055c764f73aac4cc8ecf958ee3f"}, - {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a534f43bc738181aa7cbbaf48e3eca62c76453a40a746ab95d4b27b1111a7d2"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aedd5dd8692635813368e558a05266b995d3d020b23e49581ddd5bbe197a8ab6"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8be4700cd8bb02cc454f630dcdf7cfa99de96788b80c51b60fe2fe1dac480289"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fcc03fa4997c447dce58264e93b5aa2d57714fbe0f06c07b7785ae131512732"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:402b190912935d3db15b03e8f7485812db350d271b284ded2b80d2e5704be780"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8685fa9c25ff00f550c1fec650430c4b71e4e48e8d852f7ddcf2e48308038640"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:76589c020680778f06b7e0b193f4b6dd66d470234a16e1df90329f5e14a171cd"}, - {file = "pyzmq-26.2.0-cp38-cp38-win32.whl", hash = "sha256:8423c1877d72c041f2c263b1ec6e34360448decfb323fa8b94e85883043ef988"}, - {file = "pyzmq-26.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:76589f2cd6b77b5bdea4fca5992dc1c23389d68b18ccc26a53680ba2dc80ff2f"}, - {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:b1d464cb8d72bfc1a3adc53305a63a8e0cac6bc8c5a07e8ca190ab8d3faa43c2"}, - {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4da04c48873a6abdd71811c5e163bd656ee1b957971db7f35140a2d573f6949c"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d049df610ac811dcffdc147153b414147428567fbbc8be43bb8885f04db39d98"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05590cdbc6b902101d0e65d6a4780af14dc22914cc6ab995d99b85af45362cc9"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c811cfcd6a9bf680236c40c6f617187515269ab2912f3d7e8c0174898e2519db"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6835dd60355593de10350394242b5757fbbd88b25287314316f266e24c61d073"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc6bee759a6bddea5db78d7dcd609397449cb2d2d6587f48f3ca613b19410cfc"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c530e1eecd036ecc83c3407f77bb86feb79916d4a33d11394b8234f3bd35b940"}, - {file = "pyzmq-26.2.0-cp39-cp39-win32.whl", hash = "sha256:367b4f689786fca726ef7a6c5ba606958b145b9340a5e4808132cc65759abd44"}, - {file = "pyzmq-26.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:e6fa2e3e683f34aea77de8112f6483803c96a44fd726d7358b9888ae5bb394ec"}, - {file = "pyzmq-26.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:7445be39143a8aa4faec43b076e06944b8f9d0701b669df4af200531b21e40bb"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:706e794564bec25819d21a41c31d4df2d48e1cc4b061e8d345d7fb4dd3e94072"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b435f2753621cd36e7c1762156815e21c985c72b19135dac43a7f4f31d28dd1"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160c7e0a5eb178011e72892f99f918c04a131f36056d10d9c1afb223fc952c2d"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4a71d5d6e7b28a47a394c0471b7e77a0661e2d651e7ae91e0cab0a587859ca"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:90412f2db8c02a3864cbfc67db0e3dcdbda336acf1c469526d3e869394fe001c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2ea4ad4e6a12e454de05f2949d4beddb52460f3de7c8b9d5c46fbb7d7222e02c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fc4f7a173a5609631bb0c42c23d12c49df3966f89f496a51d3eb0ec81f4519d6"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:878206a45202247781472a2d99df12a176fef806ca175799e1c6ad263510d57c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17c412bad2eb9468e876f556eb4ee910e62d721d2c7a53c7fa31e643d35352e6"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:0d987a3ae5a71c6226b203cfd298720e0086c7fe7c74f35fa8edddfbd6597eed"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:39887ac397ff35b7b775db7201095fc6310a35fdbae85bac4523f7eb3b840e20"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fdb5b3e311d4d4b0eb8b3e8b4d1b0a512713ad7e6a68791d0923d1aec433d919"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:226af7dcb51fdb0109f0016449b357e182ea0ceb6b47dfb5999d569e5db161d5"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bed0e799e6120b9c32756203fb9dfe8ca2fb8467fed830c34c877e25638c3fc"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:29c7947c594e105cb9e6c466bace8532dc1ca02d498684128b339799f5248277"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cdeabcff45d1c219636ee2e54d852262e5c2e085d6cb476d938aee8d921356b3"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35cffef589bcdc587d06f9149f8d5e9e8859920a071df5a2671de2213bef592a"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18c8dc3b7468d8b4bdf60ce9d7141897da103c7a4690157b32b60acb45e333e6"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7133d0a1677aec369d67dd78520d3fa96dd7f3dcec99d66c1762870e5ea1a50a"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a96179a24b14fa6428cbfc08641c779a53f8fcec43644030328f44034c7f1f4"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4f78c88905461a9203eac9faac157a2a0dbba84a0fd09fd29315db27be40af9f"}, - {file = "pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f"}, -] - -[package.dependencies] -cffi = {version = "*", markers = "implementation_name == \"pypy\""} - -[[package]] -name = "referencing" -version = "0.35.1" -description = "JSON Referencing + Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, - {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, -] - -[package.dependencies] -attrs = ">=22.2.0" -rpds-py = ">=0.7.0" - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "rfc3339-validator" -version = "0.1.4" -description = "A pure python RFC3339 validator" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, - {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "rfc3986-validator" -version = "0.1.1" -description = "Pure python rfc3986 validator" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, - {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, -] - -[[package]] -name = "rpds-py" -version = "0.20.0" -description = "Python bindings to Rust's persistent data structures (rpds)" -optional = false -python-versions = ">=3.8" -files = [ - {file = "rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2"}, - {file = "rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94"}, - {file = "rpds_py-0.20.0-cp310-none-win32.whl", hash = "sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee"}, - {file = "rpds_py-0.20.0-cp310-none-win_amd64.whl", hash = "sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399"}, - {file = "rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489"}, - {file = "rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58"}, - {file = "rpds_py-0.20.0-cp311-none-win32.whl", hash = "sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0"}, - {file = "rpds_py-0.20.0-cp311-none-win_amd64.whl", hash = "sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c"}, - {file = "rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6"}, - {file = "rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174"}, - {file = "rpds_py-0.20.0-cp312-none-win32.whl", hash = "sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139"}, - {file = "rpds_py-0.20.0-cp312-none-win_amd64.whl", hash = "sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585"}, - {file = "rpds_py-0.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29"}, - {file = "rpds_py-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57"}, - {file = "rpds_py-0.20.0-cp313-none-win32.whl", hash = "sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a"}, - {file = "rpds_py-0.20.0-cp313-none-win_amd64.whl", hash = "sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2"}, - {file = "rpds_py-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24"}, - {file = "rpds_py-0.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a"}, - {file = "rpds_py-0.20.0-cp38-none-win32.whl", hash = "sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5"}, - {file = "rpds_py-0.20.0-cp38-none-win_amd64.whl", hash = "sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232"}, - {file = "rpds_py-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22"}, - {file = "rpds_py-0.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b"}, - {file = "rpds_py-0.20.0-cp39-none-win32.whl", hash = "sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7"}, - {file = "rpds_py-0.20.0-cp39-none-win_amd64.whl", hash = "sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8"}, - {file = "rpds_py-0.20.0.tar.gz", hash = "sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121"}, -] - -[[package]] -name = "send2trash" -version = "1.8.3" -description = "Send file to trash natively under Mac OS X, Windows and Linux" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -files = [ - {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, - {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, -] - -[package.extras] -nativelib = ["pyobjc-framework-Cocoa", "pywin32"] -objc = ["pyobjc-framework-Cocoa"] -win32 = ["pywin32"] - -[[package]] -name = "setuptools" -version = "75.1.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, - {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "snowballstemmer" -version = "2.2.0" -description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -optional = false -python-versions = "*" -files = [ - {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, - {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, -] - -[[package]] -name = "soupsieve" -version = "2.6" -description = "A modern CSS selector implementation for Beautiful Soup." -optional = false -python-versions = ">=3.8" -files = [ - {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, - {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"}, -] - -[[package]] -name = "sphinx" -version = "5.3.0" -description = "Python documentation generator" -optional = false -python-versions = ">=3.6" -files = [ - {file = "Sphinx-5.3.0.tar.gz", hash = "sha256:51026de0a9ff9fc13c05d74913ad66047e104f56a129ff73e174eb5c3ee794b5"}, - {file = "sphinx-5.3.0-py3-none-any.whl", hash = "sha256:060ca5c9f7ba57a08a1219e547b269fadf125ae25b06b9fa7f66768efb652d6d"}, -] - -[package.dependencies] -alabaster = ">=0.7,<0.8" -babel = ">=2.9" -colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -docutils = ">=0.14,<0.20" -imagesize = ">=1.3" -importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} -Jinja2 = ">=3.0" -packaging = ">=21.0" -Pygments = ">=2.12" -requests = ">=2.5.0" -snowballstemmer = ">=2.0" -sphinxcontrib-applehelp = "*" -sphinxcontrib-devhelp = "*" -sphinxcontrib-htmlhelp = ">=2.0.0" -sphinxcontrib-jsmath = "*" -sphinxcontrib-qthelp = "*" -sphinxcontrib-serializinghtml = ">=1.1.5" - -[package.extras] -docs = ["sphinxcontrib-websupport"] -lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-bugbear", "flake8-comprehensions", "flake8-simplify", "isort", "mypy (>=0.981)", "sphinx-lint", "types-requests", "types-typed-ast"] -test = ["cython", "html5lib", "pytest (>=4.6)", "typed_ast"] - -[[package]] -name = "sphinx" -version = "7.1.2" -description = "Python documentation generator" -optional = false -python-versions = ">=3.8" -files = [ - {file = "sphinx-7.1.2-py3-none-any.whl", hash = "sha256:d170a81825b2fcacb6dfd5a0d7f578a053e45d3f2b153fecc948c37344eb4cbe"}, - {file = "sphinx-7.1.2.tar.gz", hash = "sha256:780f4d32f1d7d1126576e0e5ecc19dc32ab76cd24e950228dcf7b1f6d3d9e22f"}, -] - -[package.dependencies] -alabaster = ">=0.7,<0.8" -babel = ">=2.9" -colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -docutils = ">=0.18.1,<0.21" -imagesize = ">=1.3" -importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} -Jinja2 = ">=3.0" -packaging = ">=21.0" -Pygments = ">=2.13" -requests = ">=2.25.0" -snowballstemmer = ">=2.0" -sphinxcontrib-applehelp = "*" -sphinxcontrib-devhelp = "*" -sphinxcontrib-htmlhelp = ">=2.0.0" -sphinxcontrib-jsmath = "*" -sphinxcontrib-qthelp = "*" -sphinxcontrib-serializinghtml = ">=1.1.5" - -[package.extras] -docs = ["sphinxcontrib-websupport"] -lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"] -test = ["cython", "filelock", "html5lib", "pytest (>=4.6)"] - -[[package]] -name = "sphinx-autoapi" -version = "2.1.1" -description = "Sphinx API documentation generator" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sphinx-autoapi-2.1.1.tar.gz", hash = "sha256:fbadb96e79020d6b0ec45d888517bf816d6b587a2d340fbe1ec31135e300a6c8"}, - {file = "sphinx_autoapi-2.1.1-py2.py3-none-any.whl", hash = "sha256:d8da890477bd18e3327cafdead9d5a44a7d798476c6fa32492100e288250a5a3"}, -] - -[package.dependencies] -anyascii = "*" -astroid = ">=2.7" -Jinja2 = "*" -PyYAML = "*" -sphinx = ">=5.2.0" - -[package.extras] -docs = ["furo", "sphinx", "sphinx-design"] -dotnet = ["sphinxcontrib-dotnetdomain"] -go = ["sphinxcontrib-golangdomain"] - -[[package]] -name = "sphinx-autoapi" -version = "3.3.1" -description = "Sphinx API documentation generator" -optional = false -python-versions = ">=3.8" -files = [ - {file = "sphinx_autoapi-3.3.1-py2.py3-none-any.whl", hash = "sha256:c31a5f41eabc9705d277b75f98e983d653e9af24e294dd576b2afa1719f72c1f"}, - {file = "sphinx_autoapi-3.3.1.tar.gz", hash = "sha256:e44a225827d0ef7178748225a66f30c95454dfd00ee3c22afbdfb8056f7dffb5"}, -] - -[package.dependencies] -astroid = [ - {version = ">=2.7", markers = "python_version < \"3.12\""}, - {version = ">=3.0.0a1", markers = "python_version >= \"3.12\""}, -] -Jinja2 = "*" -PyYAML = "*" -sphinx = ">=6.1.0" -stdlib-list = {version = "*", markers = "python_version < \"3.10\""} - -[package.extras] -docs = ["furo", "sphinx", "sphinx-design"] - -[[package]] -name = "sphinx-rtd-theme" -version = "2.0.0" -description = "Read the Docs theme for Sphinx" -optional = false -python-versions = ">=3.6" -files = [ - {file = "sphinx_rtd_theme-2.0.0-py2.py3-none-any.whl", hash = "sha256:ec93d0856dc280cf3aee9a4c9807c60e027c7f7b461b77aeffed682e68f0e586"}, - {file = "sphinx_rtd_theme-2.0.0.tar.gz", hash = "sha256:bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b"}, -] - -[package.dependencies] -docutils = "<0.21" -sphinx = ">=5,<8" -sphinxcontrib-jquery = ">=4,<5" - -[package.extras] -dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] - -[[package]] -name = "sphinxcontrib-applehelp" -version = "1.0.4" -description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" -optional = false -python-versions = ">=3.8" -files = [ - {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, - {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"}, -] - -[package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] -test = ["pytest"] - -[[package]] -name = "sphinxcontrib-devhelp" -version = "1.0.2" -description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." -optional = false -python-versions = ">=3.5" -files = [ - {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, - {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, -] - -[package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] -test = ["pytest"] - -[[package]] -name = "sphinxcontrib-htmlhelp" -version = "2.0.1" -description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" -optional = false -python-versions = ">=3.8" -files = [ - {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, - {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"}, -] - -[package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] -test = ["html5lib", "pytest"] - -[[package]] -name = "sphinxcontrib-jquery" -version = "4.1" -description = "Extension to include jQuery on newer Sphinx releases" -optional = false -python-versions = ">=2.7" -files = [ - {file = "sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"}, - {file = "sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae"}, -] - -[package.dependencies] -Sphinx = ">=1.8" - -[[package]] -name = "sphinxcontrib-jsmath" -version = "1.0.1" -description = "A sphinx extension which renders display math in HTML via JavaScript" -optional = false -python-versions = ">=3.5" -files = [ - {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, - {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, -] - -[package.extras] -test = ["flake8", "mypy", "pytest"] - -[[package]] -name = "sphinxcontrib-qthelp" -version = "1.0.3" -description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." -optional = false -python-versions = ">=3.5" -files = [ - {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, - {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, -] - -[package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] -test = ["pytest"] - -[[package]] -name = "sphinxcontrib-serializinghtml" -version = "1.1.5" -description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." -optional = false -python-versions = ">=3.5" -files = [ - {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, - {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, -] - -[package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] -test = ["pytest"] - -[[package]] -name = "sqlalchemy" -version = "2.0.35" -description = "Database Abstraction Library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "SQLAlchemy-2.0.35-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:67219632be22f14750f0d1c70e62f204ba69d28f62fd6432ba05ab295853de9b"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4668bd8faf7e5b71c0319407b608f278f279668f358857dbfd10ef1954ac9f90"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb8bea573863762bbf45d1e13f87c2d2fd32cee2dbd50d050f83f87429c9e1ea"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f552023710d4b93d8fb29a91fadf97de89c5926c6bd758897875435f2a939f33"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:016b2e665f778f13d3c438651dd4de244214b527a275e0acf1d44c05bc6026a9"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7befc148de64b6060937231cbff8d01ccf0bfd75aa26383ffdf8d82b12ec04ff"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-win32.whl", hash = "sha256:22b83aed390e3099584b839b93f80a0f4a95ee7f48270c97c90acd40ee646f0b"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-win_amd64.whl", hash = "sha256:a29762cd3d116585278ffb2e5b8cc311fb095ea278b96feef28d0b423154858e"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e21f66748ab725ade40fa7af8ec8b5019c68ab00b929f6643e1b1af461eddb60"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8a6219108a15fc6d24de499d0d515c7235c617b2540d97116b663dade1a54d62"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:042622a5306c23b972192283f4e22372da3b8ddf5f7aac1cc5d9c9b222ab3ff6"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:627dee0c280eea91aed87b20a1f849e9ae2fe719d52cbf847c0e0ea34464b3f7"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4fdcd72a789c1c31ed242fd8c1bcd9ea186a98ee8e5408a50e610edfef980d71"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:89b64cd8898a3a6f642db4eb7b26d1b28a497d4022eccd7717ca066823e9fb01"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-win32.whl", hash = "sha256:6a93c5a0dfe8d34951e8a6f499a9479ffb9258123551fa007fc708ae2ac2bc5e"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-win_amd64.whl", hash = "sha256:c68fe3fcde03920c46697585620135b4ecfdfc1ed23e75cc2c2ae9f8502c10b8"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:eb60b026d8ad0c97917cb81d3662d0b39b8ff1335e3fabb24984c6acd0c900a2"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6921ee01caf375363be5e9ae70d08ce7ca9d7e0e8983183080211a062d299468"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cdf1a0dbe5ced887a9b127da4ffd7354e9c1a3b9bb330dce84df6b70ccb3a8d"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93a71c8601e823236ac0e5d087e4f397874a421017b3318fd92c0b14acf2b6db"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e04b622bb8a88f10e439084486f2f6349bf4d50605ac3e445869c7ea5cf0fa8c"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1b56961e2d31389aaadf4906d453859f35302b4eb818d34a26fab72596076bb8"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-win32.whl", hash = "sha256:0f9f3f9a3763b9c4deb8c5d09c4cc52ffe49f9876af41cc1b2ad0138878453cf"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-win_amd64.whl", hash = "sha256:25b0f63e7fcc2a6290cb5f7f5b4fc4047843504983a28856ce9b35d8f7de03cc"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f021d334f2ca692523aaf7bbf7592ceff70c8594fad853416a81d66b35e3abf9"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05c3f58cf91683102f2f0265c0db3bd3892e9eedabe059720492dbaa4f922da1"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:032d979ce77a6c2432653322ba4cbeabf5a6837f704d16fa38b5a05d8e21fa00"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:2e795c2f7d7249b75bb5f479b432a51b59041580d20599d4e112b5f2046437a3"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:cc32b2990fc34380ec2f6195f33a76b6cdaa9eecf09f0c9404b74fc120aef36f"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-win32.whl", hash = "sha256:9509c4123491d0e63fb5e16199e09f8e262066e58903e84615c301dde8fa2e87"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-win_amd64.whl", hash = "sha256:3655af10ebcc0f1e4e06c5900bb33e080d6a1fa4228f502121f28a3b1753cde5"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4c31943b61ed8fdd63dfd12ccc919f2bf95eefca133767db6fbbd15da62078ec"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a62dd5d7cc8626a3634208df458c5fe4f21200d96a74d122c83bc2015b333bc1"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0630774b0977804fba4b6bbea6852ab56c14965a2b0c7fc7282c5f7d90a1ae72"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d625eddf7efeba2abfd9c014a22c0f6b3796e0ffb48f5d5ab106568ef01ff5a"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ada603db10bb865bbe591939de854faf2c60f43c9b763e90f653224138f910d9"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c41411e192f8d3ea39ea70e0fae48762cd11a2244e03751a98bd3c0ca9a4e936"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-win32.whl", hash = "sha256:d299797d75cd747e7797b1b41817111406b8b10a4f88b6e8fe5b5e59598b43b0"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-win_amd64.whl", hash = "sha256:0375a141e1c0878103eb3d719eb6d5aa444b490c96f3fedab8471c7f6ffe70ee"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ccae5de2a0140d8be6838c331604f91d6fafd0735dbdcee1ac78fc8fbaba76b4"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2a275a806f73e849e1c309ac11108ea1a14cd7058577aba962cd7190e27c9e3c"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:732e026240cdd1c1b2e3ac515c7a23820430ed94292ce33806a95869c46bd139"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:890da8cd1941fa3dab28c5bac3b9da8502e7e366f895b3b8e500896f12f94d11"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0d8326269dbf944b9201911b0d9f3dc524d64779a07518199a58384c3d37a44"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b76d63495b0508ab9fc23f8152bac63205d2a704cd009a2b0722f4c8e0cba8e0"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-win32.whl", hash = "sha256:69683e02e8a9de37f17985905a5eca18ad651bf592314b4d3d799029797d0eb3"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-win_amd64.whl", hash = "sha256:aee110e4ef3c528f3abbc3c2018c121e708938adeeff9006428dd7c8555e9b3f"}, - {file = "SQLAlchemy-2.0.35-py3-none-any.whl", hash = "sha256:2ab3f0336c0387662ce6221ad30ab3a5e6499aab01b9790879b6578fd9b8faa1"}, - {file = "sqlalchemy-2.0.35.tar.gz", hash = "sha256:e11d7ea4d24f0a262bccf9a7cd6284c976c5369dac21db237cff59586045ab9f"}, -] - -[package.dependencies] -greenlet = {version = "!=0.4.17", markers = "python_version < \"3.13\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} -typing-extensions = ">=4.6.0" - -[package.extras] -aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"] -aioodbc = ["aioodbc", "greenlet (!=0.4.17)"] -aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] -asyncio = ["greenlet (!=0.4.17)"] -asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] -mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] -mssql = ["pyodbc"] -mssql-pymssql = ["pymssql"] -mssql-pyodbc = ["pyodbc"] -mypy = ["mypy (>=0.910)"] -mysql = ["mysqlclient (>=1.4.0)"] -mysql-connector = ["mysql-connector-python"] -oracle = ["cx_oracle (>=8)"] -oracle-oracledb = ["oracledb (>=1.0.1)"] -postgresql = ["psycopg2 (>=2.7)"] -postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] -postgresql-pg8000 = ["pg8000 (>=1.29.1)"] -postgresql-psycopg = ["psycopg (>=3.0.7)"] -postgresql-psycopg2binary = ["psycopg2-binary"] -postgresql-psycopg2cffi = ["psycopg2cffi"] -postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"] -pymysql = ["pymysql"] -sqlcipher = ["sqlcipher3_binary"] - -[[package]] -name = "stack-data" -version = "0.6.3" -description = "Extract data from python stack frames and tracebacks for informative displays" -optional = false -python-versions = "*" -files = [ - {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, - {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, -] - -[package.dependencies] -asttokens = ">=2.1.0" -executing = ">=1.2.0" -pure-eval = "*" - -[package.extras] -tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] - -[[package]] -name = "stdlib-list" -version = "0.10.0" -description = "A list of Python Standard Libraries (2.7 through 3.12)." -optional = false -python-versions = ">=3.7" -files = [ - {file = "stdlib_list-0.10.0-py3-none-any.whl", hash = "sha256:b3a911bc441d03e0332dd1a9e7d0870ba3bb0a542a74d7524f54fb431256e214"}, - {file = "stdlib_list-0.10.0.tar.gz", hash = "sha256:6519c50d645513ed287657bfe856d527f277331540691ddeaf77b25459964a14"}, -] - -[package.extras] -dev = ["build", "stdlib-list[doc,lint,test]"] -doc = ["furo", "sphinx"] -lint = ["black", "mypy", "ruff"] -support = ["sphobjinv"] -test = ["coverage[toml]", "pytest", "pytest-cov"] - -[[package]] -name = "tabulate" -version = "0.9.0" -description = "Pretty-print tabular data" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"}, - {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"}, -] - -[package.extras] -widechars = ["wcwidth"] - -[[package]] -name = "terminado" -version = "0.18.1" -description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." -optional = false -python-versions = ">=3.8" -files = [ - {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, - {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, -] - -[package.dependencies] -ptyprocess = {version = "*", markers = "os_name != \"nt\""} -pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} -tornado = ">=6.1.0" - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] -typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] - -[[package]] -name = "tinycss2" -version = "1.3.0" -description = "A tiny CSS parser" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tinycss2-1.3.0-py3-none-any.whl", hash = "sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"}, - {file = "tinycss2-1.3.0.tar.gz", hash = "sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d"}, -] - -[package.dependencies] -webencodings = ">=0.4" - -[package.extras] -doc = ["sphinx", "sphinx_rtd_theme"] -test = ["pytest", "ruff"] - -[[package]] -name = "tokenize-rt" -version = "6.0.0" -description = "A wrapper around the stdlib `tokenize` which roundtrips." -optional = false -python-versions = ">=3.8" -files = [ - {file = "tokenize_rt-6.0.0-py2.py3-none-any.whl", hash = "sha256:d4ff7ded2873512938b4f8cbb98c9b07118f01d30ac585a30d7a88353ca36d22"}, - {file = "tokenize_rt-6.0.0.tar.gz", hash = "sha256:b9711bdfc51210211137499b5e355d3de5ec88a85d2025c520cbb921b5194367"}, -] - -[[package]] -name = "tomli" -version = "2.0.1" -description = "A lil' TOML parser" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] - -[[package]] -name = "tornado" -version = "6.4.1" -description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -optional = false -python-versions = ">=3.8" -files = [ - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, - {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, - {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, - {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, -] - -[[package]] -name = "tox" -version = "4.20.0" -description = "tox is a generic virtualenv management and test command line tool" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tox-4.20.0-py3-none-any.whl", hash = "sha256:21a8005e3d3fe5658a8e36b8ca3ed13a4230429063c5cc2a2fdac6ee5aa0de34"}, - {file = "tox-4.20.0.tar.gz", hash = "sha256:5b78a49b6eaaeab3ae4186415e7c97d524f762ae967c63562687c3e5f0ec23d5"}, -] - -[package.dependencies] -cachetools = ">=5.5" -chardet = ">=5.2" -colorama = ">=0.4.6" -filelock = ">=3.15.4" -packaging = ">=24.1" -platformdirs = ">=4.2.2" -pluggy = ">=1.5" -pyproject-api = ">=1.7.1" -tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} -virtualenv = ">=20.26.3" - -[package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-argparse-cli (>=1.17)", "sphinx-autodoc-typehints (>=2.4)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2023.4.21)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=24.8)"] -testing = ["build[virtualenv] (>=1.2.2)", "covdefaults (>=2.3)", "detect-test-pollution (>=1.2)", "devpi-process (>=1)", "diff-cover (>=9.1.1)", "distlib (>=0.3.8)", "flaky (>=3.8.1)", "hatch-vcs (>=0.4)", "hatchling (>=1.25)", "psutil (>=6)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-xdist (>=3.6.1)", "re-assert (>=1.1)", "setuptools (>=74.1.2)", "time-machine (>=2.15)", "wheel (>=0.44)"] - -[[package]] -name = "traitlets" -version = "5.14.3" -description = "Traitlets Python configuration system" -optional = false -python-versions = ">=3.8" -files = [ - {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, - {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, -] - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] - -[[package]] -name = "types-pillow" -version = "10.2.0.20240822" -description = "Typing stubs for Pillow" -optional = false -python-versions = ">=3.8" -files = [ - {file = "types-Pillow-10.2.0.20240822.tar.gz", hash = "sha256:559fb52a2ef991c326e4a0d20accb3bb63a7ba8d40eb493e0ecb0310ba52f0d3"}, - {file = "types_Pillow-10.2.0.20240822-py3-none-any.whl", hash = "sha256:d9dab025aba07aeb12fd50a6799d4eac52a9603488eca09d7662543983f16c5d"}, -] - -[[package]] -name = "types-python-dateutil" -version = "2.9.0.20240906" -description = "Typing stubs for python-dateutil" -optional = false -python-versions = ">=3.8" -files = [ - {file = "types-python-dateutil-2.9.0.20240906.tar.gz", hash = "sha256:9706c3b68284c25adffc47319ecc7947e5bb86b3773f843c73906fd598bc176e"}, - {file = "types_python_dateutil-2.9.0.20240906-py3-none-any.whl", hash = "sha256:27c8cc2d058ccb14946eebcaaa503088f4f6dbc4fb6093d3d456a49aef2753f6"}, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "uri-template" -version = "1.3.0" -description = "RFC 6570 URI Template Processor" -optional = false -python-versions = ">=3.7" -files = [ - {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, - {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, -] - -[package.extras] -dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] - -[[package]] -name = "urllib3" -version = "2.2.3" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.8" -files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "virtualenv" -version = "20.26.5" -description = "Virtual Python Environment builder" -optional = false -python-versions = ">=3.7" -files = [ - {file = "virtualenv-20.26.5-py3-none-any.whl", hash = "sha256:4f3ac17b81fba3ce3bd6f4ead2749a72da5929c01774948e243db9ba41df4ff6"}, - {file = "virtualenv-20.26.5.tar.gz", hash = "sha256:ce489cac131aa58f4b25e321d6d186171f78e6cb13fafbf32a840cee67733ff4"}, -] - -[package.dependencies] -distlib = ">=0.3.7,<1" -filelock = ">=3.12.2,<4" -platformdirs = ">=3.9.1,<5" - -[package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] - -[[package]] -name = "watchdog" -version = "4.0.2" -description = "Filesystem events monitoring" -optional = false -python-versions = ">=3.8" -files = [ - {file = "watchdog-4.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ede7f010f2239b97cc79e6cb3c249e72962404ae3865860855d5cbe708b0fd22"}, - {file = "watchdog-4.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a2cffa171445b0efa0726c561eca9a27d00a1f2b83846dbd5a4f639c4f8ca8e1"}, - {file = "watchdog-4.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c50f148b31b03fbadd6d0b5980e38b558046b127dc483e5e4505fcef250f9503"}, - {file = "watchdog-4.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7c7d4bf585ad501c5f6c980e7be9c4f15604c7cc150e942d82083b31a7548930"}, - {file = "watchdog-4.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:914285126ad0b6eb2258bbbcb7b288d9dfd655ae88fa28945be05a7b475a800b"}, - {file = "watchdog-4.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:984306dc4720da5498b16fc037b36ac443816125a3705dfde4fd90652d8028ef"}, - {file = "watchdog-4.0.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1cdcfd8142f604630deef34722d695fb455d04ab7cfe9963055df1fc69e6727a"}, - {file = "watchdog-4.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d7ab624ff2f663f98cd03c8b7eedc09375a911794dfea6bf2a359fcc266bff29"}, - {file = "watchdog-4.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:132937547a716027bd5714383dfc40dc66c26769f1ce8a72a859d6a48f371f3a"}, - {file = "watchdog-4.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:cd67c7df93eb58f360c43802acc945fa8da70c675b6fa37a241e17ca698ca49b"}, - {file = "watchdog-4.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bcfd02377be80ef3b6bc4ce481ef3959640458d6feaae0bd43dd90a43da90a7d"}, - {file = "watchdog-4.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:980b71510f59c884d684b3663d46e7a14b457c9611c481e5cef08f4dd022eed7"}, - {file = "watchdog-4.0.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:aa160781cafff2719b663c8a506156e9289d111d80f3387cf3af49cedee1f040"}, - {file = "watchdog-4.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f6ee8dedd255087bc7fe82adf046f0b75479b989185fb0bdf9a98b612170eac7"}, - {file = "watchdog-4.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0b4359067d30d5b864e09c8597b112fe0a0a59321a0f331498b013fb097406b4"}, - {file = "watchdog-4.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:770eef5372f146997638d737c9a3c597a3b41037cfbc5c41538fc27c09c3a3f9"}, - {file = "watchdog-4.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eeea812f38536a0aa859972d50c76e37f4456474b02bd93674d1947cf1e39578"}, - {file = "watchdog-4.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b2c45f6e1e57ebb4687690c05bc3a2c1fb6ab260550c4290b8abb1335e0fd08b"}, - {file = "watchdog-4.0.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:10b6683df70d340ac3279eff0b2766813f00f35a1d37515d2c99959ada8f05fa"}, - {file = "watchdog-4.0.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f7c739888c20f99824f7aa9d31ac8a97353e22d0c0e54703a547a218f6637eb3"}, - {file = "watchdog-4.0.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c100d09ac72a8a08ddbf0629ddfa0b8ee41740f9051429baa8e31bb903ad7508"}, - {file = "watchdog-4.0.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:f5315a8c8dd6dd9425b974515081fc0aadca1d1d61e078d2246509fd756141ee"}, - {file = "watchdog-4.0.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2d468028a77b42cc685ed694a7a550a8d1771bb05193ba7b24006b8241a571a1"}, - {file = "watchdog-4.0.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f15edcae3830ff20e55d1f4e743e92970c847bcddc8b7509bcd172aa04de506e"}, - {file = "watchdog-4.0.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:936acba76d636f70db8f3c66e76aa6cb5136a936fc2a5088b9ce1c7a3508fc83"}, - {file = "watchdog-4.0.2-py3-none-manylinux2014_armv7l.whl", hash = "sha256:e252f8ca942a870f38cf785aef420285431311652d871409a64e2a0a52a2174c"}, - {file = "watchdog-4.0.2-py3-none-manylinux2014_i686.whl", hash = "sha256:0e83619a2d5d436a7e58a1aea957a3c1ccbf9782c43c0b4fed80580e5e4acd1a"}, - {file = "watchdog-4.0.2-py3-none-manylinux2014_ppc64.whl", hash = "sha256:88456d65f207b39f1981bf772e473799fcdc10801062c36fd5ad9f9d1d463a73"}, - {file = "watchdog-4.0.2-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:32be97f3b75693a93c683787a87a0dc8db98bb84701539954eef991fb35f5fbc"}, - {file = "watchdog-4.0.2-py3-none-manylinux2014_s390x.whl", hash = "sha256:c82253cfc9be68e3e49282831afad2c1f6593af80c0daf1287f6a92657986757"}, - {file = "watchdog-4.0.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:c0b14488bd336c5b1845cee83d3e631a1f8b4e9c5091ec539406e4a324f882d8"}, - {file = "watchdog-4.0.2-py3-none-win32.whl", hash = "sha256:0d8a7e523ef03757a5aa29f591437d64d0d894635f8a50f370fe37f913ce4e19"}, - {file = "watchdog-4.0.2-py3-none-win_amd64.whl", hash = "sha256:c344453ef3bf875a535b0488e3ad28e341adbd5a9ffb0f7d62cefacc8824ef2b"}, - {file = "watchdog-4.0.2-py3-none-win_ia64.whl", hash = "sha256:baececaa8edff42cd16558a639a9b0ddf425f93d892e8392a56bf904f5eff22c"}, - {file = "watchdog-4.0.2.tar.gz", hash = "sha256:b4dfbb6c49221be4535623ea4474a4d6ee0a9cef4a80b20c28db4d858b64e270"}, -] - -[package.extras] -watchmedo = ["PyYAML (>=3.10)"] - -[[package]] -name = "wcwidth" -version = "0.2.13" -description = "Measures the displayed width of unicode strings in a terminal" -optional = false -python-versions = "*" -files = [ - {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, - {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, -] - -[[package]] -name = "webcolors" -version = "24.8.0" -description = "A library for working with the color formats defined by HTML and CSS." -optional = false -python-versions = ">=3.8" -files = [ - {file = "webcolors-24.8.0-py3-none-any.whl", hash = "sha256:fc4c3b59358ada164552084a8ebee637c221e4059267d0f8325b3b560f6c7f0a"}, - {file = "webcolors-24.8.0.tar.gz", hash = "sha256:08b07af286a01bcd30d583a7acadf629583d1f79bfef27dd2c2c5c263817277d"}, -] - -[package.extras] -docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"] -tests = ["coverage[toml]"] - -[[package]] -name = "webencodings" -version = "0.5.1" -description = "Character encoding aliases for legacy web content" -optional = false -python-versions = "*" -files = [ - {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, - {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, -] - -[[package]] -name = "websocket-client" -version = "1.8.0" -description = "WebSocket client for Python with low level API options" -optional = false -python-versions = ">=3.8" -files = [ - {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, - {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, -] - -[package.extras] -docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] -optional = ["python-socks", "wsaccel"] -test = ["websockets"] - -[[package]] -name = "widgetsnbextension" -version = "4.0.13" -description = "Jupyter interactive widgets for Jupyter Notebook" -optional = false -python-versions = ">=3.7" -files = [ - {file = "widgetsnbextension-4.0.13-py3-none-any.whl", hash = "sha256:74b2692e8500525cc38c2b877236ba51d34541e6385eeed5aec15a70f88a6c71"}, - {file = "widgetsnbextension-4.0.13.tar.gz", hash = "sha256:ffcb67bc9febd10234a362795f643927f4e0c05d9342c727b65d2384f8feacb6"}, -] - -[[package]] -name = "zipp" -version = "3.20.2" -description = "Backport of pathlib-compatible object wrapper for zip files" -optional = false -python-versions = ">=3.8" -files = [ - {file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"}, - {file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] -type = ["pytest-mypy"] - -[extras] -mlmodel = ["numpy"] - -[metadata] -lock-version = "2.0" -python-versions = ">=3.8.1,<3.13" -content-hash = "a717d788b491d6a177edbf82dfa1415214a8d65cea473a10f8235576fdf25cfc" diff --git a/pyproject.toml b/pyproject.toml index 727a61f73..67567e432 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,59 +1,63 @@ -[tool.poetry] +[project] name = "viam-sdk" -version = "0.30.0" description = "Viam Robotics Python SDK" -authors = [ "Naveed " ] +authors = [ + {name = "Naveed Jooma", email = "naveed@viam.com" } +] license = "Apache-2.0" readme = "README.md" -homepage = "https://www.viam.com" -repository = "https://github.com/viamrobotics/viam-python-sdk" -documentation = "https://python.viam.dev" -packages = [ - { include = "viam", from = "src" }, +requires-python = ">=3.8.1" +dynamic = [ + 'version', +] +dependencies = [ + "googleapis-common-protos>=1.65.0", + "grpclib>=0.4.7", + "protobuf==5.28.2", + "typing-extensions>=4.12.2", ] -include = ["LICENSE", "src/viam/rpc/libviam_rust_utils.*"] - [tool.poetry.dependencies] - python = ">=3.8.1,<3.13" - grpclib = ">=0.4.7,<1" - googleapis-common-protos = ">=1.63.2,<2" - typing-extensions = ">=4.8.0,<5" - protobuf = "5.28.2" - numpy = { version = ">=1.21,<2", optional = true } +[project.urls] +Homepage = "https://www.viam.com" +Documentation = "https://python.viam.dev" +Repository = "https://github.com/viamrobotics/viam-python-sdk" - [tool.poetry.group.dev.dependencies] - pytest = "^7.4.3" - pytest-asyncio = "^0.23.2" - coverage = "^7.3.2" - jupyter = "^1.0.0" - flake8 = "^6.1.0" - myst-nb = [ - {version = "<1.0.0", python = "<3.9"}, - {version = ">=1.0.0", python = ">=3.9"}, - ] - sphinx-autoapi = [ - {version = "<3.0.0", python = "<3.9"}, - {version = ">=3.0.0", python = ">=3.9"}, - ] - sphinx-rtd-theme = "^2.0.0" - autopep8 = "^2.0.4" - black = {extras = ["jupyter"], version = "^23.12.0"} - nbmake = "^1.4.6" - types-pillow = "^10.1.0.2" - tox = "^4.11.4" - isort = "^5.12.0" - pytest-watcher = "^0.3.4" - numpy = [ - {version = "<1.25.0", python = "<3.9"}, - {version = ">=1.26.2", python = ">=3.9"}, - ] - Pillow = ">=9.1.0,<11" - pyright = "^1.1.339" - pytest-mock = "^3.14.0" +[project.optional-dependencies] +mlmodel = [ + "numpy" +] + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" - [tool.poetry.extras] - mlmodel = ["numpy"] +[tool.hatch.version] +path = "src/viam/version_metadata.py" +[tool.hatch.build.targets.wheel] +packages = ["src/viam"] +artifacts = ["src/viam/rpc/libviam_rust_utils.*"] + +[tool.uv] +dev-dependencies = [ + "coverage>=7.6.1", + "mypy-protobuf>=3.6.0", + "myst-nb<1.0.0; python_version<'3.9'", + "myst-nb>=1.0.0; python_version>='3.9'", + "nbmake>=1.5.4", + "numpy<1.25.0; python_version<'3.9'", + "numpy>=1.26.2,<2; python_version>='3.9'", + "pillow>=10.4.0", + "pyright>=1.1.382.post1", + "pytest-asyncio>=0.24.0", + "pytest-mock>=3.14.0", + "pytest>=8.3.3", + "ruff>=0.6.8", + "sphinx-autoapi<3.0.0; python_version<'3.9'", + "sphinx-autoapi>=3.0.0; python_version>='3.9'", + "sphinx-rtd-theme>=2.0.0", + "types-pillow>=10.2.0.20240822", +] [tool.pytest.ini_options] addopts = "-ra" @@ -61,23 +65,35 @@ testpaths = "tests" asyncio_mode = "auto" [tool.coverage.run] -omit = [ "*/gen/*" ] - -[tool.coverage.report] -exclude_lines = [ "pragma: no\\s*cover", "\\.\\.\\." ] - -[tool.black] -line-length = 140 - -[tool.isort] -profile = "black" -skip_glob = ["**/gen/**"] -line_length = 140 - -[build-system] -requires = [ "poetry-core>=1.0.0" ] -build-backend = "poetry.core.masonry.api" +omit = [ "*/gen/*", "*/proto/*" ] [tool.pyright] include = [ "src" ] exclude = [ "**/gen", "**/proto" ] + +[tool.ruff] +line-length = 140 +exclude = [ + ".direnv", + ".git", + ".git-rewrite", + ".ipynb_checkpoints", + ".mypy_cache", + ".pytest_cache", + ".ruff_cache", + ".tox", + ".venv", + ".vscode", + "__pypackages__", + "_build", + "build", + "dist", + "venv", + "gen", + "*_grpc.py", + "*_pb2.py", + "*.pyi", +] + +[tool.ruff.lint.per-file-ignores] +"__init__.py" = ["F401"] diff --git a/src/viam/app/_logs.py b/src/viam/app/_logs.py index e53809000..407186b0f 100644 --- a/src/viam/app/_logs.py +++ b/src/viam/app/_logs.py @@ -11,14 +11,11 @@ class _LogsStream(Protocol[LogsType]): - async def next(self) -> LogsType: - ... + async def next(self) -> LogsType: ... - def __aiter__(self) -> AsyncIterator: - ... + def __aiter__(self) -> AsyncIterator: ... - async def __anext__(self) -> LogsType: - ... + async def __anext__(self) -> LogsType: ... class _LogsStreamWithIterator(_LogsStream[LogsType]): diff --git a/src/viam/app/app_client.py b/src/viam/app/app_client.py index d00d6320a..57ccd563f 100644 --- a/src/viam/app/app_client.py +++ b/src/viam/app/app_client.py @@ -1,7 +1,7 @@ import json from datetime import datetime from enum import Enum -from typing import Any, AsyncIterator, Dict, List, Literal, Mapping, Optional, Tuple, Union +from typing import Any, AsyncIterator, List, Literal, Mapping, Optional, Tuple, Union from grpclib.client import Channel from typing_extensions import Self @@ -48,11 +48,6 @@ DeleteRobotPartRequest, DeleteRobotPartSecretRequest, DeleteRobotRequest, -) -from viam.proto.app import Fragment as FragmentPB -from viam.proto.app import FragmentHistoryEntry as FragmentHistoryEntryPB -from viam.proto.app import FragmentVisibility as FragmentVisibilityPB -from viam.proto.app import ( GetFragmentHistoryRequest, GetFragmentHistoryResponse, GetFragmentRequest, @@ -129,10 +124,6 @@ ResendOrganizationInviteRequest, ResendOrganizationInviteResponse, Robot, -) -from viam.proto.app import RobotPart as RobotPartPB -from viam.proto.app import RobotPartHistoryEntry as RobotPartHistoryEntryPB -from viam.proto.app import ( RotateKeyRequest, RotateKeyResponse, RoverRentalRobot, @@ -159,6 +150,11 @@ UploadModuleFileRequest, Visibility, ) +from viam.proto.app import Fragment as FragmentPB +from viam.proto.app import FragmentHistoryEntry as FragmentHistoryEntryPB +from viam.proto.app import FragmentVisibility as FragmentVisibilityPB +from viam.proto.app import RobotPart as RobotPartPB +from viam.proto.app import RobotPartHistoryEntry as RobotPartHistoryEntryPB from viam.proto.app.packages import PackageType from viam.proto.common import LogEntry as LogEntryPB from viam.utils import datetime_to_timestamp, dict_to_struct, struct_to_dict @@ -205,9 +201,9 @@ def from_proto(cls, robot_part: RobotPartPB) -> Self: secret: str robot: str location_id: str - robot_config: Optional[Dict[str, Any]] + robot_config: Optional[Mapping[str, Any]] last_access: Optional[datetime] - user_supplied_info: Optional[Dict[str, Any]] + user_supplied_info: Optional[Mapping[str, Any]] main_part: bool fqdn: str local_fqdn: str diff --git a/src/viam/components/arm/client.py b/src/viam/components/arm/client.py index 337d6273e..37ad25e08 100644 --- a/src/viam/components/arm/client.py +++ b/src/viam/components/arm/client.py @@ -41,7 +41,7 @@ async def get_end_position( timeout: Optional[float] = None, **kwargs, ) -> Pose: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetEndPositionRequest(name=self.name, extra=dict_to_struct(extra)) response: GetEndPositionResponse = await self.client.GetEndPosition(request, timeout=timeout, metadata=md) return response.pose @@ -54,7 +54,7 @@ async def move_to_position( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = MoveToPositionRequest(name=self.name, to=pose, extra=dict_to_struct(extra)) await self.client.MoveToPosition(request, timeout=timeout, metadata=md) @@ -65,7 +65,7 @@ async def get_joint_positions( timeout: Optional[float] = None, **kwargs, ) -> JointPositions: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetJointPositionsRequest(name=self.name, extra=dict_to_struct(extra)) response: GetJointPositionsResponse = await self.client.GetJointPositions(request, timeout=timeout, metadata=md) return response.positions @@ -78,7 +78,7 @@ async def move_to_joint_positions( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = MoveToJointPositionsRequest(name=self.name, positions=positions, extra=dict_to_struct(extra)) await self.client.MoveToJointPositions(request, timeout=timeout, metadata=md) @@ -89,12 +89,12 @@ async def stop( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = StopRequest(name=self.name, extra=dict_to_struct(extra)) await self.client.Stop(request, timeout=timeout, metadata=md) async def is_moving(self, *, timeout: Optional[float] = None, **kwargs) -> bool: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = IsMovingRequest(name=self.name) response: IsMovingResponse = await self.client.IsMoving(request, timeout=timeout, metadata=md) return response.is_moving @@ -106,7 +106,7 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) @@ -114,11 +114,11 @@ async def do_command( async def get_kinematics( self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs ) -> Tuple[KinematicsFileFormat.ValueType, bytes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetKinematicsRequest(name=self.name, extra=dict_to_struct(extra)) response: GetKinematicsResponse = await self.client.GetKinematics(request, timeout=timeout, metadata=md) return (response.format, response.kinematics_data) async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]: - md = kwargs.get('metadata', self.Metadata()) + md = kwargs.get("metadata", self.Metadata()) return await get_geometries(self.client, self.name, extra, timeout, md) diff --git a/src/viam/components/audio_input/client.py b/src/viam/components/audio_input/client.py index 084b2c59b..5dbb87db5 100644 --- a/src/viam/components/audio_input/client.py +++ b/src/viam/components/audio_input/client.py @@ -31,7 +31,7 @@ def __init__(self, name: str, channel: Channel): async def stream(self, *, timeout: Optional[float] = None, **kwargs) -> Stream[Audio]: async def read() -> AsyncIterator[Audio]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto async with self.client.Chunks.open(timeout=timeout, metadata=md) as chunks_stream: await chunks_stream.send_message( ChunksRequest(name=self.name, sample_format=SampleFormat.SAMPLE_FORMAT_FLOAT32_INTERLEAVED), end=True @@ -54,17 +54,17 @@ async def read() -> AsyncIterator[Audio]: return StreamWithIterator(read()) async def get_properties(self, *, timeout: Optional[float] = None, **kwargs) -> AudioInput.Properties: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = PropertiesRequest(name=self.name) response: PropertiesResponse = await self.client.Properties(request, timeout=timeout, metadata=md) return AudioInput.Properties.from_proto(response) async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Optional[float] = None, **kwargs) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]: - md = kwargs.get('metadata', self.Metadata()) + md = kwargs.get("metadata", self.Metadata()) return await get_geometries(self.client, self.name, extra, timeout, md) diff --git a/src/viam/components/base/client.py b/src/viam/components/base/client.py index 3934cf819..9a89ae561 100644 --- a/src/viam/components/base/client.py +++ b/src/viam/components/base/client.py @@ -40,7 +40,7 @@ async def move_straight( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = MoveStraightRequest( name=self.name, distance_mm=distance, @@ -58,7 +58,7 @@ async def spin( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = SpinRequest( name=self.name, angle_deg=angle, @@ -76,7 +76,7 @@ async def set_power( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = SetPowerRequest( name=self.name, linear=linear, @@ -94,7 +94,7 @@ async def set_velocity( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = SetVelocityRequest(name=self.name, linear=linear, angular=angular, extra=dict_to_struct(extra)) await self.client.SetVelocity(request, timeout=timeout, metadata=md) @@ -105,7 +105,7 @@ async def stop( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = StopRequest(name=self.name, extra=dict_to_struct(extra)) await self.client.Stop(request, timeout=timeout, metadata=md) @@ -115,7 +115,7 @@ async def is_moving( timeout: Optional[float] = None, **kwargs, ) -> bool: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = IsMovingRequest(name=self.name) response: IsMovingResponse = await self.client.IsMoving(request, timeout=timeout, metadata=md) return response.is_moving @@ -127,7 +127,7 @@ async def get_properties( timeout: Optional[float] = None, **kwargs, ) -> Base.Properties: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPropertiesRequest(name=self.name, extra=dict_to_struct(extra)) response: GetPropertiesResponse = await self.client.GetProperties(request, timeout=timeout, metadata=md) return Base.Properties( @@ -143,11 +143,11 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]: - md = kwargs.get('metadata', self.Metadata()) + md = kwargs.get("metadata", self.Metadata()) return await get_geometries(self.client, self.name, extra, timeout, md) diff --git a/src/viam/components/board/client.py b/src/viam/components/board/client.py index 464647ccd..e730bf361 100644 --- a/src/viam/components/board/client.py +++ b/src/viam/components/board/client.py @@ -48,7 +48,7 @@ async def read( timeout: Optional[float] = None, **kwargs, ) -> Board.Analog.Value: - md = kwargs.get('metadata', ResourceRPCClientBase.Metadata()).proto + md = kwargs.get("metadata", ResourceRPCClientBase.Metadata()).proto request = ReadAnalogReaderRequest(board_name=self.board.name, analog_reader_name=self.name, extra=dict_to_struct(extra)) return await self.board.client.ReadAnalogReader(request, timeout=timeout, metadata=md) @@ -60,7 +60,7 @@ async def write( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', ResourceRPCClientBase.Metadata()).proto + md = kwargs.get("metadata", ResourceRPCClientBase.Metadata()).proto request = WriteAnalogRequest(name=self.board.name, pin=self.name, value=value, extra=dict_to_struct(extra)) await self.board.client.WriteAnalog(request, timeout=timeout, metadata=md) @@ -77,7 +77,7 @@ async def value( timeout: Optional[float] = None, **kwargs, ) -> int: - md = kwargs.get('metadata', ResourceRPCClientBase.Metadata()).proto + md = kwargs.get("metadata", ResourceRPCClientBase.Metadata()).proto request = GetDigitalInterruptValueRequest(board_name=self.board.name, digital_interrupt_name=self.name, extra=dict_to_struct(extra)) response: GetDigitalInterruptValueResponse = await self.board.client.GetDigitalInterruptValue(request, timeout=timeout, metadata=md) return response.value @@ -95,7 +95,7 @@ async def get( timeout: Optional[float] = None, **kwargs, ) -> bool: - md = kwargs.get('metadata', ResourceRPCClientBase.Metadata()).proto + md = kwargs.get("metadata", ResourceRPCClientBase.Metadata()).proto request = GetGPIORequest(name=self.board.name, pin=self.name, extra=dict_to_struct(extra)) response: GetGPIOResponse = await self.board.client.GetGPIO(request, timeout=timeout, metadata=md) return response.high @@ -108,7 +108,7 @@ async def set( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', ResourceRPCClientBase.Metadata()).proto + md = kwargs.get("metadata", ResourceRPCClientBase.Metadata()).proto request = SetGPIORequest(name=self.board.name, pin=self.name, high=high, extra=dict_to_struct(extra)) await self.board.client.SetGPIO(request, timeout=timeout, metadata=md) @@ -119,7 +119,7 @@ async def get_pwm( timeout: Optional[float] = None, **kwargs, ) -> float: - md = kwargs.get('metadata', ResourceRPCClientBase.Metadata()).proto + md = kwargs.get("metadata", ResourceRPCClientBase.Metadata()).proto request = PWMRequest(name=self.board.name, pin=self.name, extra=dict_to_struct(extra)) response: PWMResponse = await self.board.client.PWM(request, timeout=timeout, metadata=md) return response.duty_cycle_pct @@ -132,7 +132,7 @@ async def set_pwm( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', ResourceRPCClientBase.Metadata()).proto + md = kwargs.get("metadata", ResourceRPCClientBase.Metadata()).proto request = SetPWMRequest(name=self.board.name, pin=self.name, duty_cycle_pct=duty_cycle, extra=dict_to_struct(extra)) await self.board.client.SetPWM(request, timeout=timeout, metadata=md) @@ -143,7 +143,7 @@ async def get_pwm_frequency( timeout: Optional[float] = None, **kwargs, ) -> int: - md = kwargs.get('metadata', ResourceRPCClientBase.Metadata()).proto + md = kwargs.get("metadata", ResourceRPCClientBase.Metadata()).proto request = PWMFrequencyRequest(name=self.board.name, pin=self.name, extra=dict_to_struct(extra)) response: PWMFrequencyResponse = await self.board.client.PWMFrequency(request, timeout=timeout, metadata=md) return response.frequency_hz @@ -156,7 +156,7 @@ async def set_pwm_frequency( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', ResourceRPCClientBase.Metadata()).proto + md = kwargs.get("metadata", ResourceRPCClientBase.Metadata()).proto request = SetPWMFrequencyRequest(name=self.board.name, pin=self.name, frequency_hz=frequency, extra=dict_to_struct(extra)) await self.board.client.SetPWMFrequency(request, timeout=timeout, metadata=md) @@ -204,7 +204,7 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) @@ -217,7 +217,7 @@ async def set_power_mode( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto duration_pb: Optional[Duration] = None if duration is not None: duration_pb = [(d, d.FromTimedelta(duration)) for d in [Duration()]][0][0] @@ -225,7 +225,7 @@ async def set_power_mode( await self.client.SetPowerMode(request, timeout=timeout, metadata=md) async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]: - md = kwargs.get('metadata', self.Metadata()) + md = kwargs.get("metadata", self.Metadata()) return await get_geometries(self.client, self.name, extra, timeout, md) async def write_analog( @@ -237,7 +237,7 @@ async def write_analog( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = WriteAnalogRequest(name=self.name, pin=pin, value=value, extra=dict_to_struct(extra)) await self.client.WriteAnalog(request, timeout=timeout, metadata=md) @@ -254,7 +254,7 @@ async def stream_ticks( request = StreamTicksRequest(name=self.name, pin_names=names, extra=dict_to_struct(extra)) async def read(): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto tick_stream: ClientStream[StreamTicksRequest, StreamTicksResponse] async with self.client.StreamTicks.open(metadata=md) as tick_stream: try: diff --git a/src/viam/components/camera/client.py b/src/viam/components/camera/client.py index 393fec2dd..45feacf32 100644 --- a/src/viam/components/camera/client.py +++ b/src/viam/components/camera/client.py @@ -38,7 +38,7 @@ async def get_image( timeout: Optional[float] = None, **kwargs, ) -> ViamImage: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetImageRequest(name=self.name, mime_type=mime_type, extra=dict_to_struct(extra)) response: GetImageResponse = await self.client.GetImage(request, timeout=timeout, metadata=md) return ViamImage(response.image, CameraMimeType.from_string(response.mime_type)) @@ -49,7 +49,7 @@ async def get_images( timeout: Optional[float] = None, **kwargs, ) -> Tuple[List[NamedImage], ResponseMetadata]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetImagesRequest(name=self.name) response: GetImagesResponse = await self.client.GetImages(request, timeout=timeout, metadata=md) imgs = [] @@ -67,7 +67,7 @@ async def get_point_cloud( timeout: Optional[float] = None, **kwargs, ) -> Tuple[bytes, str]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPointCloudRequest(name=self.name, mime_type=CameraMimeType.PCD, extra=dict_to_struct(extra)) response: GetPointCloudResponse = await self.client.GetPointCloud(request, timeout=timeout, metadata=md) return (response.point_cloud, response.mime_type) @@ -78,7 +78,7 @@ async def get_properties( timeout: Optional[float] = None, **kwargs, ) -> Camera.Properties: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto return await self.client.GetProperties(GetPropertiesRequest(name=self.name), timeout=timeout, metadata=md) async def do_command( @@ -88,11 +88,11 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]: - md = kwargs.get('metadata', self.Metadata()) + md = kwargs.get("metadata", self.Metadata()) return await get_geometries(self.client, self.name, extra, timeout, md) diff --git a/src/viam/components/encoder/client.py b/src/viam/components/encoder/client.py index 0e11e14d5..150f26e35 100644 --- a/src/viam/components/encoder/client.py +++ b/src/viam/components/encoder/client.py @@ -35,7 +35,7 @@ async def reset_position( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = ResetPositionRequest(name=self.name, extra=dict_to_struct(extra)) await self.client.ResetPosition(request, timeout=timeout, metadata=md) @@ -47,7 +47,7 @@ async def get_position( timeout: Optional[float] = None, **kwargs, ) -> Tuple[float, PositionType.ValueType]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPositionRequest(name=self.name, position_type=position_type, extra=dict_to_struct(extra)) response: GetPositionResponse = await self.client.GetPosition(request, timeout=timeout, metadata=md) return response.value, response.position_type @@ -59,7 +59,7 @@ async def get_properties( timeout: Optional[float] = None, **kwargs, ) -> Encoder.Properties: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPropertiesRequest(name=self.name, extra=dict_to_struct(extra)) response: GetPropertiesResponse = await self.client.GetProperties(request, timeout=timeout, metadata=md) return Encoder.Properties( @@ -73,11 +73,11 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]: - md = kwargs.get('metadata', self.Metadata()) + md = kwargs.get("metadata", self.Metadata()) return await get_geometries(self.client, self.name, extra, timeout, md) diff --git a/src/viam/components/gantry/client.py b/src/viam/components/gantry/client.py index 9bb5246ab..525a5ae05 100644 --- a/src/viam/components/gantry/client.py +++ b/src/viam/components/gantry/client.py @@ -39,7 +39,7 @@ async def get_position( timeout: Optional[float] = None, **kwargs, ) -> List[float]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPositionRequest(name=self.name, extra=dict_to_struct(extra)) response: GetPositionResponse = await self.client.GetPosition(request, timeout=timeout, metadata=md) return list(response.positions_mm) @@ -53,7 +53,7 @@ async def move_to_position( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = MoveToPositionRequest(name=self.name, positions_mm=positions, speeds_mm_per_sec=speeds, extra=dict_to_struct(extra)) await self.client.MoveToPosition(request, timeout=timeout, metadata=md) @@ -64,7 +64,7 @@ async def home( timeout: Optional[float] = None, **kwargs, ) -> bool: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = HomeRequest(name=self.name, extra=dict_to_struct(extra)) response: HomeResponse = await self.client.Home(request, timeout=timeout, metadata=md) return response.homed @@ -76,7 +76,7 @@ async def get_lengths( timeout: Optional[float] = None, **kwargs, ) -> List[float]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetLengthsRequest(name=self.name, extra=dict_to_struct(extra)) response: GetLengthsResponse = await self.client.GetLengths(request, timeout=timeout, metadata=md) return list(response.lengths_mm) @@ -88,12 +88,12 @@ async def stop( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = StopRequest(name=self.name, extra=dict_to_struct(extra)) await self.client.Stop(request, timeout=timeout, metadata=md) async def is_moving(self, *, timeout: Optional[float] = None, **kwargs) -> bool: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = IsMovingRequest(name=self.name) response: IsMovingResponse = await self.client.IsMoving(request, timeout=timeout, metadata=md) return response.is_moving @@ -105,11 +105,11 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]: - md = kwargs.get('metadata', self.Metadata()) + md = kwargs.get("metadata", self.Metadata()) return await get_geometries(self.client, self.name, extra, timeout, md) diff --git a/src/viam/components/generic/client.py b/src/viam/components/generic/client.py index da277cb45..3b720ea81 100644 --- a/src/viam/components/generic/client.py +++ b/src/viam/components/generic/client.py @@ -5,7 +5,7 @@ from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry from viam.proto.component.generic import GenericServiceStub -from viam.resource.rpc_client_base import ResourceRPCClientBase, ReconfigurableResourceRPCClientBase +from viam.resource.rpc_client_base import ReconfigurableResourceRPCClientBase, ResourceRPCClientBase from viam.utils import ValueTypes, dict_to_struct, get_geometries, struct_to_dict from .generic import Generic @@ -28,7 +28,7 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, Any]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) try: response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) @@ -40,7 +40,7 @@ async def do_command( return struct_to_dict(response.result) async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]: - md = kwargs.get('metadata', self.Metadata()) + md = kwargs.get("metadata", self.Metadata()) return await get_geometries(self.client, self.name, extra, timeout, md) @@ -57,6 +57,6 @@ async def do_command( Returns: Dict[str, Any]: The result of the executed command """ - md = kwargs.get('metadata', ResourceRPCClientBase.Metadata()).proto + md = kwargs.get("metadata", ResourceRPCClientBase.Metadata()).proto client = GenericClient(name, channel) return await client.do_command(command, timeout=timeout, metadata=md) diff --git a/src/viam/components/gripper/client.py b/src/viam/components/gripper/client.py index 18b99b254..945175449 100644 --- a/src/viam/components/gripper/client.py +++ b/src/viam/components/gripper/client.py @@ -35,7 +35,7 @@ async def open( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = OpenRequest(name=self.name, extra=dict_to_struct(extra)) await self.client.Open(request, timeout=timeout, metadata=md) @@ -46,7 +46,7 @@ async def grab( timeout: Optional[float] = None, **kwargs, ) -> bool: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GrabRequest(name=self.name, extra=dict_to_struct(extra)) response: GrabResponse = await self.client.Grab(request, timeout=timeout, metadata=md) return response.success @@ -58,12 +58,12 @@ async def stop( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = StopRequest(name=self.name, extra=dict_to_struct(extra)) await self.client.Stop(request, timeout=timeout, metadata=md) async def is_moving(self, *, timeout: Optional[float] = None, **kwargs) -> bool: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = IsMovingRequest(name=self.name) response: IsMovingResponse = await self.client.IsMoving(request, timeout=timeout, metadata=md) return response.is_moving @@ -75,11 +75,11 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]: - md = kwargs.get('metadata', self.Metadata()) + md = kwargs.get("metadata", self.Metadata()) return await get_geometries(self.client, self.name, extra, timeout, md) diff --git a/src/viam/components/input/client.py b/src/viam/components/input/client.py index c596f1fb2..9a2704bf2 100644 --- a/src/viam/components/input/client.py +++ b/src/viam/components/input/client.py @@ -50,7 +50,7 @@ async def get_controls( timeout: Optional[float] = None, **kwargs, ) -> List[Control]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetControlsRequest(controller=self.name, extra=dict_to_struct(extra)) response: GetControlsResponse = await self.client.GetControls(request, timeout=timeout, metadata=md) return [Control(control) for control in response.controls] @@ -62,7 +62,7 @@ async def get_events( timeout: Optional[float] = None, **kwargs, ) -> Dict[Control, Event]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetEventsRequest(controller=self.name, extra=dict_to_struct(extra)) response: GetEventsResponse = await self.client.GetEvents(request, timeout=timeout, metadata=md) return {Control(event.control): Event.from_proto(event) for (event) in response.events} @@ -75,7 +75,7 @@ def register_control_callback( extra: Optional[Dict[str, Any]] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()) + md = kwargs.get("metadata", self.Metadata()) self._callback_extra = dict_to_struct(extra) with self._lock: callbacks = self.callbacks.get(control, {}) @@ -114,7 +114,7 @@ async def trigger_event( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = TriggerEventRequest(controller=self.name, event=event.proto, extra=dict_to_struct(extra)) try: await self.client.TriggerEvent(request, timeout=timeout, metadata=md) @@ -184,11 +184,11 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]: - md = kwargs.get('metadata', self.Metadata()) + md = kwargs.get("metadata", self.Metadata()) return await get_geometries(self.client, self.name, extra, timeout, md) diff --git a/src/viam/components/motor/client.py b/src/viam/components/motor/client.py index 3e46c1558..9b3a193a7 100644 --- a/src/viam/components/motor/client.py +++ b/src/viam/components/motor/client.py @@ -44,7 +44,7 @@ async def set_power( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = SetPowerRequest(name=self.name, power_pct=power, extra=dict_to_struct(extra)) await self.client.SetPower(request, timeout=timeout, metadata=md) @@ -57,7 +57,7 @@ async def go_for( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GoForRequest(name=self.name, rpm=rpm, revolutions=revolutions, extra=dict_to_struct(extra)) await self.client.GoFor(request, timeout=timeout, metadata=md) @@ -70,7 +70,7 @@ async def go_to( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GoToRequest(name=self.name, rpm=rpm, position_revolutions=position_revolutions, extra=dict_to_struct(extra)) await self.client.GoTo(request, timeout=timeout, metadata=md) @@ -82,7 +82,7 @@ async def set_rpm( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = SetRPMRequest(name=self.name, rpm=rpm, extra=dict_to_struct(extra)) await self.client.SetRPM(request, timeout=timeout, metadata=md) @@ -94,7 +94,7 @@ async def reset_zero_position( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = ResetZeroPositionRequest(name=self.name, offset=offset, extra=dict_to_struct(extra)) await self.client.ResetZeroPosition(request, timeout=timeout, metadata=md) @@ -105,7 +105,7 @@ async def get_position( timeout: Optional[float] = None, **kwargs, ) -> float: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPositionRequest(name=self.name, extra=dict_to_struct(extra)) response: GetPositionResponse = await self.client.GetPosition(request, timeout=timeout, metadata=md) return response.position @@ -117,7 +117,7 @@ async def get_properties( timeout: Optional[float] = None, **kwargs, ) -> Motor.Properties: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPropertiesRequest(name=self.name, extra=dict_to_struct(extra)) response: GetPropertiesResponse = await self.client.GetProperties(request, timeout=timeout, metadata=md) return Motor.Properties(position_reporting=response.position_reporting) @@ -129,7 +129,7 @@ async def stop( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = StopRequest(name=self.name, extra=dict_to_struct(extra)) await self.client.Stop(request, timeout=timeout, metadata=md) @@ -140,13 +140,13 @@ async def is_powered( timeout: Optional[float] = None, **kwargs, ) -> Tuple[bool, float]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = IsPoweredRequest(name=self.name, extra=dict_to_struct(extra)) response: IsPoweredResponse = await self.client.IsPowered(request, timeout=timeout, metadata=md) return response.is_on, response.power_pct async def is_moving(self, *, timeout: Optional[float] = None, **kwargs) -> bool: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = IsMovingRequest(name=self.name) response: IsMovingResponse = await self.client.IsMoving(request, timeout=timeout, metadata=md) return response.is_moving @@ -158,11 +158,11 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]: - md = kwargs.get('metadata', self.Metadata()) + md = kwargs.get("metadata", self.Metadata()) return await get_geometries(self.client, self.name, extra, timeout, md) diff --git a/src/viam/components/movement_sensor/client.py b/src/viam/components/movement_sensor/client.py index c364e4fad..c03dfd87b 100644 --- a/src/viam/components/movement_sensor/client.py +++ b/src/viam/components/movement_sensor/client.py @@ -43,7 +43,7 @@ async def get_position( timeout: Optional[float] = None, **kwargs, ) -> Tuple[GeoPoint, float]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPositionRequest(name=self.name, extra=dict_to_struct(extra)) response: GetPositionResponse = await self.client.GetPosition(request, timeout=timeout, metadata=md) return response.coordinate, response.altitude_m @@ -55,7 +55,7 @@ async def get_linear_velocity( timeout: Optional[float] = None, **kwargs, ) -> Vector3: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetLinearVelocityRequest(name=self.name, extra=dict_to_struct(extra)) response: GetLinearVelocityResponse = await self.client.GetLinearVelocity(request, timeout=timeout, metadata=md) return response.linear_velocity @@ -67,7 +67,7 @@ async def get_angular_velocity( timeout: Optional[float] = None, **kwargs, ) -> Vector3: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetAngularVelocityRequest(name=self.name, extra=dict_to_struct(extra)) response: GetAngularVelocityResponse = await self.client.GetAngularVelocity(request, timeout=timeout, metadata=md) return response.angular_velocity @@ -79,7 +79,7 @@ async def get_linear_acceleration( timeout: Optional[float] = None, **kwargs, ) -> Vector3: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetLinearAccelerationRequest(name=self.name, extra=dict_to_struct(extra)) response: GetLinearAccelerationResponse = await self.client.GetLinearAcceleration(request, timeout=timeout, metadata=md) return response.linear_acceleration @@ -91,7 +91,7 @@ async def get_compass_heading( timeout: Optional[float] = None, **kwargs, ) -> float: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetCompassHeadingRequest(name=self.name, extra=dict_to_struct(extra)) response: GetCompassHeadingResponse = await self.client.GetCompassHeading(request, timeout=timeout, metadata=md) return response.value @@ -103,7 +103,7 @@ async def get_orientation( timeout: Optional[float] = None, **kwargs, ) -> Orientation: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetOrientationRequest(name=self.name, extra=dict_to_struct(extra)) response: GetOrientationResponse = await self.client.GetOrientation(request, timeout=timeout, metadata=md) return response.orientation @@ -115,7 +115,7 @@ async def get_properties( timeout: Optional[float] = None, **kwargs, ) -> MovementSensor.Properties: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPropertiesRequest(name=self.name, extra=dict_to_struct(extra)) response: GetPropertiesResponse = await self.client.GetProperties(request, timeout=timeout, metadata=md) return MovementSensor.Properties.from_proto(response) @@ -127,7 +127,7 @@ async def get_accuracy( timeout: Optional[float] = None, **kwargs, ) -> MovementSensor.Accuracy: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetAccuracyRequest(name=self.name, extra=dict_to_struct(extra)) return await self.client.GetAccuracy(request, timeout=timeout, metadata=md) @@ -138,7 +138,7 @@ async def get_readings( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, SensorReading]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetReadingsRequest(name=self.name, extra=dict_to_struct(extra)) response: GetReadingsResponse = await self.client.GetReadings(request, timeout=timeout, metadata=md) @@ -151,11 +151,11 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]: - md = kwargs.get('metadata', self.Metadata()) + md = kwargs.get("metadata", self.Metadata()) return await get_geometries(self.client, self.name, extra, timeout, md) diff --git a/src/viam/components/pose_tracker/client.py b/src/viam/components/pose_tracker/client.py index c961e1078..6f0b3344c 100644 --- a/src/viam/components/pose_tracker/client.py +++ b/src/viam/components/pose_tracker/client.py @@ -28,7 +28,7 @@ async def get_poses( timeout: Optional[float] = None, **kwargs, ) -> Dict[str, PoseInFrame]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPosesRequest(name=self.name, body_names=body_names, extra=dict_to_struct(extra)) response: GetPosesResponse = await self.client.GetPoses(request, timeout=timeout, metadata=md) return {key: response.body_poses[key] for key in response.body_poses.keys()} @@ -40,11 +40,11 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]: - md = kwargs.get('metadata', self.Metadata()) + md = kwargs.get("metadata", self.Metadata()) return await get_geometries(self.client, self.name, extra, timeout, md) diff --git a/src/viam/components/power_sensor/client.py b/src/viam/components/power_sensor/client.py index a39945f27..0490b19fa 100644 --- a/src/viam/components/power_sensor/client.py +++ b/src/viam/components/power_sensor/client.py @@ -32,7 +32,7 @@ async def get_voltage( timeout: Optional[float] = None, **kwargs, ) -> Tuple[float, bool]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetVoltageRequest(name=self.name, extra=dict_to_struct(extra)) response: GetVoltageResponse = await self.client.GetVoltage(request, timeout=timeout, metadata=md) return response.volts, response.is_ac @@ -44,7 +44,7 @@ async def get_current( timeout: Optional[float] = None, **kwargs, ) -> Tuple[float, bool]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetCurrentRequest(name=self.name, extra=dict_to_struct(extra)) response: GetCurrentResponse = await self.client.GetCurrent(request, timeout=timeout, metadata=md) return response.amperes, response.is_ac @@ -56,7 +56,7 @@ async def get_power( timeout: Optional[float] = None, **kwargs, ) -> float: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPowerRequest(name=self.name, extra=dict_to_struct(extra)) response: GetPowerResponse = await self.client.GetPower(request, timeout=timeout, metadata=md) return response.watts @@ -68,7 +68,7 @@ async def get_readings( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, SensorReading]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetReadingsRequest(name=self.name, extra=dict_to_struct(extra)) response: GetReadingsResponse = await self.client.GetReadings(request, timeout=timeout, metadata=md) return sensor_readings_value_to_native(response.readings) @@ -80,7 +80,7 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) diff --git a/src/viam/components/sensor/client.py b/src/viam/components/sensor/client.py index 6de40acbd..b4017a5b8 100644 --- a/src/viam/components/sensor/client.py +++ b/src/viam/components/sensor/client.py @@ -27,7 +27,7 @@ async def get_readings( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, SensorReading]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetReadingsRequest(name=self.name, extra=dict_to_struct(extra)) response: GetReadingsResponse = await self.client.GetReadings(request, timeout=timeout, metadata=md) return sensor_readings_value_to_native(response.readings) @@ -39,11 +39,11 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]: - md = kwargs.get('metadata', self.Metadata()) + md = kwargs.get("metadata", self.Metadata()) return await get_geometries(self.client, self.name, extra, timeout, md) diff --git a/src/viam/components/servo/client.py b/src/viam/components/servo/client.py index 9c22209b0..67a1bb643 100644 --- a/src/viam/components/servo/client.py +++ b/src/viam/components/servo/client.py @@ -35,7 +35,7 @@ async def get_position( timeout: Optional[float] = None, **kwargs, ) -> int: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPositionRequest(name=self.name, extra=dict_to_struct(extra)) response: GetPositionResponse = await self.client.GetPosition(request, timeout=timeout, metadata=md) return response.position_deg @@ -48,7 +48,7 @@ async def move( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = MoveRequest(name=self.name, angle_deg=angle, extra=dict_to_struct(extra)) await self.client.Move(request, timeout=timeout, metadata=md) @@ -59,12 +59,12 @@ async def stop( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = StopRequest(name=self.name, extra=dict_to_struct(extra)) await self.client.Stop(request, timeout=timeout, metadata=md) async def is_moving(self, *, timeout: Optional[float] = None, **kwargs) -> bool: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = IsMovingRequest(name=self.name) response: IsMovingResponse = await self.client.IsMoving(request, timeout=timeout, metadata=md) return response.is_moving @@ -76,11 +76,11 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]: - md = kwargs.get('metadata', self.Metadata()) + md = kwargs.get("metadata", self.Metadata()) return await get_geometries(self.client, self.name, extra, timeout, md) diff --git a/src/viam/components/servo/servo.py b/src/viam/components/servo/servo.py index 453cf1c30..8c8621a56 100644 --- a/src/viam/components/servo/servo.py +++ b/src/viam/components/servo/servo.py @@ -103,7 +103,7 @@ async def is_moving(self) -> bool: my_servo = Servo.from_robot(robot=robot, name="my_servo") - print(await my_servo.is_moving()) + print(my_servo.is_moving()) Returns: diff --git a/src/viam/gen/app/agent/v1/agent_pb2.py b/src/viam/gen/app/agent/v1/agent_pb2.py index 31ace8f0c..d27d648bd 100644 --- a/src/viam/gen/app/agent/v1/agent_pb2.py +++ b/src/viam/gen/app/agent/v1/agent_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'app/agent/v1/agent.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'app/agent/v1/agent.proto') _sym_db = _symbol_database.Default() from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 diff --git a/src/viam/gen/app/cloudslam/v1/cloud_slam_pb2.py b/src/viam/gen/app/cloudslam/v1/cloud_slam_pb2.py index 496957eb2..221a8f1d4 100644 --- a/src/viam/gen/app/cloudslam/v1/cloud_slam_pb2.py +++ b/src/viam/gen/app/cloudslam/v1/cloud_slam_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'app/cloudslam/v1/cloud_slam.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'app/cloudslam/v1/cloud_slam.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 diff --git a/src/viam/gen/app/data/v1/data_pb2.py b/src/viam/gen/app/data/v1/data_pb2.py index c42853a23..04db2a72e 100644 --- a/src/viam/gen/app/data/v1/data_pb2.py +++ b/src/viam/gen/app/data/v1/data_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'app/data/v1/data.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'app/data/v1/data.proto') _sym_db = _symbol_database.Default() from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 diff --git a/src/viam/gen/app/dataset/v1/dataset_pb2.py b/src/viam/gen/app/dataset/v1/dataset_pb2.py index 6288f6621..cd6ef563b 100644 --- a/src/viam/gen/app/dataset/v1/dataset_pb2.py +++ b/src/viam/gen/app/dataset/v1/dataset_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'app/dataset/v1/dataset.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'app/dataset/v1/dataset.proto') _sym_db = _symbol_database.Default() from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1capp/dataset/v1/dataset.proto\x12\x13viam.app.dataset.v1\x1a\x1fgoogle/protobuf/timestamp.proto"\x95\x01\n\x07Dataset\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\'\n\x0forganization_id\x18\x03 \x01(\tR\x0eorganizationId\x12=\n\x0ctime_created\x18\x04 \x01(\x0b2\x1a.google.protobuf.TimestampR\x0btimeCreated"S\n\x14CreateDatasetRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\'\n\x0forganization_id\x18\x02 \x01(\tR\x0eorganizationId"\'\n\x15CreateDatasetResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"&\n\x14DeleteDatasetRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"\x17\n\x15DeleteDatasetResponse":\n\x14RenameDatasetRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name"\x17\n\x15RenameDatasetResponse"N\n#ListDatasetsByOrganizationIDRequest\x12\'\n\x0forganization_id\x18\x01 \x01(\tR\x0eorganizationId"`\n$ListDatasetsByOrganizationIDResponse\x128\n\x08datasets\x18\x01 \x03(\x0b2\x1c.viam.app.dataset.v1.DatasetR\x08datasets",\n\x18ListDatasetsByIDsRequest\x12\x10\n\x03ids\x18\x01 \x03(\tR\x03ids"U\n\x19ListDatasetsByIDsResponse\x128\n\x08datasets\x18\x01 \x03(\x0b2\x1c.viam.app.dataset.v1.DatasetR\x08datasets2\xd2\x04\n\x0eDatasetService\x12f\n\rCreateDataset\x12).viam.app.dataset.v1.CreateDatasetRequest\x1a*.viam.app.dataset.v1.CreateDatasetResponse\x12f\n\rDeleteDataset\x12).viam.app.dataset.v1.DeleteDatasetRequest\x1a*.viam.app.dataset.v1.DeleteDatasetResponse\x12f\n\rRenameDataset\x12).viam.app.dataset.v1.RenameDatasetRequest\x1a*.viam.app.dataset.v1.RenameDatasetResponse\x12\x93\x01\n\x1cListDatasetsByOrganizationID\x128.viam.app.dataset.v1.ListDatasetsByOrganizationIDRequest\x1a9.viam.app.dataset.v1.ListDatasetsByOrganizationIDResponse\x12r\n\x11ListDatasetsByIDs\x12-.viam.app.dataset.v1.ListDatasetsByIDsRequest\x1a..viam.app.dataset.v1.ListDatasetsByIDsResponseB Z\x1ego.viam.com/api/app/dataset/v1b\x06proto3') diff --git a/src/viam/gen/app/datasync/v1/data_sync_pb2.py b/src/viam/gen/app/datasync/v1/data_sync_pb2.py index 2e5f31701..32b04bc88 100644 --- a/src/viam/gen/app/datasync/v1/data_sync_pb2.py +++ b/src/viam/gen/app/datasync/v1/data_sync_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'app/datasync/v1/data_sync.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'app/datasync/v1/data_sync.proto') _sym_db = _symbol_database.Default() from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 diff --git a/src/viam/gen/app/mltraining/v1/ml_training_pb2.py b/src/viam/gen/app/mltraining/v1/ml_training_pb2.py index 43ac8b00c..fa2c2e2cf 100644 --- a/src/viam/gen/app/mltraining/v1/ml_training_pb2.py +++ b/src/viam/gen/app/mltraining/v1/ml_training_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'app/mltraining/v1/ml_training.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'app/mltraining/v1/ml_training.proto') _sym_db = _symbol_database.Default() from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 from google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 diff --git a/src/viam/gen/app/packages/v1/packages_pb2.py b/src/viam/gen/app/packages/v1/packages_pb2.py index e6ce87f63..349246eaa 100644 --- a/src/viam/gen/app/packages/v1/packages_pb2.py +++ b/src/viam/gen/app/packages/v1/packages_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'app/packages/v1/packages.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'app/packages/v1/packages.proto') _sym_db = _symbol_database.Default() from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 diff --git a/src/viam/gen/app/v1/app_pb2.py b/src/viam/gen/app/v1/app_pb2.py index 940ebc345..d90c643b5 100644 --- a/src/viam/gen/app/v1/app_pb2.py +++ b/src/viam/gen/app/v1/app_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'app/v1/app.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'app/v1/app.proto') _sym_db = _symbol_database.Default() from ...app.mltraining.v1 import ml_training_pb2 as app_dot_mltraining_dot_v1_dot_ml__training__pb2 from ...app.packages.v1 import packages_pb2 as app_dot_packages_dot_v1_dot_packages__pb2 diff --git a/src/viam/gen/app/v1/billing_pb2.py b/src/viam/gen/app/v1/billing_pb2.py index bbe6b87bf..e09b4ed9c 100644 --- a/src/viam/gen/app/v1/billing_pb2.py +++ b/src/viam/gen/app/v1/billing_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'app/v1/billing.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'app/v1/billing.proto') _sym_db = _symbol_database.Default() from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14app/v1/billing.proto\x12\x0bviam.app.v1\x1a\x1fgoogle/protobuf/timestamp.proto"\x8e\x02\n\x0eInvoiceSummary\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12=\n\x0cinvoice_date\x18\x02 \x01(\x0b2\x1a.google.protobuf.TimestampR\x0binvoiceDate\x12%\n\x0einvoice_amount\x18\x03 \x01(\x01R\rinvoiceAmount\x12\x16\n\x06status\x18\x04 \x01(\tR\x06status\x125\n\x08due_date\x18\x05 \x01(\x0b2\x1a.google.protobuf.TimestampR\x07dueDate\x127\n\tpaid_date\x18\x06 \x01(\x0b2\x1a.google.protobuf.TimestampR\x08paidDate"\x8b\x02\n\x15BillableResourceEvent\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12%\n\x0eusage_quantity\x18\x03 \x01(\x01R\rusageQuantity\x12.\n\x13usage_quantity_unit\x18\x04 \x01(\tR\x11usageQuantityUnit\x12\x1d\n\nusage_cost\x18\x05 \x01(\tR\tusageCost\x12;\n\x0boccurred_at\x18\x06 \x01(\x0b2\x1a.google.protobuf.TimestampR\noccurredAt\x12\x1b\n\tuser_name\x18\x07 \x01(\tR\x08userName"\xa7\x02\n\x07Invoice\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12=\n\x0cinvoice_date\x18\x02 \x01(\x0b2\x1a.google.protobuf.TimestampR\x0binvoiceDate\x12%\n\x0einvoice_amount\x18\x03 \x01(\x01R\rinvoiceAmount\x12\x16\n\x06status\x18\x04 \x01(\tR\x06status\x125\n\x08due_date\x18\x05 \x01(\x0b2\x1a.google.protobuf.TimestampR\x07dueDate\x128\n\x05items\x18\x06 \x03(\x0b2".viam.app.v1.BillableResourceEventR\x05items\x12\x1d\n\nemailed_to\x18\x07 \x01(\tR\temailedTo"S\n\x11PaymentMethodCard\x12\x14\n\x05brand\x18\x01 \x01(\tR\x05brand\x12(\n\x10last_four_digits\x18\x02 \x01(\tR\x0elastFourDigits"4\n\x1bGetCurrentMonthUsageRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId"\x98\x06\n\x1cGetCurrentMonthUsageResponse\x129\n\nstart_date\x18\x01 \x01(\x0b2\x1a.google.protobuf.TimestampR\tstartDate\x125\n\x08end_date\x18\x02 \x01(\x0b2\x1a.google.protobuf.TimestampR\x07endDate\x127\n\x18cloud_storage_usage_cost\x18\x03 \x01(\x01R\x15cloudStorageUsageCost\x123\n\x16data_upload_usage_cost\x18\x04 \x01(\x01R\x13dataUploadUsageCost\x121\n\x15data_egres_usage_cost\x18\x05 \x01(\x01R\x12dataEgresUsageCost\x129\n\x19remote_control_usage_cost\x18\x06 \x01(\x01R\x16remoteControlUsageCost\x12=\n\x1bstandard_compute_usage_cost\x18\x07 \x01(\x01R\x18standardComputeUsageCost\x12\'\n\x0fdiscount_amount\x18\x08 \x01(\x01R\x0ediscountAmount\x129\n\x19total_usage_with_discount\x18\t \x01(\x01R\x16totalUsageWithDiscount\x12?\n\x1ctotal_usage_without_discount\x18\n \x01(\x01R\x19totalUsageWithoutDiscount\x123\n\x16per_machine_usage_cost\x18\x0b \x01(\x01R\x13perMachineUsageCost\x12M\n$binary_data_cloud_storage_usage_cost\x18\x0c \x01(\x01R\x1fbinaryDataCloudStorageUsageCost\x12B\n\x1eother_cloud_storage_usage_cost\x18\r \x01(\x01R\x1aotherCloudStorageUsageCost"8\n\x1fGetOrgBillingInformationRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId"\xfc\x01\n GetOrgBillingInformationResponse\x122\n\x04type\x18\x01 \x01(\x0e2\x1e.viam.app.v1.PaymentMethodTypeR\x04type\x12#\n\rbilling_email\x18\x02 \x01(\tR\x0cbillingEmail\x12;\n\x06method\x18\x03 \x01(\x0b2\x1e.viam.app.v1.PaymentMethodCardH\x00R\x06method\x88\x01\x01\x12&\n\x0cbilling_tier\x18\x04 \x01(\tH\x01R\x0bbillingTier\x88\x01\x01B\t\n\x07_methodB\x0f\n\r_billing_tier"2\n\x19GetInvoicesSummaryRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId"\x86\x01\n\x1aGetInvoicesSummaryResponse\x12/\n\x13outstanding_balance\x18\x01 \x01(\x01R\x12outstandingBalance\x127\n\x08invoices\x18\x02 \x03(\x0b2\x1b.viam.app.v1.InvoiceSummaryR\x08invoices"=\n\x14GetInvoicePdfRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06org_id\x18\x02 \x01(\tR\x05orgId"-\n\x15GetInvoicePdfResponse\x12\x14\n\x05chunk\x18\x01 \x01(\x0cR\x05chunk"z\n\x1fSendPaymentRequiredEmailRequest\x12&\n\x0fcustomer_org_id\x18\x01 \x01(\tR\rcustomerOrgId\x12/\n\x14billing_owner_org_id\x18\x02 \x01(\tR\x11billingOwnerOrgId""\n SendPaymentRequiredEmailResponse*V\n\x11PaymentMethodType\x12#\n\x1fPAYMENT_METHOD_TYPE_UNSPECIFIED\x10\x00\x12\x1c\n\x18PAYMENT_METHOD_TYPE_CARD\x10\x012\xb0\x04\n\x0eBillingService\x12k\n\x14GetCurrentMonthUsage\x12(.viam.app.v1.GetCurrentMonthUsageRequest\x1a).viam.app.v1.GetCurrentMonthUsageResponse\x12w\n\x18GetOrgBillingInformation\x12,.viam.app.v1.GetOrgBillingInformationRequest\x1a-.viam.app.v1.GetOrgBillingInformationResponse\x12e\n\x12GetInvoicesSummary\x12&.viam.app.v1.GetInvoicesSummaryRequest\x1a\'.viam.app.v1.GetInvoicesSummaryResponse\x12X\n\rGetInvoicePdf\x12!.viam.app.v1.GetInvoicePdfRequest\x1a".viam.app.v1.GetInvoicePdfResponse0\x01\x12w\n\x18SendPaymentRequiredEmail\x12,.viam.app.v1.SendPaymentRequiredEmailRequest\x1a-.viam.app.v1.SendPaymentRequiredEmailResponseB\x18Z\x16go.viam.com/api/app/v1b\x06proto3') diff --git a/src/viam/gen/app/v1/end_user_pb2.py b/src/viam/gen/app/v1/end_user_pb2.py index 56d7cf49e..9415a289b 100644 --- a/src/viam/gen/app/v1/end_user_pb2.py +++ b/src/viam/gen/app/v1/end_user_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'app/v1/end_user.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'app/v1/end_user.proto') _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15app/v1/end_user.proto\x12\x0bviam.app.v1"\x18\n\x16IsLegalAcceptedRequest"@\n\x17IsLegalAcceptedResponse\x12%\n\x0eaccepted_legal\x18\x01 \x01(\x08R\racceptedLegal"\x14\n\x12AcceptLegalRequest"\x15\n\x13AcceptLegalResponse"\xc7\x01\n\x1eRegisterAuthApplicationRequest\x12)\n\x10application_name\x18\x01 \x01(\tR\x0fapplicationName\x12\x15\n\x06org_id\x18\x02 \x01(\tR\x05orgId\x12\x1f\n\x0borigin_uris\x18\x03 \x03(\tR\noriginUris\x12#\n\rredirect_uris\x18\x04 \x03(\tR\x0credirectUris\x12\x1d\n\nlogout_uri\x18\x05 \x01(\tR\tlogoutUri"\x98\x01\n\x1fRegisterAuthApplicationResponse\x12%\n\x0eapplication_id\x18\x01 \x01(\tR\rapplicationId\x12)\n\x10application_name\x18\x02 \x01(\tR\x0fapplicationName\x12#\n\rclient_secret\x18\x03 \x01(\tR\x0cclientSecret"\xec\x01\n\x1cUpdateAuthApplicationRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12%\n\x0eapplication_id\x18\x02 \x01(\tR\rapplicationId\x12)\n\x10application_name\x18\x03 \x01(\tR\x0fapplicationName\x12\x1f\n\x0borigin_uris\x18\x04 \x03(\tR\noriginUris\x12#\n\rredirect_uris\x18\x05 \x03(\tR\x0credirectUris\x12\x1d\n\nlogout_uri\x18\x06 \x01(\tR\tlogoutUri"q\n\x1dUpdateAuthApplicationResponse\x12%\n\x0eapplication_id\x18\x01 \x01(\tR\rapplicationId\x12)\n\x10application_name\x18\x02 \x01(\tR\x0fapplicationName"Y\n\x19GetAuthApplicationRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12%\n\x0eapplication_id\x18\x02 \x01(\tR\rapplicationId"\xf8\x01\n\x1aGetAuthApplicationResponse\x12%\n\x0eapplication_id\x18\x01 \x01(\tR\rapplicationId\x12)\n\x10application_name\x18\x02 \x01(\tR\x0fapplicationName\x12#\n\rclient_secret\x18\x03 \x01(\tR\x0cclientSecret\x12\x1f\n\x0borigin_uris\x18\x04 \x03(\tR\noriginUris\x12#\n\rredirect_uris\x18\x05 \x03(\tR\x0credirectUris\x12\x1d\n\nlogout_uri\x18\x06 \x01(\tR\tlogoutUri2\x8d\x04\n\x0eEndUserService\x12\\\n\x0fIsLegalAccepted\x12#.viam.app.v1.IsLegalAcceptedRequest\x1a$.viam.app.v1.IsLegalAcceptedResponse\x12P\n\x0bAcceptLegal\x12\x1f.viam.app.v1.AcceptLegalRequest\x1a .viam.app.v1.AcceptLegalResponse\x12t\n\x17RegisterAuthApplication\x12+.viam.app.v1.RegisterAuthApplicationRequest\x1a,.viam.app.v1.RegisterAuthApplicationResponse\x12n\n\x15UpdateAuthApplication\x12).viam.app.v1.UpdateAuthApplicationRequest\x1a*.viam.app.v1.UpdateAuthApplicationResponse\x12e\n\x12GetAuthApplication\x12&.viam.app.v1.GetAuthApplicationRequest\x1a\'.viam.app.v1.GetAuthApplicationResponseB\x18Z\x16go.viam.com/api/app/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/app/v1/robot_pb2.py b/src/viam/gen/app/v1/robot_pb2.py index afec81ae5..67143c7a1 100644 --- a/src/viam/gen/app/v1/robot_pb2.py +++ b/src/viam/gen/app/v1/robot_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'app/v1/robot.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'app/v1/robot.proto') _sym_db = _symbol_database.Default() from ...common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 diff --git a/src/viam/gen/common/v1/common_pb2.py b/src/viam/gen/common/v1/common_pb2.py index b26d301f8..5d3a48710 100644 --- a/src/viam/gen/common/v1/common_pb2.py +++ b/src/viam/gen/common/v1/common_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'common/v1/common.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'common/v1/common.proto') _sym_db = _symbol_database.Default() from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 diff --git a/src/viam/gen/component/arm/v1/arm_pb2.py b/src/viam/gen/component/arm/v1/arm_pb2.py index bc5ddc4d1..afb6552e8 100644 --- a/src/viam/gen/component/arm/v1/arm_pb2.py +++ b/src/viam/gen/component/arm/v1/arm_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/arm/v1/arm.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/arm/v1/arm.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/component/audioinput/v1/audioinput_pb2.py b/src/viam/gen/component/audioinput/v1/audioinput_pb2.py index e1025efd2..f85a06492 100644 --- a/src/viam/gen/component/audioinput/v1/audioinput_pb2.py +++ b/src/viam/gen/component/audioinput/v1/audioinput_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/audioinput/v1/audioinput.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/audioinput/v1/audioinput.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/component/base/v1/base_pb2.py b/src/viam/gen/component/base/v1/base_pb2.py index a373a76c3..260348dd1 100644 --- a/src/viam/gen/component/base/v1/base_pb2.py +++ b/src/viam/gen/component/base/v1/base_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/base/v1/base.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/base/v1/base.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/component/board/v1/board_pb2.py b/src/viam/gen/component/board/v1/board_pb2.py index f3137a72d..adea06a62 100644 --- a/src/viam/gen/component/board/v1/board_pb2.py +++ b/src/viam/gen/component/board/v1/board_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/board/v1/board.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/board/v1/board.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/component/camera/v1/camera_pb2.py b/src/viam/gen/component/camera/v1/camera_pb2.py index f63312306..6215314aa 100644 --- a/src/viam/gen/component/camera/v1/camera_pb2.py +++ b/src/viam/gen/component/camera/v1/camera_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/camera/v1/camera.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/camera/v1/camera.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/component/encoder/v1/encoder_pb2.py b/src/viam/gen/component/encoder/v1/encoder_pb2.py index 584ed8648..bfed9b9ea 100644 --- a/src/viam/gen/component/encoder/v1/encoder_pb2.py +++ b/src/viam/gen/component/encoder/v1/encoder_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/encoder/v1/encoder.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/encoder/v1/encoder.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/component/gantry/v1/gantry_pb2.py b/src/viam/gen/component/gantry/v1/gantry_pb2.py index 973cb46ec..12bc5b729 100644 --- a/src/viam/gen/component/gantry/v1/gantry_pb2.py +++ b/src/viam/gen/component/gantry/v1/gantry_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/gantry/v1/gantry.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/gantry/v1/gantry.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/component/generic/v1/generic_pb2.py b/src/viam/gen/component/generic/v1/generic_pb2.py index add29995f..ba4e0eb3a 100644 --- a/src/viam/gen/component/generic/v1/generic_pb2.py +++ b/src/viam/gen/component/generic/v1/generic_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/generic/v1/generic.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/generic/v1/generic.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/component/gripper/v1/gripper_pb2.py b/src/viam/gen/component/gripper/v1/gripper_pb2.py index 5f1c25c70..4669810cf 100644 --- a/src/viam/gen/component/gripper/v1/gripper_pb2.py +++ b/src/viam/gen/component/gripper/v1/gripper_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/gripper/v1/gripper.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/gripper/v1/gripper.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/component/inputcontroller/v1/input_controller_pb2.py b/src/viam/gen/component/inputcontroller/v1/input_controller_pb2.py index 0fe85f1a9..3e6372b39 100644 --- a/src/viam/gen/component/inputcontroller/v1/input_controller_pb2.py +++ b/src/viam/gen/component/inputcontroller/v1/input_controller_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/inputcontroller/v1/input_controller.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/inputcontroller/v1/input_controller.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/component/motor/v1/motor_pb2.py b/src/viam/gen/component/motor/v1/motor_pb2.py index 49b69918f..8fb2efe7f 100644 --- a/src/viam/gen/component/motor/v1/motor_pb2.py +++ b/src/viam/gen/component/motor/v1/motor_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/motor/v1/motor.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/motor/v1/motor.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/component/movementsensor/v1/movementsensor_pb2.py b/src/viam/gen/component/movementsensor/v1/movementsensor_pb2.py index a606b87a5..19553a211 100644 --- a/src/viam/gen/component/movementsensor/v1/movementsensor_pb2.py +++ b/src/viam/gen/component/movementsensor/v1/movementsensor_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/movementsensor/v1/movementsensor.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/movementsensor/v1/movementsensor.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/component/posetracker/v1/pose_tracker_pb2.py b/src/viam/gen/component/posetracker/v1/pose_tracker_pb2.py index 1f10be680..ce3e8e824 100644 --- a/src/viam/gen/component/posetracker/v1/pose_tracker_pb2.py +++ b/src/viam/gen/component/posetracker/v1/pose_tracker_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/posetracker/v1/pose_tracker.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/posetracker/v1/pose_tracker.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/component/powersensor/v1/powersensor_pb2.py b/src/viam/gen/component/powersensor/v1/powersensor_pb2.py index 8c132bd5c..7f733cc91 100644 --- a/src/viam/gen/component/powersensor/v1/powersensor_pb2.py +++ b/src/viam/gen/component/powersensor/v1/powersensor_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/powersensor/v1/powersensor.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/powersensor/v1/powersensor.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/component/sensor/v1/sensor_pb2.py b/src/viam/gen/component/sensor/v1/sensor_pb2.py index 0a3be978f..fcf14aa3a 100644 --- a/src/viam/gen/component/sensor/v1/sensor_pb2.py +++ b/src/viam/gen/component/sensor/v1/sensor_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/sensor/v1/sensor.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/sensor/v1/sensor.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/component/servo/v1/servo_pb2.py b/src/viam/gen/component/servo/v1/servo_pb2.py index 8689c2a23..5638d55dd 100644 --- a/src/viam/gen/component/servo/v1/servo_pb2.py +++ b/src/viam/gen/component/servo/v1/servo_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/servo/v1/servo.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/servo/v1/servo.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/component/testecho/v1/testecho_pb2.py b/src/viam/gen/component/testecho/v1/testecho_pb2.py index 11b4ae5e2..c0545d907 100644 --- a/src/viam/gen/component/testecho/v1/testecho_pb2.py +++ b/src/viam/gen/component/testecho/v1/testecho_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'component/testecho/v1/testecho.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'component/testecho/v1/testecho.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$component/testecho/v1/testecho.proto\x12\x1aviam.component.testecho.v1\x1a\x16common/v1/common.proto";\n\x0bEchoRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message"(\n\x0cEchoResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"C\n\x13EchoMultipleRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message"0\n\x14EchoMultipleResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"?\n\x0fEchoBiDiRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message",\n\x10EchoBiDiResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"!\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"\x0e\n\x0cStopResponse2\xb3\x03\n\x0fTestEchoService\x12[\n\x04Echo\x12\'.viam.component.testecho.v1.EchoRequest\x1a(.viam.component.testecho.v1.EchoResponse"\x00\x12y\n\x0cEchoMultiple\x12/.viam.component.testecho.v1.EchoMultipleRequest\x1a0.viam.component.testecho.v1.EchoMultipleResponse"\x04\xa0\x92)\x010\x01\x12k\n\x08EchoBiDi\x12+.viam.component.testecho.v1.EchoBiDiRequest\x1a,.viam.component.testecho.v1.EchoBiDiResponse"\x00(\x010\x01\x12[\n\x04Stop\x12\'.viam.component.testecho.v1.StopRequest\x1a(.viam.component.testecho.v1.StopResponse"\x00BG\n\x1ecom.viam.component.testecho.v1Z%go.viam.com/api/component/testecho/v1b\x06proto3') diff --git a/src/viam/gen/module/v1/module_pb2.py b/src/viam/gen/module/v1/module_pb2.py index c000a32f1..21b3cbf54 100644 --- a/src/viam/gen/module/v1/module_pb2.py +++ b/src/viam/gen/module/v1/module_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'module/v1/module.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'module/v1/module.proto') _sym_db = _symbol_database.Default() from ...app.v1 import robot_pb2 as app_dot_v1_dot_robot__pb2 from ...robot.v1 import robot_pb2 as robot_dot_v1_dot_robot__pb2 diff --git a/src/viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py b/src/viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py index a754c1273..cf3569cad 100644 --- a/src/viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py +++ b/src/viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'proto/rpc/examples/echo/v1/echo.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'proto/rpc/examples/echo/v1/echo.proto') _sym_db = _symbol_database.Default() from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%proto/rpc/examples/echo/v1/echo.proto\x12\x1aproto.rpc.examples.echo.v1\x1a\x1cgoogle/api/annotations.proto"\'\n\x0bEchoRequest\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"(\n\x0cEchoResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"/\n\x13EchoMultipleRequest\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"0\n\x14EchoMultipleResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"+\n\x0fEchoBiDiRequest\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message",\n\x10EchoBiDiResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message2\xf4\x02\n\x0bEchoService\x12\x80\x01\n\x04Echo\x12\'.proto.rpc.examples.echo.v1.EchoRequest\x1a(.proto.rpc.examples.echo.v1.EchoResponse"%\x82\xd3\xe4\x93\x02\x1f"\x1a/rpc/examples/echo/v1/echo:\x01*\x12u\n\x0cEchoMultiple\x12/.proto.rpc.examples.echo.v1.EchoMultipleRequest\x1a0.proto.rpc.examples.echo.v1.EchoMultipleResponse"\x000\x01\x12k\n\x08EchoBiDi\x12+.proto.rpc.examples.echo.v1.EchoBiDiRequest\x1a,.proto.rpc.examples.echo.v1.EchoBiDiResponse"\x00(\x010\x01B.Z,go.viam.com/utils/proto/rpc/examples/echo/v1b\x06proto3') diff --git a/src/viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py b/src/viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py index 2d747d965..45b426bbd 100644 --- a/src/viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py +++ b/src/viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'proto/rpc/examples/echoresource/v1/echoresource.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'proto/rpc/examples/echoresource/v1/echoresource.proto') _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n5proto/rpc/examples/echoresource/v1/echoresource.proto\x12"proto.rpc.examples.echoresource.v1"C\n\x13EchoResourceRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message"0\n\x14EchoResourceResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"K\n\x1bEchoResourceMultipleRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message"8\n\x1cEchoResourceMultipleResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message"G\n\x17EchoResourceBiDiRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message"4\n\x18EchoResourceBiDiResponse\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message2\xd1\x03\n\x13EchoResourceService\x12\x83\x01\n\x0cEchoResource\x127.proto.rpc.examples.echoresource.v1.EchoResourceRequest\x1a8.proto.rpc.examples.echoresource.v1.EchoResourceResponse"\x00\x12\x9d\x01\n\x14EchoResourceMultiple\x12?.proto.rpc.examples.echoresource.v1.EchoResourceMultipleRequest\x1a@.proto.rpc.examples.echoresource.v1.EchoResourceMultipleResponse"\x000\x01\x12\x93\x01\n\x10EchoResourceBiDi\x12;.proto.rpc.examples.echoresource.v1.EchoResourceBiDiRequest\x1a<.proto.rpc.examples.echoresource.v1.EchoResourceBiDiResponse"\x00(\x010\x01B6Z4go.viam.com/utils/proto/rpc/examples/echoresource/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/proto/rpc/examples/fileupload/v1/fileupload_grpc.py b/src/viam/gen/proto/rpc/examples/fileupload/v1/fileupload_grpc.py index 8fc0796ef..c7090b555 100644 --- a/src/viam/gen/proto/rpc/examples/fileupload/v1/fileupload_grpc.py +++ b/src/viam/gen/proto/rpc/examples/fileupload/v1/fileupload_grpc.py @@ -14,7 +14,7 @@ async def UploadFile(self, stream: 'grpclib.server.Stream[proto.rpc.examples.fil pass def __mapping__(self) -> typing.Dict[str, grpclib.const.Handler]: - return {'/proto.rpc.examples.fileupload.v1.FileUploadService/UploadFile': grpclib.const.Handler(self.UploadFile, grpclib.const.Cardinality.STREAM_STREAM, proto.rpc.examples.fileupload.v1.fileupload_pb2.UploadFileRequest, proto.rpc.examples.fileupload.v1.fileupload_pb2.UploadFileResponse)} + return {'/proto.rpc.examples.fileupload.v1.FileUploadService/UploadFile': grpclib.const.Handler(self.UploadFile, grpclib.const.Cardinality.STREAM_UNARY, proto.rpc.examples.fileupload.v1.fileupload_pb2.UploadFileRequest, proto.rpc.examples.fileupload.v1.fileupload_pb2.UploadFileResponse)} class UnimplementedFileUploadServiceBase(FileUploadServiceBase): @@ -24,4 +24,4 @@ async def UploadFile(self, stream: 'grpclib.server.Stream[proto.rpc.examples.fil class FileUploadServiceStub: def __init__(self, channel: grpclib.client.Channel) -> None: - self.UploadFile = grpclib.client.StreamStreamMethod(channel, '/proto.rpc.examples.fileupload.v1.FileUploadService/UploadFile', proto.rpc.examples.fileupload.v1.fileupload_pb2.UploadFileRequest, proto.rpc.examples.fileupload.v1.fileupload_pb2.UploadFileResponse) \ No newline at end of file + self.UploadFile = grpclib.client.StreamUnaryMethod(channel, '/proto.rpc.examples.fileupload.v1.FileUploadService/UploadFile', proto.rpc.examples.fileupload.v1.fileupload_pb2.UploadFileRequest, proto.rpc.examples.fileupload.v1.fileupload_pb2.UploadFileResponse) \ No newline at end of file diff --git a/src/viam/gen/proto/rpc/examples/fileupload/v1/fileupload_pb2.py b/src/viam/gen/proto/rpc/examples/fileupload/v1/fileupload_pb2.py index 5a4d3cc61..f87f2f86e 100644 --- a/src/viam/gen/proto/rpc/examples/fileupload/v1/fileupload_pb2.py +++ b/src/viam/gen/proto/rpc/examples/fileupload/v1/fileupload_pb2.py @@ -4,9 +4,9 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'proto/rpc/examples/fileupload/v1/fileupload.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'proto/rpc/examples/fileupload/v1/fileupload.proto') _sym_db = _symbol_database.Default() -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n1proto/rpc/examples/fileupload/v1/fileupload.proto\x12 proto.rpc.examples.fileupload.v1"R\n\x11UploadFileRequest\x12\x14\n\x04name\x18\x01 \x01(\tH\x00R\x04name\x12\x1f\n\nchunk_data\x18\x02 \x01(\x0cH\x00R\tchunkDataB\x06\n\x04data"<\n\x12UploadFileResponse\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04size\x18\x02 \x01(\x03R\x04size2\x92\x01\n\x11FileUploadService\x12}\n\nUploadFile\x123.proto.rpc.examples.fileupload.v1.UploadFileRequest\x1a4.proto.rpc.examples.fileupload.v1.UploadFileResponse"\x00(\x010\x01B4Z2go.viam.com/utils/proto/rpc/examples/fileupload/v1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n1proto/rpc/examples/fileupload/v1/fileupload.proto\x12 proto.rpc.examples.fileupload.v1"R\n\x11UploadFileRequest\x12\x14\n\x04name\x18\x01 \x01(\tH\x00R\x04name\x12\x1f\n\nchunk_data\x18\x02 \x01(\x0cH\x00R\tchunkDataB\x06\n\x04data"<\n\x12UploadFileResponse\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04size\x18\x02 \x01(\x03R\x04size2\x90\x01\n\x11FileUploadService\x12{\n\nUploadFile\x123.proto.rpc.examples.fileupload.v1.UploadFileRequest\x1a4.proto.rpc.examples.fileupload.v1.UploadFileResponse"\x00(\x01B4Z2go.viam.com/utils/proto/rpc/examples/fileupload/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'proto.rpc.examples.fileupload.v1.fileupload_pb2', _globals) @@ -18,4 +18,4 @@ _globals['_UPLOADFILERESPONSE']._serialized_start = 171 _globals['_UPLOADFILERESPONSE']._serialized_end = 231 _globals['_FILEUPLOADSERVICE']._serialized_start = 234 - _globals['_FILEUPLOADSERVICE']._serialized_end = 380 \ No newline at end of file + _globals['_FILEUPLOADSERVICE']._serialized_end = 378 \ No newline at end of file diff --git a/src/viam/gen/proto/rpc/v1/auth_pb2.py b/src/viam/gen/proto/rpc/v1/auth_pb2.py index 31275c754..3472c83f3 100644 --- a/src/viam/gen/proto/rpc/v1/auth_pb2.py +++ b/src/viam/gen/proto/rpc/v1/auth_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'proto/rpc/v1/auth.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'proto/rpc/v1/auth.proto') _sym_db = _symbol_database.Default() from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17proto/rpc/v1/auth.proto\x12\x0cproto.rpc.v1\x1a\x1cgoogle/api/annotations.proto";\n\x0bCredentials\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x18\n\x07payload\x18\x02 \x01(\tR\x07payload"j\n\x13AuthenticateRequest\x12\x16\n\x06entity\x18\x01 \x01(\tR\x06entity\x12;\n\x0bcredentials\x18\x02 \x01(\x0b2\x19.proto.rpc.v1.CredentialsR\x0bcredentials"9\n\x14AuthenticateResponse\x12!\n\x0caccess_token\x18\x01 \x01(\tR\x0baccessToken"/\n\x15AuthenticateToRequest\x12\x16\n\x06entity\x18\x01 \x01(\tR\x06entity";\n\x16AuthenticateToResponse\x12!\n\x0caccess_token\x18\x01 \x01(\tR\x0baccessToken2\x82\x01\n\x0bAuthService\x12s\n\x0cAuthenticate\x12!.proto.rpc.v1.AuthenticateRequest\x1a".proto.rpc.v1.AuthenticateResponse"\x1c\x82\xd3\xe4\x93\x02\x16"\x14/rpc/v1/authenticate2\x93\x01\n\x13ExternalAuthService\x12|\n\x0eAuthenticateTo\x12#.proto.rpc.v1.AuthenticateToRequest\x1a$.proto.rpc.v1.AuthenticateToResponse"\x1f\x82\xd3\xe4\x93\x02\x19"\x17/rpc/v1/authenticate_toB Z\x1ego.viam.com/utils/proto/rpc/v1b\x06proto3') diff --git a/src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py b/src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py index 450c190a1..242768e73 100644 --- a/src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py +++ b/src/viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'proto/rpc/webrtc/v1/grpc.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'proto/rpc/webrtc/v1/grpc.proto') _sym_db = _symbol_database.Default() from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2 diff --git a/src/viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py b/src/viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py index f961dfe13..6b8dbf164 100644 --- a/src/viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py +++ b/src/viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'proto/rpc/webrtc/v1/signaling.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'proto/rpc/webrtc/v1/signaling.proto') _sym_db = _symbol_database.Default() from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 diff --git a/src/viam/gen/provisioning/v1/provisioning_pb2.py b/src/viam/gen/provisioning/v1/provisioning_pb2.py index 41667e337..1fd1e3984 100644 --- a/src/viam/gen/provisioning/v1/provisioning_pb2.py +++ b/src/viam/gen/provisioning/v1/provisioning_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'provisioning/v1/provisioning.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'provisioning/v1/provisioning.proto') _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"provisioning/v1/provisioning.proto\x12\x14viam.provisioning.v1"\x1e\n\x1cGetSmartMachineStatusRequest"\xcb\x02\n\x1dGetSmartMachineStatusResponse\x12S\n\x11provisioning_info\x18\x01 \x01(\x0b2&.viam.provisioning.v1.ProvisioningInfoR\x10provisioningInfo\x12A\n\x1dhas_smart_machine_credentials\x18\x02 \x01(\x08R\x1ahasSmartMachineCredentials\x12\x1b\n\tis_online\x18\x03 \x01(\x08R\x08isOnline\x12]\n\x19latest_connection_attempt\x18\x04 \x01(\x0b2!.viam.provisioning.v1.NetworkInfoR\x17latestConnectionAttempt\x12\x16\n\x06errors\x18\x05 \x03(\tR\x06errors"X\n\x1cSetNetworkCredentialsRequest\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x12\n\x04ssid\x18\x02 \x01(\tR\x04ssid\x12\x10\n\x03psk\x18\x03 \x01(\tR\x03psk"\x1f\n\x1dSetNetworkCredentialsResponse"\\\n!SetSmartMachineCredentialsRequest\x127\n\x05cloud\x18\x01 \x01(\x0b2!.viam.provisioning.v1.CloudConfigR\x05cloud"$\n"SetSmartMachineCredentialsResponse"\x17\n\x15GetNetworkListRequest"W\n\x16GetNetworkListResponse\x12=\n\x08networks\x18\x01 \x03(\x0b2!.viam.provisioning.v1.NetworkInfoR\x08networks"m\n\x10ProvisioningInfo\x12\x1f\n\x0bfragment_id\x18\x01 \x01(\tR\nfragmentId\x12\x14\n\x05model\x18\x02 \x01(\tR\x05model\x12"\n\x0cmanufacturer\x18\x03 \x01(\tR\x0cmanufacturer"\xa6\x01\n\x0bNetworkInfo\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x12\n\x04ssid\x18\x02 \x01(\tR\x04ssid\x12\x1a\n\x08security\x18\x03 \x01(\tR\x08security\x12\x16\n\x06signal\x18\x04 \x01(\x05R\x06signal\x12\x1c\n\tconnected\x18\x05 \x01(\x08R\tconnected\x12\x1d\n\nlast_error\x18\x06 \x01(\tR\tlastError"V\n\x0bCloudConfig\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\x12\x1f\n\x0bapp_address\x18\x03 \x01(\tR\nappAddress2\x9a\x04\n\x13ProvisioningService\x12\x80\x01\n\x15GetSmartMachineStatus\x122.viam.provisioning.v1.GetSmartMachineStatusRequest\x1a3.viam.provisioning.v1.GetSmartMachineStatusResponse\x12\x80\x01\n\x15SetNetworkCredentials\x122.viam.provisioning.v1.SetNetworkCredentialsRequest\x1a3.viam.provisioning.v1.SetNetworkCredentialsResponse\x12\x8f\x01\n\x1aSetSmartMachineCredentials\x127.viam.provisioning.v1.SetSmartMachineCredentialsRequest\x1a8.viam.provisioning.v1.SetSmartMachineCredentialsResponse\x12k\n\x0eGetNetworkList\x12+.viam.provisioning.v1.GetNetworkListRequest\x1a,.viam.provisioning.v1.GetNetworkListResponseB!Z\x1fgo.viam.com/api/provisioning/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/robot/v1/robot_pb2.py b/src/viam/gen/robot/v1/robot_pb2.py index 37f0f2419..eaff091d5 100644 --- a/src/viam/gen/robot/v1/robot_pb2.py +++ b/src/viam/gen/robot/v1/robot_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'robot/v1/robot.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'robot/v1/robot.proto') _sym_db = _symbol_database.Default() from ...common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/service/datamanager/v1/data_manager_pb2.py b/src/viam/gen/service/datamanager/v1/data_manager_pb2.py index b103b420d..d23d957a2 100644 --- a/src/viam/gen/service/datamanager/v1/data_manager_pb2.py +++ b/src/viam/gen/service/datamanager/v1/data_manager_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'service/datamanager/v1/data_manager.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'service/datamanager/v1/data_manager.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/service/generic/v1/generic_pb2.py b/src/viam/gen/service/generic/v1/generic_pb2.py index 46446df3a..1bc5cb0fa 100644 --- a/src/viam/gen/service/generic/v1/generic_pb2.py +++ b/src/viam/gen/service/generic/v1/generic_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'service/generic/v1/generic.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'service/generic/v1/generic.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/service/mlmodel/v1/mlmodel_pb2.py b/src/viam/gen/service/mlmodel/v1/mlmodel_pb2.py index 449162f11..8ab5e2f93 100644 --- a/src/viam/gen/service/mlmodel/v1/mlmodel_pb2.py +++ b/src/viam/gen/service/mlmodel/v1/mlmodel_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'service/mlmodel/v1/mlmodel.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'service/mlmodel/v1/mlmodel.proto') _sym_db = _symbol_database.Default() from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 diff --git a/src/viam/gen/service/motion/v1/motion_pb2.py b/src/viam/gen/service/motion/v1/motion_pb2.py index 761902b4c..802080010 100644 --- a/src/viam/gen/service/motion/v1/motion_pb2.py +++ b/src/viam/gen/service/motion/v1/motion_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'service/motion/v1/motion.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'service/motion/v1/motion.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/service/navigation/v1/navigation_pb2.py b/src/viam/gen/service/navigation/v1/navigation_pb2.py index ef004ce9c..8d2432c2f 100644 --- a/src/viam/gen/service/navigation/v1/navigation_pb2.py +++ b/src/viam/gen/service/navigation/v1/navigation_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'service/navigation/v1/navigation.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'service/navigation/v1/navigation.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/service/sensors/v1/sensors_pb2.py b/src/viam/gen/service/sensors/v1/sensors_pb2.py index 5232d3252..150405488 100644 --- a/src/viam/gen/service/sensors/v1/sensors_pb2.py +++ b/src/viam/gen/service/sensors/v1/sensors_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'service/sensors/v1/sensors.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'service/sensors/v1/sensors.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/service/shell/v1/shell_pb2.py b/src/viam/gen/service/shell/v1/shell_pb2.py index 6ce1841e7..0d4618de7 100644 --- a/src/viam/gen/service/shell/v1/shell_pb2.py +++ b/src/viam/gen/service/shell/v1/shell_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'service/shell/v1/shell.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'service/shell/v1/shell.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/service/slam/v1/slam_pb2.py b/src/viam/gen/service/slam/v1/slam_pb2.py index 970a14399..556d1aa90 100644 --- a/src/viam/gen/service/slam/v1/slam_pb2.py +++ b/src/viam/gen/service/slam/v1/slam_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'service/slam/v1/slam.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'service/slam/v1/slam.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 diff --git a/src/viam/gen/service/vision/v1/vision_pb2.py b/src/viam/gen/service/vision/v1/vision_pb2.py index 50324b4bb..f2c2286a5 100644 --- a/src/viam/gen/service/vision/v1/vision_pb2.py +++ b/src/viam/gen/service/vision/v1/vision_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'service/vision/v1/vision.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'service/vision/v1/vision.proto') _sym_db = _symbol_database.Default() from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2 from ....component.camera.v1 import camera_pb2 as component_dot_camera_dot_v1_dot_camera__pb2 diff --git a/src/viam/gen/stream/v1/stream_pb2.py b/src/viam/gen/stream/v1/stream_pb2.py index f6f854b04..264899f82 100644 --- a/src/viam/gen/stream/v1/stream_pb2.py +++ b/src/viam/gen/stream/v1/stream_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'stream/v1/stream.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'stream/v1/stream.proto') _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16stream/v1/stream.proto\x12\x0fproto.stream.v1"\x14\n\x12ListStreamsRequest"+\n\x13ListStreamsResponse\x12\x14\n\x05names\x18\x01 \x03(\tR\x05names"&\n\x10AddStreamRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"\x13\n\x11AddStreamResponse")\n\x13RemoveStreamRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"\x16\n\x14RemoveStreamResponse2\x9a\x02\n\rStreamService\x12X\n\x0bListStreams\x12#.proto.stream.v1.ListStreamsRequest\x1a$.proto.stream.v1.ListStreamsResponse\x12R\n\tAddStream\x12!.proto.stream.v1.AddStreamRequest\x1a".proto.stream.v1.AddStreamResponse\x12[\n\x0cRemoveStream\x12$.proto.stream.v1.RemoveStreamRequest\x1a%.proto.stream.v1.RemoveStreamResponseB.Z,github.com/edaniels/gostream/proto/stream/v1b\x06proto3') _globals = globals() diff --git a/src/viam/gen/tagger/v1/tagger_pb2.py b/src/viam/gen/tagger/v1/tagger_pb2.py index bb307e161..1b6954000 100644 --- a/src/viam/gen/tagger/v1/tagger_pb2.py +++ b/src/viam/gen/tagger/v1/tagger_pb2.py @@ -4,7 +4,7 @@ from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 1, '', 'tagger/v1/tagger.proto') +_runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 28, 2, '', 'tagger/v1/tagger.proto') _sym_db = _symbol_database.Default() from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16tagger/v1/tagger.proto\x12\ttagger.v1\x1a google/protobuf/descriptor.proto:3\n\x04tags\x12\x1d.google.protobuf.FieldOptions\x18\xc3\xe03 \x01(\tR\x04tags:>\n\noneof_tags\x12\x1d.google.protobuf.OneofOptions\x18\xc3\xe03 \x01(\tR\toneofTagsB4Z2github.com/srikrsna/protoc-gen-gotag/tagger;taggerb\x06proto3') diff --git a/src/viam/module/types.py b/src/viam/module/types.py index 5186fc8ab..b1cd3ea73 100644 --- a/src/viam/module/types.py +++ b/src/viam/module/types.py @@ -9,8 +9,7 @@ class Reconfigurable(Protocol): """The Reconfigurable protocol defines the requirements for making a resource Reconfigurable""" - def reconfigure(self, config: ComponentConfig, dependencies: Mapping[ResourceName, ResourceBase]): - ... + def reconfigure(self, config: ComponentConfig, dependencies: Mapping[ResourceName, ResourceBase]): ... @runtime_checkable @@ -21,5 +20,4 @@ class Stoppable(Protocol): All resources that physically move should be Stoppable. """ - def stop(self, *, extra: Optional[Mapping[str, Any]] = None, timeout: Optional[float] = None, **kwargs): - ... + def stop(self, *, extra: Optional[Mapping[str, Any]] = None, timeout: Optional[float] = None, **kwargs): ... diff --git a/src/viam/proto/app/__init__.py b/src/viam/proto/app/__init__.py index 52d810c75..a404183a3 100644 --- a/src/viam/proto/app/__init__.py +++ b/src/viam/proto/app/__init__.py @@ -1,13 +1,17 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ...gen.app.v1.app_grpc import AppServiceBase, AppServiceStub, UnimplementedAppServiceBase +''' +from ...gen.app.v1.app_grpc import ( + AppServiceBase, + AppServiceStub, + UnimplementedAppServiceBase +) from ...gen.app.v1.app_pb2 import ( - AddRoleRequest, - AddRoleResponse, APIKey, APIKeyWithAuthorizations, + AddRoleRequest, + AddRoleResponse, AuthenticationType, AuthenticatorInfo, Authorization, @@ -121,13 +125,13 @@ LocationAuthRequest, LocationAuthResponse, LocationOrganization, + MLModelMetadata, + MLTrainingMetadata, + MLTrainingVersion, MarkPartAsMainRequest, MarkPartAsMainResponse, MarkPartForRestartRequest, MarkPartForRestartResponse, - MLModelMetadata, - MLTrainingMetadata, - MLTrainingVersion, Model, Module, ModuleFileInfo, @@ -137,11 +141,11 @@ NewRobotPartResponse, NewRobotRequest, NewRobotResponse, + OrgDetails, Organization, OrganizationIdentity, OrganizationInvite, OrganizationMember, - OrgDetails, RegistryItem, RegistryItemStatus, RemoveRoleRequest, @@ -156,9 +160,9 @@ RotateKeyRequest, RotateKeyResponse, RoverRentalRobot, - SharedSecret, ShareLocationRequest, ShareLocationResponse, + SharedSecret, StorageConfig, TailRobotPartLogsRequest, TailRobotPartLogsResponse, @@ -186,194 +190,194 @@ UploadModuleFileResponse, Uploads, VersionHistory, - Visibility, + Visibility ) __all__ = [ - "AppServiceBase", - "AppServiceStub", - "UnimplementedAppServiceBase", - "APIKey", - "APIKeyWithAuthorizations", - "AddRoleRequest", - "AddRoleResponse", - "AuthenticationType", - "AuthenticatorInfo", - "Authorization", - "AuthorizationDetails", - "AuthorizedPermissions", - "ChangeRoleRequest", - "ChangeRoleResponse", - "CheckPermissionsRequest", - "CheckPermissionsResponse", - "CreateFragmentRequest", - "CreateFragmentResponse", - "CreateKeyFromExistingKeyAuthorizationsRequest", - "CreateKeyFromExistingKeyAuthorizationsResponse", - "CreateKeyRequest", - "CreateKeyResponse", - "CreateLocationRequest", - "CreateLocationResponse", - "CreateLocationSecretRequest", - "CreateLocationSecretResponse", - "CreateModuleRequest", - "CreateModuleResponse", - "CreateOrganizationInviteRequest", - "CreateOrganizationInviteResponse", - "CreateOrganizationRequest", - "CreateOrganizationResponse", - "CreateRegistryItemRequest", - "CreateRegistryItemResponse", - "CreateRobotPartSecretRequest", - "CreateRobotPartSecretResponse", - "DeleteFragmentRequest", - "DeleteFragmentResponse", - "DeleteKeyRequest", - "DeleteKeyResponse", - "DeleteLocationRequest", - "DeleteLocationResponse", - "DeleteLocationSecretRequest", - "DeleteLocationSecretResponse", - "DeleteOrganizationInviteRequest", - "DeleteOrganizationInviteResponse", - "DeleteOrganizationMemberRequest", - "DeleteOrganizationMemberResponse", - "DeleteOrganizationRequest", - "DeleteOrganizationResponse", - "DeleteRegistryItemRequest", - "DeleteRegistryItemResponse", - "DeleteRobotPartRequest", - "DeleteRobotPartResponse", - "DeleteRobotPartSecretRequest", - "DeleteRobotPartSecretResponse", - "DeleteRobotRequest", - "DeleteRobotResponse", - "Fragment", - "FragmentHistoryEntry", - "FragmentVisibility", - "GetFragmentHistoryRequest", - "GetFragmentHistoryResponse", - "GetFragmentRequest", - "GetFragmentResponse", - "GetLocationRequest", - "GetLocationResponse", - "GetModuleRequest", - "GetModuleResponse", - "GetOrganizationNamespaceAvailabilityRequest", - "GetOrganizationNamespaceAvailabilityResponse", - "GetOrganizationRequest", - "GetOrganizationResponse", - "GetOrganizationsWithAccessToLocationRequest", - "GetOrganizationsWithAccessToLocationResponse", - "GetRegistryItemRequest", - "GetRegistryItemResponse", - "GetRobotAPIKeysRequest", - "GetRobotAPIKeysResponse", - "GetRobotPartHistoryRequest", - "GetRobotPartHistoryResponse", - "GetRobotPartLogsRequest", - "GetRobotPartLogsResponse", - "GetRobotPartRequest", - "GetRobotPartResponse", - "GetRobotPartsRequest", - "GetRobotPartsResponse", - "GetRobotRequest", - "GetRobotResponse", - "GetRoverRentalRobotsRequest", - "GetRoverRentalRobotsResponse", - "GetUserIDByEmailRequest", - "GetUserIDByEmailResponse", - "ListAuthorizationsRequest", - "ListAuthorizationsResponse", - "ListFragmentsRequest", - "ListFragmentsResponse", - "ListKeysRequest", - "ListKeysResponse", - "ListLocationsRequest", - "ListLocationsResponse", - "ListMachineFragmentsRequest", - "ListMachineFragmentsResponse", - "ListModulesRequest", - "ListModulesResponse", - "ListOrganizationMembersRequest", - "ListOrganizationMembersResponse", - "ListOrganizationsByUserRequest", - "ListOrganizationsByUserResponse", - "ListOrganizationsRequest", - "ListOrganizationsResponse", - "ListRegistryItemsRequest", - "ListRegistryItemsResponse", - "ListRobotsRequest", - "ListRobotsResponse", - "Location", - "LocationAuth", - "LocationAuthRequest", - "LocationAuthResponse", - "LocationOrganization", - "MLModelMetadata", - "MLTrainingMetadata", - "MLTrainingVersion", - "MarkPartAsMainRequest", - "MarkPartAsMainResponse", - "MarkPartForRestartRequest", - "MarkPartForRestartResponse", - "Model", - "Module", - "ModuleFileInfo", - "ModuleMetadata", - "ModuleVersion", - "NewRobotPartRequest", - "NewRobotPartResponse", - "NewRobotRequest", - "NewRobotResponse", - "OrgDetails", - "Organization", - "OrganizationIdentity", - "OrganizationInvite", - "OrganizationMember", - "RegistryItem", - "RegistryItemStatus", - "RemoveRoleRequest", - "RemoveRoleResponse", - "RenameKeyRequest", - "RenameKeyResponse", - "ResendOrganizationInviteRequest", - "ResendOrganizationInviteResponse", - "Robot", - "RobotPart", - "RobotPartHistoryEntry", - "RotateKeyRequest", - "RotateKeyResponse", - "RoverRentalRobot", - "ShareLocationRequest", - "ShareLocationResponse", - "SharedSecret", - "StorageConfig", - "TailRobotPartLogsRequest", - "TailRobotPartLogsResponse", - "TransferRegistryItemRequest", - "TransferRegistryItemResponse", - "UnshareLocationRequest", - "UnshareLocationResponse", - "UpdateFragmentRequest", - "UpdateFragmentResponse", - "UpdateLocationRequest", - "UpdateLocationResponse", - "UpdateModuleRequest", - "UpdateModuleResponse", - "UpdateOrganizationInviteAuthorizationsRequest", - "UpdateOrganizationInviteAuthorizationsResponse", - "UpdateOrganizationRequest", - "UpdateOrganizationResponse", - "UpdateRegistryItemRequest", - "UpdateRegistryItemResponse", - "UpdateRobotPartRequest", - "UpdateRobotPartResponse", - "UpdateRobotRequest", - "UpdateRobotResponse", - "UploadModuleFileRequest", - "UploadModuleFileResponse", - "Uploads", - "VersionHistory", - "Visibility", + 'AppServiceBase', + 'AppServiceStub', + 'UnimplementedAppServiceBase', + 'APIKey', + 'APIKeyWithAuthorizations', + 'AddRoleRequest', + 'AddRoleResponse', + 'AuthenticationType', + 'AuthenticatorInfo', + 'Authorization', + 'AuthorizationDetails', + 'AuthorizedPermissions', + 'ChangeRoleRequest', + 'ChangeRoleResponse', + 'CheckPermissionsRequest', + 'CheckPermissionsResponse', + 'CreateFragmentRequest', + 'CreateFragmentResponse', + 'CreateKeyFromExistingKeyAuthorizationsRequest', + 'CreateKeyFromExistingKeyAuthorizationsResponse', + 'CreateKeyRequest', + 'CreateKeyResponse', + 'CreateLocationRequest', + 'CreateLocationResponse', + 'CreateLocationSecretRequest', + 'CreateLocationSecretResponse', + 'CreateModuleRequest', + 'CreateModuleResponse', + 'CreateOrganizationInviteRequest', + 'CreateOrganizationInviteResponse', + 'CreateOrganizationRequest', + 'CreateOrganizationResponse', + 'CreateRegistryItemRequest', + 'CreateRegistryItemResponse', + 'CreateRobotPartSecretRequest', + 'CreateRobotPartSecretResponse', + 'DeleteFragmentRequest', + 'DeleteFragmentResponse', + 'DeleteKeyRequest', + 'DeleteKeyResponse', + 'DeleteLocationRequest', + 'DeleteLocationResponse', + 'DeleteLocationSecretRequest', + 'DeleteLocationSecretResponse', + 'DeleteOrganizationInviteRequest', + 'DeleteOrganizationInviteResponse', + 'DeleteOrganizationMemberRequest', + 'DeleteOrganizationMemberResponse', + 'DeleteOrganizationRequest', + 'DeleteOrganizationResponse', + 'DeleteRegistryItemRequest', + 'DeleteRegistryItemResponse', + 'DeleteRobotPartRequest', + 'DeleteRobotPartResponse', + 'DeleteRobotPartSecretRequest', + 'DeleteRobotPartSecretResponse', + 'DeleteRobotRequest', + 'DeleteRobotResponse', + 'Fragment', + 'FragmentHistoryEntry', + 'FragmentVisibility', + 'GetFragmentHistoryRequest', + 'GetFragmentHistoryResponse', + 'GetFragmentRequest', + 'GetFragmentResponse', + 'GetLocationRequest', + 'GetLocationResponse', + 'GetModuleRequest', + 'GetModuleResponse', + 'GetOrganizationNamespaceAvailabilityRequest', + 'GetOrganizationNamespaceAvailabilityResponse', + 'GetOrganizationRequest', + 'GetOrganizationResponse', + 'GetOrganizationsWithAccessToLocationRequest', + 'GetOrganizationsWithAccessToLocationResponse', + 'GetRegistryItemRequest', + 'GetRegistryItemResponse', + 'GetRobotAPIKeysRequest', + 'GetRobotAPIKeysResponse', + 'GetRobotPartHistoryRequest', + 'GetRobotPartHistoryResponse', + 'GetRobotPartLogsRequest', + 'GetRobotPartLogsResponse', + 'GetRobotPartRequest', + 'GetRobotPartResponse', + 'GetRobotPartsRequest', + 'GetRobotPartsResponse', + 'GetRobotRequest', + 'GetRobotResponse', + 'GetRoverRentalRobotsRequest', + 'GetRoverRentalRobotsResponse', + 'GetUserIDByEmailRequest', + 'GetUserIDByEmailResponse', + 'ListAuthorizationsRequest', + 'ListAuthorizationsResponse', + 'ListFragmentsRequest', + 'ListFragmentsResponse', + 'ListKeysRequest', + 'ListKeysResponse', + 'ListLocationsRequest', + 'ListLocationsResponse', + 'ListMachineFragmentsRequest', + 'ListMachineFragmentsResponse', + 'ListModulesRequest', + 'ListModulesResponse', + 'ListOrganizationMembersRequest', + 'ListOrganizationMembersResponse', + 'ListOrganizationsByUserRequest', + 'ListOrganizationsByUserResponse', + 'ListOrganizationsRequest', + 'ListOrganizationsResponse', + 'ListRegistryItemsRequest', + 'ListRegistryItemsResponse', + 'ListRobotsRequest', + 'ListRobotsResponse', + 'Location', + 'LocationAuth', + 'LocationAuthRequest', + 'LocationAuthResponse', + 'LocationOrganization', + 'MLModelMetadata', + 'MLTrainingMetadata', + 'MLTrainingVersion', + 'MarkPartAsMainRequest', + 'MarkPartAsMainResponse', + 'MarkPartForRestartRequest', + 'MarkPartForRestartResponse', + 'Model', + 'Module', + 'ModuleFileInfo', + 'ModuleMetadata', + 'ModuleVersion', + 'NewRobotPartRequest', + 'NewRobotPartResponse', + 'NewRobotRequest', + 'NewRobotResponse', + 'OrgDetails', + 'Organization', + 'OrganizationIdentity', + 'OrganizationInvite', + 'OrganizationMember', + 'RegistryItem', + 'RegistryItemStatus', + 'RemoveRoleRequest', + 'RemoveRoleResponse', + 'RenameKeyRequest', + 'RenameKeyResponse', + 'ResendOrganizationInviteRequest', + 'ResendOrganizationInviteResponse', + 'Robot', + 'RobotPart', + 'RobotPartHistoryEntry', + 'RotateKeyRequest', + 'RotateKeyResponse', + 'RoverRentalRobot', + 'ShareLocationRequest', + 'ShareLocationResponse', + 'SharedSecret', + 'StorageConfig', + 'TailRobotPartLogsRequest', + 'TailRobotPartLogsResponse', + 'TransferRegistryItemRequest', + 'TransferRegistryItemResponse', + 'UnshareLocationRequest', + 'UnshareLocationResponse', + 'UpdateFragmentRequest', + 'UpdateFragmentResponse', + 'UpdateLocationRequest', + 'UpdateLocationResponse', + 'UpdateModuleRequest', + 'UpdateModuleResponse', + 'UpdateOrganizationInviteAuthorizationsRequest', + 'UpdateOrganizationInviteAuthorizationsResponse', + 'UpdateOrganizationRequest', + 'UpdateOrganizationResponse', + 'UpdateRegistryItemRequest', + 'UpdateRegistryItemResponse', + 'UpdateRobotPartRequest', + 'UpdateRobotPartResponse', + 'UpdateRobotRequest', + 'UpdateRobotResponse', + 'UploadModuleFileRequest', + 'UploadModuleFileResponse', + 'Uploads', + 'VersionHistory', + 'Visibility', ] diff --git a/src/viam/proto/app/agent/__init__.py b/src/viam/proto/app/agent/__init__.py index 78d1e9096..79aacd298 100644 --- a/src/viam/proto/app/agent/__init__.py +++ b/src/viam/proto/app/agent/__init__.py @@ -1,25 +1,29 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.app.agent.v1.agent_grpc import AgentDeviceServiceBase, AgentDeviceServiceStub, UnimplementedAgentDeviceServiceBase +''' +from ....gen.app.agent.v1.agent_grpc import ( + AgentDeviceServiceBase, + AgentDeviceServiceStub, + UnimplementedAgentDeviceServiceBase +) from ....gen.app.agent.v1.agent_pb2 import ( DeviceAgentConfigRequest, DeviceAgentConfigResponse, DeviceSubsystemConfig, HostInfo, PackageFormat, - SubsystemUpdateInfo, + SubsystemUpdateInfo ) __all__ = [ - "AgentDeviceServiceBase", - "AgentDeviceServiceStub", - "UnimplementedAgentDeviceServiceBase", - "DeviceAgentConfigRequest", - "DeviceAgentConfigResponse", - "DeviceSubsystemConfig", - "HostInfo", - "PackageFormat", - "SubsystemUpdateInfo", + 'AgentDeviceServiceBase', + 'AgentDeviceServiceStub', + 'UnimplementedAgentDeviceServiceBase', + 'DeviceAgentConfigRequest', + 'DeviceAgentConfigResponse', + 'DeviceSubsystemConfig', + 'HostInfo', + 'PackageFormat', + 'SubsystemUpdateInfo', ] diff --git a/src/viam/proto/app/billing.py b/src/viam/proto/app/billing.py index c0cd824d2..4235abbc7 100644 --- a/src/viam/proto/app/billing.py +++ b/src/viam/proto/app/billing.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ...gen.app.v1.billing_grpc import BillingServiceBase, BillingServiceStub, UnimplementedBillingServiceBase +''' +from ...gen.app.v1.billing_grpc import ( + BillingServiceBase, + BillingServiceStub, + UnimplementedBillingServiceBase +) from ...gen.app.v1.billing_pb2 import ( BillableResourceEvent, GetCurrentMonthUsageRequest, @@ -18,26 +22,26 @@ PaymentMethodCard, PaymentMethodType, SendPaymentRequiredEmailRequest, - SendPaymentRequiredEmailResponse, + SendPaymentRequiredEmailResponse ) __all__ = [ - "BillingServiceBase", - "BillingServiceStub", - "UnimplementedBillingServiceBase", - "BillableResourceEvent", - "GetCurrentMonthUsageRequest", - "GetCurrentMonthUsageResponse", - "GetInvoicePdfRequest", - "GetInvoicePdfResponse", - "GetInvoicesSummaryRequest", - "GetInvoicesSummaryResponse", - "GetOrgBillingInformationRequest", - "GetOrgBillingInformationResponse", - "Invoice", - "InvoiceSummary", - "PaymentMethodCard", - "PaymentMethodType", - "SendPaymentRequiredEmailRequest", - "SendPaymentRequiredEmailResponse", + 'BillingServiceBase', + 'BillingServiceStub', + 'UnimplementedBillingServiceBase', + 'BillableResourceEvent', + 'GetCurrentMonthUsageRequest', + 'GetCurrentMonthUsageResponse', + 'GetInvoicePdfRequest', + 'GetInvoicePdfResponse', + 'GetInvoicesSummaryRequest', + 'GetInvoicesSummaryResponse', + 'GetOrgBillingInformationRequest', + 'GetOrgBillingInformationResponse', + 'Invoice', + 'InvoiceSummary', + 'PaymentMethodCard', + 'PaymentMethodType', + 'SendPaymentRequiredEmailRequest', + 'SendPaymentRequiredEmailResponse', ] diff --git a/src/viam/proto/app/cloudslam/__init__.py b/src/viam/proto/app/cloudslam/__init__.py index c247ce70a..2fad1b5ce 100644 --- a/src/viam/proto/app/cloudslam/__init__.py +++ b/src/viam/proto/app/cloudslam/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.app.cloudslam.v1.cloud_slam_grpc import CloudSLAMServiceBase, CloudSLAMServiceStub, UnimplementedCloudSLAMServiceBase +''' +from ....gen.app.cloudslam.v1.cloud_slam_grpc import ( + CloudSLAMServiceBase, + CloudSLAMServiceStub, + UnimplementedCloudSLAMServiceBase +) from ....gen.app.cloudslam.v1.cloud_slam_pb2 import ( CaptureInterval, EndStatus, @@ -20,28 +24,28 @@ StartMappingSessionRequest, StartMappingSessionResponse, StopMappingSessionRequest, - StopMappingSessionResponse, + StopMappingSessionResponse ) __all__ = [ - "CloudSLAMServiceBase", - "CloudSLAMServiceStub", - "UnimplementedCloudSLAMServiceBase", - "CaptureInterval", - "EndStatus", - "GetActiveMappingSessionsForRobotRequest", - "GetActiveMappingSessionsForRobotResponse", - "GetMappingSessionMetadataByIDRequest", - "GetMappingSessionMetadataByIDResponse", - "GetMappingSessionPointCloudRequest", - "GetMappingSessionPointCloudResponse", - "ListMappingSessionsRequest", - "ListMappingSessionsResponse", - "MappingMetadata", - "Module", - "SensorInfo", - "StartMappingSessionRequest", - "StartMappingSessionResponse", - "StopMappingSessionRequest", - "StopMappingSessionResponse", + 'CloudSLAMServiceBase', + 'CloudSLAMServiceStub', + 'UnimplementedCloudSLAMServiceBase', + 'CaptureInterval', + 'EndStatus', + 'GetActiveMappingSessionsForRobotRequest', + 'GetActiveMappingSessionsForRobotResponse', + 'GetMappingSessionMetadataByIDRequest', + 'GetMappingSessionMetadataByIDResponse', + 'GetMappingSessionPointCloudRequest', + 'GetMappingSessionPointCloudResponse', + 'ListMappingSessionsRequest', + 'ListMappingSessionsResponse', + 'MappingMetadata', + 'Module', + 'SensorInfo', + 'StartMappingSessionRequest', + 'StartMappingSessionResponse', + 'StopMappingSessionRequest', + 'StopMappingSessionResponse', ] diff --git a/src/viam/proto/app/data/__init__.py b/src/viam/proto/app/data/__init__.py index 108c04185..27dc2cc42 100644 --- a/src/viam/proto/app/data/__init__.py +++ b/src/viam/proto/app/data/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.app.data.v1.data_grpc import DataServiceBase, DataServiceStub, UnimplementedDataServiceBase +''' +from ....gen.app.data.v1.data_grpc import ( + DataServiceBase, + DataServiceStub, + UnimplementedDataServiceBase +) from ....gen.app.data.v1.data_pb2 import ( AddBinaryDataToDatasetByIDsRequest, AddBinaryDataToDatasetByIDsResponse, @@ -58,66 +62,66 @@ TagsFilter, TagsFilterType, UpdateBoundingBoxRequest, - UpdateBoundingBoxResponse, + UpdateBoundingBoxResponse ) __all__ = [ - "DataServiceBase", - "DataServiceStub", - "UnimplementedDataServiceBase", - "AddBinaryDataToDatasetByIDsRequest", - "AddBinaryDataToDatasetByIDsResponse", - "AddBoundingBoxToImageByIDRequest", - "AddBoundingBoxToImageByIDResponse", - "AddTagsToBinaryDataByFilterRequest", - "AddTagsToBinaryDataByFilterResponse", - "AddTagsToBinaryDataByIDsRequest", - "AddTagsToBinaryDataByIDsResponse", - "Annotations", - "BinaryData", - "BinaryDataByFilterRequest", - "BinaryDataByFilterResponse", - "BinaryDataByIDsRequest", - "BinaryDataByIDsResponse", - "BinaryID", - "BinaryMetadata", - "BoundingBox", - "BoundingBoxLabelsByFilterRequest", - "BoundingBoxLabelsByFilterResponse", - "CaptureInterval", - "CaptureMetadata", - "ConfigureDatabaseUserRequest", - "ConfigureDatabaseUserResponse", - "DataRequest", - "DeleteBinaryDataByFilterRequest", - "DeleteBinaryDataByFilterResponse", - "DeleteBinaryDataByIDsRequest", - "DeleteBinaryDataByIDsResponse", - "DeleteTabularDataRequest", - "DeleteTabularDataResponse", - "Filter", - "GetDatabaseConnectionRequest", - "GetDatabaseConnectionResponse", - "Order", - "RemoveBinaryDataFromDatasetByIDsRequest", - "RemoveBinaryDataFromDatasetByIDsResponse", - "RemoveBoundingBoxFromImageByIDRequest", - "RemoveBoundingBoxFromImageByIDResponse", - "RemoveTagsFromBinaryDataByFilterRequest", - "RemoveTagsFromBinaryDataByFilterResponse", - "RemoveTagsFromBinaryDataByIDsRequest", - "RemoveTagsFromBinaryDataByIDsResponse", - "TabularData", - "TabularDataByFilterRequest", - "TabularDataByFilterResponse", - "TabularDataByMQLRequest", - "TabularDataByMQLResponse", - "TabularDataBySQLRequest", - "TabularDataBySQLResponse", - "TagsByFilterRequest", - "TagsByFilterResponse", - "TagsFilter", - "TagsFilterType", - "UpdateBoundingBoxRequest", - "UpdateBoundingBoxResponse", + 'DataServiceBase', + 'DataServiceStub', + 'UnimplementedDataServiceBase', + 'AddBinaryDataToDatasetByIDsRequest', + 'AddBinaryDataToDatasetByIDsResponse', + 'AddBoundingBoxToImageByIDRequest', + 'AddBoundingBoxToImageByIDResponse', + 'AddTagsToBinaryDataByFilterRequest', + 'AddTagsToBinaryDataByFilterResponse', + 'AddTagsToBinaryDataByIDsRequest', + 'AddTagsToBinaryDataByIDsResponse', + 'Annotations', + 'BinaryData', + 'BinaryDataByFilterRequest', + 'BinaryDataByFilterResponse', + 'BinaryDataByIDsRequest', + 'BinaryDataByIDsResponse', + 'BinaryID', + 'BinaryMetadata', + 'BoundingBox', + 'BoundingBoxLabelsByFilterRequest', + 'BoundingBoxLabelsByFilterResponse', + 'CaptureInterval', + 'CaptureMetadata', + 'ConfigureDatabaseUserRequest', + 'ConfigureDatabaseUserResponse', + 'DataRequest', + 'DeleteBinaryDataByFilterRequest', + 'DeleteBinaryDataByFilterResponse', + 'DeleteBinaryDataByIDsRequest', + 'DeleteBinaryDataByIDsResponse', + 'DeleteTabularDataRequest', + 'DeleteTabularDataResponse', + 'Filter', + 'GetDatabaseConnectionRequest', + 'GetDatabaseConnectionResponse', + 'Order', + 'RemoveBinaryDataFromDatasetByIDsRequest', + 'RemoveBinaryDataFromDatasetByIDsResponse', + 'RemoveBoundingBoxFromImageByIDRequest', + 'RemoveBoundingBoxFromImageByIDResponse', + 'RemoveTagsFromBinaryDataByFilterRequest', + 'RemoveTagsFromBinaryDataByFilterResponse', + 'RemoveTagsFromBinaryDataByIDsRequest', + 'RemoveTagsFromBinaryDataByIDsResponse', + 'TabularData', + 'TabularDataByFilterRequest', + 'TabularDataByFilterResponse', + 'TabularDataByMQLRequest', + 'TabularDataByMQLResponse', + 'TabularDataBySQLRequest', + 'TabularDataBySQLResponse', + 'TagsByFilterRequest', + 'TagsByFilterResponse', + 'TagsFilter', + 'TagsFilterType', + 'UpdateBoundingBoxRequest', + 'UpdateBoundingBoxResponse', ] diff --git a/src/viam/proto/app/dataset/__init__.py b/src/viam/proto/app/dataset/__init__.py index f4e1e6d78..2f0801ad2 100644 --- a/src/viam/proto/app/dataset/__init__.py +++ b/src/viam/proto/app/dataset/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.app.dataset.v1.dataset_grpc import DatasetServiceBase, DatasetServiceStub, UnimplementedDatasetServiceBase +''' +from ....gen.app.dataset.v1.dataset_grpc import ( + DatasetServiceBase, + DatasetServiceStub, + UnimplementedDatasetServiceBase +) from ....gen.app.dataset.v1.dataset_pb2 import ( CreateDatasetRequest, CreateDatasetResponse, @@ -14,22 +18,22 @@ ListDatasetsByOrganizationIDRequest, ListDatasetsByOrganizationIDResponse, RenameDatasetRequest, - RenameDatasetResponse, + RenameDatasetResponse ) __all__ = [ - "DatasetServiceBase", - "DatasetServiceStub", - "UnimplementedDatasetServiceBase", - "CreateDatasetRequest", - "CreateDatasetResponse", - "Dataset", - "DeleteDatasetRequest", - "DeleteDatasetResponse", - "ListDatasetsByIDsRequest", - "ListDatasetsByIDsResponse", - "ListDatasetsByOrganizationIDRequest", - "ListDatasetsByOrganizationIDResponse", - "RenameDatasetRequest", - "RenameDatasetResponse", + 'DatasetServiceBase', + 'DatasetServiceStub', + 'UnimplementedDatasetServiceBase', + 'CreateDatasetRequest', + 'CreateDatasetResponse', + 'Dataset', + 'DeleteDatasetRequest', + 'DeleteDatasetResponse', + 'ListDatasetsByIDsRequest', + 'ListDatasetsByIDsResponse', + 'ListDatasetsByOrganizationIDRequest', + 'ListDatasetsByOrganizationIDResponse', + 'RenameDatasetRequest', + 'RenameDatasetResponse', ] diff --git a/src/viam/proto/app/datasync/__init__.py b/src/viam/proto/app/datasync/__init__.py index d13c80c98..c8247b842 100644 --- a/src/viam/proto/app/datasync/__init__.py +++ b/src/viam/proto/app/datasync/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.app.datasync.v1.data_sync_grpc import DataSyncServiceBase, DataSyncServiceStub, UnimplementedDataSyncServiceBase +''' +from ....gen.app.datasync.v1.data_sync_grpc import ( + DataSyncServiceBase, + DataSyncServiceStub, + UnimplementedDataSyncServiceBase +) from ....gen.app.datasync.v1.data_sync_pb2 import ( CaptureInterval, DataCaptureMetadata, @@ -17,25 +21,25 @@ SensorMetadata, StreamingDataCaptureUploadRequest, StreamingDataCaptureUploadResponse, - UploadMetadata, + UploadMetadata ) __all__ = [ - "DataSyncServiceBase", - "DataSyncServiceStub", - "UnimplementedDataSyncServiceBase", - "CaptureInterval", - "DataCaptureMetadata", - "DataCaptureUploadMetadata", - "DataCaptureUploadRequest", - "DataCaptureUploadResponse", - "DataType", - "FileData", - "FileUploadRequest", - "FileUploadResponse", - "SensorData", - "SensorMetadata", - "StreamingDataCaptureUploadRequest", - "StreamingDataCaptureUploadResponse", - "UploadMetadata", + 'DataSyncServiceBase', + 'DataSyncServiceStub', + 'UnimplementedDataSyncServiceBase', + 'CaptureInterval', + 'DataCaptureMetadata', + 'DataCaptureUploadMetadata', + 'DataCaptureUploadRequest', + 'DataCaptureUploadResponse', + 'DataType', + 'FileData', + 'FileUploadRequest', + 'FileUploadResponse', + 'SensorData', + 'SensorMetadata', + 'StreamingDataCaptureUploadRequest', + 'StreamingDataCaptureUploadResponse', + 'UploadMetadata', ] diff --git a/src/viam/proto/app/end_user.py b/src/viam/proto/app/end_user.py index 5b9c62927..4eaa744ca 100644 --- a/src/viam/proto/app/end_user.py +++ b/src/viam/proto/app/end_user.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ...gen.app.v1.end_user_grpc import EndUserServiceBase, EndUserServiceStub, UnimplementedEndUserServiceBase +''' +from ...gen.app.v1.end_user_grpc import ( + EndUserServiceBase, + EndUserServiceStub, + UnimplementedEndUserServiceBase +) from ...gen.app.v1.end_user_pb2 import ( AcceptLegalRequest, AcceptLegalResponse, @@ -13,21 +17,21 @@ RegisterAuthApplicationRequest, RegisterAuthApplicationResponse, UpdateAuthApplicationRequest, - UpdateAuthApplicationResponse, + UpdateAuthApplicationResponse ) __all__ = [ - "EndUserServiceBase", - "EndUserServiceStub", - "UnimplementedEndUserServiceBase", - "AcceptLegalRequest", - "AcceptLegalResponse", - "GetAuthApplicationRequest", - "GetAuthApplicationResponse", - "IsLegalAcceptedRequest", - "IsLegalAcceptedResponse", - "RegisterAuthApplicationRequest", - "RegisterAuthApplicationResponse", - "UpdateAuthApplicationRequest", - "UpdateAuthApplicationResponse", + 'EndUserServiceBase', + 'EndUserServiceStub', + 'UnimplementedEndUserServiceBase', + 'AcceptLegalRequest', + 'AcceptLegalResponse', + 'GetAuthApplicationRequest', + 'GetAuthApplicationResponse', + 'IsLegalAcceptedRequest', + 'IsLegalAcceptedResponse', + 'RegisterAuthApplicationRequest', + 'RegisterAuthApplicationResponse', + 'UpdateAuthApplicationRequest', + 'UpdateAuthApplicationResponse', ] diff --git a/src/viam/proto/app/mltraining/__init__.py b/src/viam/proto/app/mltraining/__init__.py index 9807ad0ab..ae40efe86 100644 --- a/src/viam/proto/app/mltraining/__init__.py +++ b/src/viam/proto/app/mltraining/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.app.mltraining.v1.ml_training_grpc import MLTrainingServiceBase, MLTrainingServiceStub, UnimplementedMLTrainingServiceBase +''' +from ....gen.app.mltraining.v1.ml_training_grpc import ( + MLTrainingServiceBase, + MLTrainingServiceStub, + UnimplementedMLTrainingServiceBase +) from ....gen.app.mltraining.v1.ml_training_pb2 import ( CancelTrainingJobRequest, CancelTrainingJobResponse, @@ -22,30 +26,30 @@ SubmitTrainingJobResponse, TrainingJobLogEntry, TrainingJobMetadata, - TrainingStatus, + TrainingStatus ) __all__ = [ - "MLTrainingServiceBase", - "MLTrainingServiceStub", - "UnimplementedMLTrainingServiceBase", - "CancelTrainingJobRequest", - "CancelTrainingJobResponse", - "DeleteCompletedTrainingJobRequest", - "DeleteCompletedTrainingJobResponse", - "GetTrainingJobLogsRequest", - "GetTrainingJobLogsResponse", - "GetTrainingJobRequest", - "GetTrainingJobResponse", - "ListTrainingJobsRequest", - "ListTrainingJobsResponse", - "ModelFramework", - "ModelType", - "SubmitCustomTrainingJobRequest", - "SubmitCustomTrainingJobResponse", - "SubmitTrainingJobRequest", - "SubmitTrainingJobResponse", - "TrainingJobLogEntry", - "TrainingJobMetadata", - "TrainingStatus", + 'MLTrainingServiceBase', + 'MLTrainingServiceStub', + 'UnimplementedMLTrainingServiceBase', + 'CancelTrainingJobRequest', + 'CancelTrainingJobResponse', + 'DeleteCompletedTrainingJobRequest', + 'DeleteCompletedTrainingJobResponse', + 'GetTrainingJobLogsRequest', + 'GetTrainingJobLogsResponse', + 'GetTrainingJobRequest', + 'GetTrainingJobResponse', + 'ListTrainingJobsRequest', + 'ListTrainingJobsResponse', + 'ModelFramework', + 'ModelType', + 'SubmitCustomTrainingJobRequest', + 'SubmitCustomTrainingJobResponse', + 'SubmitTrainingJobRequest', + 'SubmitTrainingJobResponse', + 'TrainingJobLogEntry', + 'TrainingJobMetadata', + 'TrainingStatus', ] diff --git a/src/viam/proto/app/packages/__init__.py b/src/viam/proto/app/packages/__init__.py index 234189570..263674cc7 100644 --- a/src/viam/proto/app/packages/__init__.py +++ b/src/viam/proto/app/packages/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.app.packages.v1.packages_grpc import PackageServiceBase, PackageServiceStub, UnimplementedPackageServiceBase +''' +from ....gen.app.packages.v1.packages_grpc import ( + PackageServiceBase, + PackageServiceStub, + UnimplementedPackageServiceBase +) from ....gen.app.packages.v1.packages_pb2 import ( CreatePackageRequest, CreatePackageResponse, @@ -15,23 +19,23 @@ ListPackagesResponse, Package, PackageInfo, - PackageType, + PackageType ) __all__ = [ - "PackageServiceBase", - "PackageServiceStub", - "UnimplementedPackageServiceBase", - "CreatePackageRequest", - "CreatePackageResponse", - "DeletePackageRequest", - "DeletePackageResponse", - "FileInfo", - "GetPackageRequest", - "GetPackageResponse", - "ListPackagesRequest", - "ListPackagesResponse", - "Package", - "PackageInfo", - "PackageType", + 'PackageServiceBase', + 'PackageServiceStub', + 'UnimplementedPackageServiceBase', + 'CreatePackageRequest', + 'CreatePackageResponse', + 'DeletePackageRequest', + 'DeletePackageResponse', + 'FileInfo', + 'GetPackageRequest', + 'GetPackageResponse', + 'ListPackagesRequest', + 'ListPackagesResponse', + 'Package', + 'PackageInfo', + 'PackageType', ] diff --git a/src/viam/proto/app/robot.py b/src/viam/proto/app/robot.py index 551f7bd2f..92392a126 100644 --- a/src/viam/proto/app/robot.py +++ b/src/viam/proto/app/robot.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ...gen.app.v1.robot_grpc import RobotServiceBase, RobotServiceStub, UnimplementedRobotServiceBase +''' +from ...gen.app.v1.robot_grpc import ( + RobotServiceBase, + RobotServiceStub, + UnimplementedRobotServiceBase +) from ...gen.app.v1.robot_pb2 import ( AgentInfo, AppValidationStatus, @@ -37,45 +41,45 @@ RobotConfig, ServiceConfig, SessionsConfig, - Translation, + Translation ) __all__ = [ - "RobotServiceBase", - "RobotServiceStub", - "UnimplementedRobotServiceBase", - "AgentInfo", - "AppValidationStatus", - "AuthConfig", - "AuthHandlerConfig", - "CertificateRequest", - "CertificateResponse", - "CloudConfig", - "ComponentConfig", - "ConfigRequest", - "ConfigResponse", - "CredentialsType", - "ExternalAuthConfig", - "Frame", - "JWKSFile", - "LocationSecret", - "LogConfiguration", - "LogPatternConfig", - "LogRequest", - "LogResponse", - "MaintenanceConfig", - "ModuleConfig", - "NeedsRestartRequest", - "NeedsRestartResponse", - "NetworkConfig", - "Orientation", - "PackageConfig", - "ProcessConfig", - "RemoteAuth", - "RemoteConfig", - "ResourceLevelServiceConfig", - "RobotConfig", - "ServiceConfig", - "SessionsConfig", - "Translation", + 'RobotServiceBase', + 'RobotServiceStub', + 'UnimplementedRobotServiceBase', + 'AgentInfo', + 'AppValidationStatus', + 'AuthConfig', + 'AuthHandlerConfig', + 'CertificateRequest', + 'CertificateResponse', + 'CloudConfig', + 'ComponentConfig', + 'ConfigRequest', + 'ConfigResponse', + 'CredentialsType', + 'ExternalAuthConfig', + 'Frame', + 'JWKSFile', + 'LocationSecret', + 'LogConfiguration', + 'LogPatternConfig', + 'LogRequest', + 'LogResponse', + 'MaintenanceConfig', + 'ModuleConfig', + 'NeedsRestartRequest', + 'NeedsRestartResponse', + 'NetworkConfig', + 'Orientation', + 'PackageConfig', + 'ProcessConfig', + 'RemoteAuth', + 'RemoteConfig', + 'ResourceLevelServiceConfig', + 'RobotConfig', + 'ServiceConfig', + 'SessionsConfig', + 'Translation', ] diff --git a/src/viam/proto/common/__init__.py b/src/viam/proto/common/__init__.py index 612a28906..5be230602 100644 --- a/src/viam/proto/common/__init__.py +++ b/src/viam/proto/common/__init__.py @@ -1,16 +1,16 @@ -""" +''' @generated by Viam. Do not edit manually! -""" +''' from ...gen.common.v1.common_pb2 import ( ActuatorStatus, Capsule, DoCommandRequest, DoCommandResponse, GeoGeometry, + GeoPoint, GeometriesInFrame, Geometry, - GeoPoint, GetGeometriesRequest, GetGeometriesResponse, GetKinematicsRequest, @@ -29,35 +29,35 @@ Sphere, Transform, Vector3, - WorldState, + WorldState ) __all__ = [ - "ActuatorStatus", - "Capsule", - "DoCommandRequest", - "DoCommandResponse", - "GeoGeometry", - "GeoPoint", - "GeometriesInFrame", - "Geometry", - "GetGeometriesRequest", - "GetGeometriesResponse", - "GetKinematicsRequest", - "GetKinematicsResponse", - "GetReadingsRequest", - "GetReadingsResponse", - "KinematicsFileFormat", - "LogEntry", - "Orientation", - "PointCloudObject", - "Pose", - "PoseInFrame", - "RectangularPrism", - "ResourceName", - "ResponseMetadata", - "Sphere", - "Transform", - "Vector3", - "WorldState", + 'ActuatorStatus', + 'Capsule', + 'DoCommandRequest', + 'DoCommandResponse', + 'GeoGeometry', + 'GeoPoint', + 'GeometriesInFrame', + 'Geometry', + 'GetGeometriesRequest', + 'GetGeometriesResponse', + 'GetKinematicsRequest', + 'GetKinematicsResponse', + 'GetReadingsRequest', + 'GetReadingsResponse', + 'KinematicsFileFormat', + 'LogEntry', + 'Orientation', + 'PointCloudObject', + 'Pose', + 'PoseInFrame', + 'RectangularPrism', + 'ResourceName', + 'ResponseMetadata', + 'Sphere', + 'Transform', + 'Vector3', + 'WorldState', ] diff --git a/src/viam/proto/component/arm/__init__.py b/src/viam/proto/component/arm/__init__.py index 33ccce990..cf12792af 100644 --- a/src/viam/proto/component/arm/__init__.py +++ b/src/viam/proto/component/arm/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.component.arm.v1.arm_grpc import ArmServiceBase, ArmServiceStub, UnimplementedArmServiceBase +''' +from ....gen.component.arm.v1.arm_grpc import ( + ArmServiceBase, + ArmServiceStub, + UnimplementedArmServiceBase +) from ....gen.component.arm.v1.arm_pb2 import ( GetEndPositionRequest, GetEndPositionResponse, @@ -17,25 +21,25 @@ MoveToPositionResponse, Status, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "ArmServiceBase", - "ArmServiceStub", - "UnimplementedArmServiceBase", - "GetEndPositionRequest", - "GetEndPositionResponse", - "GetJointPositionsRequest", - "GetJointPositionsResponse", - "IsMovingRequest", - "IsMovingResponse", - "JointPositions", - "MoveToJointPositionsRequest", - "MoveToJointPositionsResponse", - "MoveToPositionRequest", - "MoveToPositionResponse", - "Status", - "StopRequest", - "StopResponse", + 'ArmServiceBase', + 'ArmServiceStub', + 'UnimplementedArmServiceBase', + 'GetEndPositionRequest', + 'GetEndPositionResponse', + 'GetJointPositionsRequest', + 'GetJointPositionsResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'JointPositions', + 'MoveToJointPositionsRequest', + 'MoveToJointPositionsResponse', + 'MoveToPositionRequest', + 'MoveToPositionResponse', + 'Status', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/audioinput/__init__.py b/src/viam/proto/component/audioinput/__init__.py index e32f13558..6ea451140 100644 --- a/src/viam/proto/component/audioinput/__init__.py +++ b/src/viam/proto/component/audioinput/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.component.audioinput.v1.audioinput_grpc import AudioInputServiceBase, AudioInputServiceStub, UnimplementedAudioInputServiceBase +''' +from ....gen.component.audioinput.v1.audioinput_grpc import ( + AudioInputServiceBase, + AudioInputServiceStub, + UnimplementedAudioInputServiceBase +) from ....gen.component.audioinput.v1.audioinput_pb2 import ( AudioChunk, AudioChunkInfo, @@ -11,19 +15,19 @@ PropertiesRequest, PropertiesResponse, RecordRequest, - SampleFormat, + SampleFormat ) __all__ = [ - "AudioInputServiceBase", - "AudioInputServiceStub", - "UnimplementedAudioInputServiceBase", - "AudioChunk", - "AudioChunkInfo", - "ChunksRequest", - "ChunksResponse", - "PropertiesRequest", - "PropertiesResponse", - "RecordRequest", - "SampleFormat", + 'AudioInputServiceBase', + 'AudioInputServiceStub', + 'UnimplementedAudioInputServiceBase', + 'AudioChunk', + 'AudioChunkInfo', + 'ChunksRequest', + 'ChunksResponse', + 'PropertiesRequest', + 'PropertiesResponse', + 'RecordRequest', + 'SampleFormat', ] diff --git a/src/viam/proto/component/base/__init__.py b/src/viam/proto/component/base/__init__.py index b2c8f2e97..d92a15a21 100644 --- a/src/viam/proto/component/base/__init__.py +++ b/src/viam/proto/component/base/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.component.base.v1.base_grpc import BaseServiceBase, BaseServiceStub, UnimplementedBaseServiceBase +''' +from ....gen.component.base.v1.base_grpc import ( + BaseServiceBase, + BaseServiceStub, + UnimplementedBaseServiceBase +) from ....gen.component.base.v1.base_pb2 import ( GetPropertiesRequest, GetPropertiesResponse, @@ -17,25 +21,25 @@ SpinRequest, SpinResponse, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "BaseServiceBase", - "BaseServiceStub", - "UnimplementedBaseServiceBase", - "GetPropertiesRequest", - "GetPropertiesResponse", - "IsMovingRequest", - "IsMovingResponse", - "MoveStraightRequest", - "MoveStraightResponse", - "SetPowerRequest", - "SetPowerResponse", - "SetVelocityRequest", - "SetVelocityResponse", - "SpinRequest", - "SpinResponse", - "StopRequest", - "StopResponse", + 'BaseServiceBase', + 'BaseServiceStub', + 'UnimplementedBaseServiceBase', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'MoveStraightRequest', + 'MoveStraightResponse', + 'SetPowerRequest', + 'SetPowerResponse', + 'SetVelocityRequest', + 'SetVelocityResponse', + 'SpinRequest', + 'SpinResponse', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/board/__init__.py b/src/viam/proto/component/board/__init__.py index 9fb29dc1f..21dfbb18e 100644 --- a/src/viam/proto/component/board/__init__.py +++ b/src/viam/proto/component/board/__init__.py @@ -1,61 +1,65 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.component.board.v1.board_grpc import BoardServiceBase, BoardServiceStub, UnimplementedBoardServiceBase +''' +from ....gen.component.board.v1.board_grpc import ( + BoardServiceBase, + BoardServiceStub, + UnimplementedBoardServiceBase +) from ....gen.component.board.v1.board_pb2 import ( GetDigitalInterruptValueRequest, GetDigitalInterruptValueResponse, GetGPIORequest, GetGPIOResponse, - PowerMode, PWMFrequencyRequest, PWMFrequencyResponse, PWMRequest, PWMResponse, + PowerMode, ReadAnalogReaderRequest, ReadAnalogReaderResponse, SetGPIORequest, SetGPIOResponse, - SetPowerModeRequest, - SetPowerModeResponse, SetPWMFrequencyRequest, SetPWMFrequencyResponse, SetPWMRequest, SetPWMResponse, + SetPowerModeRequest, + SetPowerModeResponse, Status, StreamTicksRequest, StreamTicksResponse, WriteAnalogRequest, - WriteAnalogResponse, + WriteAnalogResponse ) __all__ = [ - "BoardServiceBase", - "BoardServiceStub", - "UnimplementedBoardServiceBase", - "GetDigitalInterruptValueRequest", - "GetDigitalInterruptValueResponse", - "GetGPIORequest", - "GetGPIOResponse", - "PWMFrequencyRequest", - "PWMFrequencyResponse", - "PWMRequest", - "PWMResponse", - "PowerMode", - "ReadAnalogReaderRequest", - "ReadAnalogReaderResponse", - "SetGPIORequest", - "SetGPIOResponse", - "SetPWMFrequencyRequest", - "SetPWMFrequencyResponse", - "SetPWMRequest", - "SetPWMResponse", - "SetPowerModeRequest", - "SetPowerModeResponse", - "Status", - "StreamTicksRequest", - "StreamTicksResponse", - "WriteAnalogRequest", - "WriteAnalogResponse", + 'BoardServiceBase', + 'BoardServiceStub', + 'UnimplementedBoardServiceBase', + 'GetDigitalInterruptValueRequest', + 'GetDigitalInterruptValueResponse', + 'GetGPIORequest', + 'GetGPIOResponse', + 'PWMFrequencyRequest', + 'PWMFrequencyResponse', + 'PWMRequest', + 'PWMResponse', + 'PowerMode', + 'ReadAnalogReaderRequest', + 'ReadAnalogReaderResponse', + 'SetGPIORequest', + 'SetGPIOResponse', + 'SetPWMFrequencyRequest', + 'SetPWMFrequencyResponse', + 'SetPWMRequest', + 'SetPWMResponse', + 'SetPowerModeRequest', + 'SetPowerModeResponse', + 'Status', + 'StreamTicksRequest', + 'StreamTicksResponse', + 'WriteAnalogRequest', + 'WriteAnalogResponse', ] diff --git a/src/viam/proto/component/camera/__init__.py b/src/viam/proto/component/camera/__init__.py index 0d88b6c06..1b6848c41 100644 --- a/src/viam/proto/component/camera/__init__.py +++ b/src/viam/proto/component/camera/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.component.camera.v1.camera_grpc import CameraServiceBase, CameraServiceStub, UnimplementedCameraServiceBase +''' +from ....gen.component.camera.v1.camera_grpc import ( + CameraServiceBase, + CameraServiceStub, + UnimplementedCameraServiceBase +) from ....gen.component.camera.v1.camera_pb2 import ( DistortionParameters, Format, @@ -19,27 +23,27 @@ Property, RenderFrameRequest, Webcam, - Webcams, + Webcams ) __all__ = [ - "CameraServiceBase", - "CameraServiceStub", - "UnimplementedCameraServiceBase", - "DistortionParameters", - "Format", - "GetImageRequest", - "GetImageResponse", - "GetImagesRequest", - "GetImagesResponse", - "GetPointCloudRequest", - "GetPointCloudResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "Image", - "IntrinsicParameters", - "Property", - "RenderFrameRequest", - "Webcam", - "Webcams", + 'CameraServiceBase', + 'CameraServiceStub', + 'UnimplementedCameraServiceBase', + 'DistortionParameters', + 'Format', + 'GetImageRequest', + 'GetImageResponse', + 'GetImagesRequest', + 'GetImagesResponse', + 'GetPointCloudRequest', + 'GetPointCloudResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'Image', + 'IntrinsicParameters', + 'Property', + 'RenderFrameRequest', + 'Webcam', + 'Webcams', ] diff --git a/src/viam/proto/component/encoder/__init__.py b/src/viam/proto/component/encoder/__init__.py index 656bb08ff..0f2632066 100644 --- a/src/viam/proto/component/encoder/__init__.py +++ b/src/viam/proto/component/encoder/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.component.encoder.v1.encoder_grpc import EncoderServiceBase, EncoderServiceStub, UnimplementedEncoderServiceBase +''' +from ....gen.component.encoder.v1.encoder_grpc import ( + EncoderServiceBase, + EncoderServiceStub, + UnimplementedEncoderServiceBase +) from ....gen.component.encoder.v1.encoder_pb2 import ( GetPositionRequest, GetPositionResponse, @@ -10,18 +14,18 @@ GetPropertiesResponse, PositionType, ResetPositionRequest, - ResetPositionResponse, + ResetPositionResponse ) __all__ = [ - "EncoderServiceBase", - "EncoderServiceStub", - "UnimplementedEncoderServiceBase", - "GetPositionRequest", - "GetPositionResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "PositionType", - "ResetPositionRequest", - "ResetPositionResponse", + 'EncoderServiceBase', + 'EncoderServiceStub', + 'UnimplementedEncoderServiceBase', + 'GetPositionRequest', + 'GetPositionResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'PositionType', + 'ResetPositionRequest', + 'ResetPositionResponse', ] diff --git a/src/viam/proto/component/gantry/__init__.py b/src/viam/proto/component/gantry/__init__.py index b7affb57e..9ec08ed1f 100644 --- a/src/viam/proto/component/gantry/__init__.py +++ b/src/viam/proto/component/gantry/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.component.gantry.v1.gantry_grpc import GantryServiceBase, GantryServiceStub, UnimplementedGantryServiceBase +''' +from ....gen.component.gantry.v1.gantry_grpc import ( + GantryServiceBase, + GantryServiceStub, + UnimplementedGantryServiceBase +) from ....gen.component.gantry.v1.gantry_pb2 import ( GetLengthsRequest, GetLengthsResponse, @@ -16,24 +20,24 @@ MoveToPositionResponse, Status, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "GantryServiceBase", - "GantryServiceStub", - "UnimplementedGantryServiceBase", - "GetLengthsRequest", - "GetLengthsResponse", - "GetPositionRequest", - "GetPositionResponse", - "HomeRequest", - "HomeResponse", - "IsMovingRequest", - "IsMovingResponse", - "MoveToPositionRequest", - "MoveToPositionResponse", - "Status", - "StopRequest", - "StopResponse", + 'GantryServiceBase', + 'GantryServiceStub', + 'UnimplementedGantryServiceBase', + 'GetLengthsRequest', + 'GetLengthsResponse', + 'GetPositionRequest', + 'GetPositionResponse', + 'HomeRequest', + 'HomeResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'MoveToPositionRequest', + 'MoveToPositionResponse', + 'Status', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/generic/__init__.py b/src/viam/proto/component/generic/__init__.py index 570488daf..c3c169edc 100644 --- a/src/viam/proto/component/generic/__init__.py +++ b/src/viam/proto/component/generic/__init__.py @@ -1,11 +1,15 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.component.generic.v1.generic_grpc import GenericServiceBase, GenericServiceStub, UnimplementedGenericServiceBase +''' +from ....gen.component.generic.v1.generic_grpc import ( + GenericServiceBase, + GenericServiceStub, + UnimplementedGenericServiceBase +) __all__ = [ - "GenericServiceBase", - "GenericServiceStub", - "UnimplementedGenericServiceBase", + 'GenericServiceBase', + 'GenericServiceStub', + 'UnimplementedGenericServiceBase', ] diff --git a/src/viam/proto/component/gripper/__init__.py b/src/viam/proto/component/gripper/__init__.py index b60fe4586..6943fdd69 100644 --- a/src/viam/proto/component/gripper/__init__.py +++ b/src/viam/proto/component/gripper/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.component.gripper.v1.gripper_grpc import GripperServiceBase, GripperServiceStub, UnimplementedGripperServiceBase +''' +from ....gen.component.gripper.v1.gripper_grpc import ( + GripperServiceBase, + GripperServiceStub, + UnimplementedGripperServiceBase +) from ....gen.component.gripper.v1.gripper_pb2 import ( GrabRequest, GrabResponse, @@ -11,19 +15,19 @@ OpenRequest, OpenResponse, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "GripperServiceBase", - "GripperServiceStub", - "UnimplementedGripperServiceBase", - "GrabRequest", - "GrabResponse", - "IsMovingRequest", - "IsMovingResponse", - "OpenRequest", - "OpenResponse", - "StopRequest", - "StopResponse", + 'GripperServiceBase', + 'GripperServiceStub', + 'UnimplementedGripperServiceBase', + 'GrabRequest', + 'GrabResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'OpenRequest', + 'OpenResponse', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/inputcontroller/__init__.py b/src/viam/proto/component/inputcontroller/__init__.py index 16912b90d..6cc11c165 100644 --- a/src/viam/proto/component/inputcontroller/__init__.py +++ b/src/viam/proto/component/inputcontroller/__init__.py @@ -1,11 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" +''' from ....gen.component.inputcontroller.v1.input_controller_grpc import ( InputControllerServiceBase, InputControllerServiceStub, - UnimplementedInputControllerServiceBase, + UnimplementedInputControllerServiceBase ) from ....gen.component.inputcontroller.v1.input_controller_pb2 import ( Event, @@ -17,21 +17,21 @@ StreamEventsRequest, StreamEventsResponse, TriggerEventRequest, - TriggerEventResponse, + TriggerEventResponse ) __all__ = [ - "InputControllerServiceBase", - "InputControllerServiceStub", - "UnimplementedInputControllerServiceBase", - "Event", - "GetControlsRequest", - "GetControlsResponse", - "GetEventsRequest", - "GetEventsResponse", - "Status", - "StreamEventsRequest", - "StreamEventsResponse", - "TriggerEventRequest", - "TriggerEventResponse", + 'InputControllerServiceBase', + 'InputControllerServiceStub', + 'UnimplementedInputControllerServiceBase', + 'Event', + 'GetControlsRequest', + 'GetControlsResponse', + 'GetEventsRequest', + 'GetEventsResponse', + 'Status', + 'StreamEventsRequest', + 'StreamEventsResponse', + 'TriggerEventRequest', + 'TriggerEventResponse', ] diff --git a/src/viam/proto/component/motor/__init__.py b/src/viam/proto/component/motor/__init__.py index 140f5fdd0..d5dd4c1c5 100644 --- a/src/viam/proto/component/motor/__init__.py +++ b/src/viam/proto/component/motor/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.component.motor.v1.motor_grpc import MotorServiceBase, MotorServiceStub, UnimplementedMotorServiceBase +''' +from ....gen.component.motor.v1.motor_grpc import ( + MotorServiceBase, + MotorServiceStub, + UnimplementedMotorServiceBase +) from ....gen.component.motor.v1.motor_pb2 import ( GetPositionRequest, GetPositionResponse, @@ -24,32 +28,32 @@ SetRPMResponse, Status, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "MotorServiceBase", - "MotorServiceStub", - "UnimplementedMotorServiceBase", - "GetPositionRequest", - "GetPositionResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "GoForRequest", - "GoForResponse", - "GoToRequest", - "GoToResponse", - "IsMovingRequest", - "IsMovingResponse", - "IsPoweredRequest", - "IsPoweredResponse", - "ResetZeroPositionRequest", - "ResetZeroPositionResponse", - "SetPowerRequest", - "SetPowerResponse", - "SetRPMRequest", - "SetRPMResponse", - "Status", - "StopRequest", - "StopResponse", + 'MotorServiceBase', + 'MotorServiceStub', + 'UnimplementedMotorServiceBase', + 'GetPositionRequest', + 'GetPositionResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'GoForRequest', + 'GoForResponse', + 'GoToRequest', + 'GoToResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'IsPoweredRequest', + 'IsPoweredResponse', + 'ResetZeroPositionRequest', + 'ResetZeroPositionResponse', + 'SetPowerRequest', + 'SetPowerResponse', + 'SetRPMRequest', + 'SetRPMResponse', + 'Status', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/movementsensor/__init__.py b/src/viam/proto/component/movementsensor/__init__.py index c628cbb08..cef69fa10 100644 --- a/src/viam/proto/component/movementsensor/__init__.py +++ b/src/viam/proto/component/movementsensor/__init__.py @@ -1,11 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" +''' from ....gen.component.movementsensor.v1.movementsensor_grpc import ( MovementSensorServiceBase, MovementSensorServiceStub, - UnimplementedMovementSensorServiceBase, + UnimplementedMovementSensorServiceBase ) from ....gen.component.movementsensor.v1.movementsensor_pb2 import ( GetAccuracyRequest, @@ -23,27 +23,27 @@ GetPositionRequest, GetPositionResponse, GetPropertiesRequest, - GetPropertiesResponse, + GetPropertiesResponse ) __all__ = [ - "MovementSensorServiceBase", - "MovementSensorServiceStub", - "UnimplementedMovementSensorServiceBase", - "GetAccuracyRequest", - "GetAccuracyResponse", - "GetAngularVelocityRequest", - "GetAngularVelocityResponse", - "GetCompassHeadingRequest", - "GetCompassHeadingResponse", - "GetLinearAccelerationRequest", - "GetLinearAccelerationResponse", - "GetLinearVelocityRequest", - "GetLinearVelocityResponse", - "GetOrientationRequest", - "GetOrientationResponse", - "GetPositionRequest", - "GetPositionResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", + 'MovementSensorServiceBase', + 'MovementSensorServiceStub', + 'UnimplementedMovementSensorServiceBase', + 'GetAccuracyRequest', + 'GetAccuracyResponse', + 'GetAngularVelocityRequest', + 'GetAngularVelocityResponse', + 'GetCompassHeadingRequest', + 'GetCompassHeadingResponse', + 'GetLinearAccelerationRequest', + 'GetLinearAccelerationResponse', + 'GetLinearVelocityRequest', + 'GetLinearVelocityResponse', + 'GetOrientationRequest', + 'GetOrientationResponse', + 'GetPositionRequest', + 'GetPositionResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', ] diff --git a/src/viam/proto/component/posetracker/__init__.py b/src/viam/proto/component/posetracker/__init__.py index edbc01d56..2644a7d67 100644 --- a/src/viam/proto/component/posetracker/__init__.py +++ b/src/viam/proto/component/posetracker/__init__.py @@ -1,18 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" +''' from ....gen.component.posetracker.v1.pose_tracker_grpc import ( PoseTrackerServiceBase, PoseTrackerServiceStub, - UnimplementedPoseTrackerServiceBase, + UnimplementedPoseTrackerServiceBase +) +from ....gen.component.posetracker.v1.pose_tracker_pb2 import ( + GetPosesRequest, + GetPosesResponse ) -from ....gen.component.posetracker.v1.pose_tracker_pb2 import GetPosesRequest, GetPosesResponse __all__ = [ - "PoseTrackerServiceBase", - "PoseTrackerServiceStub", - "UnimplementedPoseTrackerServiceBase", - "GetPosesRequest", - "GetPosesResponse", + 'PoseTrackerServiceBase', + 'PoseTrackerServiceStub', + 'UnimplementedPoseTrackerServiceBase', + 'GetPosesRequest', + 'GetPosesResponse', ] diff --git a/src/viam/proto/component/powersensor/__init__.py b/src/viam/proto/component/powersensor/__init__.py index 35efd8e77..c170f347e 100644 --- a/src/viam/proto/component/powersensor/__init__.py +++ b/src/viam/proto/component/powersensor/__init__.py @@ -1,11 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" +''' from ....gen.component.powersensor.v1.powersensor_grpc import ( PowerSensorServiceBase, PowerSensorServiceStub, - UnimplementedPowerSensorServiceBase, + UnimplementedPowerSensorServiceBase ) from ....gen.component.powersensor.v1.powersensor_pb2 import ( GetCurrentRequest, @@ -13,17 +13,17 @@ GetPowerRequest, GetPowerResponse, GetVoltageRequest, - GetVoltageResponse, + GetVoltageResponse ) __all__ = [ - "PowerSensorServiceBase", - "PowerSensorServiceStub", - "UnimplementedPowerSensorServiceBase", - "GetCurrentRequest", - "GetCurrentResponse", - "GetPowerRequest", - "GetPowerResponse", - "GetVoltageRequest", - "GetVoltageResponse", + 'PowerSensorServiceBase', + 'PowerSensorServiceStub', + 'UnimplementedPowerSensorServiceBase', + 'GetCurrentRequest', + 'GetCurrentResponse', + 'GetPowerRequest', + 'GetPowerResponse', + 'GetVoltageRequest', + 'GetVoltageResponse', ] diff --git a/src/viam/proto/component/sensor/__init__.py b/src/viam/proto/component/sensor/__init__.py index afb0ba8ad..034b03b89 100644 --- a/src/viam/proto/component/sensor/__init__.py +++ b/src/viam/proto/component/sensor/__init__.py @@ -1,11 +1,15 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.component.sensor.v1.sensor_grpc import SensorServiceBase, SensorServiceStub, UnimplementedSensorServiceBase +''' +from ....gen.component.sensor.v1.sensor_grpc import ( + SensorServiceBase, + SensorServiceStub, + UnimplementedSensorServiceBase +) __all__ = [ - "SensorServiceBase", - "SensorServiceStub", - "UnimplementedSensorServiceBase", + 'SensorServiceBase', + 'SensorServiceStub', + 'UnimplementedSensorServiceBase', ] diff --git a/src/viam/proto/component/servo/__init__.py b/src/viam/proto/component/servo/__init__.py index 45cb350a9..5312e0089 100644 --- a/src/viam/proto/component/servo/__init__.py +++ b/src/viam/proto/component/servo/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.component.servo.v1.servo_grpc import ServoServiceBase, ServoServiceStub, UnimplementedServoServiceBase +''' +from ....gen.component.servo.v1.servo_grpc import ( + ServoServiceBase, + ServoServiceStub, + UnimplementedServoServiceBase +) from ....gen.component.servo.v1.servo_pb2 import ( GetPositionRequest, GetPositionResponse, @@ -12,20 +16,20 @@ MoveResponse, Status, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "ServoServiceBase", - "ServoServiceStub", - "UnimplementedServoServiceBase", - "GetPositionRequest", - "GetPositionResponse", - "IsMovingRequest", - "IsMovingResponse", - "MoveRequest", - "MoveResponse", - "Status", - "StopRequest", - "StopResponse", + 'ServoServiceBase', + 'ServoServiceStub', + 'UnimplementedServoServiceBase', + 'GetPositionRequest', + 'GetPositionResponse', + 'IsMovingRequest', + 'IsMovingResponse', + 'MoveRequest', + 'MoveResponse', + 'Status', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/component/testecho/__init__.py b/src/viam/proto/component/testecho/__init__.py index 97705226b..9590dbc73 100644 --- a/src/viam/proto/component/testecho/__init__.py +++ b/src/viam/proto/component/testecho/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.component.testecho.v1.testecho_grpc import TestEchoServiceBase, TestEchoServiceStub, UnimplementedTestEchoServiceBase +''' +from ....gen.component.testecho.v1.testecho_grpc import ( + TestEchoServiceBase, + TestEchoServiceStub, + UnimplementedTestEchoServiceBase +) from ....gen.component.testecho.v1.testecho_pb2 import ( EchoBiDiRequest, EchoBiDiResponse, @@ -11,19 +15,19 @@ EchoRequest, EchoResponse, StopRequest, - StopResponse, + StopResponse ) __all__ = [ - "TestEchoServiceBase", - "TestEchoServiceStub", - "UnimplementedTestEchoServiceBase", - "EchoBiDiRequest", - "EchoBiDiResponse", - "EchoMultipleRequest", - "EchoMultipleResponse", - "EchoRequest", - "EchoResponse", - "StopRequest", - "StopResponse", + 'TestEchoServiceBase', + 'TestEchoServiceStub', + 'UnimplementedTestEchoServiceBase', + 'EchoBiDiRequest', + 'EchoBiDiResponse', + 'EchoMultipleRequest', + 'EchoMultipleResponse', + 'EchoRequest', + 'EchoResponse', + 'StopRequest', + 'StopResponse', ] diff --git a/src/viam/proto/module/__init__.py b/src/viam/proto/module/__init__.py index 6d268c1d4..6a160a540 100644 --- a/src/viam/proto/module/__init__.py +++ b/src/viam/proto/module/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ...gen.module.v1.module_grpc import ModuleServiceBase, ModuleServiceStub, UnimplementedModuleServiceBase +''' +from ...gen.module.v1.module_grpc import ( + ModuleServiceBase, + ModuleServiceStub, + UnimplementedModuleServiceBase +) from ...gen.module.v1.module_pb2 import ( AddResourceRequest, AddResourceResponse, @@ -15,23 +19,23 @@ RemoveResourceRequest, RemoveResourceResponse, ValidateConfigRequest, - ValidateConfigResponse, + ValidateConfigResponse ) __all__ = [ - "ModuleServiceBase", - "ModuleServiceStub", - "UnimplementedModuleServiceBase", - "AddResourceRequest", - "AddResourceResponse", - "HandlerDefinition", - "HandlerMap", - "ReadyRequest", - "ReadyResponse", - "ReconfigureResourceRequest", - "ReconfigureResourceResponse", - "RemoveResourceRequest", - "RemoveResourceResponse", - "ValidateConfigRequest", - "ValidateConfigResponse", + 'ModuleServiceBase', + 'ModuleServiceStub', + 'UnimplementedModuleServiceBase', + 'AddResourceRequest', + 'AddResourceResponse', + 'HandlerDefinition', + 'HandlerMap', + 'ReadyRequest', + 'ReadyResponse', + 'ReconfigureResourceRequest', + 'ReconfigureResourceResponse', + 'RemoveResourceRequest', + 'RemoveResourceResponse', + 'ValidateConfigRequest', + 'ValidateConfigResponse', ] diff --git a/src/viam/proto/provisioning/__init__.py b/src/viam/proto/provisioning/__init__.py index 1caf90b50..401a985c1 100644 --- a/src/viam/proto/provisioning/__init__.py +++ b/src/viam/proto/provisioning/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ...gen.provisioning.v1.provisioning_grpc import ProvisioningServiceBase, ProvisioningServiceStub, UnimplementedProvisioningServiceBase +''' +from ...gen.provisioning.v1.provisioning_grpc import ( + ProvisioningServiceBase, + ProvisioningServiceStub, + UnimplementedProvisioningServiceBase +) from ...gen.provisioning.v1.provisioning_pb2 import ( CloudConfig, GetNetworkListRequest, @@ -14,22 +18,22 @@ SetNetworkCredentialsRequest, SetNetworkCredentialsResponse, SetSmartMachineCredentialsRequest, - SetSmartMachineCredentialsResponse, + SetSmartMachineCredentialsResponse ) __all__ = [ - "ProvisioningServiceBase", - "ProvisioningServiceStub", - "UnimplementedProvisioningServiceBase", - "CloudConfig", - "GetNetworkListRequest", - "GetNetworkListResponse", - "GetSmartMachineStatusRequest", - "GetSmartMachineStatusResponse", - "NetworkInfo", - "ProvisioningInfo", - "SetNetworkCredentialsRequest", - "SetNetworkCredentialsResponse", - "SetSmartMachineCredentialsRequest", - "SetSmartMachineCredentialsResponse", + 'ProvisioningServiceBase', + 'ProvisioningServiceStub', + 'UnimplementedProvisioningServiceBase', + 'CloudConfig', + 'GetNetworkListRequest', + 'GetNetworkListResponse', + 'GetSmartMachineStatusRequest', + 'GetSmartMachineStatusResponse', + 'NetworkInfo', + 'ProvisioningInfo', + 'SetNetworkCredentialsRequest', + 'SetNetworkCredentialsResponse', + 'SetSmartMachineCredentialsRequest', + 'SetSmartMachineCredentialsResponse', ] diff --git a/src/viam/proto/robot/__init__.py b/src/viam/proto/robot/__init__.py index 15630eef2..c8b445330 100644 --- a/src/viam/proto/robot/__init__.py +++ b/src/viam/proto/robot/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ...gen.robot.v1.robot_grpc import RobotServiceBase, RobotServiceStub, UnimplementedRobotServiceBase +''' +from ...gen.robot.v1.robot_grpc import ( + RobotServiceBase, + RobotServiceStub, + UnimplementedRobotServiceBase +) from ...gen.robot.v1.robot_pb2 import ( BlockForOperationRequest, BlockForOperationResponse, @@ -57,65 +61,65 @@ TransformPCDRequest, TransformPCDResponse, TransformPoseRequest, - TransformPoseResponse, + TransformPoseResponse ) __all__ = [ - "RobotServiceBase", - "RobotServiceStub", - "UnimplementedRobotServiceBase", - "BlockForOperationRequest", - "BlockForOperationResponse", - "CancelOperationRequest", - "CancelOperationResponse", - "ConfigStatus", - "DiscoverComponentsRequest", - "DiscoverComponentsResponse", - "Discovery", - "DiscoveryQuery", - "FrameSystemConfig", - "FrameSystemConfigRequest", - "FrameSystemConfigResponse", - "GetCloudMetadataRequest", - "GetCloudMetadataResponse", - "GetMachineStatusRequest", - "GetMachineStatusResponse", - "GetOperationsRequest", - "GetOperationsResponse", - "GetSessionsRequest", - "GetSessionsResponse", - "GetStatusRequest", - "GetStatusResponse", - "GetVersionRequest", - "GetVersionResponse", - "LogRequest", - "LogResponse", - "Operation", - "PeerConnectionInfo", - "PeerConnectionType", - "ResourceNamesRequest", - "ResourceNamesResponse", - "ResourceRPCSubtype", - "ResourceRPCSubtypesRequest", - "ResourceRPCSubtypesResponse", - "ResourceStatus", - "RestartModuleRequest", - "RestartModuleResponse", - "SendSessionHeartbeatRequest", - "SendSessionHeartbeatResponse", - "Session", - "ShutdownRequest", - "ShutdownResponse", - "StartSessionRequest", - "StartSessionResponse", - "Status", - "StopAllRequest", - "StopAllResponse", - "StopExtraParameters", - "StreamStatusRequest", - "StreamStatusResponse", - "TransformPCDRequest", - "TransformPCDResponse", - "TransformPoseRequest", - "TransformPoseResponse", + 'RobotServiceBase', + 'RobotServiceStub', + 'UnimplementedRobotServiceBase', + 'BlockForOperationRequest', + 'BlockForOperationResponse', + 'CancelOperationRequest', + 'CancelOperationResponse', + 'ConfigStatus', + 'DiscoverComponentsRequest', + 'DiscoverComponentsResponse', + 'Discovery', + 'DiscoveryQuery', + 'FrameSystemConfig', + 'FrameSystemConfigRequest', + 'FrameSystemConfigResponse', + 'GetCloudMetadataRequest', + 'GetCloudMetadataResponse', + 'GetMachineStatusRequest', + 'GetMachineStatusResponse', + 'GetOperationsRequest', + 'GetOperationsResponse', + 'GetSessionsRequest', + 'GetSessionsResponse', + 'GetStatusRequest', + 'GetStatusResponse', + 'GetVersionRequest', + 'GetVersionResponse', + 'LogRequest', + 'LogResponse', + 'Operation', + 'PeerConnectionInfo', + 'PeerConnectionType', + 'ResourceNamesRequest', + 'ResourceNamesResponse', + 'ResourceRPCSubtype', + 'ResourceRPCSubtypesRequest', + 'ResourceRPCSubtypesResponse', + 'ResourceStatus', + 'RestartModuleRequest', + 'RestartModuleResponse', + 'SendSessionHeartbeatRequest', + 'SendSessionHeartbeatResponse', + 'Session', + 'ShutdownRequest', + 'ShutdownResponse', + 'StartSessionRequest', + 'StartSessionResponse', + 'Status', + 'StopAllRequest', + 'StopAllResponse', + 'StopExtraParameters', + 'StreamStatusRequest', + 'StreamStatusResponse', + 'TransformPCDRequest', + 'TransformPCDResponse', + 'TransformPoseRequest', + 'TransformPoseResponse', ] diff --git a/src/viam/proto/rpc/auth.py b/src/viam/proto/rpc/auth.py index 69de65686..462f075a3 100644 --- a/src/viam/proto/rpc/auth.py +++ b/src/viam/proto/rpc/auth.py @@ -1,33 +1,33 @@ -""" +''' @generated by Viam. Do not edit manually! -""" +''' from ...gen.proto.rpc.v1.auth_grpc import ( AuthServiceBase, AuthServiceStub, ExternalAuthServiceBase, ExternalAuthServiceStub, UnimplementedAuthServiceBase, - UnimplementedExternalAuthServiceBase, + UnimplementedExternalAuthServiceBase ) from ...gen.proto.rpc.v1.auth_pb2 import ( AuthenticateRequest, AuthenticateResponse, AuthenticateToRequest, AuthenticateToResponse, - Credentials, + Credentials ) __all__ = [ - "AuthServiceBase", - "AuthServiceStub", - "ExternalAuthServiceBase", - "ExternalAuthServiceStub", - "UnimplementedAuthServiceBase", - "UnimplementedExternalAuthServiceBase", - "AuthenticateRequest", - "AuthenticateResponse", - "AuthenticateToRequest", - "AuthenticateToResponse", - "Credentials", + 'AuthServiceBase', + 'AuthServiceStub', + 'ExternalAuthServiceBase', + 'ExternalAuthServiceStub', + 'UnimplementedAuthServiceBase', + 'UnimplementedExternalAuthServiceBase', + 'AuthenticateRequest', + 'AuthenticateResponse', + 'AuthenticateToRequest', + 'AuthenticateToResponse', + 'Credentials', ] diff --git a/src/viam/proto/rpc/examples/echo/__init__.py b/src/viam/proto/rpc/examples/echo/__init__.py index e37aaf06e..5ec2ea10a 100644 --- a/src/viam/proto/rpc/examples/echo/__init__.py +++ b/src/viam/proto/rpc/examples/echo/__init__.py @@ -1,25 +1,29 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from .....gen.proto.rpc.examples.echo.v1.echo_grpc import EchoServiceBase, EchoServiceStub, UnimplementedEchoServiceBase +''' +from .....gen.proto.rpc.examples.echo.v1.echo_grpc import ( + EchoServiceBase, + EchoServiceStub, + UnimplementedEchoServiceBase +) from .....gen.proto.rpc.examples.echo.v1.echo_pb2 import ( EchoBiDiRequest, EchoBiDiResponse, EchoMultipleRequest, EchoMultipleResponse, EchoRequest, - EchoResponse, + EchoResponse ) __all__ = [ - "EchoServiceBase", - "EchoServiceStub", - "UnimplementedEchoServiceBase", - "EchoBiDiRequest", - "EchoBiDiResponse", - "EchoMultipleRequest", - "EchoMultipleResponse", - "EchoRequest", - "EchoResponse", + 'EchoServiceBase', + 'EchoServiceStub', + 'UnimplementedEchoServiceBase', + 'EchoBiDiRequest', + 'EchoBiDiResponse', + 'EchoMultipleRequest', + 'EchoMultipleResponse', + 'EchoRequest', + 'EchoResponse', ] diff --git a/src/viam/proto/rpc/examples/echoresource/__init__.py b/src/viam/proto/rpc/examples/echoresource/__init__.py index 78dbb26a3..e85abde49 100644 --- a/src/viam/proto/rpc/examples/echoresource/__init__.py +++ b/src/viam/proto/rpc/examples/echoresource/__init__.py @@ -1,11 +1,11 @@ -""" +''' @generated by Viam. Do not edit manually! -""" +''' from .....gen.proto.rpc.examples.echoresource.v1.echoresource_grpc import ( EchoResourceServiceBase, EchoResourceServiceStub, - UnimplementedEchoResourceServiceBase, + UnimplementedEchoResourceServiceBase ) from .....gen.proto.rpc.examples.echoresource.v1.echoresource_pb2 import ( EchoResourceBiDiRequest, @@ -13,17 +13,17 @@ EchoResourceMultipleRequest, EchoResourceMultipleResponse, EchoResourceRequest, - EchoResourceResponse, + EchoResourceResponse ) __all__ = [ - "EchoResourceServiceBase", - "EchoResourceServiceStub", - "UnimplementedEchoResourceServiceBase", - "EchoResourceBiDiRequest", - "EchoResourceBiDiResponse", - "EchoResourceMultipleRequest", - "EchoResourceMultipleResponse", - "EchoResourceRequest", - "EchoResourceResponse", + 'EchoResourceServiceBase', + 'EchoResourceServiceStub', + 'UnimplementedEchoResourceServiceBase', + 'EchoResourceBiDiRequest', + 'EchoResourceBiDiResponse', + 'EchoResourceMultipleRequest', + 'EchoResourceMultipleResponse', + 'EchoResourceRequest', + 'EchoResourceResponse', ] diff --git a/src/viam/proto/rpc/examples/fileupload/__init__.py b/src/viam/proto/rpc/examples/fileupload/__init__.py index 7160490b4..df4787d53 100644 --- a/src/viam/proto/rpc/examples/fileupload/__init__.py +++ b/src/viam/proto/rpc/examples/fileupload/__init__.py @@ -1,18 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" +''' from .....gen.proto.rpc.examples.fileupload.v1.fileupload_grpc import ( FileUploadServiceBase, FileUploadServiceStub, - UnimplementedFileUploadServiceBase, + UnimplementedFileUploadServiceBase +) +from .....gen.proto.rpc.examples.fileupload.v1.fileupload_pb2 import ( + UploadFileRequest, + UploadFileResponse ) -from .....gen.proto.rpc.examples.fileupload.v1.fileupload_pb2 import UploadFileRequest, UploadFileResponse __all__ = [ - "FileUploadServiceBase", - "FileUploadServiceStub", - "UnimplementedFileUploadServiceBase", - "UploadFileRequest", - "UploadFileResponse", + 'FileUploadServiceBase', + 'FileUploadServiceStub', + 'UnimplementedFileUploadServiceBase', + 'UploadFileRequest', + 'UploadFileResponse', ] diff --git a/src/viam/proto/rpc/webrtc/grpc.py b/src/viam/proto/rpc/webrtc/grpc.py index accc931c4..17813a7bc 100644 --- a/src/viam/proto/rpc/webrtc/grpc.py +++ b/src/viam/proto/rpc/webrtc/grpc.py @@ -1,7 +1,7 @@ -""" +''' @generated by Viam. Do not edit manually! -""" +''' from ....gen.proto.rpc.webrtc.v1.grpc_pb2 import ( Metadata, PacketMessage, @@ -13,23 +13,27 @@ ResponseMessage, ResponseTrailers, Stream, - Strings, + Strings +) +from ....gen.proto.rpc.webrtc.v1.signaling_grpc import ( + SignalingServiceBase, + SignalingServiceStub, + UnimplementedSignalingServiceBase ) -from ....gen.proto.rpc.webrtc.v1.signaling_grpc import SignalingServiceBase, SignalingServiceStub, UnimplementedSignalingServiceBase __all__ = [ - "Metadata", - "PacketMessage", - "Request", - "RequestHeaders", - "RequestMessage", - "Response", - "ResponseHeaders", - "ResponseMessage", - "ResponseTrailers", - "Stream", - "Strings", - "SignalingServiceBase", - "SignalingServiceStub", - "UnimplementedSignalingServiceBase", + 'Metadata', + 'PacketMessage', + 'Request', + 'RequestHeaders', + 'RequestMessage', + 'Response', + 'ResponseHeaders', + 'ResponseMessage', + 'ResponseTrailers', + 'Stream', + 'Strings', + 'SignalingServiceBase', + 'SignalingServiceStub', + 'UnimplementedSignalingServiceBase', ] diff --git a/src/viam/proto/rpc/webrtc/signaling.py b/src/viam/proto/rpc/webrtc/signaling.py index 8cc986ea3..a93c85915 100644 --- a/src/viam/proto/rpc/webrtc/signaling.py +++ b/src/viam/proto/rpc/webrtc/signaling.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.proto.rpc.webrtc.v1.signaling_grpc import SignalingServiceBase, SignalingServiceStub, UnimplementedSignalingServiceBase +''' +from ....gen.proto.rpc.webrtc.v1.signaling_grpc import ( + SignalingServiceBase, + SignalingServiceStub, + UnimplementedSignalingServiceBase +) from ....gen.proto.rpc.webrtc.v1.signaling_pb2 import ( AnswerRequest, AnswerRequestDoneStage, @@ -24,32 +28,32 @@ ICEServer, OptionalWebRTCConfigRequest, OptionalWebRTCConfigResponse, - WebRTCConfig, + WebRTCConfig ) __all__ = [ - "SignalingServiceBase", - "SignalingServiceStub", - "UnimplementedSignalingServiceBase", - "AnswerRequest", - "AnswerRequestDoneStage", - "AnswerRequestErrorStage", - "AnswerRequestInitStage", - "AnswerRequestUpdateStage", - "AnswerResponse", - "AnswerResponseDoneStage", - "AnswerResponseErrorStage", - "AnswerResponseInitStage", - "AnswerResponseUpdateStage", - "CallRequest", - "CallResponse", - "CallResponseInitStage", - "CallResponseUpdateStage", - "CallUpdateRequest", - "CallUpdateResponse", - "ICECandidate", - "ICEServer", - "OptionalWebRTCConfigRequest", - "OptionalWebRTCConfigResponse", - "WebRTCConfig", + 'SignalingServiceBase', + 'SignalingServiceStub', + 'UnimplementedSignalingServiceBase', + 'AnswerRequest', + 'AnswerRequestDoneStage', + 'AnswerRequestErrorStage', + 'AnswerRequestInitStage', + 'AnswerRequestUpdateStage', + 'AnswerResponse', + 'AnswerResponseDoneStage', + 'AnswerResponseErrorStage', + 'AnswerResponseInitStage', + 'AnswerResponseUpdateStage', + 'CallRequest', + 'CallResponse', + 'CallResponseInitStage', + 'CallResponseUpdateStage', + 'CallUpdateRequest', + 'CallUpdateResponse', + 'ICECandidate', + 'ICEServer', + 'OptionalWebRTCConfigRequest', + 'OptionalWebRTCConfigResponse', + 'WebRTCConfig', ] diff --git a/src/viam/proto/service/datamanager/__init__.py b/src/viam/proto/service/datamanager/__init__.py index 9309d7fa3..7ee171167 100644 --- a/src/viam/proto/service/datamanager/__init__.py +++ b/src/viam/proto/service/datamanager/__init__.py @@ -1,18 +1,21 @@ -""" +''' @generated by Viam. Do not edit manually! -""" +''' from ....gen.service.datamanager.v1.data_manager_grpc import ( DataManagerServiceBase, DataManagerServiceStub, - UnimplementedDataManagerServiceBase, + UnimplementedDataManagerServiceBase +) +from ....gen.service.datamanager.v1.data_manager_pb2 import ( + SyncRequest, + SyncResponse ) -from ....gen.service.datamanager.v1.data_manager_pb2 import SyncRequest, SyncResponse __all__ = [ - "DataManagerServiceBase", - "DataManagerServiceStub", - "UnimplementedDataManagerServiceBase", - "SyncRequest", - "SyncResponse", + 'DataManagerServiceBase', + 'DataManagerServiceStub', + 'UnimplementedDataManagerServiceBase', + 'SyncRequest', + 'SyncResponse', ] diff --git a/src/viam/proto/service/generic/__init__.py b/src/viam/proto/service/generic/__init__.py index df6e7da11..8158bb0d6 100644 --- a/src/viam/proto/service/generic/__init__.py +++ b/src/viam/proto/service/generic/__init__.py @@ -1,11 +1,15 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.service.generic.v1.generic_grpc import GenericServiceBase, GenericServiceStub, UnimplementedGenericServiceBase +''' +from ....gen.service.generic.v1.generic_grpc import ( + GenericServiceBase, + GenericServiceStub, + UnimplementedGenericServiceBase +) __all__ = [ - "GenericServiceBase", - "GenericServiceStub", - "UnimplementedGenericServiceBase", + 'GenericServiceBase', + 'GenericServiceStub', + 'UnimplementedGenericServiceBase', ] diff --git a/src/viam/proto/service/mlmodel/__init__.py b/src/viam/proto/service/mlmodel/__init__.py index 51b022683..486d2c7ad 100644 --- a/src/viam/proto/service/mlmodel/__init__.py +++ b/src/viam/proto/service/mlmodel/__init__.py @@ -1,21 +1,25 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.service.mlmodel.v1.mlmodel_grpc import MLModelServiceBase, MLModelServiceStub, UnimplementedMLModelServiceBase +''' +from ....gen.service.mlmodel.v1.mlmodel_grpc import ( + MLModelServiceBase, + MLModelServiceStub, + UnimplementedMLModelServiceBase +) from ....gen.service.mlmodel.v1.mlmodel_pb2 import ( File, FlatTensor, FlatTensorDataDouble, FlatTensorDataFloat, - FlatTensorDataInt8, FlatTensorDataInt16, FlatTensorDataInt32, FlatTensorDataInt64, - FlatTensorDataUInt8, + FlatTensorDataInt8, FlatTensorDataUInt16, FlatTensorDataUInt32, FlatTensorDataUInt64, + FlatTensorDataUInt8, FlatTensors, InferRequest, InferResponse, @@ -23,31 +27,31 @@ Metadata, MetadataRequest, MetadataResponse, - TensorInfo, + TensorInfo ) __all__ = [ - "MLModelServiceBase", - "MLModelServiceStub", - "UnimplementedMLModelServiceBase", - "File", - "FlatTensor", - "FlatTensorDataDouble", - "FlatTensorDataFloat", - "FlatTensorDataInt16", - "FlatTensorDataInt32", - "FlatTensorDataInt64", - "FlatTensorDataInt8", - "FlatTensorDataUInt16", - "FlatTensorDataUInt32", - "FlatTensorDataUInt64", - "FlatTensorDataUInt8", - "FlatTensors", - "InferRequest", - "InferResponse", - "LabelType", - "Metadata", - "MetadataRequest", - "MetadataResponse", - "TensorInfo", + 'MLModelServiceBase', + 'MLModelServiceStub', + 'UnimplementedMLModelServiceBase', + 'File', + 'FlatTensor', + 'FlatTensorDataDouble', + 'FlatTensorDataFloat', + 'FlatTensorDataInt16', + 'FlatTensorDataInt32', + 'FlatTensorDataInt64', + 'FlatTensorDataInt8', + 'FlatTensorDataUInt16', + 'FlatTensorDataUInt32', + 'FlatTensorDataUInt64', + 'FlatTensorDataUInt8', + 'FlatTensors', + 'InferRequest', + 'InferResponse', + 'LabelType', + 'Metadata', + 'MetadataRequest', + 'MetadataResponse', + 'TensorInfo', ] diff --git a/src/viam/proto/service/motion/__init__.py b/src/viam/proto/service/motion/__init__.py index 78e3be1b5..cdafb92b9 100644 --- a/src/viam/proto/service/motion/__init__.py +++ b/src/viam/proto/service/motion/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.service.motion.v1.motion_grpc import MotionServiceBase, MotionServiceStub, UnimplementedMotionServiceBase +''' +from ....gen.service.motion.v1.motion_grpc import ( + MotionServiceBase, + MotionServiceStub, + UnimplementedMotionServiceBase +) from ....gen.service.motion.v1.motion_pb2 import ( CollisionSpecification, ComponentState, @@ -30,38 +34,38 @@ PlanStep, PlanWithStatus, StopPlanRequest, - StopPlanResponse, + StopPlanResponse ) __all__ = [ - "MotionServiceBase", - "MotionServiceStub", - "UnimplementedMotionServiceBase", - "CollisionSpecification", - "ComponentState", - "Constraints", - "GetPlanRequest", - "GetPlanResponse", - "GetPoseRequest", - "GetPoseResponse", - "LinearConstraint", - "ListPlanStatusesRequest", - "ListPlanStatusesResponse", - "MotionConfiguration", - "MoveOnGlobeRequest", - "MoveOnGlobeResponse", - "MoveOnMapRequest", - "MoveOnMapResponse", - "MoveRequest", - "MoveResponse", - "ObstacleDetector", - "OrientationConstraint", - "Plan", - "PlanState", - "PlanStatus", - "PlanStatusWithID", - "PlanStep", - "PlanWithStatus", - "StopPlanRequest", - "StopPlanResponse", + 'MotionServiceBase', + 'MotionServiceStub', + 'UnimplementedMotionServiceBase', + 'CollisionSpecification', + 'ComponentState', + 'Constraints', + 'GetPlanRequest', + 'GetPlanResponse', + 'GetPoseRequest', + 'GetPoseResponse', + 'LinearConstraint', + 'ListPlanStatusesRequest', + 'ListPlanStatusesResponse', + 'MotionConfiguration', + 'MoveOnGlobeRequest', + 'MoveOnGlobeResponse', + 'MoveOnMapRequest', + 'MoveOnMapResponse', + 'MoveRequest', + 'MoveResponse', + 'ObstacleDetector', + 'OrientationConstraint', + 'Plan', + 'PlanState', + 'PlanStatus', + 'PlanStatusWithID', + 'PlanStep', + 'PlanWithStatus', + 'StopPlanRequest', + 'StopPlanResponse', ] diff --git a/src/viam/proto/service/navigation/__init__.py b/src/viam/proto/service/navigation/__init__.py index f5938881b..4cde4b7bb 100644 --- a/src/viam/proto/service/navigation/__init__.py +++ b/src/viam/proto/service/navigation/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.service.navigation.v1.navigation_grpc import NavigationServiceBase, NavigationServiceStub, UnimplementedNavigationServiceBase +''' +from ....gen.service.navigation.v1.navigation_grpc import ( + NavigationServiceBase, + NavigationServiceStub, + UnimplementedNavigationServiceBase +) from ....gen.service.navigation.v1.navigation_pb2 import ( AddWaypointRequest, AddWaypointResponse, @@ -25,33 +29,33 @@ RemoveWaypointResponse, SetModeRequest, SetModeResponse, - Waypoint, + Waypoint ) __all__ = [ - "NavigationServiceBase", - "NavigationServiceStub", - "UnimplementedNavigationServiceBase", - "AddWaypointRequest", - "AddWaypointResponse", - "GetLocationRequest", - "GetLocationResponse", - "GetModeRequest", - "GetModeResponse", - "GetObstaclesRequest", - "GetObstaclesResponse", - "GetPathsRequest", - "GetPathsResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "GetWaypointsRequest", - "GetWaypointsResponse", - "MapType", - "Mode", - "Path", - "RemoveWaypointRequest", - "RemoveWaypointResponse", - "SetModeRequest", - "SetModeResponse", - "Waypoint", + 'NavigationServiceBase', + 'NavigationServiceStub', + 'UnimplementedNavigationServiceBase', + 'AddWaypointRequest', + 'AddWaypointResponse', + 'GetLocationRequest', + 'GetLocationResponse', + 'GetModeRequest', + 'GetModeResponse', + 'GetObstaclesRequest', + 'GetObstaclesResponse', + 'GetPathsRequest', + 'GetPathsResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'GetWaypointsRequest', + 'GetWaypointsResponse', + 'MapType', + 'Mode', + 'Path', + 'RemoveWaypointRequest', + 'RemoveWaypointResponse', + 'SetModeRequest', + 'SetModeResponse', + 'Waypoint', ] diff --git a/src/viam/proto/service/sensors/__init__.py b/src/viam/proto/service/sensors/__init__.py index b97f32653..f2a0905e5 100644 --- a/src/viam/proto/service/sensors/__init__.py +++ b/src/viam/proto/service/sensors/__init__.py @@ -1,17 +1,27 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.service.sensors.v1.sensors_grpc import SensorsServiceBase, SensorsServiceStub, UnimplementedSensorsServiceBase -from ....gen.service.sensors.v1.sensors_pb2 import GetReadingsRequest, GetReadingsResponse, GetSensorsRequest, GetSensorsResponse, Readings +''' +from ....gen.service.sensors.v1.sensors_grpc import ( + SensorsServiceBase, + SensorsServiceStub, + UnimplementedSensorsServiceBase +) +from ....gen.service.sensors.v1.sensors_pb2 import ( + GetReadingsRequest, + GetReadingsResponse, + GetSensorsRequest, + GetSensorsResponse, + Readings +) __all__ = [ - "SensorsServiceBase", - "SensorsServiceStub", - "UnimplementedSensorsServiceBase", - "GetReadingsRequest", - "GetReadingsResponse", - "GetSensorsRequest", - "GetSensorsResponse", - "Readings", + 'SensorsServiceBase', + 'SensorsServiceStub', + 'UnimplementedSensorsServiceBase', + 'GetReadingsRequest', + 'GetReadingsResponse', + 'GetSensorsRequest', + 'GetSensorsResponse', + 'Readings', ] diff --git a/src/viam/proto/service/shell/__init__.py b/src/viam/proto/service/shell/__init__.py index 249a5f1a3..07fc72562 100644 --- a/src/viam/proto/service/shell/__init__.py +++ b/src/viam/proto/service/shell/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.service.shell.v1.shell_grpc import ShellServiceBase, ShellServiceStub, UnimplementedShellServiceBase +''' +from ....gen.service.shell.v1.shell_grpc import ( + ShellServiceBase, + ShellServiceStub, + UnimplementedShellServiceBase +) from ....gen.service.shell.v1.shell_pb2 import ( CopyFilesFromMachineRequest, CopyFilesFromMachineRequestMetadata, @@ -14,22 +18,22 @@ CopyFilesToMachineResponse, FileData, ShellRequest, - ShellResponse, + ShellResponse ) __all__ = [ - "ShellServiceBase", - "ShellServiceStub", - "UnimplementedShellServiceBase", - "CopyFilesFromMachineRequest", - "CopyFilesFromMachineRequestMetadata", - "CopyFilesFromMachineResponse", - "CopyFilesFromMachineResponseMetadata", - "CopyFilesSourceType", - "CopyFilesToMachineRequest", - "CopyFilesToMachineRequestMetadata", - "CopyFilesToMachineResponse", - "FileData", - "ShellRequest", - "ShellResponse", + 'ShellServiceBase', + 'ShellServiceStub', + 'UnimplementedShellServiceBase', + 'CopyFilesFromMachineRequest', + 'CopyFilesFromMachineRequestMetadata', + 'CopyFilesFromMachineResponse', + 'CopyFilesFromMachineResponseMetadata', + 'CopyFilesSourceType', + 'CopyFilesToMachineRequest', + 'CopyFilesToMachineRequestMetadata', + 'CopyFilesToMachineResponse', + 'FileData', + 'ShellRequest', + 'ShellResponse', ] diff --git a/src/viam/proto/service/slam/__init__.py b/src/viam/proto/service/slam/__init__.py index 9ce00fc97..bba528710 100644 --- a/src/viam/proto/service/slam/__init__.py +++ b/src/viam/proto/service/slam/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.service.slam.v1.slam_grpc import SLAMServiceBase, SLAMServiceStub, UnimplementedSLAMServiceBase +''' +from ....gen.service.slam.v1.slam_grpc import ( + SLAMServiceBase, + SLAMServiceStub, + UnimplementedSLAMServiceBase +) from ....gen.service.slam.v1.slam_pb2 import ( GetInternalStateRequest, GetInternalStateResponse, @@ -14,22 +18,22 @@ GetPropertiesResponse, MappingMode, SensorInfo, - SensorType, + SensorType ) __all__ = [ - "SLAMServiceBase", - "SLAMServiceStub", - "UnimplementedSLAMServiceBase", - "GetInternalStateRequest", - "GetInternalStateResponse", - "GetPointCloudMapRequest", - "GetPointCloudMapResponse", - "GetPositionRequest", - "GetPositionResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", - "MappingMode", - "SensorInfo", - "SensorType", + 'SLAMServiceBase', + 'SLAMServiceStub', + 'UnimplementedSLAMServiceBase', + 'GetInternalStateRequest', + 'GetInternalStateResponse', + 'GetPointCloudMapRequest', + 'GetPointCloudMapResponse', + 'GetPositionRequest', + 'GetPositionResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', + 'MappingMode', + 'SensorInfo', + 'SensorType', ] diff --git a/src/viam/proto/service/vision/__init__.py b/src/viam/proto/service/vision/__init__.py index 95550a02c..580019886 100644 --- a/src/viam/proto/service/vision/__init__.py +++ b/src/viam/proto/service/vision/__init__.py @@ -1,8 +1,12 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ....gen.service.vision.v1.vision_grpc import UnimplementedVisionServiceBase, VisionServiceBase, VisionServiceStub +''' +from ....gen.service.vision.v1.vision_grpc import ( + UnimplementedVisionServiceBase, + VisionServiceBase, + VisionServiceStub +) from ....gen.service.vision.v1.vision_pb2 import ( CaptureAllFromCameraRequest, CaptureAllFromCameraResponse, @@ -19,27 +23,27 @@ GetObjectPointCloudsRequest, GetObjectPointCloudsResponse, GetPropertiesRequest, - GetPropertiesResponse, + GetPropertiesResponse ) __all__ = [ - "UnimplementedVisionServiceBase", - "VisionServiceBase", - "VisionServiceStub", - "CaptureAllFromCameraRequest", - "CaptureAllFromCameraResponse", - "Classification", - "Detection", - "GetClassificationsFromCameraRequest", - "GetClassificationsFromCameraResponse", - "GetClassificationsRequest", - "GetClassificationsResponse", - "GetDetectionsFromCameraRequest", - "GetDetectionsFromCameraResponse", - "GetDetectionsRequest", - "GetDetectionsResponse", - "GetObjectPointCloudsRequest", - "GetObjectPointCloudsResponse", - "GetPropertiesRequest", - "GetPropertiesResponse", + 'UnimplementedVisionServiceBase', + 'VisionServiceBase', + 'VisionServiceStub', + 'CaptureAllFromCameraRequest', + 'CaptureAllFromCameraResponse', + 'Classification', + 'Detection', + 'GetClassificationsFromCameraRequest', + 'GetClassificationsFromCameraResponse', + 'GetClassificationsRequest', + 'GetClassificationsResponse', + 'GetDetectionsFromCameraRequest', + 'GetDetectionsFromCameraResponse', + 'GetDetectionsRequest', + 'GetDetectionsResponse', + 'GetObjectPointCloudsRequest', + 'GetObjectPointCloudsResponse', + 'GetPropertiesRequest', + 'GetPropertiesResponse', ] diff --git a/src/viam/proto/stream/__init__.py b/src/viam/proto/stream/__init__.py index c78abd082..a1c2c3a54 100644 --- a/src/viam/proto/stream/__init__.py +++ b/src/viam/proto/stream/__init__.py @@ -1,25 +1,29 @@ -""" +''' @generated by Viam. Do not edit manually! -""" -from ...gen.stream.v1.stream_grpc import StreamServiceBase, StreamServiceStub, UnimplementedStreamServiceBase +''' +from ...gen.stream.v1.stream_grpc import ( + StreamServiceBase, + StreamServiceStub, + UnimplementedStreamServiceBase +) from ...gen.stream.v1.stream_pb2 import ( AddStreamRequest, AddStreamResponse, ListStreamsRequest, ListStreamsResponse, RemoveStreamRequest, - RemoveStreamResponse, + RemoveStreamResponse ) __all__ = [ - "StreamServiceBase", - "StreamServiceStub", - "UnimplementedStreamServiceBase", - "AddStreamRequest", - "AddStreamResponse", - "ListStreamsRequest", - "ListStreamsResponse", - "RemoveStreamRequest", - "RemoveStreamResponse", + 'StreamServiceBase', + 'StreamServiceStub', + 'UnimplementedStreamServiceBase', + 'AddStreamRequest', + 'AddStreamResponse', + 'ListStreamsRequest', + 'ListStreamsResponse', + 'RemoveStreamRequest', + 'RemoveStreamResponse', ] diff --git a/src/viam/proto/tagger/__init__.py b/src/viam/proto/tagger/__init__.py index 3484a6ee3..0e7ab86b4 100644 --- a/src/viam/proto/tagger/__init__.py +++ b/src/viam/proto/tagger/__init__.py @@ -1,6 +1,7 @@ -""" +''' @generated by Viam. Do not edit manually! -""" +''' -__all__ = [] +__all__ = [ +] diff --git a/src/viam/resource/base.py b/src/viam/resource/base.py index 56a08e0c7..d9dbc5b40 100644 --- a/src/viam/resource/base.py +++ b/src/viam/resource/base.py @@ -76,7 +76,7 @@ async def do_command( :: command = {"cmd": "test", "data1": 500} - result = await component.do_command(command) + result = component.do(command) Args: command (Mapping[str, ValueTypes]): The command to execute diff --git a/src/viam/resource/easy_resource.py b/src/viam/resource/easy_resource.py index f6788c699..ef5e5cd32 100644 --- a/src/viam/resource/easy_resource.py +++ b/src/viam/resource/easy_resource.py @@ -131,7 +131,9 @@ def register(cls): # note: We could fix this pyright-ignore if EasyResource inherited ResourceBase, but that crashes in the mro() # walk in ResourceManager.register. Registry.register_resource_creator( - cls.SUBTYPE, cls.MODEL, ResourceCreatorRegistration(cls.new) # pyright: ignore [reportArgumentType] + cls.SUBTYPE, + cls.MODEL, + ResourceCreatorRegistration(cls.new), # pyright: ignore [reportArgumentType] ) def reconfigure(self, config: ComponentConfig, dependencies: Mapping[ResourceName, ResourceBase]): diff --git a/src/viam/resource/rpc_client_base.py b/src/viam/resource/rpc_client_base.py index ec50de6b6..7d1ee762c 100644 --- a/src/viam/resource/rpc_client_base.py +++ b/src/viam/resource/rpc_client_base.py @@ -1,6 +1,6 @@ -from typing import Any, Dict, Protocol, runtime_checkable -from string import ascii_lowercase from random import choice +from string import ascii_lowercase +from typing import Any, Dict, Protocol, runtime_checkable from grpclib.client import Channel @@ -17,19 +17,19 @@ class ResourceRPCClientBase(Protocol): class Metadata: metadata: Dict[str, str] = {} - def enable_debug_logging(self, key: str = ''): + def enable_debug_logging(self, key: str = ""): """Enables server-side debug logging for resource methods. Args: key (str): The key to associate debug logs with. If not provided, will default to a randomly generated string value. """ - if key == '': - key = ''.join(choice(ascii_lowercase) for i in range(6)) - self.metadata['dtname'] = key + if key == "": + key = "".join(choice(ascii_lowercase) for i in range(6)) + self.metadata["dtname"] = key def disable_debug_logging(self): """Disables server-side debug logging for resource methods.""" - del self.metadata['dtname'] + del self.metadata["dtname"] def add_metadata(self, key: str, value: str): """Adds a key-value pair to the metadata""" diff --git a/src/viam/resource/types.py b/src/viam/resource/types.py index 633df9c4b..c01fd60f7 100644 --- a/src/viam/resource/types.py +++ b/src/viam/resource/types.py @@ -210,5 +210,4 @@ def resource_name_from_string(string: str) -> ResourceName: class SupportsGetGeometries(Protocol): """The SupportsGetGeometries protocol defines the requirements for a resource to call get_geometries.""" - async def GetGeometries(self, request: GetGeometriesRequest, *, timeout: Optional[float] = None, **kwargs) -> GetGeometriesResponse: - ... + async def GetGeometries(self, request: GetGeometriesRequest, *, timeout: Optional[float] = None, **kwargs) -> GetGeometriesResponse: ... diff --git a/src/viam/robot/client.py b/src/viam/robot/client.py index 3afb7c251..2e6ec5d99 100644 --- a/src/viam/robot/client.py +++ b/src/viam/robot/client.py @@ -39,9 +39,12 @@ ResourceNamesResponse, RobotServiceStub, ShutdownRequest, + StopAllRequest, + StopExtraParameters, + TransformPoseRequest, + TransformPoseResponse, ) from viam.proto.robot import Status as PBStatus -from viam.proto.robot import StopAllRequest, StopExtraParameters, TransformPoseRequest, TransformPoseResponse from viam.resource.base import ResourceBase from viam.resource.manager import ResourceManager from viam.resource.registry import Registry diff --git a/src/viam/rpc/types.py b/src/viam/rpc/types.py index 70301a4be..a1e91c9a6 100644 --- a/src/viam/rpc/types.py +++ b/src/viam/rpc/types.py @@ -14,11 +14,9 @@ class RPCServiceBase(IServable): """ @abstractmethod - def __mapping__(self) -> Mapping[str, grpclib.const.Handler]: - ... + def __mapping__(self) -> Mapping[str, grpclib.const.Handler]: ... @runtime_checkable class RPCServiceStubBase(Protocol): - def __init__(self, channel: Channel) -> None: - ... + def __init__(self, channel: Channel) -> None: ... diff --git a/src/viam/services/generic/client.py b/src/viam/services/generic/client.py index 47257f019..d9283496d 100644 --- a/src/viam/services/generic/client.py +++ b/src/viam/services/generic/client.py @@ -28,7 +28,7 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, Any]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) try: response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) @@ -53,6 +53,6 @@ async def do_command( Returns: Dict[str, Any]: The result of the executed command """ - md = kwargs.get('metadata', ResourceRPCClientBase.Metadata()).proto + md = kwargs.get("metadata", ResourceRPCClientBase.Metadata()).proto client = GenericClient(name, channel) return await client.do_command(command, timeout=timeout, metadata=md) diff --git a/src/viam/services/mlmodel/client.py b/src/viam/services/mlmodel/client.py index 9197f03dc..240d6e5d7 100644 --- a/src/viam/services/mlmodel/client.py +++ b/src/viam/services/mlmodel/client.py @@ -17,13 +17,13 @@ def __init__(self, name: str, channel: Channel): super().__init__(name) async def infer(self, input_tensors: Dict[str, NDArray], *, timeout: Optional[float] = None, **kwargs) -> Dict[str, NDArray]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = InferRequest(name=self.name, input_tensors=ndarrays_to_flat_tensors(input_tensors)) response: InferResponse = await self.client.Infer(request, timeout=timeout, metadata=md) return flat_tensors_to_ndarrays(response.output_tensors) async def metadata(self, *, timeout: Optional[float] = None, **kwargs) -> Metadata: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = MetadataRequest(name=self.name) response: MetadataResponse = await self.client.Metadata(request, timeout=timeout, metadata=md) return response.metadata diff --git a/src/viam/services/motion/client.py b/src/viam/services/motion/client.py index bdead0435..8ed4ce6ad 100644 --- a/src/viam/services/motion/client.py +++ b/src/viam/services/motion/client.py @@ -63,7 +63,7 @@ async def move( timeout: Optional[float] = None, **kwargs, ) -> bool: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = MoveRequest( name=self.name, destination=destination, @@ -89,7 +89,7 @@ async def move_on_globe( timeout: Optional[float] = None, **kwargs, ) -> str: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = MoveOnGlobeRequest( name=self.name, component_name=component_name, @@ -116,7 +116,7 @@ async def move_on_map( timeout: Optional[float] = None, **kwargs, ) -> str: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = MoveOnMapRequest( name=self.name, destination=destination, @@ -137,7 +137,7 @@ async def stop_plan( timeout: Optional[float] = None, **kwargs, ): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = StopPlanRequest( name=self.name, @@ -157,7 +157,7 @@ async def get_plan( timeout: Optional[float] = None, **kwargs, ) -> GetPlanResponse: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPlanRequest( name=self.name, @@ -177,7 +177,7 @@ async def list_plan_statuses( timeout: Optional[float] = None, **kwargs, ) -> Sequence[PlanStatusWithID]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = ListPlanStatusesRequest( name=self.name, @@ -197,7 +197,7 @@ async def get_pose( timeout: Optional[float] = None, **kwargs, ) -> PoseInFrame: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPoseRequest( name=self.name, component_name=component_name, @@ -209,7 +209,7 @@ async def get_pose( return response.pose async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Optional[float] = None, **kwargs) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) diff --git a/src/viam/services/navigation/client.py b/src/viam/services/navigation/client.py index 1c7224392..5782ebfec 100644 --- a/src/viam/services/navigation/client.py +++ b/src/viam/services/navigation/client.py @@ -42,58 +42,58 @@ def __init__(self, name: str, channel: Channel): super().__init__(name) async def get_paths(self, *, timeout: Optional[float] = None, **kwargs) -> List[Path]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPathsRequest(name=self.name) response: GetPathsResponse = await self.client.GetPaths(request, timeout=timeout, metadata=md) return list(response.paths) async def get_location(self, *, timeout: Optional[float] = None, **kwargs) -> GeoPoint: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetLocationRequest(name=self.name) response: GetLocationResponse = await self.client.GetLocation(request, timeout=timeout, metadata=md) return response.location async def get_obstacles(self, *, timeout: Optional[float] = None, **kwargs) -> List[GeoGeometry]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetObstaclesRequest(name=self.name) response: GetObstaclesResponse = await self.client.GetObstacles(request, timeout=timeout, metadata=md) return list(response.obstacles) async def get_waypoints(self, *, timeout: Optional[float] = None, **kwargs) -> List[Waypoint]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetWaypointsRequest(name=self.name) response: GetWaypointsResponse = await self.client.GetWaypoints(request, timeout=timeout, metadata=md) return list(response.waypoints) async def add_waypoint(self, point: GeoPoint, *, timeout: Optional[float] = None, **kwargs): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = AddWaypointRequest(name=self.name, location=point) await self.client.AddWaypoint(request, timeout=timeout, metadata=md) async def remove_waypoint(self, id: str, *, timeout: Optional[float] = None, **kwargs): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = RemoveWaypointRequest(name=self.name, id=id) await self.client.RemoveWaypoint(request, timeout=timeout, metadata=md) async def get_mode(self, *, timeout: Optional[float] = None, **kwargs) -> Mode.ValueType: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetModeRequest(name=self.name) response: GetModeResponse = await self.client.GetMode(request, timeout=timeout, metadata=md) return response.mode async def set_mode(self, mode: Mode.ValueType, *, timeout: Optional[float] = None, **kwargs): - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = SetModeRequest(name=self.name, mode=mode) await self.client.SetMode(request, timeout=timeout, metadata=md) async def get_properties(self, *, timeout: Optional[float] = None, **kwargs) -> MapType.ValueType: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPropertiesRequest(name=self.name) response: GetPropertiesResponse = await self.client.GetProperties(request, timeout=timeout, metadata=md) return response.map_type async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Optional[float] = None, **kwargs) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) diff --git a/src/viam/services/sensors/client.py b/src/viam/services/sensors/client.py index f53a918bd..a77b9b68b 100644 --- a/src/viam/services/sensors/client.py +++ b/src/viam/services/sensors/client.py @@ -34,7 +34,7 @@ async def get_sensors( Returns: List[viam.proto.common.ResourceName]: The list of all Sensors """ - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetSensorsRequest(name=self.name, extra=dict_to_struct(extra)) response: GetSensorsResponse = await self.client.GetSensors(request, timeout=timeout, metadata=md) return list(response.sensor_names) @@ -50,7 +50,7 @@ async def get_readings( Returns: Mapping[viam.proto.common.ResourceName, Mapping[str, Any]]: The readings from the sensors, mapped by ``ResourceName`` """ - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetReadingsRequest(name=self.name, sensor_names=sensors, extra=dict_to_struct(extra)) response: GetReadingsResponse = await self.client.GetReadings(request, timeout=timeout, metadata=md) return {reading.name: sensor_readings_value_to_native(reading.readings) for reading in response.readings} @@ -64,7 +64,7 @@ async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Option Returns: Dict[str, ValueTypes]: Result of the executed command """ - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) diff --git a/src/viam/services/slam/client.py b/src/viam/services/slam/client.py index e27a134d4..1aecf9e8f 100644 --- a/src/viam/services/slam/client.py +++ b/src/viam/services/slam/client.py @@ -33,30 +33,30 @@ def __init__(self, name: str, channel: Channel): super().__init__(name) async def get_position(self, *, timeout: Optional[float] = None, **kwargs) -> Pose: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPositionRequest(name=self.name) response: GetPositionResponse = await self.client.GetPosition(request, timeout=timeout, metadata=md) return response.pose async def get_point_cloud_map(self, return_edited_map: bool = False, *, timeout: Optional[float] = None, **kwargs) -> List[bytes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPointCloudMapRequest(name=self.name, return_edited_map=return_edited_map) response: List[GetPointCloudMapResponse] = await self.client.GetPointCloudMap(request, timeout=timeout, metadata=md) return [r.point_cloud_pcd_chunk for r in response] async def get_internal_state(self, *, timeout: Optional[float] = None, **kwargs) -> List[bytes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetInternalStateRequest(name=self.name) response: List[GetInternalStateResponse] = await self.client.GetInternalState(request, timeout=timeout, metadata=md) return [r.internal_state_chunk for r in response] async def get_properties(self, *, timeout: Optional[float] = None, **kwargs) -> SLAM.Properties: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPropertiesRequest(name=self.name) return await self.client.GetProperties(request, timeout=timeout, metadata=md) async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Optional[float] = None, **kwargs) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) diff --git a/src/viam/services/vision/client.py b/src/viam/services/vision/client.py index 481e1f516..930f02adf 100644 --- a/src/viam/services/vision/client.py +++ b/src/viam/services/vision/client.py @@ -55,7 +55,7 @@ async def capture_all_from_camera( timeout: Optional[float] = None, **kwargs, ) -> CaptureAllResult: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = CaptureAllFromCameraRequest( name=self.name, camera_name=camera_name, @@ -88,7 +88,7 @@ async def get_detections_from_camera( timeout: Optional[float] = None, **kwargs, ) -> List[Detection]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetDetectionsFromCameraRequest(name=self.name, camera_name=camera_name, extra=dict_to_struct(extra)) response: GetDetectionsFromCameraResponse = await self.client.GetDetectionsFromCamera(request, timeout=timeout, metadata=md) return list(response.detections) @@ -101,7 +101,7 @@ async def get_detections( timeout: Optional[float] = None, **kwargs, ) -> List[Detection]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto mime_type = CameraMimeType.JPEG if image.width is None or image.height is None: @@ -127,10 +127,11 @@ async def get_classifications_from_camera( timeout: Optional[float] = None, **kwargs, ) -> List[Classification]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetClassificationsFromCameraRequest(name=self.name, camera_name=camera_name, n=count, extra=dict_to_struct(extra)) response: GetClassificationsFromCameraResponse = await self.client.GetClassificationsFromCamera( - request, timeout=timeout, metadata=md) + request, timeout=timeout, metadata=md + ) return list(response.classifications) async def get_classifications( @@ -142,7 +143,7 @@ async def get_classifications( timeout: Optional[float] = None, **kwargs, ) -> List[Classification]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto mime_type = CameraMimeType.JPEG if image.width is None or image.height is None: @@ -167,7 +168,7 @@ async def get_object_point_clouds( timeout: Optional[float] = None, **kwargs, ) -> List[PointCloudObject]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetObjectPointCloudsRequest( name=self.name, camera_name=camera_name, @@ -184,7 +185,7 @@ async def get_properties( timeout: Optional[float] = None, **kwargs, ) -> Vision.Properties: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = GetPropertiesRequest( name=self.name, extra=dict_to_struct(extra), @@ -199,7 +200,7 @@ async def do_command( timeout: Optional[float] = None, **kwargs, ) -> Mapping[str, ValueTypes]: - md = kwargs.get('metadata', self.Metadata()).proto + md = kwargs.get("metadata", self.Metadata()).proto request = DoCommandRequest(name=self.name, command=dict_to_struct(command)) response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md) return struct_to_dict(response.result) diff --git a/src/viam/streams.py b/src/viam/streams.py index 921922f84..2daae42e1 100644 --- a/src/viam/streams.py +++ b/src/viam/streams.py @@ -11,8 +11,7 @@ class Stream(Protocol[StreamType]): - async def next(self) -> StreamType: - ... + async def next(self) -> StreamType: ... def __aiter__(self) -> AsyncIterator: return self @@ -22,13 +21,11 @@ async def __anext__(self) -> StreamType: class StreamReader(Protocol[StreamType]): - async def read(self) -> StreamType: - ... + async def read(self) -> StreamType: ... class StreamSource(Protocol[StreamType]): - async def stream(self) -> Stream[StreamType]: - ... + async def stream(self) -> Stream[StreamType]: ... class StreamWithIterator(Stream[StreamType]): diff --git a/src/viam/utils.py b/src/viam/utils.py index 425c391d8..a1ebbbf4b 100644 --- a/src/viam/utils.py +++ b/src/viam/utils.py @@ -169,11 +169,11 @@ def datetime_to_timestamp(dt: Optional[datetime]) -> Optional[Timestamp]: async def get_geometries( - client: SupportsGetGeometries, - name: str, - extra: Optional[Dict[str, Any]] = None, - timeout: Optional[float] = None, - metadata: ResourceRPCClientBase.Metadata = ResourceRPCClientBase.Metadata(), + client: SupportsGetGeometries, + name: str, + extra: Optional[Dict[str, Any]] = None, + timeout: Optional[float] = None, + metadata: ResourceRPCClientBase.Metadata = ResourceRPCClientBase.Metadata(), ) -> List[Geometry]: md = metadata.proto request = GetGeometriesRequest(name=name, extra=dict_to_struct(extra)) diff --git a/src/viam/version_metadata.py b/src/viam/version_metadata.py index 47c82e74e..2317e9072 100644 --- a/src/viam/version_metadata.py +++ b/src/viam/version_metadata.py @@ -1,4 +1,4 @@ -import viam +__version__ = "0.30.0" API_VERSION = "v0.1.341" -SDK_VERSION = viam.__version__ +SDK_VERSION = __version__ diff --git a/data/fakeDM.vnd.viam.dep b/tests/data/fakeDM.vnd.viam.dep similarity index 100% rename from data/fakeDM.vnd.viam.dep rename to tests/data/fakeDM.vnd.viam.dep diff --git a/tests/mocks/module/gizmo/api.py b/tests/mocks/module/gizmo/api.py index e8084630b..cfb56097c 100644 --- a/tests/mocks/module/gizmo/api.py +++ b/tests/mocks/module/gizmo/api.py @@ -31,24 +31,19 @@ class Gizmo(ComponentBase): SUBTYPE: Final = Subtype("acme", RESOURCE_TYPE_COMPONENT, "gizmo") @abc.abstractmethod - async def do_one(self, arg1: str, **kwargs) -> bool: - ... + async def do_one(self, arg1: str, **kwargs) -> bool: ... @abc.abstractmethod - async def do_one_client_stream(self, arg1: Sequence[str], **kwargs) -> bool: - ... + async def do_one_client_stream(self, arg1: Sequence[str], **kwargs) -> bool: ... @abc.abstractmethod - async def do_one_server_stream(self, arg1: str, **kwargs) -> Sequence[bool]: - ... + async def do_one_server_stream(self, arg1: str, **kwargs) -> Sequence[bool]: ... @abc.abstractmethod - async def do_one_bidi_stream(self, arg1: Sequence[str], **kwargs) -> Sequence[bool]: - ... + async def do_one_bidi_stream(self, arg1: Sequence[str], **kwargs) -> Sequence[bool]: ... @abc.abstractmethod - async def do_two(self, arg1: bool, **kwargs) -> str: - ... + async def do_two(self, arg1: bool, **kwargs) -> str: ... class GizmoService(GizmoServiceBase, ResourceRPCServiceBase): diff --git a/tests/mocks/module/summation/api.py b/tests/mocks/module/summation/api.py index b1a8ac262..ddb8834f0 100644 --- a/tests/mocks/module/summation/api.py +++ b/tests/mocks/module/summation/api.py @@ -18,8 +18,7 @@ class SummationService(ServiceBase): SUBTYPE: Final = Subtype("acme", RESOURCE_TYPE_SERVICE, "summation") @abc.abstractmethod - async def sum(self, nums: Sequence[float]) -> float: - ... + async def sum(self, nums: Sequence[float]) -> float: ... class SummationRPCService(SummationServiceBase, ResourceRPCServiceBase): diff --git a/tests/test_app_client.py b/tests/test_app_client.py index c807f86c2..568a53ef0 100644 --- a/tests/test_app_client.py +++ b/tests/test_app_client.py @@ -4,9 +4,13 @@ from grpclib.testing import ChannelFor from viam.app.app_client import APIKeyAuthorization, AppClient, Fragment, FragmentVisibilityPB -from viam.proto.app import APIKey, APIKeyWithAuthorizations, AuthenticatorInfo, Authorization, AuthorizationDetails, AuthorizedPermissions -from viam.proto.app import Fragment as FragmentPB from viam.proto.app import ( + APIKey, + APIKeyWithAuthorizations, + AuthenticatorInfo, + Authorization, + AuthorizationDetails, + AuthorizedPermissions, FragmentHistoryEntry, Location, LocationAuth, @@ -25,6 +29,7 @@ RoverRentalRobot, Visibility, ) +from viam.proto.app import Fragment as FragmentPB from viam.proto.app.packages import PackageType from viam.proto.common import LogEntry from viam.utils import datetime_to_timestamp, struct_to_dict @@ -231,21 +236,18 @@ def service() -> MockApp: class TestClient: - @pytest.mark.asyncio async def test_get_user_id_by_email(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) id = await client.get_user_id_by_email(EMAIL) assert id == ID - @pytest.mark.asyncio async def test_create_organization(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) org = await client.create_organization(NAME) assert org == ORGANIZATION - @pytest.mark.asyncio async def test_get_organizations_with_access_to_location(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -253,7 +255,6 @@ async def test_get_organizations_with_access_to_location(self, service: MockApp) assert orgs[0].name == NAME assert orgs[0].id == ID - @pytest.mark.asyncio async def test_list_organizations_by_user(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -261,7 +262,6 @@ async def test_list_organizations_by_user(self, service: MockApp): assert orgs[0].org_name == NAME assert orgs[0].org_id == ID - @pytest.mark.asyncio async def test_get_organization(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -271,7 +271,6 @@ async def test_get_organization(self, service: MockApp): assert available == AVAILABLE assert service.namespace == NAMESPACE - @pytest.mark.asyncio async def test_get_organization_namespace_availability(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -279,7 +278,6 @@ async def test_get_organization_namespace_availability(self, service: MockApp): assert available == AVAILABLE assert service.namespace == NAMESPACE - @pytest.mark.asyncio async def test_list_organization_members(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -287,14 +285,12 @@ async def test_list_organization_members(self, service: MockApp): assert members == MEMBERS assert invites == INVITES - @pytest.mark.asyncio async def test_list_organizations(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) organizations = await client.list_organizations() assert organizations == ORGANIZATIONS - @pytest.mark.asyncio async def test_update_organization(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -305,7 +301,6 @@ async def test_update_organization(self, service: MockApp): assert service.update_name == NAME assert service.update_namespace == PUBLIC_NAMESPACE - @pytest.mark.asyncio async def test_update_organization_invite_authorizations(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -317,21 +312,18 @@ async def test_update_organization_invite_authorizations(self, service: MockApp) assert service.add_authorizations == AUTHORIZATIONS assert service.remove_authorizations == AUTHORIZATIONS - @pytest.mark.asyncio async def test_delete_organization(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) await client.delete_organization(ID) assert service.delete_org_called is True - @pytest.mark.asyncio async def test_delete_organization_member(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) await client.delete_organization_member(org_id=ID, user_id=ID) assert service.deleted_member_id == ID - @pytest.mark.asyncio async def test_create_organization_invite(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -342,21 +334,18 @@ async def test_create_organization_invite(self, service: MockApp): await client.create_organization_invite(org_id=ID, email=EMAIL, authorizations=AUTHORIZATIONS, send_email_invite=False) assert service.send_email_invite is False - @pytest.mark.asyncio async def test_delete_organization_invite(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) await client.delete_organization_invite(org_id=ID, email=EMAIL) assert service.deleted_invite_email == EMAIL - @pytest.mark.asyncio async def test_resend_organization_invite(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) await client.resend_organization_invite(org_id=ID, email=EMAIL) assert service.resent_invite_email == EMAIL - @pytest.mark.asyncio async def test_create_location(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -365,7 +354,6 @@ async def test_create_location(self, service: MockApp): assert service.parent_location_id == ID assert new_location == LOCATION - @pytest.mark.asyncio async def test_get_location(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -373,7 +361,6 @@ async def test_get_location(self, service: MockApp): assert service.location_id == ID assert location == LOCATION - @pytest.mark.asyncio async def test_update_location(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -383,21 +370,18 @@ async def test_update_location(self, service: MockApp): assert service.parent_location_id == ID assert updated_location == LOCATION - @pytest.mark.asyncio async def test_delete_location(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) await client.delete_location(location_id=ID) assert service.location_id == ID - @pytest.mark.asyncio async def test_list_locations(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) locations = await client.list_locations(org_id=ID) assert locations == locations - @pytest.mark.asyncio async def test_share_location(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -405,7 +389,6 @@ async def test_share_location(self, service: MockApp): assert service.location_id == ID assert service.organization_id == ID - @pytest.mark.asyncio async def test_unshare_location(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -413,7 +396,6 @@ async def test_unshare_location(self, service: MockApp): assert service.location_id == ID assert service.organization_id == ID - @pytest.mark.asyncio async def test_location_auth(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -421,7 +403,6 @@ async def test_location_auth(self, service: MockApp): assert location_auth == LOCATION_AUTH assert service.location_id == ID - @pytest.mark.asyncio async def test_create_location_secret(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -429,7 +410,6 @@ async def test_create_location_secret(self, service: MockApp): assert location_auth == LOCATION_AUTH assert service.location_id == ID - @pytest.mark.asyncio async def test_delete_location_secret(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -437,7 +417,6 @@ async def test_delete_location_secret(self, service: MockApp): assert service.secret_id == ID assert service.location_id == ID - @pytest.mark.asyncio async def test_get_robot(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -445,14 +424,12 @@ async def test_get_robot(self, service: MockApp): assert service.robot_id == ID assert robot == ROBOT - @pytest.mark.asyncio async def test_get_rover_rental_robots(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) robots = await client.get_rover_rental_robots(org_id=ID) assert robots == ROVER_RENTAL_ROBOTS - @pytest.mark.asyncio async def test_get_robot_parts(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -460,7 +437,6 @@ async def test_get_robot_parts(self, service: MockApp): assert service.robot_id == ID assert [robot_part.proto for robot_part in robot_parts] == ROBOT_PARTS - @pytest.mark.asyncio async def test_get_robot_part(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -468,7 +444,6 @@ async def test_get_robot_part(self, service: MockApp): assert service.robot_part_id == ID assert robot_part.proto == ROBOT_PART - @pytest.mark.asyncio async def test_get_robot_part_logs(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -478,7 +453,6 @@ async def test_get_robot_part_logs(self, service: MockApp): assert service.levels == LOG_LEVELS assert [log_entry.proto for log_entry in log_entries] == LOG_ENTRIES - @pytest.mark.asyncio async def test_tail_robot_part_logs(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -488,7 +462,6 @@ async def test_tail_robot_part_logs(self, service: MockApp): assert service.errors_only == ERRORS_ONLY assert service.filter == FILTER - @pytest.mark.asyncio async def test_get_robot_part_history(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -498,7 +471,6 @@ async def test_get_robot_part_history(self, service: MockApp): for i in range(len(ROBOT_PART_HISTORY)): assert robot_part_history[i].proto == ROBOT_PART_HISTORY[i] - @pytest.mark.asyncio async def test_update_robot_part(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -508,7 +480,6 @@ async def test_update_robot_part(self, service: MockApp): assert struct_to_dict(service.robot_config) == ROBOT_CONFIG assert updated_robot_part.proto == ROBOT_PART - @pytest.mark.asyncio async def test_new_robot_part(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -517,14 +488,12 @@ async def test_new_robot_part(self, service: MockApp): assert service.part_name == NAME assert new_robot_part_id == ID - @pytest.mark.asyncio async def test_delete_robot_part(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) await client.delete_robot_part(robot_part_id=ID) assert service.robot_part_id == ID - @pytest.mark.asyncio async def test_get_robot_api_keys(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -532,21 +501,18 @@ async def test_get_robot_api_keys(self, service: MockApp): assert keys[0].api_key == API_KEY_WITH_AUTHORIZATIONS.api_key assert keys[0].authorizations[0] == AUTHORIZATION_DETAIL - @pytest.mark.asyncio async def test_mark_part_as_main(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) await client.mark_part_as_main(robot_part_id=ID) assert service.robot_part_id == ID - @pytest.mark.asyncio async def test_mark_part_for_restart(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) await client.mark_part_for_restart(robot_part_id=ID) assert service.robot_part_id == ID - @pytest.mark.asyncio async def test_create_robot_part_secret(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -554,7 +520,6 @@ async def test_create_robot_part_secret(self, service: MockApp): assert service.robot_part_id == ID assert robot_part.proto == ROBOT_PART - @pytest.mark.asyncio async def test_delete_robot_part_secret(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -562,7 +527,6 @@ async def test_delete_robot_part_secret(self, service: MockApp): assert service.robot_part_id == ID assert service.secret_id == ID - @pytest.mark.asyncio async def test_list_robots(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -570,7 +534,6 @@ async def test_list_robots(self, service: MockApp): assert service.location_id == ID assert robots == [ROBOT] - @pytest.mark.asyncio async def test_new_robot(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -579,7 +542,6 @@ async def test_new_robot(self, service: MockApp): assert service.location_id == ID assert new_robot_id == ID - @pytest.mark.asyncio async def test_update_robot(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -589,14 +551,12 @@ async def test_update_robot(self, service: MockApp): assert service.location_id == ID assert updated_robot == ROBOT - @pytest.mark.asyncio async def test_delete_robot(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) await client.delete_robot(robot_id=ID) assert service.robot_id == ID - @pytest.mark.asyncio async def test_list_fragments(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -604,7 +564,6 @@ async def test_list_fragments(self, service: MockApp): assert service.fragment_visibility == FRAGMENT_VISIBILITY_PB assert [fragment.proto for fragment in fragments] == [FRAGMENT] - @pytest.mark.asyncio async def test_get_fragment(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -612,7 +571,6 @@ async def test_get_fragment(self, service: MockApp): assert service.fragment_id == ID assert fragment.proto == FRAGMENT - @pytest.mark.asyncio async def test_create_fragment(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -620,7 +578,6 @@ async def test_create_fragment(self, service: MockApp): assert service.name == NAME assert fragment.proto == FRAGMENT - @pytest.mark.asyncio async def test_update_fragment(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -630,14 +587,12 @@ async def test_update_fragment(self, service: MockApp): assert service.public == PUBLIC assert fragment.proto == FRAGMENT - @pytest.mark.asyncio async def test_delete_fragment(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) await client.delete_fragment(fragment_id=ID) assert service.id == ID - @pytest.mark.asyncio async def test_get_fragment_history(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -650,7 +605,6 @@ async def test_get_fragment_history(self, service: MockApp): for i in range(len(FRAGMENT_HISTORY)): assert fragment_history[i].proto == FRAGMENT_HISTORY[i] - @pytest.mark.asyncio async def test_add_role(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -660,7 +614,6 @@ async def test_add_role(self, service: MockApp): assert service.resource_type == TYPE assert service.resource_id == ID - @pytest.mark.asyncio async def test_remove_role(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -670,7 +623,6 @@ async def test_remove_role(self, service: MockApp): assert service.resource_type == TYPE assert service.resource_id == ID - @pytest.mark.asyncio async def test_change_role(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -687,14 +639,12 @@ async def test_change_role(self, service: MockApp): ) assert service.change_role_called is True - @pytest.mark.asyncio async def test_check_permissions(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) permissions = await client.check_permissions(permissions=PERMISSIONS) assert permissions == PERMISSIONS - @pytest.mark.asyncio async def test_list_authorizations(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -702,7 +652,6 @@ async def test_list_authorizations(self, service: MockApp): assert service.resource_ids == IDS assert authorizations == AUTHORIZATIONS - @pytest.mark.asyncio async def test_get_registry_item(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -712,7 +661,6 @@ async def test_get_registry_item(self, service: MockApp): assert item.visibility == ITEM.visibility assert item.total_robot_usage == ITEM.total_robot_usage - @pytest.mark.asyncio async def test_create_registry_item(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -721,7 +669,6 @@ async def test_create_registry_item(self, service: MockApp): assert service.package_type == PACKAGE_TYPE assert service.organization_id == ID - @pytest.mark.asyncio async def test_update_registry_item(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -731,7 +678,6 @@ async def test_update_registry_item(self, service: MockApp): assert service.description == DESCRIPTION assert service.visibility == VISIBILITY - @pytest.mark.asyncio async def test_list_registry_items(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -740,7 +686,6 @@ async def test_list_registry_items(self, service: MockApp): assert items[0].public_namespace == PUBLIC_NAMESPACE assert items[0].total_external_organization_usage == USAGE - @pytest.mark.asyncio async def test_delete_registry_item(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -748,7 +693,6 @@ async def test_delete_registry_item(self, service: MockApp): assert service.id == ID assert service.delete_item_called is True - @pytest.mark.asyncio async def test_create_module(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -757,7 +701,6 @@ async def test_create_module(self, service: MockApp): assert id == ID assert url == URL - @pytest.mark.asyncio async def test_update_module(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -772,7 +715,6 @@ async def test_update_module(self, service: MockApp): assert service.entrypoint == ENTRYPOINT assert service.visibility == VISIBILITY - @pytest.mark.asyncio async def test_created_module(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -783,7 +725,6 @@ async def test_created_module(self, service: MockApp): assert service.entrypoint == ENTRYPOINT assert url == URL - @pytest.mark.asyncio async def test_upload_module_file(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -792,7 +733,6 @@ async def test_upload_module_file(self, service: MockApp): assert service.module_file_info == MODULE_FILE_INFO assert service.file == FILE - @pytest.mark.asyncio async def test_get_module(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -800,21 +740,18 @@ async def test_get_module(self, service: MockApp): assert service.module_id == ID assert module == MODULE - @pytest.mark.asyncio async def test_list_modules(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) modules = await client.list_modules(org_id=ID) assert modules == MODULES - @pytest.mark.asyncio async def test_create_key(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) api_key = await client.create_key(org_id=ID, authorizations=API_KEY_AUTHORIZATIONS, name=NAME) assert (API_KEY, ID) == api_key - @pytest.mark.asyncio async def test_delete_key(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) @@ -822,21 +759,18 @@ async def test_delete_key(self, service: MockApp): assert service.id == ID assert service.delete_key_called is True - @pytest.mark.asyncio async def test_create_key_from_existing_key_authorizations(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) api_key = await client.create_key_from_existing_key_authorizations(id=ID) assert (API_KEY, ID) == api_key - @pytest.mark.asyncio async def list_keys(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) api_keys = await client.list_keys(org_id=ID) assert api_keys == API_KEYS_WITH_AUTHORIZATIONS - @pytest.mark.asyncio async def test_rotate_key(self, service: MockApp): async with ChannelFor([service]) as channel: client = AppClient(channel, METADATA, ID) diff --git a/tests/test_arm.py b/tests/test_arm.py index c98456f26..231ebf0b4 100644 --- a/tests/test_arm.py +++ b/tests/test_arm.py @@ -1,4 +1,3 @@ -import pytest from grpclib.testing import ChannelFor from viam.components.arm import ArmClient, ArmStatus, KinematicsFileFormat, create_status @@ -38,64 +37,53 @@ class TestArm: joint_pos = JointPositions(values=[1, 8, 2]) kinematics = (KinematicsFileFormat.KINEMATICS_FILE_FORMAT_SVA, b"\x00\x01\x02") - @pytest.mark.asyncio async def test_move_to_position(self): await self.arm.move_to_position(self.pose) assert self.arm.position == self.pose - @pytest.mark.asyncio async def test_get_end_position(self): pos = await self.arm.get_end_position() assert pos == self.pose - @pytest.mark.asyncio async def test_move_to_joint_positions(self): await self.arm.move_to_joint_positions(self.joint_pos) assert self.arm.joint_positions == self.joint_pos - @pytest.mark.asyncio async def test_get_joint_positions(self): jp = await self.arm.get_joint_positions() assert jp == self.joint_pos - @pytest.mark.asyncio async def test_stop(self): assert self.arm.is_stopped is False await self.arm.stop() assert self.arm.is_stopped is True - @pytest.mark.asyncio async def test_is_moving(self): await self.arm.move_to_position(self.pose) assert await self.arm.is_moving() await self.arm.stop() assert not await self.arm.is_moving() - @pytest.mark.asyncio async def test_get_kinematics(self): kd = await self.arm.get_kinematics(extra={"1": "2"}) assert kd == self.kinematics assert self.arm.extra == {"1": "2"} - @pytest.mark.asyncio async def test_get_geometries(self): geometries = await self.arm.get_geometries() assert geometries == GEOMETRIES - @pytest.mark.asyncio async def test_do(self): command = {"command": "args"} resp = await self.arm.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_status(self): await self.arm.move_to_position(self.pose) status = await create_status(self.arm) assert status.name == MockArm.get_resource_name(self.arm.name) assert status.status == message_to_struct(ArmStatus(end_position=self.pose, joint_positions=self.joint_pos, is_moving=True)) - @pytest.mark.asyncio async def test_extra(self): await self.arm.get_end_position(extra={"foo": "bar"}) assert self.arm.extra == {"foo": "bar"} @@ -112,7 +100,6 @@ def setup_class(cls): cls.joint_pos = JointPositions(values=[1, 8, 2]) cls.kinematics = (KinematicsFileFormat.KINEMATICS_FILE_FORMAT_SVA, b"\x00\x01\x02") - @pytest.mark.asyncio async def test_move_to_position(self): async with ChannelFor([self.service]) as channel: client = ArmServiceStub(channel) @@ -120,7 +107,6 @@ async def test_move_to_position(self): await client.MoveToPosition(request) assert self.arm.position == self.pose - @pytest.mark.asyncio async def test_get_end_position(self): async with ChannelFor([self.service]) as channel: client = ArmServiceStub(channel) @@ -128,7 +114,6 @@ async def test_get_end_position(self): response: GetEndPositionResponse = await client.GetEndPosition(request) assert response.pose == self.pose - @pytest.mark.asyncio async def test_move_to_joint_positions(self): async with ChannelFor([self.service]) as channel: client = ArmServiceStub(channel) @@ -136,7 +121,6 @@ async def test_move_to_joint_positions(self): await client.MoveToJointPositions(request) assert self.arm.joint_positions == self.joint_pos - @pytest.mark.asyncio async def test_get_joint_positions(self): async with ChannelFor([self.service]) as channel: client = ArmServiceStub(channel) @@ -144,7 +128,6 @@ async def test_get_joint_positions(self): response: GetJointPositionsResponse = await client.GetJointPositions(request) assert response.positions == self.joint_pos - @pytest.mark.asyncio async def test_stop(self): async with ChannelFor([self.service]) as channel: assert self.arm.is_stopped is False @@ -155,7 +138,6 @@ async def test_stop(self): assert self.arm.is_stopped is True assert self.arm.timeout == loose_approx(4.4) - @pytest.mark.asyncio async def test_is_moving(self): async with ChannelFor([self.service]) as channel: assert self.arm.is_stopped is True @@ -165,7 +147,6 @@ async def test_is_moving(self): response: IsMovingResponse = await client.IsMoving(request) assert response.is_moving is True - @pytest.mark.asyncio async def test_do(self): async with ChannelFor([self.service]) as channel: client = ArmServiceStub(channel) @@ -175,7 +156,6 @@ async def test_do(self): result = struct_to_dict(response.result) assert result == {"command": command} - @pytest.mark.asyncio async def test_get_kinematics(self): async with ChannelFor([self.service]) as channel: client = ArmServiceStub(channel) @@ -183,7 +163,6 @@ async def test_get_kinematics(self): response: GetKinematicsResponse = await client.GetKinematics(request) assert (response.format, response.kinematics_data) == self.kinematics - @pytest.mark.asyncio async def test_get_geometries(self): async with ChannelFor([self.service]) as channel: client = ArmServiceStub(channel) @@ -191,7 +170,6 @@ async def test_get_geometries(self): response: GetGeometriesResponse = await client.GetGeometries(request) assert [geometry for geometry in response.geometries] == GEOMETRIES - @pytest.mark.asyncio async def test_extra(self): async with ChannelFor([self.service]) as channel: client = ArmServiceStub(channel) @@ -212,35 +190,30 @@ def setup_class(cls): cls.joint_pos = JointPositions(values=[1, 8, 2]) cls.kinematics = (KinematicsFileFormat.KINEMATICS_FILE_FORMAT_SVA, b"\x00\x01\x02") - @pytest.mark.asyncio async def test_move_to_position(self): async with ChannelFor([self.service]) as channel: client = ArmClient(self.name, channel) await client.move_to_position(self.pose) assert self.arm.position == self.pose - @pytest.mark.asyncio async def test_get_end_position(self): async with ChannelFor([self.service]) as channel: client = ArmClient(self.name, channel) pos = await client.get_end_position() assert pos == self.pose - @pytest.mark.asyncio async def test_move_to_joint_positions(self): async with ChannelFor([self.service]) as channel: client = ArmClient(self.name, channel) await client.move_to_joint_positions(self.joint_pos) assert self.arm.joint_positions == self.joint_pos - @pytest.mark.asyncio async def test_get_joint_positions(self): async with ChannelFor([self.service]) as channel: client = ArmClient(self.name, channel) jp = await client.get_joint_positions() assert jp == self.joint_pos - @pytest.mark.asyncio async def test_stop(self): async with ChannelFor([self.service]) as channel: assert self.arm.is_stopped is False @@ -250,7 +223,6 @@ async def test_stop(self): assert self.arm.is_stopped is True assert self.arm.timeout == loose_approx(1.82) - @pytest.mark.asyncio async def test_is_moving(self): async with ChannelFor([self.service]) as channel: client = ArmClient(self.name, channel) @@ -258,7 +230,6 @@ async def test_is_moving(self): self.arm.is_stopped = False assert await client.is_moving() is True - @pytest.mark.asyncio async def test_get_kinematics(self): async with ChannelFor([self.service]) as channel: client = ArmClient(self.name, channel) @@ -266,14 +237,12 @@ async def test_get_kinematics(self): assert kd == self.kinematics assert self.arm.extra == {"1": "2"} - @pytest.mark.asyncio async def test_get_geometries(self): async with ChannelFor([self.service]) as channel: client = ArmClient(self.name, channel) geometries = await client.get_geometries() assert geometries == GEOMETRIES - @pytest.mark.asyncio async def test_do(self): async with ChannelFor([self.service]) as channel: client = ArmClient(self.name, channel) @@ -281,7 +250,6 @@ async def test_do(self): resp = await client.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_extra(self): async with ChannelFor([self.service]) as channel: client = ArmClient(self.name, channel) diff --git a/tests/test_audio_input.py b/tests/test_audio_input.py index 9fbf128bc..298a0f66f 100644 --- a/tests/test_audio_input.py +++ b/tests/test_audio_input.py @@ -53,7 +53,6 @@ def generic_service(audio_input: MockAudioInput) -> GenericRPCService: class TestAudioInput: - @pytest.mark.asyncio async def test_stream(self, audio_input: AudioInput): idx = 0 async for audio in await audio_input.stream(): @@ -66,24 +65,20 @@ async def test_stream(self, audio_input: AudioInput): idx += 1 - @pytest.mark.asyncio async def test_get_properties(self, audio_input: AudioInput): assert await audio_input.get_properties() == PROPERTIES - @pytest.mark.asyncio async def test_do(self, audio_input: AudioInput): command = {"command": "args"} resp = await audio_input.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, audio_input: AudioInput): geometries = await audio_input.get_geometries() assert geometries == GEOMETRIES class TestService: - @pytest.mark.asyncio async def test_chunks(self, audio_input: AudioInput, service: AudioInputRPCService): async with ChannelFor([service]) as channel: client = AudioInputServiceStub(channel) @@ -107,7 +102,6 @@ async def test_chunks(self, audio_input: AudioInput, service: AudioInputRPCServi assert response.chunk.length == 182 idx += 1 - @pytest.mark.asyncio async def test_properties(self, audio_input: MockAudioInput, service: AudioInputRPCService): assert audio_input.timeout is None async with ChannelFor([service]) as channel: @@ -116,14 +110,12 @@ async def test_properties(self, audio_input: MockAudioInput, service: AudioInput assert AudioInput.Properties.from_proto(response) == PROPERTIES assert audio_input.timeout == loose_approx(1.82) - @pytest.mark.asyncio async def test_record(self, service: AudioInputRPCService): async with ChannelFor([service]) as channel: client = AudioInputServiceStub(channel) with pytest.raises(GRPCError, match=r".*Status.UNIMPLEMENTED.*"): await client.Record(RecordRequest()) - @pytest.mark.asyncio async def test_do(self, audio_input: MockAudioInput, service: AudioInputRPCService): async with ChannelFor([service]) as channel: client = AudioInputServiceStub(channel) @@ -133,7 +125,6 @@ async def test_do(self, audio_input: MockAudioInput, service: AudioInputRPCServi result = struct_to_dict(response.result) assert result == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, audio_input: MockAudioInput, service: AudioInputRPCService): async with ChannelFor([service]) as channel: client = AudioInputServiceStub(channel) @@ -143,7 +134,6 @@ async def test_get_geometries(self, audio_input: MockAudioInput, service: AudioI class TestClient: - @pytest.mark.asyncio async def test_stream(self, audio_input: AudioInput, service: AudioInputRPCService): async with ChannelFor([service]) as channel: client = AudioInputClient(audio_input.name, channel) @@ -159,7 +149,6 @@ async def test_stream(self, audio_input: AudioInput, service: AudioInputRPCServi idx += 1 - @pytest.mark.asyncio async def test_get_properties(self, audio_input: MockAudioInput, service: AudioInputRPCService): assert audio_input.timeout is None async with ChannelFor([service]) as channel: @@ -167,7 +156,6 @@ async def test_get_properties(self, audio_input: MockAudioInput, service: AudioI assert await client.get_properties(timeout=4.4) == PROPERTIES assert audio_input.timeout == loose_approx(4.4) - @pytest.mark.asyncio async def test_do(self, audio_input: AudioInput, service: AudioInputRPCService): async with ChannelFor([service]) as channel: client = AudioInputClient(audio_input.name, channel) @@ -175,7 +163,6 @@ async def test_do(self, audio_input: AudioInput, service: AudioInputRPCService): resp = await client.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, audio_input: AudioInput, service: AudioInputRPCService): async with ChannelFor([service]) as channel: client = AudioInputClient(audio_input.name, channel) diff --git a/tests/test_base.py b/tests/test_base.py index 3005f181c..707ef835a 100644 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -42,7 +42,6 @@ def generic_service(base: MockBase) -> GenericRPCService: class TestBase: - @pytest.mark.asyncio async def test_move_straight(self, base: MockBase): distances = [randint(-50, 50) for _ in range(4)] velocities = [random() + 1 for _ in range(4)] @@ -51,7 +50,6 @@ async def test_move_straight(self, base: MockBase): await base.move_straight(d, v) assert base.position == sum(distances[: i + 1]) - @pytest.mark.asyncio async def test_spin(self, base: MockBase): angles = [randint(-180, 180) for _ in range(4)] velocities = [random() + 1 for _ in range(4)] @@ -60,7 +58,6 @@ async def test_spin(self, base: MockBase): await base.spin(a, v) assert base.angle == sum(angles[: i + 1]) - @pytest.mark.asyncio async def test_stop(self, base: MockBase): assert base.stopped is True @@ -79,7 +76,6 @@ async def test_stop(self, base: MockBase): await base.spin(0, 0) assert base.stopped is True - @pytest.mark.asyncio async def test_set_power(self, base: MockBase): assert base.linear_pwr == Vector3(x=0, y=0, z=0) assert base.angular_pwr == Vector3(x=0, y=0, z=0) @@ -89,7 +85,6 @@ async def test_set_power(self, base: MockBase): assert base.linear_pwr == Vector3(x=1, y=2, z=3) assert base.angular_pwr == Vector3(x=4, y=5, z=6) - @pytest.mark.asyncio async def test_velocity(self, base: MockBase): assert base.linear_vel == Vector3(x=0, y=0, z=0) assert base.angular_vel == Vector3(x=0, y=0, z=0) @@ -99,7 +94,6 @@ async def test_velocity(self, base: MockBase): assert base.linear_vel == Vector3(x=1, y=2, z=3) assert base.angular_vel == Vector3(x=4, y=5, z=6) - @pytest.mark.asyncio async def test_is_moving(self, base: MockBase): await base.move_straight(1, 1) assert await base.is_moving() @@ -107,41 +101,35 @@ async def test_is_moving(self, base: MockBase): assert base.stopped is True assert not await base.is_moving() - @pytest.mark.asyncio async def test_get_properties(self, base: MockBase): properties = await base.get_properties() assert properties.width_meters == 1.0 assert properties.turning_radius_meters == 2.0 assert properties.wheel_circumference_meters == 3.0 - @pytest.mark.asyncio async def test_do(self, base: MockBase): command = {"command": "args"} resp = await base.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_status(self, base: MockBase): await base.move_straight(1, 1) status = await create_status(base) assert status.name == base.get_resource_name(base.name) assert status.status == message_to_struct(ActuatorStatus(is_moving=True)) - @pytest.mark.asyncio async def test_extra(self, base: MockBase): assert base.extra is None extra = {"foo": "bar", "baz": [1, 2, 3]} await base.move_straight(1, 1, extra=extra) assert base.extra == extra - @pytest.mark.asyncio async def test_get_geometries(self, base: MockBase): geometries = await base.get_geometries() assert geometries == GEOMETRIES class TestService: - @pytest.mark.asyncio async def test_move_straight(self, base: MockBase, service: BaseRPCService): distances = [randint(-50, 50) for _ in range(4)] velocities = [random() + 1 for _ in range(4)] @@ -157,7 +145,6 @@ async def test_move_straight(self, base: MockBase, service: BaseRPCService): await client.MoveStraight(request) assert base.position == sum(distances[: i + 1]) - @pytest.mark.asyncio async def test_spin(self, base: MockBase, service: BaseRPCService): angles = [randint(-180, 180) for _ in range(4)] velocities = [random() + 1 for _ in range(4)] @@ -173,7 +160,6 @@ async def test_spin(self, base: MockBase, service: BaseRPCService): await client.Spin(request) assert base.angle == sum(angles[: i + 1]) - @pytest.mark.asyncio async def test_set_power(self, base: MockBase, service: BaseRPCService): async with ChannelFor([service]) as channel: client = BaseServiceStub(channel) @@ -186,7 +172,6 @@ async def test_set_power(self, base: MockBase, service: BaseRPCService): assert base.linear_pwr == Vector3(x=1, y=2, z=3) assert base.angular_pwr == Vector3(x=4, y=5, z=6) - @pytest.mark.asyncio async def test_set_velocity(self, base: MockBase, service: BaseRPCService): async with ChannelFor([service]) as channel: client = BaseServiceStub(channel) @@ -199,7 +184,6 @@ async def test_set_velocity(self, base: MockBase, service: BaseRPCService): assert base.linear_vel == Vector3(x=1, y=2, z=3) assert base.angular_vel == Vector3(x=4, y=5, z=6) - @pytest.mark.asyncio async def test_stop(self, base: MockBase, service: BaseRPCService): async with ChannelFor([service]) as channel: client = BaseServiceStub(channel) @@ -248,7 +232,6 @@ async def test_stop(self, base: MockBase, service: BaseRPCService): await client.Spin(request) assert base.stopped is True - @pytest.mark.asyncio async def test_is_moving(self, base: MockBase, service: BaseRPCService): async with ChannelFor([service]) as channel: assert base.stopped is True @@ -258,7 +241,6 @@ async def test_is_moving(self, base: MockBase, service: BaseRPCService): response: IsMovingResponse = await client.IsMoving(request) assert response.is_moving is True - @pytest.mark.asyncio async def test_extra(self, base: MockBase, service: BaseRPCService): async with ChannelFor([service]) as channel: assert base.extra is None @@ -268,7 +250,6 @@ async def test_extra(self, base: MockBase, service: BaseRPCService): await client.MoveStraight(request) assert base.extra == extra - @pytest.mark.asyncio async def test_do(self, base: MockBase, service: BaseRPCService): async with ChannelFor([service]) as channel: client = BaseServiceStub(channel) @@ -278,7 +259,6 @@ async def test_do(self, base: MockBase, service: BaseRPCService): result = struct_to_dict(response.result) assert result == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, base: MockBase, service: BaseRPCService): async with ChannelFor([service]) as channel: client = BaseServiceStub(channel) @@ -288,7 +268,6 @@ async def test_get_geometries(self, base: MockBase, service: BaseRPCService): class TestClient: - @pytest.mark.asyncio async def test_move_straight(self, base: MockBase, service: BaseRPCService): distances = [randint(-50, 50) for _ in range(4)] velocities = [random() + 1 for _ in range(4)] @@ -299,7 +278,6 @@ async def test_move_straight(self, base: MockBase, service: BaseRPCService): await client.move_straight(d, v) assert base.position == sum(distances[: i + 1]) - @pytest.mark.asyncio async def test_spin(self, base: MockBase, service: BaseRPCService): angles = [randint(-180, 180) for _ in range(4)] velocities = [random() + 1 for _ in range(4)] @@ -310,7 +288,6 @@ async def test_spin(self, base: MockBase, service: BaseRPCService): await client.spin(a, v) assert base.angle == sum(angles[: i + 1]) - @pytest.mark.asyncio async def test_set_power(self, base: MockBase, service: BaseRPCService): async with ChannelFor([service]) as channel: client = BaseClient(base.name, channel) @@ -322,7 +299,6 @@ async def test_set_power(self, base: MockBase, service: BaseRPCService): assert base.linear_pwr == Vector3(x=1, y=2, z=3) assert base.angular_pwr == Vector3(x=4, y=5, z=6) - @pytest.mark.asyncio async def test_set_velocity(self, base: MockBase, service: BaseRPCService): async with ChannelFor([service]) as channel: client = BaseClient(base.name, channel) @@ -334,7 +310,6 @@ async def test_set_velocity(self, base: MockBase, service: BaseRPCService): assert base.linear_vel == Vector3(x=1, y=2, z=3) assert base.angular_vel == Vector3(x=4, y=5, z=6) - @pytest.mark.asyncio async def test_stop(self, base: MockBase, service: BaseRPCService): assert base.timeout is None async with ChannelFor([service]) as channel: @@ -358,7 +333,6 @@ async def test_stop(self, base: MockBase, service: BaseRPCService): await client.spin(0, 0) assert base.stopped is True - @pytest.mark.asyncio async def test_is_moving(self, base: MockBase, service: BaseRPCService): async with ChannelFor([service]) as channel: assert base.stopped is True @@ -366,7 +340,6 @@ async def test_is_moving(self, base: MockBase, service: BaseRPCService): client = BaseClient(base.name, channel) assert await client.is_moving() is True - @pytest.mark.asyncio async def test_do(self, base: MockBase, service: BaseRPCService): async with ChannelFor([service]) as channel: client = BaseClient(base.name, channel) @@ -374,7 +347,6 @@ async def test_do(self, base: MockBase, service: BaseRPCService): resp = await client.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_extra(self, base: MockBase, service: BaseRPCService): async with ChannelFor([service]) as channel: assert base.extra is None @@ -383,7 +355,6 @@ async def test_extra(self, base: MockBase, service: BaseRPCService): await client.move_straight(1, 1, extra=extra) assert base.extra == extra - @pytest.mark.asyncio async def test_get_geometries(self, base: MockBase, service: BaseRPCService): async with ChannelFor([service]) as channel: client = BaseClient(base.name, channel) diff --git a/tests/test_billing_client.py b/tests/test_billing_client.py index c46004f2b..2d5c093cc 100644 --- a/tests/test_billing_client.py +++ b/tests/test_billing_client.py @@ -79,7 +79,6 @@ def service() -> MockBilling: class TestClient: - @pytest.mark.asyncio async def test_get_current_month_usage(self, service: MockBilling): async with ChannelFor([service]) as channel: org_id = "foo" @@ -88,11 +87,9 @@ async def test_get_current_month_usage(self, service: MockBilling): assert curr_month_usage == CURR_MONTH_USAGE assert service.org_id == org_id - @pytest.mark.asyncio async def test_get_invoice_pdf(self, service: MockBilling): assert True - @pytest.mark.asyncio async def test_get_invoices_summary(self, service: MockBilling): async with ChannelFor([service]) as channel: org_id = "bar" @@ -101,7 +98,6 @@ async def test_get_invoices_summary(self, service: MockBilling): assert invoices_summary == INVOICES_SUMMARY assert service.org_id == org_id - @pytest.mark.asyncio async def test_get_org_billing_information(self, service: MockBilling): async with ChannelFor([service]) as channel: org_id = "baz" diff --git a/tests/test_board.py b/tests/test_board.py index 267a8f7bd..6ba81dece 100644 --- a/tests/test_board.py +++ b/tests/test_board.py @@ -68,7 +68,6 @@ def generic_service(board: MockBoard) -> GenericRPCService: class TestBoard: - @pytest.mark.asyncio async def test_analog_by_name(self, board: MockBoard): with pytest.raises(ResourceNotFoundError): await board.analog_by_name("does not exist") @@ -76,7 +75,6 @@ async def test_analog_by_name(self, board: MockBoard): reader = await board.analog_by_name("reader1") assert reader.name == "reader1" - @pytest.mark.asyncio async def test_digital_interrupt_by_name(self, board: MockBoard): with pytest.raises(ResourceNotFoundError): await board.digital_interrupt_by_name("does not exist") @@ -84,7 +82,6 @@ async def test_digital_interrupt_by_name(self, board: MockBoard): interrupt = await board.digital_interrupt_by_name("interrupt1") assert interrupt.name == "interrupt1" - @pytest.mark.asyncio async def test_gpio_pin_by_name(self, board: MockBoard): with pytest.raises(ResourceNotFoundError): await board.digital_interrupt_by_name("does not exist") @@ -92,23 +89,19 @@ async def test_gpio_pin_by_name(self, board: MockBoard): pin = await board.gpio_pin_by_name("pin1") assert pin.name == "pin1" - @pytest.mark.asyncio async def test_analog_names(self, board: MockBoard): names = await board.analog_names() assert names == ["reader1", "writer1"] - @pytest.mark.asyncio async def test_digital_interrupt_names(self, board: MockBoard): names = await board.digital_interrupt_names() assert names == ["interrupt1"] - @pytest.mark.asyncio async def test_do(self, board: MockBoard): command = {"command": "args"} resp = await board.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_status(self, board: MockBoard): status = await create_status(board) read1 = await board.analogs["reader1"].read() @@ -124,7 +117,6 @@ async def test_status(self, board: MockBoard): ) ) - @pytest.mark.asyncio async def test_set_power_mode(self, board: MockBoard): pm_mode = PowerMode.POWER_MODE_OFFLINE_DEEP pm_duration = timedelta(minutes=1) @@ -133,12 +125,10 @@ async def test_set_power_mode(self, board: MockBoard): assert board.power_mode == pm_mode assert board.power_mode_duration == pm_duration - @pytest.mark.asyncio async def test_get_geometries(self, board: MockBoard): geometries = await board.get_geometries() assert geometries == GEOMETRIES - @pytest.mark.asyncio async def test_write_analog(self, board: MockBoard): value = 10 pin = "writer1" @@ -148,7 +138,6 @@ async def test_write_analog(self, board: MockBoard): assert writer.value == value assert writer.name == pin - @pytest.mark.asyncio async def test_stream_ticks(self, board: MockBoard): int1 = board.digital_interrupts["interrupt1"] async for tick in await board.stream_ticks([int1]): @@ -158,7 +147,6 @@ async def test_stream_ticks(self, board: MockBoard): class TestService: - @pytest.mark.asyncio async def test_read_analog(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardServiceStub(channel) @@ -179,7 +167,6 @@ async def test_read_analog(self, board: MockBoard, service: BoardRPCService): assert reader.extra == extra assert reader.timeout == loose_approx(4.4) - @pytest.mark.asyncio async def test_get_digital_interrupt_value(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardServiceStub(channel) @@ -192,7 +179,6 @@ async def test_get_digital_interrupt_value(self, board: MockBoard, service: Boar response: GetDigitalInterruptValueResponse = await client.GetDigitalInterruptValue(request) assert response.value == 0 - @pytest.mark.asyncio async def test_set_gpio(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardServiceStub(channel) @@ -206,7 +192,6 @@ async def test_set_gpio(self, board: MockBoard, service: BoardRPCService): assert pin.extra == extra assert pin.timeout == loose_approx(4.1) - @pytest.mark.asyncio async def test_get_gpio(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardServiceStub(channel) @@ -224,7 +209,6 @@ async def test_get_gpio(self, board: MockBoard, service: BoardRPCService): assert pin.extra == extra assert pin.timeout == loose_approx(1.82) - @pytest.mark.asyncio async def test_pwm(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardServiceStub(channel) @@ -238,7 +222,6 @@ async def test_pwm(self, board: MockBoard, service: BoardRPCService): assert pin.extra == extra assert pin.timeout == loose_approx(7.86) - @pytest.mark.asyncio async def test_set_pwm(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardServiceStub(channel) @@ -252,7 +235,6 @@ async def test_set_pwm(self, board: MockBoard, service: BoardRPCService): assert pin.extra == extra assert pin.timeout == loose_approx(1.213) - @pytest.mark.asyncio async def test_pwm_frequency(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardServiceStub(channel) @@ -266,7 +248,6 @@ async def test_pwm_frequency(self, board: MockBoard, service: BoardRPCService): assert pin.extra == extra assert pin.timeout == loose_approx(182) - @pytest.mark.asyncio async def test_set_pwm_freq(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardServiceStub(channel) @@ -280,7 +261,6 @@ async def test_set_pwm_freq(self, board: MockBoard, service: BoardRPCService): assert pin.extra == extra assert pin.timeout is None - @pytest.mark.asyncio async def test_do(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardServiceStub(channel) @@ -290,7 +270,6 @@ async def test_do(self, board: MockBoard, service: BoardRPCService): result = struct_to_dict(response.result) assert result == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardServiceStub(channel) @@ -298,7 +277,6 @@ async def test_get_geometries(self, board: MockBoard, service: BoardRPCService): response: GetGeometriesResponse = await client.GetGeometries(request) assert [geometry for geometry in response.geometries] == GEOMETRIES - @pytest.mark.asyncio async def test_set_power_mode(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardServiceStub(channel) @@ -312,7 +290,6 @@ async def test_set_power_mode(self, board: MockBoard, service: BoardRPCService): assert board.power_mode == PowerMode.POWER_MODE_OFFLINE_DEEP assert board.power_mode_duration == pm_duration.ToTimedelta() - @pytest.mark.asyncio async def test_write_analog(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardServiceStub(channel) @@ -326,7 +303,7 @@ async def test_write_analog(self, board: MockBoard, service: BoardRPCService): assert mock_analog.value == value assert mock_analog.name == pin - # @pytest.mark.asyncio + # async def test_stream_ticks(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardServiceStub(channel) @@ -344,7 +321,6 @@ async def test_stream_ticks(self, board: MockBoard, service: BoardRPCService): class TestClient: - @pytest.mark.asyncio async def test_analog_by_name(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardClient(name=board.name, channel=channel) @@ -357,7 +333,6 @@ async def test_analog_by_name(self, board: MockBoard, service: BoardRPCService): reader = await client.analog_by_name("reader1") assert reader.name == "reader1" - @pytest.mark.asyncio async def test_digital_interrupt_by_name(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardClient(name=board.name, channel=channel) @@ -370,7 +345,6 @@ async def test_digital_interrupt_by_name(self, board: MockBoard, service: BoardR interrupt = await client.digital_interrupt_by_name("interrupt1") assert interrupt.name == "interrupt1" - @pytest.mark.asyncio async def test_gpio_pin_by_name(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardClient(name=board.name, channel=channel) @@ -383,7 +357,6 @@ async def test_gpio_pin_by_name(self, board: MockBoard, service: BoardRPCService pin = await client.gpio_pin_by_name("pin1") assert pin.name == "pin1" - @pytest.mark.asyncio async def test_analog_names(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardClient(name=board.name, channel=channel) @@ -394,7 +367,6 @@ async def test_analog_names(self, board: MockBoard, service: BoardRPCService): names = await client.analog_names() assert names == ["reader1"] - @pytest.mark.asyncio async def test_digital_interrupt_names(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardClient(name=board.name, channel=channel) @@ -405,7 +377,6 @@ async def test_digital_interrupt_names(self, board: MockBoard, service: BoardRPC names = await client.digital_interrupt_names() assert names == ["interrupt1"] - @pytest.mark.asyncio async def test_do(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardClient(board.name, channel) @@ -413,7 +384,6 @@ async def test_do(self, board: MockBoard, service: BoardRPCService): resp = await client.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_set_power_mode(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardClient(name=board.name, channel=channel) @@ -426,7 +396,6 @@ async def test_set_power_mode(self, board: MockBoard, service: BoardRPCService): pm_duration.FromTimedelta(pm_timedelta) assert board.power_mode_duration == pm_duration.ToTimedelta() - @pytest.mark.asyncio async def test_extra(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardClient(board.name, channel) @@ -435,7 +404,6 @@ async def test_extra(self, board: MockBoard, service: BoardRPCService): class TestGPIOPinClient: - @pytest.mark.asyncio async def test_set(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardClient(name=board.name, channel=channel) @@ -448,7 +416,6 @@ async def test_set(self, board: MockBoard, service: BoardRPCService): assert mock_pin.extra == extra assert mock_pin.timeout == loose_approx(1.82) - @pytest.mark.asyncio async def test_get(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardClient(name=board.name, channel=channel) @@ -460,7 +427,6 @@ async def test_get(self, board: MockBoard, service: BoardRPCService): assert mock_pin.extra == extra assert mock_pin.timeout is None - @pytest.mark.asyncio async def test_set_pwm(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardClient(name=board.name, channel=channel) @@ -472,7 +438,6 @@ async def test_set_pwm(self, board: MockBoard, service: BoardRPCService): assert mock_pin.extra == extra assert mock_pin.timeout == loose_approx(3.23) - @pytest.mark.asyncio async def test_get_pwm(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardClient(name=board.name, channel=channel) @@ -484,7 +449,6 @@ async def test_get_pwm(self, board: MockBoard, service: BoardRPCService): assert mock_pin.extra == extra assert mock_pin.timeout == loose_approx(1.2345) - @pytest.mark.asyncio async def test_set_pwm_frequency(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardClient(name=board.name, channel=channel) @@ -496,7 +460,6 @@ async def test_set_pwm_frequency(self, board: MockBoard, service: BoardRPCServic assert mock_pin.extra == extra assert mock_pin.timeout == loose_approx(4.341) - @pytest.mark.asyncio async def test_get_pwm_freq(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardClient(name=board.name, channel=channel) @@ -508,7 +471,6 @@ async def test_get_pwm_freq(self, board: MockBoard, service: BoardRPCService): assert mock_pin.extra == extra assert mock_pin.timeout is None - @pytest.mark.asyncio async def test_write_analog(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardClient(name=board.name, channel=channel) @@ -521,7 +483,6 @@ async def test_write_analog(self, board: MockBoard, service: BoardRPCService): assert mock_analog.value == 42 assert mock_analog.extra == extra - @pytest.mark.asyncio async def test_stream_ticks(self, board: MockBoard, service: BoardRPCService): async with ChannelFor([service]) as channel: client = BoardClient(name=board.name, channel=channel) diff --git a/tests/test_camera.py b/tests/test_camera.py index 563ccfcc5..11820412a 100644 --- a/tests/test_camera.py +++ b/tests/test_camera.py @@ -84,7 +84,6 @@ def generic_service(camera: Camera) -> GenericRPCService: class TestCamera: - @pytest.mark.asyncio async def test_get_image(self, camera: MockCamera, image: ViamImage): img = await camera.get_image(CameraMimeType.PNG) assert img.data == image.data @@ -93,7 +92,6 @@ async def test_get_image(self, camera: MockCamera, image: ViamImage): img = await camera.get_image(CameraMimeType.PNG, {"1": 1}) assert camera.extra == {"1": 1} - @pytest.mark.asyncio async def test_get_images(self, camera: Camera, image: ViamImage, metadata: ResponseMetadata): imgs, md = await camera.get_images() assert isinstance(imgs[0], NamedImage) @@ -101,7 +99,6 @@ async def test_get_images(self, camera: Camera, image: ViamImage, metadata: Resp assert imgs[0].data == image.data assert md == metadata - @pytest.mark.asyncio async def test_get_point_cloud(self, camera: MockCamera, point_cloud: bytes): pc, _ = await camera.get_point_cloud() assert pc == point_cloud @@ -109,18 +106,15 @@ async def test_get_point_cloud(self, camera: MockCamera, point_cloud: bytes): await camera.get_point_cloud(extra={"1": 1}) assert camera.extra == {"1": 1} - @pytest.mark.asyncio async def test_get_properties(self, camera: Camera, properties: Camera.Properties): props = await camera.get_properties() assert props == properties - @pytest.mark.asyncio async def test_do(self, camera: Camera): command = {"command": "args"} resp = await camera.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_timeout(self, camera: MockCamera): assert camera.timeout is None @@ -133,14 +127,12 @@ async def test_timeout(self, camera: MockCamera): await camera.get_properties(timeout=7.86) assert camera.timeout == loose_approx(7.86) - @pytest.mark.asyncio async def test_get_geometries(self, camera: MockCamera): geometries = await camera.get_geometries() assert geometries == GEOMETRIES class TestService: - @pytest.mark.asyncio async def test_get_image(self, camera: MockCamera, service: CameraRPCService, image: ViamImage): assert camera.timeout is None async with ChannelFor([service]) as channel: @@ -158,7 +150,6 @@ async def test_get_image(self, camera: MockCamera, service: CameraRPCService, im assert response.image == image.data assert response.mime_type == image.mime_type - @pytest.mark.asyncio async def test_get_images(self, camera: MockCamera, service: CameraRPCService, metadata: ResponseMetadata): assert camera.timeout is None async with ChannelFor([service]) as channel: @@ -172,7 +163,6 @@ async def test_get_images(self, camera: MockCamera, service: CameraRPCService, m assert response.response_metadata == metadata assert camera.timeout == loose_approx(18.2) - @pytest.mark.asyncio async def test_render_frame(self, camera: MockCamera, service: CameraRPCService, image: ViamImage): assert camera.timeout is None async with ChannelFor([service]) as channel: @@ -183,7 +173,6 @@ async def test_render_frame(self, camera: MockCamera, service: CameraRPCService, assert response.data == image.data assert camera.timeout == loose_approx(4.4) - @pytest.mark.asyncio async def test_get_point_cloud(self, camera: MockCamera, service: CameraRPCService, point_cloud: bytes): assert camera.timeout is None async with ChannelFor([service]) as channel: @@ -193,7 +182,6 @@ async def test_get_point_cloud(self, camera: MockCamera, service: CameraRPCServi assert response.point_cloud == point_cloud assert camera.timeout == loose_approx(7.86) - @pytest.mark.asyncio async def test_get_properties(self, camera: MockCamera, service: CameraRPCService, properties: Camera.Properties): assert camera.timeout is None async with ChannelFor([service]) as channel: @@ -206,7 +194,6 @@ async def test_get_properties(self, camera: MockCamera, service: CameraRPCServic assert response.frame_rate == properties.frame_rate assert camera.timeout == loose_approx(5.43) - @pytest.mark.asyncio async def test_do(self, camera: MockCamera, service: CameraRPCService): async with ChannelFor([service]) as channel: client = CameraServiceStub(channel) @@ -216,7 +203,6 @@ async def test_do(self, camera: MockCamera, service: CameraRPCService): result = struct_to_dict(response.result) assert result == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, camera: MockCamera, service: CameraRPCService): async with ChannelFor([service]) as channel: client = CameraServiceStub(channel) @@ -226,7 +212,6 @@ async def test_get_geometries(self, camera: MockCamera, service: CameraRPCServic class TestClient: - @pytest.mark.asyncio async def test_get_image(self, camera: MockCamera, service: CameraRPCService, image: ViamImage): assert camera.timeout is None async with ChannelFor([service]) as channel: @@ -236,7 +221,6 @@ async def test_get_image(self, camera: MockCamera, service: CameraRPCService, im assert img.data == image.data assert img.mime_type == image.mime_type - @pytest.mark.asyncio async def test_get_images(self, camera: MockCamera, service: CameraRPCService, image: ViamImage, metadata: ResponseMetadata): assert camera.timeout is None async with ChannelFor([service]) as channel: @@ -249,7 +233,6 @@ async def test_get_images(self, camera: MockCamera, service: CameraRPCService, i assert md == metadata assert camera.timeout == loose_approx(1.82) - @pytest.mark.asyncio async def test_get_point_cloud(self, camera: MockCamera, service: CameraRPCService, point_cloud: bytes): assert camera.timeout is None async with ChannelFor([service]) as channel: @@ -258,7 +241,6 @@ async def test_get_point_cloud(self, camera: MockCamera, service: CameraRPCServi assert pc == point_cloud assert camera.timeout == loose_approx(4.4) - @pytest.mark.asyncio async def test_get_properties(self, camera: MockCamera, service: CameraRPCService, properties: Camera.Properties): assert camera.timeout is None async with ChannelFor([service]) as channel: @@ -267,7 +249,6 @@ async def test_get_properties(self, camera: MockCamera, service: CameraRPCServic assert props == properties assert camera.timeout == loose_approx(7.86) - @pytest.mark.asyncio async def test_do(self, service: CameraRPCService): async with ChannelFor([service]) as channel: client = CameraClient("camera", channel) @@ -275,7 +256,6 @@ async def test_do(self, service: CameraRPCService): resp = await client.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, service: CameraRPCService): async with ChannelFor([service]) as channel: client = CameraClient("camera", channel) diff --git a/tests/test_component_service_base.py b/tests/test_component_service_base.py index 132eeb38f..e49ec6713 100644 --- a/tests/test_component_service_base.py +++ b/tests/test_component_service_base.py @@ -16,7 +16,6 @@ from viam.resource.types import Subtype -@pytest.mark.asyncio async def test_cancellation_propagation(): class TestComponent(ComponentBase): SUBTYPE = Subtype("test", "test", "test") @@ -35,8 +34,7 @@ async def long_running(self, **kwargs) -> bool: return self.long_running_task_cancelled class TestClient(TestComponent, ReconfigurableResourceRPCClientBase): - def __init__(self, name: str, channel: Channel): - ... + def __init__(self, name: str, channel: Channel): ... class TestService(ResourceRPCServiceBase): RESOURCE_TYPE = TestComponent diff --git a/tests/test_data_client.py b/tests/test_data_client.py index f4d42e3c3..895b93fdf 100644 --- a/tests/test_data_client.py +++ b/tests/test_data_client.py @@ -126,7 +126,6 @@ def service() -> MockData: class TestClient: - @pytest.mark.asyncio async def test_tabular_data_by_filter(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -150,21 +149,18 @@ async def test_tabular_data_by_filter(self, service: MockData): assert last_response != "" self.assert_filter(filter=service.filter) - @pytest.mark.asyncio async def test_tabular_data_by_sql(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) response = await client.tabular_data_by_sql(ORG_ID, SQL_QUERY) assert response == TABULAR_QUERY_RESPONSE - @pytest.mark.asyncio async def test_tabular_data_by_mql(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) response = await client.tabular_data_by_mql(ORG_ID, MQL_BINARY) assert response == TABULAR_QUERY_RESPONSE - @pytest.mark.asyncio async def test_binary_data_by_filter(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -192,7 +188,6 @@ async def test_binary_data_by_filter(self, service: MockData): assert last_response != "" self.assert_filter(filter=service.filter) - @pytest.mark.asyncio async def test_binary_data_by_ids(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -200,14 +195,12 @@ async def test_binary_data_by_ids(self, service: MockData): assert binary_data == BINARY_RESPONSE self.assert_binary_ids(binary_ids=list(service.binary_ids)) - @pytest.mark.asyncio async def test_delete_tabular_data(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) deleted_count = await client.delete_tabular_data(organization_id=ORG_ID, delete_older_than_days=0) assert deleted_count == DELETE_REMOVE_RESPONSE - @pytest.mark.asyncio async def test_delete_binary_data_by_filter(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -215,7 +208,6 @@ async def test_delete_binary_data_by_filter(self, service: MockData): assert deleted_count == DELETE_REMOVE_RESPONSE self.assert_filter(filter=service.filter) - @pytest.mark.asyncio async def test_delete_binary_data_by_ids(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -223,7 +215,6 @@ async def test_delete_binary_data_by_ids(self, service: MockData): assert deleted_count == DELETE_REMOVE_RESPONSE self.assert_binary_ids(binary_ids=list(service.binary_ids)) - @pytest.mark.asyncio async def test_add_tags_to_binary_data_by_ids(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -231,7 +222,6 @@ async def test_add_tags_to_binary_data_by_ids(self, service: MockData): assert service.tags == TAGS self.assert_binary_ids(binary_ids=list(service.binary_ids)) - @pytest.mark.asyncio async def test_add_tags_to_binary_data_by_filter(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -239,7 +229,6 @@ async def test_add_tags_to_binary_data_by_filter(self, service: MockData): assert service.tags == TAGS self.assert_filter(filter=service.filter) - @pytest.mark.asyncio async def test_remove_tags_from_binary_data_by_ids(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -248,7 +237,6 @@ async def test_remove_tags_from_binary_data_by_ids(self, service: MockData): assert service.tags == TAGS self.assert_binary_ids(binary_ids=list(service.binary_ids)) - @pytest.mark.asyncio async def test_remove_tags_from_binary_data_by_filter(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -257,7 +245,6 @@ async def test_remove_tags_from_binary_data_by_filter(self, service: MockData): assert service.tags == TAGS self.assert_filter(filter=service.filter) - @pytest.mark.asyncio async def test_tags_by_filter(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -265,7 +252,6 @@ async def test_tags_by_filter(self, service: MockData): assert tags == TAGS_RESPONSE self.assert_filter(filter=service.filter) - @pytest.mark.asyncio async def test_add_bounding_box_to_image_by_id(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -279,7 +265,6 @@ async def test_add_bounding_box_to_image_by_id(self, service: MockData): ) assert bbox_label == BBOX_LABEL - @pytest.mark.asyncio async def test_remove_bounding_box_from_image_by_id(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -287,7 +272,6 @@ async def test_remove_bounding_box_from_image_by_id(self, service: MockData): assert service.removed_label == BBOX_LABEL assert service.removed_id == BINARY_ID - @pytest.mark.asyncio async def test_bounding_box_labels_by_filter(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -295,14 +279,12 @@ async def test_bounding_box_labels_by_filter(self, service: MockData): assert bbox_labels == BBOX_LABELS self.assert_filter(filter=service.filter) - @pytest.mark.asyncio async def test_get_database_connection(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) hostname = await client.get_database_connection(organization_id=ORG_ID) assert hostname == HOSTNAME_RESPONSE - @pytest.mark.asyncio async def test_configure_database_user(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -310,7 +292,6 @@ async def test_configure_database_user(self, service: MockData): assert service.organization_id == ORG_ID assert service.password == PASSWORD - @pytest.mark.asyncio async def test_add_binary_data_to_dataset_by_ids(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -318,7 +299,6 @@ async def test_add_binary_data_to_dataset_by_ids(self, service: MockData): assert service.added_data_ids == BINARY_IDS assert service.dataset_id == DATASET_ID - @pytest.mark.asyncio async def test_remove_binary_data_to_dataset_by_ids(self, service: MockData): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) diff --git a/tests/test_data_sync_client.py b/tests/test_data_sync_client.py index 63b335ef9..aaada156d 100644 --- a/tests/test_data_sync_client.py +++ b/tests/test_data_sync_client.py @@ -39,7 +39,6 @@ def service() -> MockDataSync: class TestClient: - @pytest.mark.asyncio async def test_binary_data_capture_upload(self, service: MockDataSync): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -73,7 +72,6 @@ async def test_binary_data_capture_upload(self, service: MockDataSync): ) assert service.metadata.file_extension == ".txt" - @pytest.mark.asyncio async def test_tabular_data_capture_upload(self, service: MockDataSync): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -91,7 +89,6 @@ async def test_tabular_data_capture_upload(self, service: MockDataSync): self.assert_metadata(metadata=service.metadata) assert file_id == FILE_UPLOAD_RESPONSE - @pytest.mark.asyncio async def test_file_upload(self, service: MockDataSync): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -112,7 +109,6 @@ async def test_file_upload(self, service: MockDataSync): assert service.metadata.file_extension == FILE_EXT assert service.binary_data == BINARY_DATA - @pytest.mark.asyncio async def test_file_upload_from_path(self, service: MockDataSync, tmp_path): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -133,7 +129,6 @@ async def test_file_upload_from_path(self, service: MockDataSync, tmp_path): assert service.metadata.file_extension == FILE_EXT assert service.binary_data == BINARY_DATA - @pytest.mark.asyncio async def test_streaming_data_capture_upload(self, service: MockDataSync): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) diff --git a/tests/test_dataset.py b/tests/test_dataset.py index 2f9097a55..86e0840ac 100644 --- a/tests/test_dataset.py +++ b/tests/test_dataset.py @@ -26,7 +26,6 @@ def service() -> MockDataset: class TestClient: - @pytest.mark.asyncio async def test_create_dataset(self, service: MockDataset): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -35,14 +34,12 @@ async def test_create_dataset(self, service: MockDataset): assert service.org_id == ORG_ID assert id == CREATED_ID - @pytest.mark.asyncio async def test_delete_dataset(self, service: MockDataset): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) await client.delete_dataset(ID) assert service.deleted_id == ID - @pytest.mark.asyncio async def test_list_datasets_by_ids(self, service: MockDataset): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -50,7 +47,6 @@ async def test_list_datasets_by_ids(self, service: MockDataset): assert service.ids == [ID] assert datasets == DATASETS - @pytest.mark.asyncio async def test_list_datasets_by_organization_id(self, service: MockDataset): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) @@ -58,7 +54,6 @@ async def test_list_datasets_by_organization_id(self, service: MockDataset): assert service.org_id == ORG_ID assert datasets == DATASETS - @pytest.mark.asyncio async def test_rename_dataset(self, service: MockDataset): async with ChannelFor([service]) as channel: client = DataClient(channel, DATA_SERVICE_METADATA) diff --git a/tests/test_encoder.py b/tests/test_encoder.py index a8417a440..f8f010b54 100644 --- a/tests/test_encoder.py +++ b/tests/test_encoder.py @@ -39,40 +39,34 @@ def generic_service(encoder: MockEncoder) -> GenericRPCService: class TestEncoder: - @pytest.mark.asyncio async def test_get_position(self, encoder: MockEncoder): pos, pos_type = await encoder.get_position(timeout=2.34) assert pos == 0 assert pos_type == PositionType.POSITION_TYPE_TICKS_COUNT assert encoder.timeout == loose_approx(2.34) - @pytest.mark.asyncio async def test_reset_position(self, encoder: MockEncoder): await encoder.reset_position(timeout=5.67) assert encoder.position == 0 assert encoder.timeout == loose_approx(5.67) - @pytest.mark.asyncio async def test_get_properties(self, encoder: MockEncoder): properties = await encoder.get_properties(timeout=6.78) assert properties.ticks_count_supported is True assert properties.angle_degrees_supported is False assert encoder.timeout == loose_approx(6.78) - @pytest.mark.asyncio async def test_do(self, encoder: MockEncoder): command = {"command": "args"} resp = await encoder.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, encoder: MockEncoder): geometries = await encoder.get_geometries() assert geometries == GEOMETRIES class TestService: - @pytest.mark.asyncio async def test_get_position(self, encoder: MockEncoder, service: EncoderRPCService): async with ChannelFor([service]) as channel: client = EncoderServiceStub(channel) @@ -82,7 +76,6 @@ async def test_get_position(self, encoder: MockEncoder, service: EncoderRPCServi assert response.position_type == PositionType.POSITION_TYPE_TICKS_COUNT assert encoder.timeout == loose_approx(2.34) - @pytest.mark.asyncio async def test_reset_position(self, encoder: MockEncoder, service: EncoderRPCService): async with ChannelFor([service]) as channel: client = EncoderServiceStub(channel) @@ -91,7 +84,6 @@ async def test_reset_position(self, encoder: MockEncoder, service: EncoderRPCSer assert encoder.position == 0 assert encoder.timeout == loose_approx(5.67) - @pytest.mark.asyncio async def test_get_properties(self, encoder: MockEncoder, service: EncoderRPCService): async with ChannelFor([service]) as channel: client = EncoderServiceStub(channel) @@ -101,7 +93,6 @@ async def test_get_properties(self, encoder: MockEncoder, service: EncoderRPCSer assert response.angle_degrees_supported is False assert encoder.timeout == loose_approx(6.78) - @pytest.mark.asyncio async def test_do(self, encoder: MockEncoder, service: EncoderRPCService): async with ChannelFor([service]) as channel: client = EncoderServiceStub(channel) @@ -111,7 +102,6 @@ async def test_do(self, encoder: MockEncoder, service: EncoderRPCService): result = struct_to_dict(response.result) assert result == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, encoder: MockEncoder, service: EncoderRPCService): async with ChannelFor([service]) as channel: client = EncoderServiceStub(channel) @@ -121,7 +111,6 @@ async def test_get_geometries(self, encoder: MockEncoder, service: EncoderRPCSer class TestClient: - @pytest.mark.asyncio async def test_get_position(self, encoder: MockEncoder, service: EncoderRPCService): async with ChannelFor([service]) as channel: client = EncoderClient(encoder.name, channel) @@ -130,7 +119,6 @@ async def test_get_position(self, encoder: MockEncoder, service: EncoderRPCServi assert pos_type == PositionType.POSITION_TYPE_TICKS_COUNT assert encoder.timeout == loose_approx(2.34) - @pytest.mark.asyncio async def test_reset_position(self, encoder: MockEncoder, service: EncoderRPCService): async with ChannelFor([service]) as channel: client = EncoderClient(encoder.name, channel) @@ -138,7 +126,6 @@ async def test_reset_position(self, encoder: MockEncoder, service: EncoderRPCSer assert encoder.timeout == loose_approx(5.67) assert encoder.position == 0 - @pytest.mark.asyncio async def test_get_properties(self, encoder: MockEncoder, service: EncoderRPCService): async with ChannelFor([service]) as channel: client = EncoderClient(encoder.name, channel) @@ -147,7 +134,6 @@ async def test_get_properties(self, encoder: MockEncoder, service: EncoderRPCSer assert properties.angle_degrees_supported is False assert encoder.timeout == loose_approx(6.78) - @pytest.mark.asyncio async def test_do(self, encoder: MockEncoder, service: EncoderRPCService): async with ChannelFor([service]) as channel: client = EncoderClient(encoder.name, channel) @@ -155,7 +141,6 @@ async def test_do(self, encoder: MockEncoder, service: EncoderRPCService): resp = await client.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, encoder: MockEncoder, service: EncoderRPCService): async with ChannelFor([service]) as channel: client = EncoderClient(encoder.name, channel) diff --git a/tests/test_gantry.py b/tests/test_gantry.py index ce331fe41..549f8d443 100644 --- a/tests/test_gantry.py +++ b/tests/test_gantry.py @@ -1,4 +1,3 @@ -import pytest from grpclib.testing import ChannelFor from viam.components.gantry import GantryClient, GantryStatus, create_status @@ -27,60 +26,50 @@ class TestGantry: gantry = MockGantry("gantry", [1, 2, 3], [4, 5, 6]) - @pytest.mark.asyncio async def test_get_position(self): pos = await self.gantry.get_position() assert pos == [1, 2, 3] - @pytest.mark.asyncio async def test_move_to_position(self): await self.gantry.move_to_position([1, 8, 2], [3, 9, 12]) assert self.gantry.position == [1, 8, 2] - @pytest.mark.asyncio async def test_get_lengths(self): lengths = await self.gantry.get_lengths() assert lengths == [4, 5, 6] - @pytest.mark.asyncio async def test_home(self): homed = await self.gantry.home() assert homed is True - @pytest.mark.asyncio async def test_do(self): command = {"command": "args"} resp = await self.gantry.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_stop(self): assert self.gantry.is_stopped is False await self.gantry.stop() assert self.gantry.is_stopped is True - @pytest.mark.asyncio async def test_is_moving(self): await self.gantry.move_to_position([1, 8, 2], [3, 9, 12]) assert await self.gantry.is_moving() await self.gantry.stop() assert not await self.gantry.is_moving() - @pytest.mark.asyncio async def test_status(self): await self.gantry.move_to_position([1, 2, 3], [4, 5, 6]) status = await create_status(self.gantry) assert status.name == MockGantry.get_resource_name(self.gantry.name) assert status.status == message_to_struct(GantryStatus(lengths_mm=[4, 5, 6], positions_mm=[1, 2, 3], is_moving=True)) - @pytest.mark.asyncio async def test_extra(self): assert self.gantry.extra is None or len(self.gantry.extra) == 0 extra = {"foo": "bar", "baz": [1, 2, 3]} await self.gantry.move_to_position([1, 2, 3], [4, 5, 6], extra=extra) assert self.gantry.extra == extra - @pytest.mark.asyncio async def test_timeout(self): assert self.gantry.timeout is None @@ -96,7 +85,6 @@ async def test_timeout(self): await self.gantry.stop(timeout=4.4) assert self.gantry.timeout == loose_approx(4.4) - @pytest.mark.asyncio async def test_get_geometries(self): geometries = await self.gantry.get_geometries() assert geometries == GEOMETRIES @@ -109,7 +97,6 @@ def setup_class(cls): cls.manager = ResourceManager([cls.gantry]) cls.service = GantryRPCService(cls.manager) - @pytest.mark.asyncio async def test_get_position(self): async with ChannelFor([self.service]) as channel: client = GantryServiceStub(channel) @@ -118,7 +105,6 @@ async def test_get_position(self): assert list(response.positions_mm) == [1, 2, 3] assert self.gantry.timeout == loose_approx(9.87) - @pytest.mark.asyncio async def test_move_to_position(self): async with ChannelFor([self.service]) as channel: client = GantryServiceStub(channel) @@ -128,7 +114,6 @@ async def test_move_to_position(self): assert self.gantry.speeds == [3, 9, 12] assert self.gantry.timeout == loose_approx(18.2) - @pytest.mark.asyncio async def test_home(self): async with ChannelFor([self.service]) as channel: client = GantryServiceStub(channel) @@ -137,7 +122,6 @@ async def test_home(self): assert response.homed is True assert self.gantry.timeout == loose_approx(18.2) - @pytest.mark.asyncio async def test_get_lengths(self): async with ChannelFor([self.service]) as channel: client = GantryServiceStub(channel) @@ -146,7 +130,6 @@ async def test_get_lengths(self): assert list(response.lengths_mm) == [4, 5, 6] assert self.gantry.timeout == loose_approx(3.3) - @pytest.mark.asyncio async def test_stop(self): async with ChannelFor([self.service]) as channel: assert self.gantry.is_stopped is False @@ -156,7 +139,6 @@ async def test_stop(self): assert self.gantry.is_stopped is True assert self.gantry.timeout == loose_approx(1.1) - @pytest.mark.asyncio async def test_is_moving(self): async with ChannelFor([self.service]) as channel: assert self.gantry.is_stopped is True @@ -166,7 +148,6 @@ async def test_is_moving(self): response: IsMovingResponse = await client.IsMoving(request) assert response.is_moving is True - @pytest.mark.asyncio async def test_extra(self): async with ChannelFor([self.service]) as channel: assert self.gantry.extra is None or len(self.gantry.extra) == 0 @@ -176,7 +157,6 @@ async def test_extra(self): await client.Stop(request) assert self.gantry.extra == extra - @pytest.mark.asyncio async def test_do(self): async with ChannelFor([self.service]) as channel: client = GantryServiceStub(channel) @@ -186,7 +166,6 @@ async def test_do(self): result = struct_to_dict(response.result) assert result == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self): async with ChannelFor([self.service]) as channel: client = GantryServiceStub(channel) @@ -202,7 +181,6 @@ def setup_class(cls): cls.manager = ResourceManager([cls.gantry]) cls.service = GantryRPCService(cls.manager) - @pytest.mark.asyncio async def test_get_position(self): async with ChannelFor([self.service]) as channel: client = GantryClient(self.gantry.name, channel) @@ -210,7 +188,6 @@ async def test_get_position(self): assert pos == [1, 2, 3] assert self.gantry.timeout == loose_approx(1.82) - @pytest.mark.asyncio async def test_move_to_position(self): async with ChannelFor([self.service]) as channel: client = GantryClient(self.gantry.name, channel) @@ -219,7 +196,6 @@ async def test_move_to_position(self): assert self.gantry.speeds == [3, 9, 12] assert self.gantry.timeout == loose_approx(4.4) - @pytest.mark.asyncio async def test_home(self): async with ChannelFor([self.service]) as channel: client = GantryClient(self.gantry.name, channel) @@ -227,7 +203,6 @@ async def test_home(self): assert homed is True assert self.gantry.timeout == loose_approx(5.5) - @pytest.mark.asyncio async def test_get_lengths(self): async with ChannelFor([self.service]) as channel: client = GantryClient(self.gantry.name, channel) @@ -235,7 +210,6 @@ async def test_get_lengths(self): assert lengths == [4, 5, 6] assert self.gantry.timeout == loose_approx(5.5) - @pytest.mark.asyncio async def test_do(self): async with ChannelFor([self.service]) as channel: client = GantryClient(self.gantry.name, channel) @@ -243,7 +217,6 @@ async def test_do(self): resp = await client.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_stop(self): async with ChannelFor([self.service]) as channel: assert self.gantry.is_stopped is False @@ -252,7 +225,6 @@ async def test_stop(self): assert self.gantry.is_stopped is True assert self.gantry.timeout is None - @pytest.mark.asyncio async def test_is_moving(self): async with ChannelFor([self.service]) as channel: assert self.gantry.is_stopped is True @@ -260,7 +232,6 @@ async def test_is_moving(self): client = GantryClient(self.gantry.name, channel) assert await client.is_moving() is True - @pytest.mark.asyncio async def test_extra(self): async with ChannelFor([self.service]) as channel: assert self.gantry.extra is None or len(self.gantry.extra) == 0 @@ -269,7 +240,6 @@ async def test_extra(self): await client.move_to_position([1, 2, 3], [4, 5, 6], extra=extra) assert self.gantry.extra == extra - @pytest.mark.asyncio async def test_get_geometries(self): async with ChannelFor([self.service]) as channel: client = GantryClient(self.gantry.name, channel) diff --git a/tests/test_generic_component.py b/tests/test_generic_component.py index e03fd12e1..1f52922c9 100644 --- a/tests/test_generic_component.py +++ b/tests/test_generic_component.py @@ -1,4 +1,3 @@ -import pytest from grpclib.testing import ChannelFor from viam.components.generic import GenericClient, GenericRPCService @@ -14,13 +13,11 @@ class TestGenericComponent: generic = MockGenericComponent(name="generic") - @pytest.mark.asyncio async def test_do(self): result = await self.generic.do_command({"command": "args"}, timeout=1.82) assert result == {"command": True} assert self.generic.timeout == loose_approx(1.82) - @pytest.mark.asyncio async def test_get_geometries(self): geometries = await self.generic.get_geometries() assert geometries == GEOMETRIES @@ -34,7 +31,6 @@ def setup_class(cls): cls.manager = ResourceManager([cls.generic]) cls.service = GenericRPCService(cls.manager) - @pytest.mark.asyncio async def test_do(self): async with ChannelFor([self.service]) as channel: client = GenericServiceStub(channel) @@ -44,7 +40,6 @@ async def test_do(self): assert result == {"command": True} assert self.generic.timeout == loose_approx(4.4) - @pytest.mark.asyncio async def test_get_geometries(self): async with ChannelFor([self.service]) as channel: client = GenericServiceStub(channel) @@ -61,7 +56,6 @@ def setup_class(cls): cls.manager = ResourceManager([cls.generic]) cls.service = GenericRPCService(cls.manager) - @pytest.mark.asyncio async def test_do(self): async with ChannelFor([self.service]) as channel: client = GenericClient(self.name, channel) @@ -69,7 +63,6 @@ async def test_do(self): assert result == {"command": True} assert self.generic.timeout == loose_approx(7.86) - @pytest.mark.asyncio async def test_get_geometries(self): async with ChannelFor([self.service]) as channel: client = GenericClient(self.name, channel) diff --git a/tests/test_generic_service.py b/tests/test_generic_service.py index 217f3da2f..f22fe715b 100644 --- a/tests/test_generic_service.py +++ b/tests/test_generic_service.py @@ -1,4 +1,3 @@ -import pytest from grpclib.testing import ChannelFor from viam.components.generic import GenericClient, GenericRPCService @@ -14,7 +13,6 @@ class TestGenericService: generic = MockGenericService(name="generic") - @pytest.mark.asyncio async def test_do(self): result = await self.generic.do_command({"command": "args"}, timeout=1.82) assert result == {"command": True} @@ -29,7 +27,6 @@ def setup_class(cls): cls.manager = ResourceManager([cls.generic]) cls.service = GenericRPCService(cls.manager) - @pytest.mark.asyncio async def test_do(self): async with ChannelFor([self.service]) as channel: client = GenericServiceStub(channel) @@ -48,7 +45,6 @@ def setup_class(cls): cls.manager = ResourceManager([cls.generic]) cls.service = GenericRPCService(cls.manager) - @pytest.mark.asyncio async def test_do(self): async with ChannelFor([self.service]) as channel: client = GenericClient(self.name, channel) diff --git a/tests/test_gripper.py b/tests/test_gripper.py index e643bda85..f32ef9194 100644 --- a/tests/test_gripper.py +++ b/tests/test_gripper.py @@ -39,20 +39,17 @@ def generic_service(gripper: Gripper) -> GenericRPCService: class TestGripper: - @pytest.mark.asyncio async def test_open(self, gripper: MockGripper): await gripper.open(timeout=1.82) assert gripper.opened is True assert gripper.timeout == loose_approx(1.82) - @pytest.mark.asyncio async def test_grab(self, gripper: MockGripper): grabbed = await gripper.grab() assert gripper.opened is False assert isinstance(grabbed, bool) assert gripper.timeout is None - @pytest.mark.asyncio async def test_stop(self, gripper: MockGripper): assert gripper.is_stopped is True await gripper.open() @@ -61,41 +58,35 @@ async def test_stop(self, gripper: MockGripper): assert gripper.is_stopped is True assert gripper.timeout == loose_approx(7.86) - @pytest.mark.asyncio async def test_is_moving(self, gripper: MockGripper): await gripper.open() assert await gripper.is_moving() await gripper.stop() assert not await gripper.is_moving() - @pytest.mark.asyncio async def test_do(self, gripper: MockGripper): command = {"command": "args"} resp = await gripper.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_status(self, gripper: MockGripper): await gripper.open() status = await create_status(gripper) assert status.name == gripper.get_resource_name(gripper.name) assert status.status == message_to_struct(ActuatorStatus(is_moving=True)) - @pytest.mark.asyncio async def test_extra(self, gripper: MockGripper): assert gripper.extra is None extra = {"foo": "bar", "baz": [1, 2, 3]} await gripper.open(timeout=1.1, extra=extra) assert gripper.extra == extra - @pytest.mark.asyncio async def test_get_geometries(self, gripper: MockGripper): geometries = await gripper.get_geometries() assert geometries == GEOMETRIES class TestService: - @pytest.mark.asyncio async def test_open(self, gripper: MockGripper, service: GripperRPCService): async with ChannelFor([service]) as channel: client = GripperServiceStub(channel) @@ -104,7 +95,6 @@ async def test_open(self, gripper: MockGripper, service: GripperRPCService): assert gripper.opened is True assert gripper.timeout == loose_approx(1.23) - @pytest.mark.asyncio async def test_grab(self, gripper: MockGripper, service: GripperRPCService): async with ChannelFor([service]) as channel: client = GripperServiceStub(channel) @@ -114,7 +104,6 @@ async def test_grab(self, gripper: MockGripper, service: GripperRPCService): assert isinstance(response.success, bool) assert gripper.timeout == loose_approx(4.56) - @pytest.mark.asyncio async def test_stop(self, gripper: MockGripper, service: GripperRPCService): async with ChannelFor([service]) as channel: assert gripper.is_stopped is True @@ -129,7 +118,6 @@ async def test_stop(self, gripper: MockGripper, service: GripperRPCService): assert gripper.is_stopped is True assert gripper.timeout == loose_approx(7.89) - @pytest.mark.asyncio async def test_is_moving(self, gripper: MockGripper, service: GripperRPCService): async with ChannelFor([service]) as channel: assert gripper.is_stopped is True @@ -139,7 +127,6 @@ async def test_is_moving(self, gripper: MockGripper, service: GripperRPCService) response: IsMovingResponse = await client.IsMoving(request) assert response.is_moving is True - @pytest.mark.asyncio async def test_extra(self, gripper: MockGripper, service: GripperRPCService): async with ChannelFor([service]) as channel: assert gripper.extra is None @@ -149,7 +136,6 @@ async def test_extra(self, gripper: MockGripper, service: GripperRPCService): await client.Open(request) assert gripper.extra == extra - @pytest.mark.asyncio async def test_do(self, gripper: MockGripper, service: GripperRPCService): async with ChannelFor([service]) as channel: client = GripperServiceStub(channel) @@ -159,7 +145,6 @@ async def test_do(self, gripper: MockGripper, service: GripperRPCService): result = struct_to_dict(response.result) assert result == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, gripper: MockGripper, service: GripperRPCService): async with ChannelFor([service]) as channel: client = GripperServiceStub(channel) @@ -169,7 +154,6 @@ async def test_get_geometries(self, gripper: MockGripper, service: GripperRPCSer class TestClient: - @pytest.mark.asyncio async def test_open(self, gripper: MockGripper, service: GripperRPCService): async with ChannelFor([service]) as channel: client = GripperClient(gripper.name, channel) @@ -177,7 +161,6 @@ async def test_open(self, gripper: MockGripper, service: GripperRPCService): assert gripper.opened is True assert gripper.timeout == loose_approx(1.23) - @pytest.mark.asyncio async def test_grab(self, gripper: MockGripper, service: GripperRPCService): async with ChannelFor([service]) as channel: client = GripperClient(gripper.name, channel) @@ -186,7 +169,6 @@ async def test_grab(self, gripper: MockGripper, service: GripperRPCService): assert isinstance(grabbed, bool) assert gripper.timeout == loose_approx(2.34) - @pytest.mark.asyncio async def test_stop(self, gripper: MockGripper, service: GripperRPCService): async with ChannelFor([service]) as channel: client = GripperClient(gripper.name, channel) @@ -198,7 +180,6 @@ async def test_stop(self, gripper: MockGripper, service: GripperRPCService): assert gripper.is_stopped is True assert gripper.timeout == loose_approx(3.45) - @pytest.mark.asyncio async def test_is_moving(self, gripper: MockGripper, service: GripperRPCService): async with ChannelFor([service]) as channel: assert gripper.is_stopped is True @@ -206,7 +187,6 @@ async def test_is_moving(self, gripper: MockGripper, service: GripperRPCService) client = GripperClient(gripper.name, channel) assert await client.is_moving() is True - @pytest.mark.asyncio async def test_do(self, gripper: MockGripper, service: GripperRPCService): async with ChannelFor([service]) as channel: client = GripperClient(gripper.name, channel) @@ -214,7 +194,6 @@ async def test_do(self, gripper: MockGripper, service: GripperRPCService): resp = await client.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_extra(self, gripper: MockGripper, service: GripperRPCService): async with ChannelFor([service]) as channel: assert gripper.extra is None @@ -223,7 +202,6 @@ async def test_extra(self, gripper: MockGripper, service: GripperRPCService): await client.open(timeout=1.1, extra=extra) assert gripper.extra == extra - @pytest.mark.asyncio async def test_get_geometries(self, gripper: MockGripper, service: GripperRPCService): async with ChannelFor([service]) as channel: client = GripperClient(gripper.name, channel) diff --git a/tests/test_input.py b/tests/test_input.py index a67e1783f..f60243bb2 100644 --- a/tests/test_input.py +++ b/tests/test_input.py @@ -45,7 +45,6 @@ def generic_service(controller: MockInputController) -> GenericRPCService: class TestInputController: - @pytest.mark.asyncio async def test_get_controls(self, controller: MockInputController): extra = {"foo": "get_detectors"} controls = await controller.get_controls(extra=extra, timeout=4.4) @@ -75,7 +74,6 @@ async def test_get_controls(self, controller: MockInputController): assert controller.extra == extra assert controller.timeout == loose_approx(4.4) - @pytest.mark.asyncio async def test_get_events(self, controller: MockInputController): extra = {"foo": "get_events"} events = await controller.get_events(extra=extra, timeout=1.82) @@ -83,7 +81,6 @@ async def test_get_events(self, controller: MockInputController): assert controller.extra == extra assert controller.timeout == loose_approx(1.82) - @pytest.mark.asyncio async def test_trigger_event(self, controller: MockInputController): assert len(controller.events) == 0 event = Event(time(), EventType.CONNECT, Control.ABSOLUTE_X, 0) @@ -104,20 +101,17 @@ def test_register_control_callback(self, controller: MockInputController): assert len(controller.callbacks[Control.ABSOLUTE_X]) == 2 assert controller.reg_extra == extra - @pytest.mark.asyncio async def test_do(self, controller: MockInputController): command = {"command": "args"} resp = await controller.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, controller: MockInputController): geometries = await controller.get_geometries() assert geometries == GEOMETRIES class TestService: - @pytest.mark.asyncio async def test_get_controls(self, controller: MockInputController, service: InputControllerRPCService): async with ChannelFor([service]) as channel: client = InputControllerServiceStub(channel) @@ -151,7 +145,6 @@ async def test_get_controls(self, controller: MockInputController, service: Inpu assert controller.extra == extra assert controller.timeout == loose_approx(2.23) - @pytest.mark.asyncio async def test_get_events(self, controller: MockInputController, service: InputControllerRPCService): async with ChannelFor([service]) as channel: client = InputControllerServiceStub(channel) @@ -163,7 +156,6 @@ async def test_get_events(self, controller: MockInputController, service: InputC assert controller.extra == extra assert controller.timeout == loose_approx(2.34) - @pytest.mark.asyncio async def test_trigger_event(self, controller: MockInputController, service: InputControllerRPCService): event = Event(time(), EventType.CONNECT, Control.ABSOLUTE_X, 0) async with ChannelFor([service]) as channel: @@ -178,7 +170,6 @@ async def test_trigger_event(self, controller: MockInputController, service: Inp assert controller.extra == {} assert controller.timeout == loose_approx(3.45) - @pytest.mark.asyncio async def test_stream_events(selc, controller: MockInputController, service: InputControllerRPCService): async with ChannelFor([service]) as channel: @@ -211,7 +202,6 @@ def trigger_event(): assert controller.callbacks[Control.BUTTON_START][EventType.BUTTON_RELEASE] is None assert controller.reg_extra == extra - @pytest.mark.asyncio async def test_do(self, controller: MockInputController, service: InputControllerRPCService): async with ChannelFor([service]) as channel: client = InputControllerServiceStub(channel) @@ -221,7 +211,6 @@ async def test_do(self, controller: MockInputController, service: InputControlle result = struct_to_dict(response.result) assert result == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, controller: MockInputController, service: InputControllerRPCService): async with ChannelFor([service]) as channel: client = InputControllerServiceStub(channel) @@ -231,7 +220,6 @@ async def test_get_geometries(self, controller: MockInputController, service: In class TestClient: - @pytest.mark.asyncio async def test_get_controls(self, controller: MockInputController, service: InputControllerRPCService): async with ChannelFor([service]) as channel: client = ControllerClient(controller.name, channel) @@ -263,7 +251,6 @@ async def test_get_controls(self, controller: MockInputController, service: Inpu assert controller.extra == extra assert controller.timeout == loose_approx(4.56) - @pytest.mark.asyncio async def test_get_events(self, controller: MockInputController, service: InputControllerRPCService): async with ChannelFor([service]) as channel: client = ControllerClient(controller.name, channel) @@ -273,7 +260,6 @@ async def test_get_events(self, controller: MockInputController, service: InputC assert controller.extra == extra assert controller.timeout == loose_approx(5.67) - @pytest.mark.asyncio async def test_trigger_event(self, controller: MockInputController, service: InputControllerRPCService): event = Event(time(), EventType.CONNECT, Control.ABSOLUTE_X, 0) async with ChannelFor([service]) as channel: @@ -287,7 +273,6 @@ async def test_trigger_event(self, controller: MockInputController, service: Inp assert controller.timeout == loose_approx(6.78) assert controller.extra == {} - @pytest.mark.asyncio async def test_register_control_callback(self, controller: MockInputController, service: InputControllerRPCService): async with ChannelFor([service]) as channel: client = ControllerClient(controller.name, channel) @@ -317,7 +302,6 @@ def trigger_event(): assert controller.extra is None assert controller.reg_extra == extra - @pytest.mark.asyncio async def test_do(self, controller: MockInputController, service: InputControllerRPCService): async with ChannelFor([service]) as channel: client = ControllerClient(controller.name, channel) @@ -325,7 +309,6 @@ async def test_do(self, controller: MockInputController, service: InputControlle resp = await client.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_channel_rest(self, controller: MockInputController, service: InputControllerRPCService): channel = await ChannelFor([service]).__aenter__() client = ControllerClient(controller.name, channel) @@ -344,7 +327,6 @@ async def test_channel_rest(self, controller: MockInputController, service: Inpu await asyncio.sleep(0.1) assert client._is_streaming is True # reset the channel should restart the callback stream - @pytest.mark.asyncio async def test_get_geometries(self, controller: MockInputController, service: InputControllerRPCService): async with ChannelFor([service]) as channel: client = ControllerClient(controller.name, channel) diff --git a/tests/test_media.py b/tests/test_media.py index c60ad5cfb..2fb1596b6 100644 --- a/tests/test_media.py +++ b/tests/test_media.py @@ -42,7 +42,7 @@ def test_dimensions(self): assert img4.height is None def test_bytes_to_depth_array(self): - with open(f"{os.path.dirname(__file__)}/../data/fakeDM.vnd.viam.dep", "rb") as depth_map: + with open(f"{os.path.dirname(__file__)}/data/fakeDM.vnd.viam.dep", "rb") as depth_map: img = ViamImage(depth_map.read(), CameraMimeType.VIAM_RAW_DEPTH) assert isinstance(img, ViamImage) standard_data = img.bytes_to_depth_array() diff --git a/tests/test_ml_training_client.py b/tests/test_ml_training_client.py index 01ee89769..8c5ca67ee 100644 --- a/tests/test_ml_training_client.py +++ b/tests/test_ml_training_client.py @@ -60,14 +60,12 @@ def service() -> MockMLTraining: class TestClient: - @pytest.mark.asyncio async def test_cancel_training_job(self, service: MockMLTraining): async with ChannelFor([service]) as channel: client = MLTrainingClient(channel, ML_TRAINING_SERVICE_METADATA) await client.cancel_training_job(CANCEL_ID) assert service.cancel_job_id == CANCEL_ID - @pytest.mark.asyncio async def test_submit_training_job(self, service: MockMLTraining): async with ChannelFor([service]) as channel: client = MLTrainingClient(channel, ML_TRAINING_SERVICE_METADATA) @@ -76,7 +74,6 @@ async def test_submit_training_job(self, service: MockMLTraining): ) assert id == JOB_ID - @pytest.mark.asyncio async def test_custom_submit_training_job(self, service: MockMLTraining): async with ChannelFor([service]) as channel: client = MLTrainingClient(channel, ML_TRAINING_SERVICE_METADATA) @@ -90,7 +87,6 @@ async def test_custom_submit_training_job(self, service: MockMLTraining): ) assert id == JOB_ID - @pytest.mark.asyncio async def test_get_training_job(self, service: MockMLTraining): async with ChannelFor([service]) as channel: client = MLTrainingClient(channel, ML_TRAINING_SERVICE_METADATA) @@ -98,7 +94,6 @@ async def test_get_training_job(self, service: MockMLTraining): assert training_metadata == TRAINING_METADATA assert service.training_job_id == TRAINING_JOB_ID - @pytest.mark.asyncio async def test_list_training_jobs(self, service: MockMLTraining): async with ChannelFor([service]) as channel: client = MLTrainingClient(channel, ML_TRAINING_SERVICE_METADATA) @@ -108,7 +103,6 @@ async def test_list_training_jobs(self, service: MockMLTraining): assert service.training_status == TRAINING_STATUS assert service.org_id == ORG_ID - @pytest.mark.asyncio async def test_delete_completed_training_job(self, service: MockMLTraining): async with ChannelFor([service]) as channel: client = MLTrainingClient(channel, ML_TRAINING_SERVICE_METADATA) diff --git a/tests/test_mlmodel.py b/tests/test_mlmodel.py index cbcf7b206..929b38fc3 100644 --- a/tests/test_mlmodel.py +++ b/tests/test_mlmodel.py @@ -13,12 +13,10 @@ class TestMLModel: name = "mlmodel" mlmodel = MockMLModel(name=name) - @pytest.mark.asyncio async def test_infer(self): resp = await self.mlmodel.infer(input_tensors=MockMLModel.EMPTY_NDARRAYS) assert resp == MockMLModel.EMPTY_NDARRAYS - @pytest.mark.asyncio async def test_metadata(self): resp = await self.mlmodel.metadata() assert resp == MockMLModel.META @@ -32,7 +30,6 @@ def setup_class(cls): cls.manager = ResourceManager([cls.mlmodel]) cls.service = MLModelRPCService(cls.manager) - @pytest.mark.asyncio async def test_infer(self): async with ChannelFor([self.service]) as channel: client = MLModelServiceStub(channel) @@ -40,7 +37,6 @@ async def test_infer(self): response: InferResponse = await client.Infer(request) assert response.output_tensors == MockMLModel.EMPTY_TENSORS - @pytest.mark.asyncio async def test_metadata(self): async with ChannelFor([self.service]) as channel: client = MLModelServiceStub(channel) @@ -60,7 +56,6 @@ def setup_class(cls): # ignore warning about our out-of-bound int casting (i.e. uint32 -> int16) because we don't store uint32s for int16 & uint16 tensor # data > 2^16-1 in the first place (inherently they are int16, we just cast them to uint32 for the grpc message) @pytest.mark.filterwarnings("ignore::DeprecationWarning") - @pytest.mark.asyncio async def test_infer(self): async with ChannelFor([self.service]) as channel: client = MLModelClient(self.name, channel) @@ -112,7 +107,6 @@ async def test_infer(self): assert np.array_equal(response["1"], MockMLModel.UINT64_NDARRAY) assert response["1"].dtype == np.uint64 - @pytest.mark.asyncio async def test_metadata(self): async with ChannelFor([self.service]) as channel: META = MockMLModel.META diff --git a/tests/test_module.py b/tests/test_module.py index 9de0b4838..7b4e424f6 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -45,7 +45,6 @@ def service(module: Module) -> ModuleRPCService: class TestModule: - @pytest.mark.asyncio async def test_add_resource(self, module: Module): req = AddResourceRequest( config=ComponentConfig( @@ -75,7 +74,6 @@ async def test_add_resource(self, module: Module): await module.add_resource(req) assert SummationService.get_resource_name("mysum1") in module.server.resources - @pytest.mark.asyncio async def test_reconfigure_resource(self, module: Module): await self.test_add_resource(module) @@ -109,7 +107,6 @@ async def test_reconfigure_resource(self, module: Module): await module.reconfigure_resource(req) assert summer.subtract is True - @pytest.mark.asyncio async def test_add_resource_with_deps(self, robot_service: RobotService, module: Module): # noqa: F811 async with ChannelFor([robot_service]) as channel: _ = mock.patch("viam.module.module.Module._connect_to_parent") @@ -132,7 +129,6 @@ async def test_add_resource_with_deps(self, robot_service: RobotService, module: await module.remove_resource(req) assert Gizmo.get_resource_name("gizmo2") not in module.server.resources - @pytest.mark.asyncio async def test_remove_resource(self, module: Module): await self.test_add_resource(module) @@ -154,7 +150,6 @@ async def test_remove_resource(self, module: Module): # test default close mocked.assert_called_once() - @pytest.mark.asyncio async def test_ready(self, module: Module): with mock.patch("viam.module.Module._connect_to_parent"): p_addr = "SOME_FAKE_ADDRESS" @@ -185,7 +180,6 @@ def test_add_model_from_registry(self): with pytest.raises(ValueError): mod.add_model_from_registry(Subtype.from_string("fake:fake:fake"), Model.from_string("faker:faker:faker")) - @pytest.mark.asyncio async def test_multiple_resources_same_model(self, module: Module): req = AddResourceRequest( config=ComponentConfig( @@ -218,7 +212,6 @@ async def test_multiple_resources_same_model(self, module: Module): assert await g1.do_one("arg2") is False assert await g2.do_one("arg2") is True - @pytest.mark.asyncio async def test_validate_config(self, module: Module): await self.test_add_resource(module) @@ -297,7 +290,6 @@ async def test_validate_config(self, module: Module): class TestService: - @pytest.mark.asyncio async def test_add_resource(self, service: ModuleRPCService): async with ChannelFor([service]) as channel: client = ModuleServiceStub(channel) @@ -305,7 +297,6 @@ async def test_add_resource(self, service: ModuleRPCService): await client.AddResource(AddResourceRequest()) mocked.assert_called_once() - @pytest.mark.asyncio async def test_reconfigure_resource(self, service: ModuleRPCService): async with ChannelFor([service]) as channel: client = ModuleServiceStub(channel) @@ -313,7 +304,6 @@ async def test_reconfigure_resource(self, service: ModuleRPCService): await client.ReconfigureResource(ReconfigureResourceRequest()) mocked.assert_called_once() - @pytest.mark.asyncio async def test_remove_resource(self, service: ModuleRPCService): async with ChannelFor([service]) as channel: client = ModuleServiceStub(channel) @@ -321,7 +311,6 @@ async def test_remove_resource(self, service: ModuleRPCService): await client.RemoveResource(RemoveResourceRequest()) mocked.assert_called_once() - @pytest.mark.asyncio async def test_ready(self, service: ModuleRPCService): async with ChannelFor([service]) as channel: client = ModuleServiceStub(channel) @@ -329,7 +318,6 @@ async def test_ready(self, service: ModuleRPCService): await client.Ready(ReadyRequest()) mocked.assert_called_once() - @pytest.mark.asyncio async def test_validate_config(self, service: ModuleRPCService): async with ChannelFor([service]) as channel: client = ModuleServiceStub(channel) diff --git a/tests/test_motion_service.py b/tests/test_motion_service.py index decf7e891..4808ea601 100644 --- a/tests/test_motion_service.py +++ b/tests/test_motion_service.py @@ -44,7 +44,7 @@ async def move( constraints: Optional[Constraints] = None, *, extra: Optional[Mapping[str, Any]] = None, - timeout: Optional[float] = None + timeout: Optional[float] = None, ) -> bool: raise NotImplementedError @@ -59,7 +59,7 @@ async def move_on_globe( *, bounding_regions: Optional[Sequence[GeoGeometry]] = None, extra: Optional[Mapping[str, ValueTypes]] = None, - timeout: Optional[float] = None + timeout: Optional[float] = None, ) -> str: raise NotImplementedError @@ -72,7 +72,7 @@ async def move_on_map( obstacles: Optional[Sequence[Geometry]] = None, *, extra: Optional[Mapping[str, ValueTypes]] = None, - timeout: Optional[float] = None + timeout: Optional[float] = None, ) -> str: raise NotImplementedError @@ -88,7 +88,7 @@ async def get_plan( execution_id: Optional[str] = None, *, extra: Optional[Mapping[str, ValueTypes]] = None, - timeout: Optional[float] = None + timeout: Optional[float] = None, ) -> GetPlanResponse: raise NotImplementedError @@ -104,7 +104,7 @@ async def get_pose( supplemental_transforms: Optional[Sequence[Transform]] = None, *, extra: Optional[Mapping[str, Any]] = None, - timeout: Optional[float] = None + timeout: Optional[float] = None, ) -> PoseInFrame: raise NotImplementedError @@ -117,7 +117,6 @@ def service(motion: Motion) -> MotionRPCService: class TestMotionService: - @pytest.mark.asyncio async def test_move(self, motion: Motion, service: MotionRPCService): with patch.object(motion, "move") as patched_method: patched_method.return_value = True @@ -146,7 +145,6 @@ async def test_move(self, motion: Motion, service: MotionRPCService): assert patched_method.call_args.kwargs["extra"] == extra assert patched_method.call_args.kwargs["timeout"] == loose_approx(timeout) - @pytest.mark.asyncio async def test_get_pose(self, motion: Motion, service: MotionRPCService): with patch.object(motion, "get_pose") as patched_method: response = PoseInFrame(reference_frame="arm", pose=Pose(x=1, y=2, z=3, o_x=2, o_y=3, o_z=4, theta=20)) @@ -167,7 +165,6 @@ async def test_get_pose(self, motion: Motion, service: MotionRPCService): assert patched_method.call_args.kwargs["extra"] == extra assert patched_method.call_args.kwargs["timeout"] == loose_approx(timeout) - @pytest.mark.asyncio async def test_move_on_map(self, motion: Motion, service: MotionRPCService): with patch.object(motion, "move_on_map") as patched_method: resopnse = "Move On Map Response" @@ -200,7 +197,6 @@ async def test_move_on_map(self, motion: Motion, service: MotionRPCService): assert patched_method.call_args.kwargs["extra"] == extra assert patched_method.call_args.kwargs["timeout"] == loose_approx(timeout) - @pytest.mark.asyncio async def test_move_on_globe(self, motion: Motion, service: MotionRPCService): with patch.object(motion, "move_on_globe") as patched_method: response = "Move On Globe Response" @@ -239,7 +235,6 @@ async def test_move_on_globe(self, motion: Motion, service: MotionRPCService): assert patched_method.call_args.kwargs["extra"] == extra assert patched_method.call_args.kwargs["timeout"] == loose_approx(timeout) - @pytest.mark.asyncio async def test_stop_plan(self, motion: Motion, service: MotionRPCService): with patch.object(motion, "stop_plan") as patched_method: async with ChannelFor([service]) as channel: @@ -253,7 +248,6 @@ async def test_stop_plan(self, motion: Motion, service: MotionRPCService): assert patched_method.call_args.kwargs["extra"] == extra assert patched_method.call_args.kwargs["timeout"] == loose_approx(timeout) - @pytest.mark.asyncio async def test_get_plan(self, motion: Motion, service: MotionRPCService): with patch.object(motion, "get_plan") as patched_method: response = GetPlanResponse( @@ -305,7 +299,6 @@ async def test_get_plan(self, motion: Motion, service: MotionRPCService): assert patched_method.call_args.kwargs["extra"] == extra assert patched_method.call_args.kwargs["timeout"] == loose_approx(timeout) - @pytest.mark.asyncio async def test_list_plan_statuses(self, motion: Motion, service: MotionRPCService): with patch.object(motion, "list_plan_statuses") as patched_method: response = [PlanStatusWithID(plan_id="lpsr_pswid")] @@ -325,7 +318,6 @@ async def test_list_plan_statuses(self, motion: Motion, service: MotionRPCServic assert patched_method.call_args.kwargs["extra"] == extra assert patched_method.call_args.kwargs["timeout"] == loose_approx(timeout) - @pytest.mark.asyncio async def test_do(self, motion: Motion, service: MotionRPCService): with patch.object(motion, "do_command") as patched_method: response = {"do": "command"} diff --git a/tests/test_motor.py b/tests/test_motor.py index 961ea1536..41c4b8df7 100644 --- a/tests/test_motor.py +++ b/tests/test_motor.py @@ -47,20 +47,17 @@ def generic_service(motor: MockMotor) -> GenericRPCService: class TestMotor: - @pytest.mark.asyncio async def test_set_power(self, motor: MockMotor): power = 0.32 await motor.set_power(power, timeout=1.23) assert motor.power == power assert motor.timeout == loose_approx(1.23) - @pytest.mark.asyncio async def test_get_position(self, motor: MockMotor): pos = await motor.get_position(timeout=2.34) assert pos == 0 assert motor.timeout == loose_approx(2.34) - @pytest.mark.asyncio async def test_go_for(self, motor: MockMotor): await motor.go_for(30, 20, timeout=3.45) assert motor.timeout == loose_approx(3.45) @@ -75,7 +72,6 @@ async def test_go_for(self, motor: MockMotor): await motor.go_for(-10, -10) assert await motor.get_position() == 15 - @pytest.mark.asyncio async def test_go_to(self, motor: MockMotor): await motor.go_to(30, 20, timeout=4.56) assert motor.timeout == loose_approx(4.56) @@ -84,7 +80,6 @@ async def test_go_to(self, motor: MockMotor): await motor.go_to(-10, 50) assert await motor.get_position() == 50 - @pytest.mark.asyncio async def test_set_rpm(self, motor: MockMotor): await motor.set_rpm(30, timeout=4.56) assert motor.timeout == loose_approx(4.56) @@ -95,19 +90,16 @@ async def test_set_rpm(self, motor: MockMotor): moving = await motor.is_moving() assert moving is True - @pytest.mark.asyncio async def test_reset_zero(self, motor: MockMotor): await motor.reset_zero_position(20, timeout=5.67) assert motor.offset == 20 assert motor.timeout == loose_approx(5.67) - @pytest.mark.asyncio async def test_get_properties(self, motor: MockMotor): properties = await motor.get_properties(timeout=6.78) assert properties.position_reporting is True assert motor.timeout == loose_approx(6.78) - @pytest.mark.asyncio async def test_stop(self, motor: MockMotor): await motor.set_power(10) assert motor.powered is True @@ -116,7 +108,6 @@ async def test_stop(self, motor: MockMotor): assert motor.power == 0 assert motor.timeout == loose_approx(7.89) - @pytest.mark.asyncio async def test_is_powered(self, motor: MockMotor): await motor.set_power(10) is_powered, power_pct = await motor.is_powered(timeout=8.90) @@ -129,41 +120,35 @@ async def test_is_powered(self, motor: MockMotor): assert is_powered is False assert is_powered == 0 - @pytest.mark.asyncio async def test_is_moving(self, motor: MockMotor): await motor.set_power(10) assert await motor.is_moving() await motor.set_power(0) assert not await motor.is_moving() - @pytest.mark.asyncio async def test_do(self, motor: MockMotor): command = {"command": "args"} resp = await motor.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_status(self, motor: MockMotor): await motor.set_power(10) status = await create_status(motor) assert status.name == motor.get_resource_name(motor.name) assert status.status == message_to_struct(MotorStatus(is_powered=True, position=0, is_moving=True)) - @pytest.mark.asyncio async def test_extra(self, motor: MockMotor): assert motor.extra is None extra = {"foo": "bar", "baz": [1, 2, 3]} await motor.is_powered(extra=extra) assert motor.extra == extra - @pytest.mark.asyncio async def test_get_geometries(self, motor: MockMotor): geometries = await motor.get_geometries() assert geometries == GEOMETRIES class TestService: - @pytest.mark.asyncio async def test_set_power(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorServiceStub(channel) @@ -172,7 +157,6 @@ async def test_set_power(self, motor: MockMotor, service: MotorRPCService): assert motor.power == 13 assert motor.timeout == loose_approx(2.34) - @pytest.mark.asyncio async def test_get_position(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorServiceStub(channel) @@ -181,7 +165,6 @@ async def test_get_position(self, motor: MockMotor, service: MotorRPCService): assert response.position == 0 assert motor.timeout == loose_approx(2.34) - @pytest.mark.asyncio async def test_go_for(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorServiceStub(channel) @@ -203,7 +186,6 @@ async def test_go_for(self, motor: MockMotor, service: MotorRPCService): await client.GoFor(request) assert motor.position == 15 - @pytest.mark.asyncio async def test_go_to(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorServiceStub(channel) @@ -217,7 +199,6 @@ async def test_go_to(self, motor: MockMotor, service: MotorRPCService): await client.GoTo(request) assert motor.position == 50 - @pytest.mark.asyncio async def test_set_rpm(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorServiceStub(channel) @@ -233,7 +214,6 @@ async def test_set_rpm(self, motor: MockMotor, service: MotorRPCService): moving = await motor.is_moving() assert moving is True - @pytest.mark.asyncio async def test_reset_zero(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorServiceStub(channel) @@ -242,7 +222,6 @@ async def test_reset_zero(self, motor: MockMotor, service: MotorRPCService): assert motor.offset == 20 assert motor.timeout == loose_approx(5.67) - @pytest.mark.asyncio async def test_get_properties(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorServiceStub(channel) @@ -251,7 +230,6 @@ async def test_get_properties(self, motor: MockMotor, service: MotorRPCService): assert response.position_reporting is True assert motor.timeout == loose_approx(6.78) - @pytest.mark.asyncio async def test_stop(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorServiceStub(channel) @@ -261,7 +239,6 @@ async def test_stop(self, motor: MockMotor, service: MotorRPCService): assert motor.power == 0 assert motor.timeout == loose_approx(7.89) - @pytest.mark.asyncio async def test_is_powered(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorServiceStub(channel) @@ -281,7 +258,6 @@ async def test_is_powered(self, motor: MockMotor, service: MotorRPCService): assert response.is_on is False assert response.power_pct == 0 - @pytest.mark.asyncio async def test_is_moving(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: assert motor.powered is False @@ -291,7 +267,6 @@ async def test_is_moving(self, motor: MockMotor, service: MotorRPCService): response: IsMovingResponse = await client.IsMoving(request) assert response.is_moving is True - @pytest.mark.asyncio async def test_extra(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorServiceStub(channel) @@ -302,7 +277,6 @@ async def test_extra(self, motor: MockMotor, service: MotorRPCService): await client.IsPowered(request) assert motor.extra == extra - @pytest.mark.asyncio async def test_do(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorServiceStub(channel) @@ -312,7 +286,6 @@ async def test_do(self, motor: MockMotor, service: MotorRPCService): result = struct_to_dict(response.result) assert result == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorServiceStub(channel) @@ -322,7 +295,6 @@ async def test_get_geometries(self, motor: MockMotor, service: MotorRPCService): class TestClient: - @pytest.mark.asyncio async def test_set_power(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorClient(motor.name, channel) @@ -330,7 +302,6 @@ async def test_set_power(self, motor: MockMotor, service: MotorRPCService): assert motor.power == 13 assert motor.timeout == loose_approx(9.10) - @pytest.mark.asyncio async def test_get_position(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorClient(motor.name, channel) @@ -338,7 +309,6 @@ async def test_get_position(self, motor: MockMotor, service: MotorRPCService): assert position == 0 assert motor.timeout == loose_approx(2.34) - @pytest.mark.asyncio async def test_go_for(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorClient(motor.name, channel) @@ -356,7 +326,6 @@ async def test_go_for(self, motor: MockMotor, service: MotorRPCService): await client.go_for(-10, -10) assert motor.position == 15 - @pytest.mark.asyncio async def test_go_to(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorClient(motor.name, channel) @@ -368,7 +337,6 @@ async def test_go_to(self, motor: MockMotor, service: MotorRPCService): await client.go_to(-10, 50) assert motor.position == 50 - @pytest.mark.asyncio async def test_set_rpm(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorClient(motor.name, channel) @@ -382,7 +350,6 @@ async def test_set_rpm(self, motor: MockMotor, service: MotorRPCService): moving = await motor.is_moving() assert moving is True - @pytest.mark.asyncio async def test_reset_zero(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorClient(motor.name, channel) @@ -390,7 +357,6 @@ async def test_reset_zero(self, motor: MockMotor, service: MotorRPCService): assert motor.timeout == loose_approx(5.67) assert motor.offset == 20 - @pytest.mark.asyncio async def test_get_properties(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorClient(motor.name, channel) @@ -398,7 +364,6 @@ async def test_get_properties(self, motor: MockMotor, service: MotorRPCService): assert properties.position_reporting is True assert motor.timeout == loose_approx(6.78) - @pytest.mark.asyncio async def test_stop(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorClient(motor.name, channel) @@ -407,7 +372,6 @@ async def test_stop(self, motor: MockMotor, service: MotorRPCService): assert motor.power == 0 assert motor.timeout == loose_approx(7.89) - @pytest.mark.asyncio async def test_is_powered(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorClient(motor.name, channel) @@ -423,7 +387,6 @@ async def test_is_powered(self, motor: MockMotor, service: MotorRPCService): assert is_on is False assert power_pct == 0 - @pytest.mark.asyncio async def test_is_moving(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorClient(motor.name, channel) @@ -431,7 +394,6 @@ async def test_is_moving(self, motor: MockMotor, service: MotorRPCService): motor.powered = True assert await client.is_moving() is True - @pytest.mark.asyncio async def test_do(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorClient(motor.name, channel) @@ -439,7 +401,6 @@ async def test_do(self, motor: MockMotor, service: MotorRPCService): resp = await client.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_extra(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorClient(motor.name, channel) @@ -449,7 +410,6 @@ async def test_extra(self, motor: MockMotor, service: MotorRPCService): await client.is_powered(extra=extra) assert motor.extra == extra - @pytest.mark.asyncio async def test_get_geometries(self, motor: MockMotor, service: MotorRPCService): async with ChannelFor([service]) as channel: client = MotorClient(motor.name, channel) diff --git a/tests/test_movement_sensor.py b/tests/test_movement_sensor.py index 54617b2e7..1048f02fb 100644 --- a/tests/test_movement_sensor.py +++ b/tests/test_movement_sensor.py @@ -95,7 +95,6 @@ def generic_service(movement_sensor: MovementSensor) -> GenericRPCService: class TestMovementSensor: - @pytest.mark.asyncio async def test_get_position(self, movement_sensor: MockMovementSensor): assert movement_sensor.extra is None (coord, alt) = await movement_sensor.get_position(extra=EXTRA_PARAMS) @@ -103,49 +102,42 @@ async def test_get_position(self, movement_sensor: MockMovementSensor): assert alt == ALTITUDE assert movement_sensor.extra == EXTRA_PARAMS - @pytest.mark.asyncio async def test_get_linear_velocity(self, movement_sensor: MockMovementSensor): assert movement_sensor.extra is None value = await movement_sensor.get_linear_velocity(extra=EXTRA_PARAMS) assert value == LINEAR_VELOCITY assert movement_sensor.extra == EXTRA_PARAMS - @pytest.mark.asyncio async def test_get_linear_acceleration(self, movement_sensor: MockMovementSensor): assert movement_sensor.extra is None value = await movement_sensor.get_linear_acceleration(extra=EXTRA_PARAMS) assert value == LINEAR_ACCELERATION assert movement_sensor.extra == EXTRA_PARAMS - @pytest.mark.asyncio async def test_get_angular_velocity(self, movement_sensor: MockMovementSensor): assert movement_sensor.extra is None value = await movement_sensor.get_angular_velocity(extra=EXTRA_PARAMS) assert value == ANGULAR_VELOCITY assert movement_sensor.extra == EXTRA_PARAMS - @pytest.mark.asyncio async def test_get_compass_heading(self, movement_sensor: MockMovementSensor): assert movement_sensor.extra is None value = await movement_sensor.get_compass_heading(extra=EXTRA_PARAMS) assert value == HEADING assert movement_sensor.extra == EXTRA_PARAMS - @pytest.mark.asyncio async def test_get_orientation(self, movement_sensor: MockMovementSensor): assert movement_sensor.extra is None value = await movement_sensor.get_orientation(extra=EXTRA_PARAMS) assert value == ORIENTATION assert movement_sensor.extra == EXTRA_PARAMS - @pytest.mark.asyncio async def test_get_properties(self, movement_sensor: MockMovementSensor): assert movement_sensor.extra is None value = await movement_sensor.get_properties(extra=EXTRA_PARAMS) assert value == PROPERTIES assert movement_sensor.extra == EXTRA_PARAMS - @pytest.mark.asyncio async def test_get_accuracy(self, movement_sensor: MockMovementSensor): assert movement_sensor.extra is None value = await movement_sensor.get_accuracy(extra=EXTRA_PARAMS) @@ -156,14 +148,12 @@ async def test_get_accuracy(self, movement_sensor: MockMovementSensor): assert value.compass_degrees_error == pytest.approx(ACCURACY.compass_degrees_error) assert movement_sensor.extra == EXTRA_PARAMS - @pytest.mark.asyncio async def test_get_readings(self, movement_sensor: MockMovementSensor): assert movement_sensor.extra is None readings = await movement_sensor.get_readings(extra=EXTRA_PARAMS) assert readings == READINGS assert movement_sensor.extra == EXTRA_PARAMS - @pytest.mark.asyncio async def test_timeout(self, movement_sensor: MockMovementSensor): assert movement_sensor.timeout is None @@ -194,20 +184,17 @@ async def test_timeout(self, movement_sensor: MockMovementSensor): await movement_sensor.get_readings(timeout=8.90) assert movement_sensor.timeout == loose_approx(8.90) - @pytest.mark.asyncio async def test_do(self, movement_sensor: MovementSensor): command = {"command": "args"} resp = await movement_sensor.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, movement_sensor: MockMovementSensor): geometries = await movement_sensor.get_geometries() assert geometries == GEOMETRIES class TestService: - @pytest.mark.asyncio async def test_get_position(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorServiceStub(channel) @@ -219,7 +206,6 @@ async def test_get_position(self, movement_sensor: MockMovementSensor, service: assert movement_sensor.extra == EXTRA_PARAMS assert movement_sensor.timeout == loose_approx(1.23) - @pytest.mark.asyncio async def test_get_linear_velocity(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorServiceStub(channel) @@ -230,7 +216,6 @@ async def test_get_linear_velocity(self, movement_sensor: MockMovementSensor, se assert movement_sensor.extra == EXTRA_PARAMS assert movement_sensor.timeout == loose_approx(2.34) - @pytest.mark.asyncio async def test_get_angular_velocity(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorServiceStub(channel) @@ -241,7 +226,6 @@ async def test_get_angular_velocity(self, movement_sensor: MockMovementSensor, s assert movement_sensor.extra == EXTRA_PARAMS assert movement_sensor.timeout == loose_approx(3.45) - @pytest.mark.asyncio async def test_get_linear_acceleration(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorServiceStub(channel) @@ -252,7 +236,6 @@ async def test_get_linear_acceleration(self, movement_sensor: MockMovementSensor assert movement_sensor.extra == EXTRA_PARAMS assert movement_sensor.timeout == loose_approx(2.34) - @pytest.mark.asyncio async def test_get_compass_heading(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorServiceStub(channel) @@ -262,7 +245,6 @@ async def test_get_compass_heading(self, movement_sensor: MockMovementSensor, se assert movement_sensor.extra == EXTRA_PARAMS assert movement_sensor.timeout == loose_approx(4.56) - @pytest.mark.asyncio async def test_get_orientation(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorServiceStub(channel) @@ -273,7 +255,6 @@ async def test_get_orientation(self, movement_sensor: MockMovementSensor, servic assert movement_sensor.extra == EXTRA_PARAMS assert movement_sensor.timeout == loose_approx(5.67) - @pytest.mark.asyncio async def test_get_properties(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorServiceStub(channel) @@ -283,7 +264,6 @@ async def test_get_properties(self, movement_sensor: MockMovementSensor, service assert movement_sensor.extra == EXTRA_PARAMS assert movement_sensor.timeout == loose_approx(6.78) - @pytest.mark.asyncio async def test_get_accuracy(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorServiceStub(channel) @@ -297,7 +277,6 @@ async def test_get_accuracy(self, movement_sensor: MockMovementSensor, service: assert response.compass_degrees_error == pytest.approx(ACCURACY.compass_degrees_error) assert movement_sensor.timeout == loose_approx(7.89) - @pytest.mark.asyncio async def test_get_readings(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorServiceStub(channel) @@ -308,7 +287,6 @@ async def test_get_readings(self, movement_sensor: MockMovementSensor, service: assert movement_sensor.extra == EXTRA_PARAMS assert movement_sensor.timeout == loose_approx(8.90) - @pytest.mark.asyncio async def test_do(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorServiceStub(channel) @@ -318,7 +296,6 @@ async def test_do(self, movement_sensor: MockMovementSensor, service: MovementSe result = struct_to_dict(response.result) assert result == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorServiceStub(channel) @@ -328,7 +305,6 @@ async def test_get_geometries(self, movement_sensor: MockMovementSensor, service class TestClient: - @pytest.mark.asyncio async def test_get_position(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorClient(movement_sensor.name, channel) @@ -339,7 +315,6 @@ async def test_get_position(self, movement_sensor: MockMovementSensor, service: assert movement_sensor.extra == EXTRA_PARAMS assert movement_sensor.timeout == loose_approx(1.45) - @pytest.mark.asyncio async def test_get_linear_velocity(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorClient(movement_sensor.name, channel) @@ -349,7 +324,6 @@ async def test_get_linear_velocity(self, movement_sensor: MockMovementSensor, se assert movement_sensor.extra == EXTRA_PARAMS assert movement_sensor.timeout == loose_approx(2.34) - @pytest.mark.asyncio async def test_get_angular_velocity(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorClient(movement_sensor.name, channel) @@ -359,7 +333,6 @@ async def test_get_angular_velocity(self, movement_sensor: MockMovementSensor, s assert movement_sensor.extra == EXTRA_PARAMS assert movement_sensor.timeout == loose_approx(3.45) - @pytest.mark.asyncio async def test_get_linear_acceleration(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorClient(movement_sensor.name, channel) @@ -369,7 +342,6 @@ async def test_get_linear_acceleration(self, movement_sensor: MockMovementSensor assert movement_sensor.extra == EXTRA_PARAMS assert movement_sensor.timeout == loose_approx(2.34) - @pytest.mark.asyncio async def test_get_compass_heading(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorClient(movement_sensor.name, channel) @@ -379,7 +351,6 @@ async def test_get_compass_heading(self, movement_sensor: MockMovementSensor, se assert movement_sensor.extra == EXTRA_PARAMS assert movement_sensor.timeout == loose_approx(4.56) - @pytest.mark.asyncio async def test_get_orientation(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorClient(movement_sensor.name, channel) @@ -389,7 +360,6 @@ async def test_get_orientation(self, movement_sensor: MockMovementSensor, servic assert movement_sensor.extra == EXTRA_PARAMS assert movement_sensor.timeout == loose_approx(5.67) - @pytest.mark.asyncio async def test_get_properties(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorClient(movement_sensor.name, channel) @@ -399,7 +369,6 @@ async def test_get_properties(self, movement_sensor: MockMovementSensor, service assert movement_sensor.extra == EXTRA_PARAMS assert movement_sensor.timeout == loose_approx(6.78) - @pytest.mark.asyncio async def test_get_accuracy(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorClient(movement_sensor.name, channel) @@ -412,7 +381,6 @@ async def test_get_accuracy(self, movement_sensor: MockMovementSensor, service: assert value.compass_degrees_error == pytest.approx(ACCURACY.compass_degrees_error) assert movement_sensor.timeout == loose_approx(7.89) - @pytest.mark.asyncio async def test_get_readings(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorClient(movement_sensor.name, channel) @@ -422,7 +390,6 @@ async def test_get_readings(self, movement_sensor: MockMovementSensor, service: assert movement_sensor.extra == EXTRA_PARAMS assert movement_sensor.timeout == loose_approx(2.34) - @pytest.mark.asyncio async def test_do(self, movement_sensor: MovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorClient(movement_sensor.name, channel) @@ -430,7 +397,6 @@ async def test_do(self, movement_sensor: MovementSensor, service: MovementSensor resp = await client.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, movement_sensor: MockMovementSensor, service: MovementSensorRPCService): async with ChannelFor([service]) as channel: client = MovementSensorClient(movement_sensor.name, channel) diff --git a/tests/test_navigation.py b/tests/test_navigation.py index 5e3da81ce..992009170 100644 --- a/tests/test_navigation.py +++ b/tests/test_navigation.py @@ -1,4 +1,3 @@ -import pytest from grpclib.testing import ChannelFor from viam.proto.common import DoCommandRequest, DoCommandResponse, GeoPoint @@ -31,54 +30,45 @@ class TestNavigationService: name = "navigation" navigation = MockNavigation(name="navigation") - @pytest.mark.asyncio async def test_get_location(self): result = await self.navigation.get_location() assert result == MockNavigation.LOCATION - @pytest.mark.asyncio async def test_get_obstacles(self): result = await self.navigation.get_obstacles() assert result == MockNavigation.OBSTACLES - @pytest.mark.asyncio async def test_get_waypoints(self): result = await self.navigation.get_waypoints() assert result == self.navigation.WAYPOINTS - @pytest.mark.asyncio async def test_add_waypoint(self): assert self.navigation.add_waypoints == [] point = GeoPoint(latitude=100.0, longitude=200.0) await self.navigation.add_waypoint(point) assert self.navigation.add_waypoints == [point] - @pytest.mark.asyncio async def test_remove_waypoint(self): assert self.navigation.remove_waypoints == [] id = "xyz" await self.navigation.remove_waypoint(id) assert self.navigation.remove_waypoints == [id] - @pytest.mark.asyncio async def test_get_mode(self): result = await self.navigation.get_mode() assert result == Mode.MODE_UNSPECIFIED - @pytest.mark.asyncio async def test_set_mode(self): assert self.navigation.mode == Mode.MODE_UNSPECIFIED mode = Mode.MODE_MANUAL await self.navigation.set_mode(mode) assert self.navigation.mode == mode - @pytest.mark.asyncio async def test_get_properties(self): assert self.navigation.map_type == MapType.MAP_TYPE_UNSPECIFIED result = await self.navigation.get_properties() assert self.navigation.map_type == result - @pytest.mark.asyncio async def test_do(self): command = {"command": "args"} result = await self.navigation.do_command(command) @@ -93,7 +83,6 @@ def setup_class(cls): cls.manager = ResourceManager([cls.navigation]) cls.service = NavigationRPCService(cls.manager) - @pytest.mark.asyncio async def test_get_location(self): async with ChannelFor([self.service]) as channel: client = NavigationServiceStub(channel) @@ -102,7 +91,6 @@ async def test_get_location(self): result = response.location assert result == self.navigation.LOCATION - @pytest.mark.asyncio async def test_get_obstacles(self): async with ChannelFor([self.service]) as channel: client = NavigationServiceStub(channel) @@ -111,7 +99,6 @@ async def test_get_obstacles(self): result = response.obstacles assert result == self.navigation.OBSTACLES - @pytest.mark.asyncio async def test_get_waypoints(self): async with ChannelFor([self.service]) as channel: client = NavigationServiceStub(channel) @@ -120,7 +107,6 @@ async def test_get_waypoints(self): result = response.waypoints assert result == self.navigation.WAYPOINTS - @pytest.mark.asyncio async def test_add_waypoint(self): async with ChannelFor([self.service]) as channel: assert self.navigation.add_waypoints == [] @@ -130,7 +116,6 @@ async def test_add_waypoint(self): await client.AddWaypoint(request) assert self.navigation.add_waypoints == [point] - @pytest.mark.asyncio async def test_remove_waypoint(self): async with ChannelFor([self.service]) as channel: assert self.navigation.remove_waypoints == [] @@ -140,7 +125,6 @@ async def test_remove_waypoint(self): await client.RemoveWaypoint(request) assert self.navigation.remove_waypoints == [id] - @pytest.mark.asyncio async def test_get_mode(self): async with ChannelFor([self.service]) as channel: client = NavigationServiceStub(channel) @@ -149,7 +133,6 @@ async def test_get_mode(self): result = response.mode assert result == Mode.MODE_UNSPECIFIED - @pytest.mark.asyncio async def test_set_mode(self): async with ChannelFor([self.service]) as channel: assert self.navigation.mode == Mode.MODE_UNSPECIFIED @@ -159,7 +142,6 @@ async def test_set_mode(self): await client.SetMode(request) assert self.navigation.mode == Mode.MODE_MANUAL - @pytest.mark.asyncio async def test_get_properties(self): async with ChannelFor([self.service]) as channel: client = NavigationServiceStub(channel) @@ -168,7 +150,6 @@ async def test_get_properties(self): result = response.map_type assert result == MapType.MAP_TYPE_UNSPECIFIED - @pytest.mark.asyncio async def test_do(self): async with ChannelFor([self.service]) as channel: client = NavigationServiceStub(channel) @@ -187,28 +168,24 @@ def setup_class(cls): cls.manager = ResourceManager([cls.navigation]) cls.service = NavigationRPCService(cls.manager) - @pytest.mark.asyncio async def test_get_location(self): async with ChannelFor([self.service]) as channel: client = NavigationClient(self.name, channel) result = await client.get_location() assert result == self.navigation.LOCATION - @pytest.mark.asyncio async def test_get_obstacles(self): async with ChannelFor([self.service]) as channel: client = NavigationClient(self.name, channel) result = await client.get_obstacles() assert result == self.navigation.OBSTACLES - @pytest.mark.asyncio async def test_get_waypoints(self): async with ChannelFor([self.service]) as channel: client = NavigationClient(self.name, channel) result = await client.get_waypoints() assert result == self.navigation.WAYPOINTS - @pytest.mark.asyncio async def test_add_waypoint(self): async with ChannelFor([self.service]) as channel: assert self.navigation.add_waypoints == [] @@ -217,7 +194,6 @@ async def test_add_waypoint(self): await client.add_waypoint(point) assert self.navigation.add_waypoints == [point] - @pytest.mark.asyncio async def test_remove_waypoint(self): async with ChannelFor([self.service]) as channel: assert self.navigation.remove_waypoints == [] @@ -226,14 +202,12 @@ async def test_remove_waypoint(self): await client.remove_waypoint(id) assert self.navigation.remove_waypoints == [id] - @pytest.mark.asyncio async def test_get_mode(self): async with ChannelFor([self.service]) as channel: client = NavigationClient(self.name, channel) result = await client.get_mode() assert result == Mode.MODE_UNSPECIFIED - @pytest.mark.asyncio async def test_set_mode(self): async with ChannelFor([self.service]) as channel: assert self.navigation.mode == Mode.MODE_UNSPECIFIED @@ -242,7 +216,6 @@ async def test_set_mode(self): await client.set_mode(mode) assert self.navigation.mode == Mode.MODE_MANUAL - @pytest.mark.asyncio async def test_get_properties(self): async with ChannelFor([self.service]) as channel: assert self.navigation.map_type == MapType.MAP_TYPE_UNSPECIFIED @@ -250,7 +223,6 @@ async def test_get_properties(self): result = await client.get_properties() assert self.navigation.map_type == result - @pytest.mark.asyncio async def test_do(self): async with ChannelFor([self.service]) as channel: client = NavigationClient(self.name, channel) diff --git a/tests/test_operations.py b/tests/test_operations.py index 6f209438a..69ace63c2 100644 --- a/tests/test_operations.py +++ b/tests/test_operations.py @@ -7,7 +7,6 @@ from viam.operations import METADATA_KEY, Operation, run_with_operation -@pytest.mark.asyncio async def test_is_cancelled(): event = asyncio.Event() opid = Operation("test-opid-0", event) @@ -24,7 +23,6 @@ async def test_is_cancelled(): assert await opid.is_cancelled() is True -@pytest.mark.asyncio async def test_wrapper(): class TestWrapperClass: long_running_task_cancelled = False @@ -60,7 +58,6 @@ async def long_running(self, **kwargs) -> bool: assert await asyncio.create_task(test_obj.long_running(timeout=0.02)) is True -@pytest.mark.asyncio async def test_wrapper_with_metadata(): test_metadata_opid = "11111111-1111-1111-1111-111111111111" diff --git a/tests/test_pose_tracker.py b/tests/test_pose_tracker.py index 7104627cb..b7de24d2c 100644 --- a/tests/test_pose_tracker.py +++ b/tests/test_pose_tracker.py @@ -1,4 +1,3 @@ -import pytest from grpclib.testing import ChannelFor from viam.components.pose_tracker import PoseTrackerClient @@ -20,7 +19,6 @@ class TestPoseTracker: mock_pose_tracker = MockPoseTracker(name="pt", poses=POSES) - @pytest.mark.asyncio async def test_get_poses(self): assert self.mock_pose_tracker.extra is None received_poses = await self.mock_pose_tracker.get_poses([], extra={"foo": "get_poses"}, timeout=1.23) @@ -29,13 +27,11 @@ async def test_get_poses(self): assert self.mock_pose_tracker.timeout == loose_approx(1.23) assert self.mock_pose_tracker.extra == {"foo": "get_poses"} - @pytest.mark.asyncio async def test_do(self): command = {"command": "args"} resp = await self.mock_pose_tracker.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self): geometries = await self.mock_pose_tracker.get_geometries() assert geometries == GEOMETRIES @@ -49,7 +45,6 @@ def setup_class(cls): cls.manager = ResourceManager([cls.pose_tracker]) cls.service = PoseTrackerRPCService(cls.manager) - @pytest.mark.asyncio async def test_get_poses(self): assert self.pose_tracker.extra is None async with ChannelFor([self.service]) as channel: @@ -62,7 +57,6 @@ async def test_get_poses(self): assert self.pose_tracker.timeout == loose_approx(2.34) assert self.pose_tracker.extra == {"foo": "get_poses"} - @pytest.mark.asyncio async def test_do(self): async with ChannelFor([self.service]) as channel: client = PoseTrackerServiceStub(channel) @@ -72,7 +66,6 @@ async def test_do(self): result = struct_to_dict(response.result) assert result == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self): async with ChannelFor([self.service]) as channel: client = PoseTrackerServiceStub(channel) @@ -89,7 +82,6 @@ def setup_class(cls): cls.manager = ResourceManager([cls.pose_tracker]) cls.service = PoseTrackerRPCService(cls.manager) - @pytest.mark.asyncio async def test_get_poses(self): assert self.pose_tracker.extra is None async with ChannelFor([self.service]) as channel: @@ -100,7 +92,6 @@ async def test_get_poses(self): assert self.pose_tracker.timeout == loose_approx(3.45) assert self.pose_tracker.extra == {"foo": "get_poses"} - @pytest.mark.asyncio async def test_do(self): async with ChannelFor([self.service]) as channel: client = PoseTrackerClient(self.name, channel) @@ -108,7 +99,6 @@ async def test_do(self): resp = await client.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self): async with ChannelFor([self.service]) as channel: client = PoseTrackerClient(self.name, channel) diff --git a/tests/test_power_sensor.py b/tests/test_power_sensor.py index 72b99bde0..b52688ef3 100644 --- a/tests/test_power_sensor.py +++ b/tests/test_power_sensor.py @@ -45,7 +45,6 @@ def generic_service(power_sensor: PowerSensor) -> GenericRPCService: class TestPowerSensor: - @pytest.mark.asyncio async def test_get_voltage(self, power_sensor: MockPowerSensor): assert power_sensor.extra is None (volts, is_ac) = await power_sensor.get_voltage(extra=EXTRA_PARAMS) @@ -72,7 +71,6 @@ async def test_get_readings(self, power_sensor: MockPowerSensor): assert value == READINGS assert power_sensor.extra == EXTRA_PARAMS - @pytest.mark.asyncio async def test_timeout(self, power_sensor: MockPowerSensor): assert power_sensor.timeout is None @@ -88,7 +86,6 @@ async def test_timeout(self, power_sensor: MockPowerSensor): await power_sensor.get_readings(timeout=8.90) assert power_sensor.timeout == loose_approx(8.90) - @pytest.mark.asyncio async def test_do(self, power_sensor: PowerSensor): command = {"command": "args"} resp = await power_sensor.do_command(command) @@ -96,7 +93,6 @@ async def test_do(self, power_sensor: PowerSensor): class TestService: - @pytest.mark.asyncio async def test_get_voltage(self, power_sensor: MockPowerSensor, service: PowerSensorRPCService): async with ChannelFor([service]) as channel: client = PowerSensorServiceStub(channel) @@ -108,7 +104,6 @@ async def test_get_voltage(self, power_sensor: MockPowerSensor, service: PowerSe assert power_sensor.extra == EXTRA_PARAMS assert power_sensor.timeout == loose_approx(8.90) - @pytest.mark.asyncio async def test_get_current(self, power_sensor: MockPowerSensor, service: PowerSensorRPCService): async with ChannelFor([service]) as channel: client = PowerSensorServiceStub(channel) @@ -120,7 +115,6 @@ async def test_get_current(self, power_sensor: MockPowerSensor, service: PowerSe assert power_sensor.extra == EXTRA_PARAMS assert power_sensor.timeout == loose_approx(8.90) - @pytest.mark.asyncio async def test_get_power(self, power_sensor: MockPowerSensor, service: PowerSensorRPCService): async with ChannelFor([service]) as channel: client = PowerSensorServiceStub(channel) @@ -131,7 +125,6 @@ async def test_get_power(self, power_sensor: MockPowerSensor, service: PowerSens assert power_sensor.extra == EXTRA_PARAMS assert power_sensor.timeout == loose_approx(8.90) - @pytest.mark.asyncio async def test_get_readings(self, power_sensor: MockPowerSensor, service: PowerSensorRPCService): async with ChannelFor([service]) as channel: client = PowerSensorServiceStub(channel) @@ -142,7 +135,6 @@ async def test_get_readings(self, power_sensor: MockPowerSensor, service: PowerS assert power_sensor.extra == EXTRA_PARAMS assert power_sensor.timeout == loose_approx(8.90) - @pytest.mark.asyncio async def test_do(self, power_sensor: MockPowerSensor, service: PowerSensorRPCService): async with ChannelFor([service]) as channel: client = PowerSensorServiceStub(channel) @@ -154,7 +146,6 @@ async def test_do(self, power_sensor: MockPowerSensor, service: PowerSensorRPCSe class TestClient: - @pytest.mark.asyncio async def test_get_voltage(self, power_sensor: MockPowerSensor, service: PowerSensorRPCService): async with ChannelFor([service]) as channel: client = PowerSensorClient(power_sensor.name, channel) @@ -165,7 +156,6 @@ async def test_get_voltage(self, power_sensor: MockPowerSensor, service: PowerSe assert power_sensor.extra == EXTRA_PARAMS assert power_sensor.timeout == loose_approx(1.45) - @pytest.mark.asyncio async def test_get_current(self, power_sensor: MockPowerSensor, service: PowerSensorRPCService): async with ChannelFor([service]) as channel: client = PowerSensorClient(power_sensor.name, channel) @@ -176,7 +166,6 @@ async def test_get_current(self, power_sensor: MockPowerSensor, service: PowerSe assert power_sensor.extra == EXTRA_PARAMS assert power_sensor.timeout == loose_approx(1.45) - @pytest.mark.asyncio async def test_get_power(self, power_sensor: MockPowerSensor, service: PowerSensorRPCService): async with ChannelFor([service]) as channel: client = PowerSensorClient(power_sensor.name, channel) @@ -186,7 +175,6 @@ async def test_get_power(self, power_sensor: MockPowerSensor, service: PowerSens assert power_sensor.extra == EXTRA_PARAMS assert power_sensor.timeout == loose_approx(1.45) - @pytest.mark.asyncio async def test_get_readings(self, power_sensor: MockPowerSensor, service: PowerSensorRPCService): async with ChannelFor([service]) as channel: client = PowerSensorClient(power_sensor.name, channel) @@ -196,7 +184,6 @@ async def test_get_readings(self, power_sensor: MockPowerSensor, service: PowerS assert power_sensor.extra == EXTRA_PARAMS assert power_sensor.timeout == loose_approx(2.34) - @pytest.mark.asyncio async def test_do(self, power_sensor: PowerSensor, service: PowerSensorRPCService): async with ChannelFor([service]) as channel: client = PowerSensorClient(power_sensor.name, channel) diff --git a/tests/test_provisioning_client.py b/tests/test_provisioning_client.py index d10514283..ebc8cb27a 100644 --- a/tests/test_provisioning_client.py +++ b/tests/test_provisioning_client.py @@ -47,21 +47,18 @@ def service() -> MockProvisioning: class TestClient: - @pytest.mark.asyncio async def test_get_network_list(self, service: MockProvisioning): async with ChannelFor([service]) as channel: client = ProvisioningClient(channel, PROVISIONING_SERVICE_METADATA) network_info = await client.get_network_list() assert network_info == NETWORK_INFO - @pytest.mark.asyncio async def test_get_smart_machine_status(self, service: MockProvisioning): async with ChannelFor([service]) as channel: client = ProvisioningClient(channel, PROVISIONING_SERVICE_METADATA) smart_machine_status = await client.get_smart_machine_status() assert smart_machine_status == SMART_MACHINE_STATUS_RESPONSE - @pytest.mark.asyncio async def test_set_network_credentials(self, service: MockProvisioning): async with ChannelFor([service]) as channel: client = ProvisioningClient(channel, PROVISIONING_SERVICE_METADATA) @@ -70,7 +67,6 @@ async def test_set_network_credentials(self, service: MockProvisioning): assert service.ssid == SSID assert service.psk == PSK - @pytest.mark.asyncio async def test_set_smart_machine_credentials(self, service: MockProvisioning): async with ChannelFor([service]) as channel: client = ProvisioningClient(channel, PROVISIONING_SERVICE_METADATA) diff --git a/tests/test_robot.py b/tests/test_robot.py index d525d5978..d14c27e3e 100644 --- a/tests/test_robot.py +++ b/tests/test_robot.py @@ -263,7 +263,6 @@ async def Shutdown(stream: Stream[ShutdownRequest, ShutdownResponse]) -> None: class TestRobotService: - @pytest.mark.asyncio async def test_resource_names(self, service: RobotService): async with ChannelFor([service]) as channel: client = RobotServiceStub(channel) @@ -271,7 +270,6 @@ async def test_resource_names(self, service: RobotService): assert len(response.resources) == len(RESOURCE_NAMES) assert set(response.resources) == set(RESOURCE_NAMES) - @pytest.mark.asyncio async def test_get_status(self, service: RobotService): async with ChannelFor([service]) as channel: client = RobotServiceStub(channel) @@ -282,7 +280,6 @@ async def test_get_status(self, service: RobotService): response: GetStatusResponse = await client.GetStatus(request) assert list(response.status) == [ARM_STATUS_MSG, CAMERA_STATUS_MSG] - @pytest.mark.asyncio async def test_stop_all(self, service: RobotService): async with ChannelFor([service]) as channel: client = RobotServiceStub(channel) @@ -342,7 +339,6 @@ async def error_stop(extra: Optional[Dict[str, Any]] = None, **kwargs): class TestRobotClient: - @pytest.mark.asyncio async def test_refresh(self, service: RobotService): async with ChannelFor([service]) as channel: client = await RobotClient.with_channel(channel, RobotClient.Options()) @@ -354,7 +350,6 @@ async def test_refresh(self, service: RobotService): assert set(client._resource_names) == set(RESOURCE_NAMES + [MockSensor.get_resource_name("sensor1")]) await client.close() - @pytest.mark.asyncio async def test_refresh_task(self, service: RobotService): async with ChannelFor([service]) as channel: client = await RobotClient.with_channel(channel, RobotClient.Options()) @@ -365,7 +360,6 @@ async def test_refresh_task(self, service: RobotService): assert client._refresh_task is not None await client.close() - @pytest.mark.asyncio async def test_close(self, service: RobotService): async with ChannelFor([service]) as channel: client = await RobotClient.with_channel(channel, RobotClient.Options(refresh_interval=100)) @@ -377,7 +371,6 @@ async def test_close(self, service: RobotService): with pytest.raises(asyncio.CancelledError): await client._refresh_task - @pytest.mark.asyncio async def test_resource_names(self, service: RobotService): async with ChannelFor([service]) as channel: client = await RobotClient.with_channel(channel, RobotClient.Options()) @@ -389,7 +382,6 @@ async def test_resource_names(self, service: RobotService): assert set(client._resource_names) == set(RESOURCE_NAMES + [MockSensor.get_resource_name("sensor1")]) await client.close() - @pytest.mark.asyncio async def test_get_component(self, service: RobotService): async with ChannelFor([service]) as channel: client = await RobotClient.with_channel(channel, RobotClient.Options()) @@ -417,7 +409,6 @@ async def test_get_component(self, service: RobotService): await client.close() - @pytest.mark.asyncio async def test_get_status(self, service: RobotService): async with ChannelFor([service]) as channel: client = await RobotClient.with_channel(channel, RobotClient.Options()) @@ -431,7 +422,6 @@ async def test_get_status(self, service: RobotService): assert struct_to_message(arm_status, ArmStatus) == ARM_STATUS await client.close() - @pytest.mark.asyncio async def test_get_service(self, service: RobotService): async with ChannelFor([service]) as channel: client = await RobotClient.with_channel(channel, RobotClient.Options()) @@ -440,7 +430,6 @@ async def test_get_service(self, service: RobotService): MLModelClient.from_robot(client, "mlmodel1") await client.close() - @pytest.mark.asyncio async def test_get_frame_system_config(self, service: RobotService): async with ChannelFor([service]) as channel: client = await RobotClient.with_channel(channel, RobotClient.Options()) @@ -448,7 +437,6 @@ async def test_get_frame_system_config(self, service: RobotService): assert configs == CONFIG_RESPONSE await client.close() - @pytest.mark.asyncio async def test_transform_pose(self, service: RobotService): async with ChannelFor([service]) as channel: client = await RobotClient.with_channel(channel, RobotClient.Options()) @@ -456,7 +444,6 @@ async def test_transform_pose(self, service: RobotService): assert pose == TRANSFORM_RESPONSE await client.close() - @pytest.mark.asyncio async def test_discover_components(self, service: RobotService): async with ChannelFor([service]) as channel: client = await RobotClient.with_channel(channel, RobotClient.Options()) @@ -464,7 +451,6 @@ async def test_discover_components(self, service: RobotService): assert discoveries == DISCOVERY_RESPONSE await client.close() - @pytest.mark.asyncio async def test_get_cloud_metadata(self, service: RobotService): async with ChannelFor([service]) as channel: client = await RobotClient.with_channel(channel, RobotClient.Options()) @@ -472,7 +458,6 @@ async def test_get_cloud_metadata(self, service: RobotService): assert md == GET_CLOUD_METADATA_RESPONSE await client.close() - @pytest.mark.asyncio async def test_get_version(self, service: RobotService): async with ChannelFor([service]) as channel: client = await RobotClient.with_channel(channel, RobotClient.Options()) @@ -480,7 +465,6 @@ async def test_get_version(self, service: RobotService): assert md == GET_VERVSION_RESPONSE await client.close() - @pytest.mark.asyncio async def test_get_machine_status(self, service: RobotService): async with ChannelFor([service]) as channel: client = await RobotClient.with_channel(channel, RobotClient.Options()) @@ -488,7 +472,6 @@ async def test_get_machine_status(self, service: RobotService): assert statuses == GET_MACHINE_STATUS_RESPONSE await client.close() - @pytest.mark.asyncio async def test_get_operations(self, service: RobotService): async with ChannelFor([service]) as channel: client = await RobotClient.with_channel(channel, RobotClient.Options()) @@ -496,7 +479,6 @@ async def test_get_operations(self, service: RobotService): assert ops == OPERATIONS_RESPONSE await client.close() - @pytest.mark.asyncio async def test_cancel_operation(self, service: RobotService): cancelled = None @@ -514,7 +496,6 @@ async def CancelOperation(stream: Stream[CancelOperationRequest, CancelOperation assert cancelled == OPERATION_ID await client.close() - @pytest.mark.asyncio async def test_block_for_operation(self, service: RobotService): blocked = None @@ -532,7 +513,6 @@ async def BlockForOperation(stream: Stream[BlockForOperationRequest, BlockForOpe assert blocked == OPERATION_ID await client.close() - @pytest.mark.asyncio async def test_stop_all(self, service: RobotService): async with ChannelFor([service]) as channel: client = await RobotClient.with_channel(channel, RobotClient.Options()) @@ -556,7 +536,6 @@ async def test_stop_all(self, service: RobotService): assert await motor.is_moving() is False await client.close() - @pytest.mark.asyncio async def test_create_or_reset_client(self, service: RobotService): async with ChannelFor([service]) as channel: client = await RobotClient.with_channel(channel, RobotClient.Options()) @@ -657,7 +636,6 @@ async def get_geometries( await client.close() Registry._SUBTYPES[Arm.SUBTYPE].create_rpc_client = old_create_client - @pytest.mark.asyncio async def test_shutdown(self, service: RobotService): async with ChannelFor([service]) as channel: diff --git a/tests/test_rpc.py b/tests/test_rpc.py index 6c07891cb..0b98effe7 100644 --- a/tests/test_rpc.py +++ b/tests/test_rpc.py @@ -10,7 +10,6 @@ from .mocks import components # noqa: F401 -@pytest.mark.asyncio async def test_reset_channel(): class TestStub: def __init__(self, channel: Channel) -> None: @@ -30,7 +29,6 @@ def __init__(self, channel: Channel) -> None: assert channel != channel2 -@pytest.mark.asyncio async def test_builtin_clients_are_reconfigurable(): async with ChannelFor([]) as channel: for subtype, registration in Registry.REGISTERED_SUBTYPES().items(): @@ -39,7 +37,6 @@ async def test_builtin_clients_are_reconfigurable(): assert isinstance(client, ReconfigurableResourceRPCClientBase) -@pytest.mark.asyncio async def test_viam_channel_closing(): def release(): nonlocal did_release diff --git a/tests/test_sensor.py b/tests/test_sensor.py index e1904e783..d9751fc1c 100644 --- a/tests/test_sensor.py +++ b/tests/test_sensor.py @@ -28,7 +28,6 @@ def sensor() -> MockSensor: class TestSensor: - @pytest.mark.asyncio async def test_get_readings(self, sensor): assert sensor.extra is None readings = await sensor.get_readings(extra=EXTRA_PARAMS, timeout=1.23) @@ -36,13 +35,11 @@ async def test_get_readings(self, sensor): assert sensor.extra == EXTRA_PARAMS assert sensor.timeout == loose_approx(1.23) - @pytest.mark.asyncio async def test_do(self, sensor): command = {"command": "args"} resp = await sensor.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, sensor): geometries = await sensor.get_geometries() assert geometries == GEOMETRIES @@ -59,7 +56,6 @@ def service(manager) -> SensorRPCService: class TestService: - @pytest.mark.asyncio async def test_get_readings(self, sensor, service): async with ChannelFor([service]) as channel: client = SensorServiceStub(channel) @@ -70,7 +66,6 @@ async def test_get_readings(self, sensor, service): assert sensor.extra == EXTRA_PARAMS assert sensor.timeout == loose_approx(2.34) - @pytest.mark.asyncio async def test_do(self, sensor: MockSensor, service: SensorRPCService): async with ChannelFor([service]) as channel: client = SensorServiceStub(channel) @@ -80,7 +75,6 @@ async def test_do(self, sensor: MockSensor, service: SensorRPCService): result = struct_to_dict(response.result) assert result == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, sensor: MockSensor, service: SensorRPCService): async with ChannelFor([service]) as channel: client = SensorServiceStub(channel) @@ -90,7 +84,6 @@ async def test_get_geometries(self, sensor: MockSensor, service: SensorRPCServic class TestClient: - @pytest.mark.asyncio async def test_get_readings(self, sensor, service): async with ChannelFor([service]) as channel: client = SensorClient(sensor.name, channel) @@ -100,7 +93,6 @@ async def test_get_readings(self, sensor, service): assert sensor.extra == EXTRA_PARAMS assert sensor.timeout == loose_approx(3.45) - @pytest.mark.asyncio async def test_do(self, sensor, manager, service): async with ChannelFor([service]) as channel: client = SensorClient(sensor.name, channel) @@ -108,7 +100,6 @@ async def test_do(self, sensor, manager, service): resp = await client.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self, sensor, service): async with ChannelFor([service]) as channel: client = SensorClient(sensor.name, channel) diff --git a/tests/test_sensors_service.py b/tests/test_sensors_service.py index 7e3112d6c..57ca7d6ff 100644 --- a/tests/test_sensors_service.py +++ b/tests/test_sensors_service.py @@ -59,7 +59,6 @@ def service() -> MockSensors: class TestClient: - @pytest.mark.asyncio async def test_get_sensors(self, service: MockSensors): async with ChannelFor([service]) as channel: client = SensorsClient(SENSOR_SERVICE_NAME, channel) @@ -76,7 +75,6 @@ async def test_get_sensors(self, service: MockSensors): assert service.extra == {} assert service.timeout is None - @pytest.mark.asyncio async def test_get_readings(self, service: MockSensors): async with ChannelFor([service]) as channel: client = SensorsClient(SENSOR_SERVICE_NAME, channel) @@ -95,7 +93,6 @@ async def test_get_readings(self, service: MockSensors): assert service.sensors_for_readings == sensors assert service.extra == extra - @pytest.mark.asyncio async def test_do(self, service: MockSensors): async with ChannelFor([service]) as channel: client = SensorsClient(SENSOR_SERVICE_NAME, channel) diff --git a/tests/test_servo.py b/tests/test_servo.py index b52680fba..595752872 100644 --- a/tests/test_servo.py +++ b/tests/test_servo.py @@ -1,4 +1,3 @@ -import pytest from grpclib.testing import ChannelFor from viam.components.servo import ServoClient, ServoStatus, create_status @@ -24,21 +23,18 @@ class TestServo: servo = MockServo(name="servo") pos = 42 - @pytest.mark.asyncio async def test_move(self): await self.servo.move(self.pos, timeout=1.23, extra={"foo": "move"}) assert self.servo.angle == self.pos assert self.servo.timeout == loose_approx(1.23) assert self.servo.extra == {"foo": "move"} - @pytest.mark.asyncio async def test_get_position(self): new_pos = await self.servo.get_position(timeout=2.34, extra={"foo": "get_position"}) assert new_pos == self.pos assert self.servo.timeout == loose_approx(2.34) assert self.servo.extra == {"foo": "get_position"} - @pytest.mark.asyncio async def test_stop(self): assert self.servo.is_stopped is False await self.servo.stop(timeout=3.45, extra={"foo": "stop"}) @@ -46,27 +42,23 @@ async def test_stop(self): assert self.servo.timeout == loose_approx(3.45) assert self.servo.extra == {"foo": "stop"} - @pytest.mark.asyncio async def test_is_moving(self): await self.servo.move(self.pos) assert await self.servo.is_moving() await self.servo.stop() assert not await self.servo.is_moving() - @pytest.mark.asyncio async def test_do(self): command = {"command": "args"} resp = await self.servo.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_status(self): await self.servo.move(self.pos) status = await create_status(self.servo) assert status.name == self.servo.get_resource_name(self.servo.name) assert status.status == message_to_struct(ServoStatus(position_deg=self.pos, is_moving=True)) - @pytest.mark.asyncio async def test_get_geometries(self): geometries = await self.servo.get_geometries() assert geometries == GEOMETRIES @@ -81,7 +73,6 @@ def setup_class(cls): cls.service = ServoRPCService(cls.manager) cls.pos = 42 - @pytest.mark.asyncio async def test_move(self): async with ChannelFor([self.service]) as channel: client = ServoServiceStub(channel) @@ -91,7 +82,6 @@ async def test_move(self): assert self.servo.timeout == loose_approx(1.23) assert self.servo.extra == {"foo": "move"} - @pytest.mark.asyncio async def test_get_position(self): async with ChannelFor([self.service]) as channel: client = ServoServiceStub(channel) @@ -101,7 +91,6 @@ async def test_get_position(self): assert self.servo.timeout == loose_approx(2.34) assert self.servo.extra == {"foo": "get_position"} - @pytest.mark.asyncio async def test_stop(self): async with ChannelFor([self.service]) as channel: assert self.servo.is_stopped is False @@ -112,7 +101,6 @@ async def test_stop(self): assert self.servo.timeout == loose_approx(3.45) assert self.servo.extra == {"foo": "stop"} - @pytest.mark.asyncio async def test_is_moving(self): async with ChannelFor([self.service]) as channel: assert self.servo.is_stopped is True @@ -122,7 +110,6 @@ async def test_is_moving(self): response: IsMovingResponse = await client.IsMoving(request) assert response.is_moving is True - @pytest.mark.asyncio async def test_do(self): async with ChannelFor([self.service]) as channel: client = ServoServiceStub(channel) @@ -132,7 +119,6 @@ async def test_do(self): result = struct_to_dict(response.result) assert result == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self): async with ChannelFor([self.service]) as channel: client = ServoServiceStub(channel) @@ -150,7 +136,6 @@ def setup_class(cls): cls.service = ServoRPCService(cls.manager) cls.pos = 42 - @pytest.mark.asyncio async def test_move(self): async with ChannelFor([self.service]) as channel: client = ServoClient(self.servo.name, channel) @@ -159,7 +144,6 @@ async def test_move(self): assert self.servo.timeout == loose_approx(1.23) assert self.servo.extra == {"foo": "move"} - @pytest.mark.asyncio async def test_get_position(self): async with ChannelFor([self.service]) as channel: client = ServoClient(self.servo.name, channel) @@ -168,7 +152,6 @@ async def test_get_position(self): assert self.servo.timeout == loose_approx(2.34) assert self.servo.extra == {"foo": "get_position"} - @pytest.mark.asyncio async def test_stop(self): async with ChannelFor([self.service]) as channel: assert self.servo.is_stopped is False @@ -178,7 +161,6 @@ async def test_stop(self): assert self.servo.timeout == loose_approx(3.45) assert self.servo.extra == {"foo": "stop"} - @pytest.mark.asyncio async def test_is_moving(self): async with ChannelFor([self.service]) as channel: client = ServoClient(self.name, channel) @@ -186,7 +168,6 @@ async def test_is_moving(self): self.servo.is_stopped = False assert await client.is_moving() is True - @pytest.mark.asyncio async def test_do(self): async with ChannelFor([self.service]) as channel: client = ServoClient(self.name, channel) @@ -194,7 +175,6 @@ async def test_do(self): resp = await client.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_get_geometries(self): async with ChannelFor([self.service]) as channel: client = ServoClient(self.name, channel) diff --git a/tests/test_sessions_client.py b/tests/test_sessions_client.py index 97b02a80f..0695e3d33 100644 --- a/tests/test_sessions_client.py +++ b/tests/test_sessions_client.py @@ -40,7 +40,6 @@ async def SendSessionHeartbeat(stream) -> None: return service -@pytest.mark.asyncio async def test_init_client(): async with ChannelFor([]) as channel: client = SessionsClient(channel, "", None) @@ -48,7 +47,6 @@ async def test_init_client(): assert client._supported == _SupportedState.UNKNOWN -@pytest.mark.asyncio async def test_sessions_error(): async with ChannelFor([]) as channel: client = SessionsClient(channel, "", None) @@ -59,7 +57,6 @@ async def test_sessions_error(): assert e_info.value.status == Status.UNKNOWN -@pytest.mark.asyncio async def test_sessions_not_supported(): async with ChannelFor([]) as channel: client = SessionsClient(channel, "", None) @@ -68,7 +65,6 @@ async def test_sessions_not_supported(): assert client._supported == _SupportedState.FALSE -@pytest.mark.asyncio async def test_sessions_not_implemented(service_without_session: MockRobot): async with ChannelFor([service_without_session]) as channel: client = SessionsClient(channel, "", None) @@ -76,7 +72,6 @@ async def test_sessions_not_implemented(service_without_session: MockRobot): assert client._supported == _SupportedState.FALSE -@pytest.mark.asyncio async def test_sessions_heartbeat_disconnect(service_without_heartbeat: MockRobot): async with ChannelFor([service_without_heartbeat]) as channel: client = SessionsClient(channel, "", None) @@ -94,7 +89,6 @@ async def _run_server(sock: socket.socket, handlers: List[IServable], shutdown_s server.close() -@pytest.mark.asyncio async def test_sessions_heartbeat_thread_blocked(): sock = socket.socket() sock.bind(("", 0)) @@ -123,7 +117,6 @@ async def test_sessions_heartbeat_thread_blocked(): assert m.heartbeat_count >= 5 -@pytest.mark.asyncio async def test_sessions_disabled(service: MockRobot): async with ChannelFor([service]) as channel: client = SessionsClient(channel, "", None, disabled=True) diff --git a/tests/test_slam.py b/tests/test_slam.py index 98632b4fa..258ecbae6 100644 --- a/tests/test_slam.py +++ b/tests/test_slam.py @@ -1,6 +1,5 @@ from typing import List -import pytest from grpclib.testing import ChannelFor from viam.proto.common import DoCommandRequest, DoCommandResponse @@ -26,12 +25,10 @@ class TestSLAMService: name = "slam" slam = MockSLAM(name="slam") - @pytest.mark.asyncio async def test_get_internal_state_chunks(self): chunks = await self.slam.get_internal_state() assert chunks == MockSLAM.INTERNAL_STATE_CHUNKS - @pytest.mark.asyncio async def test_get_point_cloud_map(self): chunks = await self.slam.get_point_cloud_map() assert chunks == MockSLAM.POINT_CLOUD_PCD_CHUNKS @@ -40,18 +37,15 @@ async def test_get_point_cloud_map_return_edited(self): chunks = await self.slam.get_point_cloud_map(return_edited_map=True) assert chunks == MockSLAM.POINT_CLOUD_PCD_CHUNKS_EDITED - @pytest.mark.asyncio async def test_get_position(self): pos = await self.slam.get_position() assert pos == MockSLAM.POSITION - @pytest.mark.asyncio async def test_do(self): command = {"command": "args"} resp = await self.slam.do_command(command) assert resp == {"command": command} - @pytest.mark.asyncio async def test_get_properties(self): properties = await self.slam.get_properties() assert properties.cloud_slam == MockSLAM.CLOUD_SLAM @@ -68,7 +62,6 @@ def setup_class(cls): cls.manager = ResourceManager([cls.slam]) cls.service = SLAMRPCService(cls.manager) - @pytest.mark.asyncio async def test_get_internal_state(self): async with ChannelFor([self.service]) as channel: client = SLAMServiceStub(channel) @@ -77,7 +70,6 @@ async def test_get_internal_state(self): for i, chunk in enumerate(response): assert chunk.internal_state_chunk == MockSLAM.INTERNAL_STATE_CHUNKS[i] - @pytest.mark.asyncio async def test_get_point_cloud_map(self): async with ChannelFor([self.service]) as channel: client = SLAMServiceStub(channel) @@ -86,7 +78,6 @@ async def test_get_point_cloud_map(self): for i, chunk in enumerate(response): assert chunk.point_cloud_pcd_chunk == MockSLAM.POINT_CLOUD_PCD_CHUNKS[i] - @pytest.mark.asyncio async def test_get_position(self): async with ChannelFor([self.service]) as channel: client = SLAMServiceStub(channel) @@ -94,7 +85,6 @@ async def test_get_position(self): response: GetPositionResponse = await client.GetPosition(request) assert response.pose == MockSLAM.POSITION - @pytest.mark.asyncio async def test_get_properties(self): async with ChannelFor([self.service]) as channel: client = SLAMServiceStub(channel) @@ -105,7 +95,6 @@ async def test_get_properties(self): assert response.internal_state_file_type == MockSLAM.INTERNAL_STATE_FILE_TYPE assert response.sensor_info == MockSLAM.SENSOR_INFO - @pytest.mark.asyncio async def test_do(self): async with ChannelFor([self.service]) as channel: client = SLAMServiceStub(channel) @@ -124,7 +113,6 @@ def setup_class(cls): cls.manager = ResourceManager([cls.slam]) cls.service = SLAMRPCService(cls.manager) - @pytest.mark.asyncio async def test_get_internal_state(self): async with ChannelFor([self.service]) as channel: client = SLAMClient(self.name, channel) @@ -133,7 +121,6 @@ async def test_get_internal_state(self): for i, chunk in enumerate(response): assert chunk == MockSLAM.INTERNAL_STATE_CHUNKS[i] - @pytest.mark.asyncio async def test_get_point_cloud_map(self): async with ChannelFor([self.service]) as channel: client = SLAMClient(self.name, channel) @@ -142,14 +129,12 @@ async def test_get_point_cloud_map(self): for i, chunk in enumerate(response): assert chunk == MockSLAM.POINT_CLOUD_PCD_CHUNKS[i] - @pytest.mark.asyncio async def test_get_position(self): async with ChannelFor([self.service]) as channel: client = SLAMClient(self.name, channel) response = await client.get_position() assert response == MockSLAM.POSITION - @pytest.mark.asyncio async def test_get_properties(self): async with ChannelFor([self.service]) as channel: client = SLAMClient(self.name, channel) @@ -159,7 +144,6 @@ async def test_get_properties(self): assert properties.internal_state_file_type == MockSLAM.INTERNAL_STATE_FILE_TYPE assert properties.sensor_info == MockSLAM.SENSOR_INFO - @pytest.mark.asyncio async def test_do(self): async with ChannelFor([self.service]) as channel: client = SLAMClient(self.name, channel) diff --git a/tests/test_utils.py b/tests/test_utils.py index 9d628db2e..2ddef12e5 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -231,7 +231,6 @@ def test_sensor_readings(): assert response == expected -@pytest.mark.asyncio async def test_pointer_counter(): counter = PointerCounter() diff --git a/tests/test_vision_service.py b/tests/test_vision_service.py index c780f7264..72da84e76 100644 --- a/tests/test_vision_service.py +++ b/tests/test_vision_service.py @@ -138,14 +138,12 @@ def service(vision: MockVision) -> VisionRPCService: class TestVision: - @pytest.mark.asyncio async def test_get_properties(self, vision: MockVision): extra = {"foo": "get_properties"} response = await vision.get_properties(extra=extra) assert response == PROPERTIES assert vision.extra == extra - @pytest.mark.asyncio async def test_capture_all_from_camera(self, vision: MockVision): extra = {"foo": "capture_all_from_camera"} response = await vision.capture_all_from_camera( @@ -162,42 +160,36 @@ async def test_capture_all_from_camera(self, vision: MockVision): assert response.objects is None assert vision.extra == extra - @pytest.mark.asyncio async def test_get_detections_from_camera(self, vision: MockVision): extra = {"foo": "get_detections_from_camera"} response = await vision.get_detections_from_camera("fake-camera", extra=extra) assert response == DETECTIONS assert vision.extra == extra - @pytest.mark.asyncio async def test_get_detections(self, vision: MockVision): extra = {"foo": "get_detections"} response = await vision.get_detections(IMAGE, extra=extra) assert response == DETECTIONS assert vision.extra == extra - @pytest.mark.asyncio async def test_get_classifications_from_camera(self, vision: MockVision): extra = {"foo": "get_classifications_from_camera"} response = await vision.get_classifications_from_camera("fake-camera", 1, extra=extra) assert response == CLASSIFICATIONS assert vision.extra == extra - @pytest.mark.asyncio async def test_get_classifications(self, vision: MockVision): extra = {"foo": "get_classifications"} response = await vision.get_classifications(IMAGE, 1, extra=extra) assert response == CLASSIFICATIONS assert vision.extra == extra - @pytest.mark.asyncio async def test_get_object_point_clouds(self, vision: MockVision): extra = {"foo": "get_object_point_clouds"} response = await vision.get_object_point_clouds("camera", extra=extra) assert response == POINT_CLOUDS assert vision.extra == extra - @pytest.mark.asyncio async def test_do(self, vision: MockVision): command = {"command": "args"} response = await vision.do_command(command) @@ -205,7 +197,6 @@ async def test_do(self, vision: MockVision): class TestService: - @pytest.mark.asyncio async def test_capture_all_from_camera(self, vision: MockVision, service: VisionRPCService): async with ChannelFor([service]) as channel: client = VisionServiceStub(channel) @@ -221,7 +212,6 @@ async def test_capture_all_from_camera(self, vision: MockVision, service: Vision assert response.objects == [] assert vision.extra == extra - @pytest.mark.asyncio async def test_get_properties(self, vision: MockVision, service: VisionRPCService): async with ChannelFor([service]) as channel: client = VisionServiceStub(channel) @@ -233,7 +223,6 @@ async def test_get_properties(self, vision: MockVision, service: VisionRPCServic assert response.object_point_clouds_supported == PROPERTIES.object_point_clouds_supported assert vision.extra == extra - @pytest.mark.asyncio async def test_get_detections_from_camera(self, vision: MockVision, service: VisionRPCService): async with ChannelFor([service]) as channel: client = VisionServiceStub(channel) @@ -243,7 +232,6 @@ async def test_get_detections_from_camera(self, vision: MockVision, service: Vis assert response.detections == DETECTIONS assert vision.extra == extra - @pytest.mark.asyncio async def test_get_detections(self, vision: MockVision, service: VisionRPCService): async with ChannelFor([service]) as channel: client = VisionServiceStub(channel) @@ -260,7 +248,6 @@ async def test_get_detections(self, vision: MockVision, service: VisionRPCServic assert response.detections == DETECTIONS assert vision.extra == extra - @pytest.mark.asyncio async def test_get_classifications_from_camera(self, vision: MockVision, service: VisionRPCService): async with ChannelFor([service]) as channel: client = VisionServiceStub(channel) @@ -270,7 +257,6 @@ async def test_get_classifications_from_camera(self, vision: MockVision, service assert response.classifications == CLASSIFICATIONS assert vision.extra == extra - @pytest.mark.asyncio async def test_get_classifications(self, vision: MockVision, service: VisionRPCService): async with ChannelFor([service]) as channel: client = VisionServiceStub(channel) @@ -288,7 +274,6 @@ async def test_get_classifications(self, vision: MockVision, service: VisionRPCS assert response.classifications == CLASSIFICATIONS assert vision.extra == extra - @pytest.mark.asyncio async def test_get_object_point_clouds(self, vision: MockVision, service: VisionRPCService): async with ChannelFor([service]) as channel: client = VisionServiceStub(channel) @@ -303,7 +288,6 @@ async def test_get_object_point_clouds(self, vision: MockVision, service: Vision assert response.objects == POINT_CLOUDS assert vision.extra == extra - @pytest.mark.asyncio async def test_do(self, vision: MockVision, service: VisionRPCService): async with ChannelFor([service]) as channel: client = VisionServiceStub(channel) @@ -314,7 +298,6 @@ async def test_do(self, vision: MockVision, service: VisionRPCService): class TestClient: - @pytest.mark.asyncio async def test_get_properties(self, vision: MockVision, service: VisionRPCService): async with ChannelFor([service]) as channel: client = VisionClient(VISION_SERVICE_NAME, channel) @@ -323,7 +306,6 @@ async def test_get_properties(self, vision: MockVision, service: VisionRPCServic assert response == PROPERTIES assert vision.extra == extra - @pytest.mark.asyncio async def test_capture_all_from_camera(self, vision: MockVision, service: VisionRPCService): async with ChannelFor([service]) as channel: client = VisionClient(VISION_SERVICE_NAME, channel) @@ -342,7 +324,6 @@ async def test_capture_all_from_camera(self, vision: MockVision, service: Vision assert response.objects == POINT_CLOUDS assert vision.extra == extra - @pytest.mark.asyncio async def test_get_detections_from_camera(self, vision: MockVision, service: VisionRPCService): async with ChannelFor([service]) as channel: client = VisionClient(VISION_SERVICE_NAME, channel) @@ -351,7 +332,6 @@ async def test_get_detections_from_camera(self, vision: MockVision, service: Vis assert response == DETECTIONS assert vision.extra == extra - @pytest.mark.asyncio async def test_get_detections(self, vision: MockVision, service: VisionRPCService): async with ChannelFor([service]) as channel: client = VisionClient(VISION_SERVICE_NAME, channel) @@ -360,7 +340,6 @@ async def test_get_detections(self, vision: MockVision, service: VisionRPCServic assert response == DETECTIONS assert vision.extra == extra - @pytest.mark.asyncio async def test_get_classifications_from_camera(self, vision: MockVision, service: VisionRPCService): async with ChannelFor([service]) as channel: client = VisionClient(VISION_SERVICE_NAME, channel) @@ -369,7 +348,6 @@ async def test_get_classifications_from_camera(self, vision: MockVision, service assert response == CLASSIFICATIONS assert vision.extra == extra - @pytest.mark.asyncio async def test_get_classifications(self, vision: MockVision, service: VisionRPCService): async with ChannelFor([service]) as channel: client = VisionClient(VISION_SERVICE_NAME, channel) @@ -378,7 +356,6 @@ async def test_get_classifications(self, vision: MockVision, service: VisionRPCS assert response == CLASSIFICATIONS assert vision.extra == extra - @pytest.mark.asyncio async def test_get_object_point_clouds(self, vision: MockVision, service: VisionRPCService): async with ChannelFor([service]) as channel: client = VisionClient(VISION_SERVICE_NAME, channel) @@ -387,7 +364,6 @@ async def test_get_object_point_clouds(self, vision: MockVision, service: Vision assert response == POINT_CLOUDS assert vision.extra == extra - @pytest.mark.asyncio async def test_do(self, service: VisionRPCService): async with ChannelFor([service]) as channel: client = VisionClient(VISION_SERVICE_NAME, channel) diff --git a/tox.ini b/tox.ini deleted file mode 100644 index fdb02ebbe..000000000 --- a/tox.ini +++ /dev/null @@ -1,33 +0,0 @@ -[tox] -isolated_build = True -envlist = - python3.8 - py39 - py310 - py311 - py312 - docs - -[testenv] -allowlist_externals = - make -deps = - coverage - pyright - pytest - pytest-asyncio -extras = - mlmodel -recreate = True -commands = - make _typecheck - make _test - -[testenv:docs] -allowlist_externals = - poetry - make -recreate = True -commands = - poetry install --all-extras - make test_docs diff --git a/uv.lock b/uv.lock new file mode 100644 index 000000000..89602e592 --- /dev/null +++ b/uv.lock @@ -0,0 +1,2370 @@ +version = 1 +requires-python = ">=3.8.1" +resolution-markers = [ + "python_full_version < '3.9'", + "python_full_version >= '3.9' and python_full_version < '3.12'", + "python_full_version >= '3.12'", +] + +[[package]] +name = "alabaster" +version = "0.7.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/71/a8ee96d1fd95ca04a0d2e2d9c4081dac4c2d2b12f7ddb899c8cb9bfd1532/alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2", size = 11454 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/88/c7083fc61120ab661c5d0b82cb77079fc1429d3f913a456c1c82cf4658f7/alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3", size = 13857 }, +] + +[[package]] +name = "anyascii" +version = "0.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/52/93b9ea99063f7cf37fb67f5e3f49480686cbe7f228c48b9d713326223b6e/anyascii-0.3.2.tar.gz", hash = "sha256:9d5d32ef844fe225b8bc7cba7f950534fae4da27a9bf3a6bea2cb0ea46ce4730", size = 214052 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/7b/a9a747e0632271d855da379532b05a62c58e979813814a57fa3b3afeb3a4/anyascii-0.3.2-py3-none-any.whl", hash = "sha256:3b3beef6fc43d9036d3b0529050b0c48bfad8bc960e9e562d7223cfb94fe45d4", size = 289923 }, +] + +[[package]] +name = "appnope" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, +] + +[[package]] +name = "astroid" +version = "3.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/53/1067e1113ecaf58312357f2cd93063674924119d80d173adc3f6f2387aa2/astroid-3.2.4.tar.gz", hash = "sha256:0e14202810b30da1b735827f78f5157be2bbd4a7a59b7707ca0bfc2fb4c0063a", size = 397576 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/96/b32bbbb46170a1c8b8b1f28c794202e25cfe743565e9d3469b8eb1e0cc05/astroid-3.2.4-py3-none-any.whl", hash = "sha256:413658a61eeca6202a59231abb473f932038fbcbf1666587f66d482083413a25", size = 276348 }, +] + +[[package]] +name = "asttokens" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/45/1d/f03bcb60c4a3212e15f99a56085d93093a497718adf828d050b9d675da81/asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0", size = 62284 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/86/4736ac618d82a20d87d2f92ae19441ebc7ac9e7a581d7e58bbe79233b24a/asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24", size = 27764 }, +] + +[[package]] +name = "attrs" +version = "24.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/0f/aafca9af9315aee06a89ffde799a10a582fe8de76c563ee80bbcdc08b3fb/attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346", size = 792678 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2", size = 63001 }, +] + +[[package]] +name = "babel" +version = "2.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytz", marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2a/74/f1bc80f23eeba13393b7222b11d95ca3af2c1e28edca18af487137eefed9/babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316", size = 9348104 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/20/bc79bc575ba2e2a7f70e8a1155618bb1301eaa5132a8271373a6903f73f8/babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b", size = 9587599 }, +] + +[[package]] +name = "backcall" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/40/764a663805d84deee23043e1426a9175567db89c8b3287b5c2ad9f71aa93/backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e", size = 18041 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/1c/ff6546b6c12603d8dd1070aa3c3d273ad4c07f5771689a7b69a550e8c951/backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255", size = 11157 }, +] + +[[package]] +name = "certifi" +version = "2024.8.30" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", size = 168507 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", size = 167321 }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191 }, + { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592 }, + { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024 }, + { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188 }, + { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571 }, + { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687 }, + { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211 }, + { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325 }, + { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784 }, + { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564 }, + { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804 }, + { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299 }, + { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264 }, + { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651 }, + { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259 }, + { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200 }, + { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235 }, + { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721 }, + { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242 }, + { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999 }, + { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242 }, + { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604 }, + { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727 }, + { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400 }, + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, + { url = "https://files.pythonhosted.org/packages/48/08/15bf6b43ae9bd06f6b00ad8a91f5a8fe1069d4c9fab550a866755402724e/cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b", size = 182457 }, + { url = "https://files.pythonhosted.org/packages/c2/5b/f1523dd545f92f7df468e5f653ffa4df30ac222f3c884e51e139878f1cb5/cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964", size = 425932 }, + { url = "https://files.pythonhosted.org/packages/53/93/7e547ab4105969cc8c93b38a667b82a835dd2cc78f3a7dad6130cfd41e1d/cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9", size = 448585 }, + { url = "https://files.pythonhosted.org/packages/56/c4/a308f2c332006206bb511de219efeff090e9d63529ba0a77aae72e82248b/cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc", size = 456268 }, + { url = "https://files.pythonhosted.org/packages/ca/5b/b63681518265f2f4060d2b60755c1c77ec89e5e045fc3773b72735ddaad5/cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c", size = 436592 }, + { url = "https://files.pythonhosted.org/packages/bb/19/b51af9f4a4faa4a8ac5a0e5d5c2522dcd9703d07fac69da34a36c4d960d3/cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1", size = 446512 }, + { url = "https://files.pythonhosted.org/packages/e2/63/2bed8323890cb613bbecda807688a31ed11a7fe7afe31f8faaae0206a9a3/cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8", size = 171576 }, + { url = "https://files.pythonhosted.org/packages/2f/70/80c33b044ebc79527447fd4fbc5455d514c3bb840dede4455de97da39b4d/cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1", size = 181229 }, + { url = "https://files.pythonhosted.org/packages/b9/ea/8bb50596b8ffbc49ddd7a1ad305035daa770202a6b782fc164647c2673ad/cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16", size = 182220 }, + { url = "https://files.pythonhosted.org/packages/ae/11/e77c8cd24f58285a82c23af484cf5b124a376b32644e445960d1a4654c3a/cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36", size = 178605 }, + { url = "https://files.pythonhosted.org/packages/ed/65/25a8dc32c53bf5b7b6c2686b42ae2ad58743f7ff644844af7cdb29b49361/cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8", size = 424910 }, + { url = "https://files.pythonhosted.org/packages/42/7a/9d086fab7c66bd7c4d0f27c57a1b6b068ced810afc498cc8c49e0088661c/cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576", size = 447200 }, + { url = "https://files.pythonhosted.org/packages/da/63/1785ced118ce92a993b0ec9e0d0ac8dc3e5dbfbcaa81135be56c69cabbb6/cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87", size = 454565 }, + { url = "https://files.pythonhosted.org/packages/74/06/90b8a44abf3556599cdec107f7290277ae8901a58f75e6fe8f970cd72418/cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0", size = 435635 }, + { url = "https://files.pythonhosted.org/packages/bd/62/a1f468e5708a70b1d86ead5bab5520861d9c7eacce4a885ded9faa7729c3/cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3", size = 445218 }, + { url = "https://files.pythonhosted.org/packages/5b/95/b34462f3ccb09c2594aa782d90a90b045de4ff1f70148ee79c69d37a0a5a/cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595", size = 460486 }, + { url = "https://files.pythonhosted.org/packages/fc/fc/a1e4bebd8d680febd29cf6c8a40067182b64f00c7d105f8f26b5bc54317b/cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a", size = 437911 }, + { url = "https://files.pythonhosted.org/packages/e6/c3/21cab7a6154b6a5ea330ae80de386e7665254835b9e98ecc1340b3a7de9a/cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e", size = 460632 }, + { url = "https://files.pythonhosted.org/packages/cb/b5/fd9f8b5a84010ca169ee49f4e4ad6f8c05f4e3545b72ee041dbbcb159882/cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7", size = 171820 }, + { url = "https://files.pythonhosted.org/packages/8c/52/b08750ce0bce45c143e1b5d7357ee8c55341b52bdef4b0f081af1eb248c2/cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662", size = 181290 }, +] + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/63/09/c1bc53dab74b1816a00d8d030de5bf98f724c52c1635e07681d312f20be8/charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5", size = 104809 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/61/095a0aa1a84d1481998b534177c8566fdc50bb1233ea9a0478cd3cc075bd/charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3", size = 194219 }, + { url = "https://files.pythonhosted.org/packages/cc/94/f7cf5e5134175de79ad2059edf2adce18e0685ebdb9227ff0139975d0e93/charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027", size = 122521 }, + { url = "https://files.pythonhosted.org/packages/46/6a/d5c26c41c49b546860cc1acabdddf48b0b3fb2685f4f5617ac59261b44ae/charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03", size = 120383 }, + { url = "https://files.pythonhosted.org/packages/b8/60/e2f67915a51be59d4539ed189eb0a2b0d292bf79270410746becb32bc2c3/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d", size = 138223 }, + { url = "https://files.pythonhosted.org/packages/05/8c/eb854996d5fef5e4f33ad56927ad053d04dc820e4a3d39023f35cad72617/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e", size = 148101 }, + { url = "https://files.pythonhosted.org/packages/f6/93/bb6cbeec3bf9da9b2eba458c15966658d1daa8b982c642f81c93ad9b40e1/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6", size = 140699 }, + { url = "https://files.pythonhosted.org/packages/da/f1/3702ba2a7470666a62fd81c58a4c40be00670e5006a67f4d626e57f013ae/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5", size = 142065 }, + { url = "https://files.pythonhosted.org/packages/3f/ba/3f5e7be00b215fa10e13d64b1f6237eb6ebea66676a41b2bcdd09fe74323/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537", size = 144505 }, + { url = "https://files.pythonhosted.org/packages/33/c3/3b96a435c5109dd5b6adc8a59ba1d678b302a97938f032e3770cc84cd354/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c", size = 139425 }, + { url = "https://files.pythonhosted.org/packages/43/05/3bf613e719efe68fb3a77f9c536a389f35b95d75424b96b426a47a45ef1d/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12", size = 145287 }, + { url = "https://files.pythonhosted.org/packages/58/78/a0bc646900994df12e07b4ae5c713f2b3e5998f58b9d3720cce2aa45652f/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f", size = 149929 }, + { url = "https://files.pythonhosted.org/packages/eb/5c/97d97248af4920bc68687d9c3b3c0f47c910e21a8ff80af4565a576bd2f0/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269", size = 141605 }, + { url = "https://files.pythonhosted.org/packages/a8/31/47d018ef89f95b8aded95c589a77c072c55e94b50a41aa99c0a2008a45a4/charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519", size = 142646 }, + { url = "https://files.pythonhosted.org/packages/ae/d5/4fecf1d58bedb1340a50f165ba1c7ddc0400252d6832ff619c4568b36cc0/charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73", size = 92846 }, + { url = "https://files.pythonhosted.org/packages/a2/a0/4af29e22cb5942488cf45630cbdd7cefd908768e69bdd90280842e4e8529/charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09", size = 100343 }, + { url = "https://files.pythonhosted.org/packages/68/77/02839016f6fbbf808e8b38601df6e0e66c17bbab76dff4613f7511413597/charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db", size = 191647 }, + { url = "https://files.pythonhosted.org/packages/3e/33/21a875a61057165e92227466e54ee076b73af1e21fe1b31f1e292251aa1e/charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96", size = 121434 }, + { url = "https://files.pythonhosted.org/packages/dd/51/68b61b90b24ca35495956b718f35a9756ef7d3dd4b3c1508056fa98d1a1b/charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e", size = 118979 }, + { url = "https://files.pythonhosted.org/packages/e4/a6/7ee57823d46331ddc37dd00749c95b0edec2c79b15fc0d6e6efb532e89ac/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f", size = 136582 }, + { url = "https://files.pythonhosted.org/packages/74/f1/0d9fe69ac441467b737ba7f48c68241487df2f4522dd7246d9426e7c690e/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574", size = 146645 }, + { url = "https://files.pythonhosted.org/packages/05/31/e1f51c76db7be1d4aef220d29fbfa5dbb4a99165d9833dcbf166753b6dc0/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4", size = 139398 }, + { url = "https://files.pythonhosted.org/packages/40/26/f35951c45070edc957ba40a5b1db3cf60a9dbb1b350c2d5bef03e01e61de/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8", size = 140273 }, + { url = "https://files.pythonhosted.org/packages/07/07/7e554f2bbce3295e191f7e653ff15d55309a9ca40d0362fcdab36f01063c/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc", size = 142577 }, + { url = "https://files.pythonhosted.org/packages/d8/b5/eb705c313100defa57da79277d9207dc8d8e45931035862fa64b625bfead/charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae", size = 137747 }, + { url = "https://files.pythonhosted.org/packages/19/28/573147271fd041d351b438a5665be8223f1dd92f273713cb882ddafe214c/charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887", size = 143375 }, + { url = "https://files.pythonhosted.org/packages/cf/7c/f3b682fa053cc21373c9a839e6beba7705857075686a05c72e0f8c4980ca/charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae", size = 148474 }, + { url = "https://files.pythonhosted.org/packages/1e/49/7ab74d4ac537ece3bc3334ee08645e231f39f7d6df6347b29a74b0537103/charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce", size = 140232 }, + { url = "https://files.pythonhosted.org/packages/2d/dc/9dacba68c9ac0ae781d40e1a0c0058e26302ea0660e574ddf6797a0347f7/charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f", size = 140859 }, + { url = "https://files.pythonhosted.org/packages/6c/c2/4a583f800c0708dd22096298e49f887b49d9746d0e78bfc1d7e29816614c/charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab", size = 92509 }, + { url = "https://files.pythonhosted.org/packages/57/ec/80c8d48ac8b1741d5b963797b7c0c869335619e13d4744ca2f67fc11c6fc/charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77", size = 99870 }, + { url = "https://files.pythonhosted.org/packages/d1/b2/fcedc8255ec42afee97f9e6f0145c734bbe104aac28300214593eb326f1d/charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8", size = 192892 }, + { url = "https://files.pythonhosted.org/packages/2e/7d/2259318c202f3d17f3fe6438149b3b9e706d1070fe3fcbb28049730bb25c/charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b", size = 122213 }, + { url = "https://files.pythonhosted.org/packages/3a/52/9f9d17c3b54dc238de384c4cb5a2ef0e27985b42a0e5cc8e8a31d918d48d/charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6", size = 119404 }, + { url = "https://files.pythonhosted.org/packages/99/b0/9c365f6d79a9f0f3c379ddb40a256a67aa69c59609608fe7feb6235896e1/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a", size = 137275 }, + { url = "https://files.pythonhosted.org/packages/91/33/749df346e93d7a30cdcb90cbfdd41a06026317bfbfb62cd68307c1a3c543/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389", size = 147518 }, + { url = "https://files.pythonhosted.org/packages/72/1a/641d5c9f59e6af4c7b53da463d07600a695b9824e20849cb6eea8a627761/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa", size = 140182 }, + { url = "https://files.pythonhosted.org/packages/ee/fb/14d30eb4956408ee3ae09ad34299131fb383c47df355ddb428a7331cfa1e/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b", size = 141869 }, + { url = "https://files.pythonhosted.org/packages/df/3e/a06b18788ca2eb6695c9b22325b6fde7dde0f1d1838b1792a0076f58fe9d/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed", size = 144042 }, + { url = "https://files.pythonhosted.org/packages/45/59/3d27019d3b447a88fe7e7d004a1e04be220227760264cc41b405e863891b/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26", size = 138275 }, + { url = "https://files.pythonhosted.org/packages/7b/ef/5eb105530b4da8ae37d506ccfa25057961b7b63d581def6f99165ea89c7e/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d", size = 144819 }, + { url = "https://files.pythonhosted.org/packages/a2/51/e5023f937d7f307c948ed3e5c29c4b7a3e42ed2ee0b8cdf8f3a706089bf0/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068", size = 149415 }, + { url = "https://files.pythonhosted.org/packages/24/9d/2e3ef673dfd5be0154b20363c5cdcc5606f35666544381bee15af3778239/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143", size = 141212 }, + { url = "https://files.pythonhosted.org/packages/5b/ae/ce2c12fcac59cb3860b2e2d76dc405253a4475436b1861d95fe75bdea520/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4", size = 142167 }, + { url = "https://files.pythonhosted.org/packages/ed/3a/a448bf035dce5da359daf9ae8a16b8a39623cc395a2ffb1620aa1bce62b0/charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7", size = 93041 }, + { url = "https://files.pythonhosted.org/packages/b6/7c/8debebb4f90174074b827c63242c23851bdf00a532489fba57fef3416e40/charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001", size = 100397 }, + { url = "https://files.pythonhosted.org/packages/ef/d4/a1d72a8f6aa754fdebe91b848912025d30ab7dced61e9ed8aabbf791ed65/charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a", size = 191415 }, + { url = "https://files.pythonhosted.org/packages/13/82/83c188028b6f38d39538442dd127dc794c602ae6d45d66c469f4063a4c30/charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac", size = 121051 }, + { url = "https://files.pythonhosted.org/packages/16/ea/a9e284aa38cccea06b7056d4cbc7adf37670b1f8a668a312864abf1ff7c6/charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a", size = 119143 }, + { url = "https://files.pythonhosted.org/packages/34/2a/f392457d45e24a0c9bfc012887ed4f3c54bf5d4d05a5deb970ffec4b7fc0/charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33", size = 137506 }, + { url = "https://files.pythonhosted.org/packages/be/4d/9e370f8281cec2fcc9452c4d1ac513324c32957c5f70c73dd2fa8442a21a/charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238", size = 147272 }, + { url = "https://files.pythonhosted.org/packages/33/95/ef68482e4a6adf781fae8d183fb48d6f2be8facb414f49c90ba6a5149cd1/charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a", size = 139734 }, + { url = "https://files.pythonhosted.org/packages/3d/09/d82fe4a34c5f0585f9ea1df090e2a71eb9bb1e469723053e1ee9f57c16f3/charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2", size = 141094 }, + { url = "https://files.pythonhosted.org/packages/81/b2/160893421adfa3c45554fb418e321ed342bb10c0a4549e855b2b2a3699cb/charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8", size = 144113 }, + { url = "https://files.pythonhosted.org/packages/9e/ef/cd47a63d3200b232792e361cd67530173a09eb011813478b1c0fb8aa7226/charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898", size = 138555 }, + { url = "https://files.pythonhosted.org/packages/a8/6f/4ff299b97da2ed6358154b6eb3a2db67da2ae204e53d205aacb18a7e4f34/charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99", size = 144944 }, + { url = "https://files.pythonhosted.org/packages/d1/2f/0d1efd07c74c52b6886c32a3b906fb8afd2fecf448650e73ecb90a5a27f1/charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d", size = 148925 }, + { url = "https://files.pythonhosted.org/packages/bd/28/7ea29e73eea52c7e15b4b9108d0743fc9e4cc2cdb00d275af1df3d46d360/charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04", size = 140732 }, + { url = "https://files.pythonhosted.org/packages/b3/c1/ebca8e87c714a6a561cfee063f0655f742e54b8ae6e78151f60ba8708b3a/charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087", size = 141288 }, + { url = "https://files.pythonhosted.org/packages/74/20/8923a06f15eb3d7f6a306729360bd58f9ead1dc39bc7ea8831f4b407e4ae/charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25", size = 92373 }, + { url = "https://files.pythonhosted.org/packages/db/fb/d29e343e7c57bbf1231275939f6e75eb740cd47a9d7cb2c52ffeb62ef869/charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b", size = 99577 }, + { url = "https://files.pythonhosted.org/packages/f7/9d/bcf4a449a438ed6f19790eee543a86a740c77508fbc5ddab210ab3ba3a9a/charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4", size = 194198 }, + { url = "https://files.pythonhosted.org/packages/66/fe/c7d3da40a66a6bf2920cce0f436fa1f62ee28aaf92f412f0bf3b84c8ad6c/charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d", size = 122494 }, + { url = "https://files.pythonhosted.org/packages/2a/9d/a6d15bd1e3e2914af5955c8eb15f4071997e7078419328fee93dfd497eb7/charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0", size = 120393 }, + { url = "https://files.pythonhosted.org/packages/3d/85/5b7416b349609d20611a64718bed383b9251b5a601044550f0c8983b8900/charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269", size = 138331 }, + { url = "https://files.pythonhosted.org/packages/79/66/8946baa705c588521afe10b2d7967300e49380ded089a62d38537264aece/charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c", size = 148097 }, + { url = "https://files.pythonhosted.org/packages/44/80/b339237b4ce635b4af1c73742459eee5f97201bd92b2371c53e11958392e/charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519", size = 140711 }, + { url = "https://files.pythonhosted.org/packages/98/69/5d8751b4b670d623aa7a47bef061d69c279e9f922f6705147983aa76c3ce/charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796", size = 142251 }, + { url = "https://files.pythonhosted.org/packages/1f/8d/33c860a7032da5b93382cbe2873261f81467e7b37f4ed91e25fed62fd49b/charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185", size = 144636 }, + { url = "https://files.pythonhosted.org/packages/c2/65/52aaf47b3dd616c11a19b1052ce7fa6321250a7a0b975f48d8c366733b9f/charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c", size = 139514 }, + { url = "https://files.pythonhosted.org/packages/51/fd/0ee5b1c2860bb3c60236d05b6e4ac240cf702b67471138571dad91bcfed8/charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458", size = 145528 }, + { url = "https://files.pythonhosted.org/packages/e1/9c/60729bf15dc82e3aaf5f71e81686e42e50715a1399770bcde1a9e43d09db/charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2", size = 149804 }, + { url = "https://files.pythonhosted.org/packages/53/cd/aa4b8a4d82eeceb872f83237b2d27e43e637cac9ffaef19a1321c3bafb67/charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8", size = 141708 }, + { url = "https://files.pythonhosted.org/packages/54/7f/cad0b328759630814fcf9d804bfabaf47776816ad4ef2e9938b7e1123d04/charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561", size = 142708 }, + { url = "https://files.pythonhosted.org/packages/c1/9d/254a2f1bcb0ce9acad838e94ed05ba71a7cb1e27affaa4d9e1ca3958cdb6/charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f", size = 92830 }, + { url = "https://files.pythonhosted.org/packages/2f/0e/d7303ccae9735ff8ff01e36705ad6233ad2002962e8668a970fc000c5e1b/charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d", size = 100376 }, + { url = "https://files.pythonhosted.org/packages/28/76/e6222113b83e3622caa4bb41032d0b1bf785250607392e1b778aca0b8a7d/charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc", size = 48543 }, +] + +[[package]] +name = "click" +version = "8.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "platform_system == 'Windows'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "comm" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 }, +] + +[[package]] +name = "coverage" +version = "7.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f7/08/7e37f82e4d1aead42a7443ff06a1e406aabf7302c4f00a546e4b320b994c/coverage-7.6.1.tar.gz", hash = "sha256:953510dfb7b12ab69d20135a0662397f077c59b1e6379a768e97c59d852ee51d", size = 798791 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/61/eb7ce5ed62bacf21beca4937a90fe32545c91a3c8a42a30c6616d48fc70d/coverage-7.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b06079abebbc0e89e6163b8e8f0e16270124c154dc6e4a47b413dd538859af16", size = 206690 }, + { url = "https://files.pythonhosted.org/packages/7d/73/041928e434442bd3afde5584bdc3f932fb4562b1597629f537387cec6f3d/coverage-7.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cf4b19715bccd7ee27b6b120e7e9dd56037b9c0681dcc1adc9ba9db3d417fa36", size = 207127 }, + { url = "https://files.pythonhosted.org/packages/c7/c8/6ca52b5147828e45ad0242388477fdb90df2c6cbb9a441701a12b3c71bc8/coverage-7.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61c0abb4c85b095a784ef23fdd4aede7a2628478e7baba7c5e3deba61070a02", size = 235654 }, + { url = "https://files.pythonhosted.org/packages/d5/da/9ac2b62557f4340270942011d6efeab9833648380109e897d48ab7c1035d/coverage-7.6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd21f6ae3f08b41004dfb433fa895d858f3f5979e7762d052b12aef444e29afc", size = 233598 }, + { url = "https://files.pythonhosted.org/packages/53/23/9e2c114d0178abc42b6d8d5281f651a8e6519abfa0ef460a00a91f80879d/coverage-7.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f59d57baca39b32db42b83b2a7ba6f47ad9c394ec2076b084c3f029b7afca23", size = 234732 }, + { url = "https://files.pythonhosted.org/packages/0f/7e/a0230756fb133343a52716e8b855045f13342b70e48e8ad41d8a0d60ab98/coverage-7.6.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a1ac0ae2b8bd743b88ed0502544847c3053d7171a3cff9228af618a068ed9c34", size = 233816 }, + { url = "https://files.pythonhosted.org/packages/28/7c/3753c8b40d232b1e5eeaed798c875537cf3cb183fb5041017c1fdb7ec14e/coverage-7.6.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e6a08c0be454c3b3beb105c0596ebdc2371fab6bb90c0c0297f4e58fd7e1012c", size = 232325 }, + { url = "https://files.pythonhosted.org/packages/57/e3/818a2b2af5b7573b4b82cf3e9f137ab158c90ea750a8f053716a32f20f06/coverage-7.6.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f5796e664fe802da4f57a168c85359a8fbf3eab5e55cd4e4569fbacecc903959", size = 233418 }, + { url = "https://files.pythonhosted.org/packages/c8/fb/4532b0b0cefb3f06d201648715e03b0feb822907edab3935112b61b885e2/coverage-7.6.1-cp310-cp310-win32.whl", hash = "sha256:7bb65125fcbef8d989fa1dd0e8a060999497629ca5b0efbca209588a73356232", size = 209343 }, + { url = "https://files.pythonhosted.org/packages/5a/25/af337cc7421eca1c187cc9c315f0a755d48e755d2853715bfe8c418a45fa/coverage-7.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:3115a95daa9bdba70aea750db7b96b37259a81a709223c8448fa97727d546fe0", size = 210136 }, + { url = "https://files.pythonhosted.org/packages/ad/5f/67af7d60d7e8ce61a4e2ddcd1bd5fb787180c8d0ae0fbd073f903b3dd95d/coverage-7.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7dea0889685db8550f839fa202744652e87c60015029ce3f60e006f8c4462c93", size = 206796 }, + { url = "https://files.pythonhosted.org/packages/e1/0e/e52332389e057daa2e03be1fbfef25bb4d626b37d12ed42ae6281d0a274c/coverage-7.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed37bd3c3b063412f7620464a9ac1314d33100329f39799255fb8d3027da50d3", size = 207244 }, + { url = "https://files.pythonhosted.org/packages/aa/cd/766b45fb6e090f20f8927d9c7cb34237d41c73a939358bc881883fd3a40d/coverage-7.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85f5e9a5f8b73e2350097c3756ef7e785f55bd71205defa0bfdaf96c31616ff", size = 239279 }, + { url = "https://files.pythonhosted.org/packages/70/6c/a9ccd6fe50ddaf13442a1e2dd519ca805cbe0f1fcd377fba6d8339b98ccb/coverage-7.6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bc572be474cafb617672c43fe989d6e48d3c83af02ce8de73fff1c6bb3c198d", size = 236859 }, + { url = "https://files.pythonhosted.org/packages/14/6f/8351b465febb4dbc1ca9929505202db909c5a635c6fdf33e089bbc3d7d85/coverage-7.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0420b573964c760df9e9e86d1a9a622d0d27f417e1a949a8a66dd7bcee7bc6", size = 238549 }, + { url = "https://files.pythonhosted.org/packages/68/3c/289b81fa18ad72138e6d78c4c11a82b5378a312c0e467e2f6b495c260907/coverage-7.6.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1f4aa8219db826ce6be7099d559f8ec311549bfc4046f7f9fe9b5cea5c581c56", size = 237477 }, + { url = "https://files.pythonhosted.org/packages/ed/1c/aa1efa6459d822bd72c4abc0b9418cf268de3f60eeccd65dc4988553bd8d/coverage-7.6.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:fc5a77d0c516700ebad189b587de289a20a78324bc54baee03dd486f0855d234", size = 236134 }, + { url = "https://files.pythonhosted.org/packages/fb/c8/521c698f2d2796565fe9c789c2ee1ccdae610b3aa20b9b2ef980cc253640/coverage-7.6.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b48f312cca9621272ae49008c7f613337c53fadca647d6384cc129d2996d1133", size = 236910 }, + { url = "https://files.pythonhosted.org/packages/7d/30/033e663399ff17dca90d793ee8a2ea2890e7fdf085da58d82468b4220bf7/coverage-7.6.1-cp311-cp311-win32.whl", hash = "sha256:1125ca0e5fd475cbbba3bb67ae20bd2c23a98fac4e32412883f9bcbaa81c314c", size = 209348 }, + { url = "https://files.pythonhosted.org/packages/20/05/0d1ccbb52727ccdadaa3ff37e4d2dc1cd4d47f0c3df9eb58d9ec8508ca88/coverage-7.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:8ae539519c4c040c5ffd0632784e21b2f03fc1340752af711f33e5be83a9d6c6", size = 210230 }, + { url = "https://files.pythonhosted.org/packages/7e/d4/300fc921dff243cd518c7db3a4c614b7e4b2431b0d1145c1e274fd99bd70/coverage-7.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:95cae0efeb032af8458fc27d191f85d1717b1d4e49f7cb226cf526ff28179778", size = 206983 }, + { url = "https://files.pythonhosted.org/packages/e1/ab/6bf00de5327ecb8db205f9ae596885417a31535eeda6e7b99463108782e1/coverage-7.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5621a9175cf9d0b0c84c2ef2b12e9f5f5071357c4d2ea6ca1cf01814f45d2391", size = 207221 }, + { url = "https://files.pythonhosted.org/packages/92/8f/2ead05e735022d1a7f3a0a683ac7f737de14850395a826192f0288703472/coverage-7.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:260933720fdcd75340e7dbe9060655aff3af1f0c5d20f46b57f262ab6c86a5e8", size = 240342 }, + { url = "https://files.pythonhosted.org/packages/0f/ef/94043e478201ffa85b8ae2d2c79b4081e5a1b73438aafafccf3e9bafb6b5/coverage-7.6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07e2ca0ad381b91350c0ed49d52699b625aab2b44b65e1b4e02fa9df0e92ad2d", size = 237371 }, + { url = "https://files.pythonhosted.org/packages/1f/0f/c890339dd605f3ebc269543247bdd43b703cce6825b5ed42ff5f2d6122c7/coverage-7.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c44fee9975f04b33331cb8eb272827111efc8930cfd582e0320613263ca849ca", size = 239455 }, + { url = "https://files.pythonhosted.org/packages/d1/04/7fd7b39ec7372a04efb0f70c70e35857a99b6a9188b5205efb4c77d6a57a/coverage-7.6.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:877abb17e6339d96bf08e7a622d05095e72b71f8afd8a9fefc82cf30ed944163", size = 238924 }, + { url = "https://files.pythonhosted.org/packages/ed/bf/73ce346a9d32a09cf369f14d2a06651329c984e106f5992c89579d25b27e/coverage-7.6.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3e0cadcf6733c09154b461f1ca72d5416635e5e4ec4e536192180d34ec160f8a", size = 237252 }, + { url = "https://files.pythonhosted.org/packages/86/74/1dc7a20969725e917b1e07fe71a955eb34bc606b938316bcc799f228374b/coverage-7.6.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c3c02d12f837d9683e5ab2f3d9844dc57655b92c74e286c262e0fc54213c216d", size = 238897 }, + { url = "https://files.pythonhosted.org/packages/b6/e9/d9cc3deceb361c491b81005c668578b0dfa51eed02cd081620e9a62f24ec/coverage-7.6.1-cp312-cp312-win32.whl", hash = "sha256:e05882b70b87a18d937ca6768ff33cc3f72847cbc4de4491c8e73880766718e5", size = 209606 }, + { url = "https://files.pythonhosted.org/packages/47/c8/5a2e41922ea6740f77d555c4d47544acd7dc3f251fe14199c09c0f5958d3/coverage-7.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:b5d7b556859dd85f3a541db6a4e0167b86e7273e1cdc973e5b175166bb634fdb", size = 210373 }, + { url = "https://files.pythonhosted.org/packages/8c/f9/9aa4dfb751cb01c949c990d136a0f92027fbcc5781c6e921df1cb1563f20/coverage-7.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a4acd025ecc06185ba2b801f2de85546e0b8ac787cf9d3b06e7e2a69f925b106", size = 207007 }, + { url = "https://files.pythonhosted.org/packages/b9/67/e1413d5a8591622a46dd04ff80873b04c849268831ed5c304c16433e7e30/coverage-7.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a6d3adcf24b624a7b778533480e32434a39ad8fa30c315208f6d3e5542aeb6e9", size = 207269 }, + { url = "https://files.pythonhosted.org/packages/14/5b/9dec847b305e44a5634d0fb8498d135ab1d88330482b74065fcec0622224/coverage-7.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0c212c49b6c10e6951362f7c6df3329f04c2b1c28499563d4035d964ab8e08c", size = 239886 }, + { url = "https://files.pythonhosted.org/packages/7b/b7/35760a67c168e29f454928f51f970342d23cf75a2bb0323e0f07334c85f3/coverage-7.6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e81d7a3e58882450ec4186ca59a3f20a5d4440f25b1cff6f0902ad890e6748a", size = 237037 }, + { url = "https://files.pythonhosted.org/packages/f7/95/d2fd31f1d638df806cae59d7daea5abf2b15b5234016a5ebb502c2f3f7ee/coverage-7.6.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78b260de9790fd81e69401c2dc8b17da47c8038176a79092a89cb2b7d945d060", size = 239038 }, + { url = "https://files.pythonhosted.org/packages/6e/bd/110689ff5752b67924efd5e2aedf5190cbbe245fc81b8dec1abaffba619d/coverage-7.6.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a78d169acd38300060b28d600344a803628c3fd585c912cacc9ea8790fe96862", size = 238690 }, + { url = "https://files.pythonhosted.org/packages/d3/a8/08d7b38e6ff8df52331c83130d0ab92d9c9a8b5462f9e99c9f051a4ae206/coverage-7.6.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2c09f4ce52cb99dd7505cd0fc8e0e37c77b87f46bc9c1eb03fe3bc9991085388", size = 236765 }, + { url = "https://files.pythonhosted.org/packages/d6/6a/9cf96839d3147d55ae713eb2d877f4d777e7dc5ba2bce227167d0118dfe8/coverage-7.6.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6878ef48d4227aace338d88c48738a4258213cd7b74fd9a3d4d7582bb1d8a155", size = 238611 }, + { url = "https://files.pythonhosted.org/packages/74/e4/7ff20d6a0b59eeaab40b3140a71e38cf52547ba21dbcf1d79c5a32bba61b/coverage-7.6.1-cp313-cp313-win32.whl", hash = "sha256:44df346d5215a8c0e360307d46ffaabe0f5d3502c8a1cefd700b34baf31d411a", size = 209671 }, + { url = "https://files.pythonhosted.org/packages/35/59/1812f08a85b57c9fdb6d0b383d779e47b6f643bc278ed682859512517e83/coverage-7.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:8284cf8c0dd272a247bc154eb6c95548722dce90d098c17a883ed36e67cdb129", size = 210368 }, + { url = "https://files.pythonhosted.org/packages/9c/15/08913be1c59d7562a3e39fce20661a98c0a3f59d5754312899acc6cb8a2d/coverage-7.6.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d3296782ca4eab572a1a4eca686d8bfb00226300dcefdf43faa25b5242ab8a3e", size = 207758 }, + { url = "https://files.pythonhosted.org/packages/c4/ae/b5d58dff26cade02ada6ca612a76447acd69dccdbb3a478e9e088eb3d4b9/coverage-7.6.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:502753043567491d3ff6d08629270127e0c31d4184c4c8d98f92c26f65019962", size = 208035 }, + { url = "https://files.pythonhosted.org/packages/b8/d7/62095e355ec0613b08dfb19206ce3033a0eedb6f4a67af5ed267a8800642/coverage-7.6.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a89ecca80709d4076b95f89f308544ec8f7b4727e8a547913a35f16717856cb", size = 250839 }, + { url = "https://files.pythonhosted.org/packages/7c/1e/c2967cb7991b112ba3766df0d9c21de46b476d103e32bb401b1b2adf3380/coverage-7.6.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a318d68e92e80af8b00fa99609796fdbcdfef3629c77c6283566c6f02c6d6704", size = 246569 }, + { url = "https://files.pythonhosted.org/packages/8b/61/a7a6a55dd266007ed3b1df7a3386a0d760d014542d72f7c2c6938483b7bd/coverage-7.6.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13b0a73a0896988f053e4fbb7de6d93388e6dd292b0d87ee51d106f2c11b465b", size = 248927 }, + { url = "https://files.pythonhosted.org/packages/c8/fa/13a6f56d72b429f56ef612eb3bc5ce1b75b7ee12864b3bd12526ab794847/coverage-7.6.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4421712dbfc5562150f7554f13dde997a2e932a6b5f352edcce948a815efee6f", size = 248401 }, + { url = "https://files.pythonhosted.org/packages/75/06/0429c652aa0fb761fc60e8c6b291338c9173c6aa0f4e40e1902345b42830/coverage-7.6.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:166811d20dfea725e2e4baa71fffd6c968a958577848d2131f39b60043400223", size = 246301 }, + { url = "https://files.pythonhosted.org/packages/52/76/1766bb8b803a88f93c3a2d07e30ffa359467810e5cbc68e375ebe6906efb/coverage-7.6.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:225667980479a17db1048cb2bf8bfb39b8e5be8f164b8f6628b64f78a72cf9d3", size = 247598 }, + { url = "https://files.pythonhosted.org/packages/66/8b/f54f8db2ae17188be9566e8166ac6df105c1c611e25da755738025708d54/coverage-7.6.1-cp313-cp313t-win32.whl", hash = "sha256:170d444ab405852903b7d04ea9ae9b98f98ab6d7e63e1115e82620807519797f", size = 210307 }, + { url = "https://files.pythonhosted.org/packages/9f/b0/e0dca6da9170aefc07515cce067b97178cefafb512d00a87a1c717d2efd5/coverage-7.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b9f222de8cded79c49bf184bdbc06630d4c58eec9459b939b4a690c82ed05657", size = 211453 }, + { url = "https://files.pythonhosted.org/packages/81/d0/d9e3d554e38beea5a2e22178ddb16587dbcbe9a1ef3211f55733924bf7fa/coverage-7.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6db04803b6c7291985a761004e9060b2bca08da6d04f26a7f2294b8623a0c1a0", size = 206674 }, + { url = "https://files.pythonhosted.org/packages/38/ea/cab2dc248d9f45b2b7f9f1f596a4d75a435cb364437c61b51d2eb33ceb0e/coverage-7.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f1adfc8ac319e1a348af294106bc6a8458a0f1633cc62a1446aebc30c5fa186a", size = 207101 }, + { url = "https://files.pythonhosted.org/packages/ca/6f/f82f9a500c7c5722368978a5390c418d2a4d083ef955309a8748ecaa8920/coverage-7.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a95324a9de9650a729239daea117df21f4b9868ce32e63f8b650ebe6cef5595b", size = 236554 }, + { url = "https://files.pythonhosted.org/packages/a6/94/d3055aa33d4e7e733d8fa309d9adf147b4b06a82c1346366fc15a2b1d5fa/coverage-7.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b43c03669dc4618ec25270b06ecd3ee4fa94c7f9b3c14bae6571ca00ef98b0d3", size = 234440 }, + { url = "https://files.pythonhosted.org/packages/e4/6e/885bcd787d9dd674de4a7d8ec83faf729534c63d05d51d45d4fa168f7102/coverage-7.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8929543a7192c13d177b770008bc4e8119f2e1f881d563fc6b6305d2d0ebe9de", size = 235889 }, + { url = "https://files.pythonhosted.org/packages/f4/63/df50120a7744492710854860783d6819ff23e482dee15462c9a833cc428a/coverage-7.6.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a09ece4a69cf399510c8ab25e0950d9cf2b42f7b3cb0374f95d2e2ff594478a6", size = 235142 }, + { url = "https://files.pythonhosted.org/packages/3a/5d/9d0acfcded2b3e9ce1c7923ca52ccc00c78a74e112fc2aee661125b7843b/coverage-7.6.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9054a0754de38d9dbd01a46621636689124d666bad1936d76c0341f7d71bf569", size = 233805 }, + { url = "https://files.pythonhosted.org/packages/c4/56/50abf070cb3cd9b1dd32f2c88f083aab561ecbffbcd783275cb51c17f11d/coverage-7.6.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0dbde0f4aa9a16fa4d754356a8f2e36296ff4d83994b2c9d8398aa32f222f989", size = 234655 }, + { url = "https://files.pythonhosted.org/packages/25/ee/b4c246048b8485f85a2426ef4abab88e48c6e80c74e964bea5cd4cd4b115/coverage-7.6.1-cp38-cp38-win32.whl", hash = "sha256:da511e6ad4f7323ee5702e6633085fb76c2f893aaf8ce4c51a0ba4fc07580ea7", size = 209296 }, + { url = "https://files.pythonhosted.org/packages/5c/1c/96cf86b70b69ea2b12924cdf7cabb8ad10e6130eab8d767a1099fbd2a44f/coverage-7.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:3f1156e3e8f2872197af3840d8ad307a9dd18e615dc64d9ee41696f287c57ad8", size = 210137 }, + { url = "https://files.pythonhosted.org/packages/19/d3/d54c5aa83268779d54c86deb39c1c4566e5d45c155369ca152765f8db413/coverage-7.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abd5fd0db5f4dc9289408aaf34908072f805ff7792632250dcb36dc591d24255", size = 206688 }, + { url = "https://files.pythonhosted.org/packages/a5/fe/137d5dca72e4a258b1bc17bb04f2e0196898fe495843402ce826a7419fe3/coverage-7.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:547f45fa1a93154bd82050a7f3cddbc1a7a4dd2a9bf5cb7d06f4ae29fe94eaf8", size = 207120 }, + { url = "https://files.pythonhosted.org/packages/78/5b/a0a796983f3201ff5485323b225d7c8b74ce30c11f456017e23d8e8d1945/coverage-7.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:645786266c8f18a931b65bfcefdbf6952dd0dea98feee39bd188607a9d307ed2", size = 235249 }, + { url = "https://files.pythonhosted.org/packages/4e/e1/76089d6a5ef9d68f018f65411fcdaaeb0141b504587b901d74e8587606ad/coverage-7.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e0b2df163b8ed01d515807af24f63de04bebcecbd6c3bfeff88385789fdf75a", size = 233237 }, + { url = "https://files.pythonhosted.org/packages/9a/6f/eef79b779a540326fee9520e5542a8b428cc3bfa8b7c8f1022c1ee4fc66c/coverage-7.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:609b06f178fe8e9f89ef676532760ec0b4deea15e9969bf754b37f7c40326dbc", size = 234311 }, + { url = "https://files.pythonhosted.org/packages/75/e1/656d65fb126c29a494ef964005702b012f3498db1a30dd562958e85a4049/coverage-7.6.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:702855feff378050ae4f741045e19a32d57d19f3e0676d589df0575008ea5004", size = 233453 }, + { url = "https://files.pythonhosted.org/packages/68/6a/45f108f137941a4a1238c85f28fd9d048cc46b5466d6b8dda3aba1bb9d4f/coverage-7.6.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2bdb062ea438f22d99cba0d7829c2ef0af1d768d1e4a4f528087224c90b132cb", size = 231958 }, + { url = "https://files.pythonhosted.org/packages/9b/e7/47b809099168b8b8c72ae311efc3e88c8d8a1162b3ba4b8da3cfcdb85743/coverage-7.6.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9c56863d44bd1c4fe2abb8a4d6f5371d197f1ac0ebdee542f07f35895fc07f36", size = 232938 }, + { url = "https://files.pythonhosted.org/packages/52/80/052222ba7058071f905435bad0ba392cc12006380731c37afaf3fe749b88/coverage-7.6.1-cp39-cp39-win32.whl", hash = "sha256:6e2cd258d7d927d09493c8df1ce9174ad01b381d4729a9d8d4e38670ca24774c", size = 209352 }, + { url = "https://files.pythonhosted.org/packages/b8/d8/1b92e0b3adcf384e98770a00ca095da1b5f7b483e6563ae4eb5e935d24a1/coverage-7.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:06a737c882bd26d0d6ee7269b20b12f14a8704807a01056c80bb881a4b2ce6ca", size = 210153 }, + { url = "https://files.pythonhosted.org/packages/a5/2b/0354ed096bca64dc8e32a7cbcae28b34cb5ad0b1fe2125d6d99583313ac0/coverage-7.6.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:e9a6e0eb86070e8ccaedfbd9d38fec54864f3125ab95419970575b42af7541df", size = 198926 }, +] + +[[package]] +name = "debugpy" +version = "1.8.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ce/b3/05c94639560cf0eaef33662ee5102d3e2a8b9e8c527c53190bf7187bacdb/debugpy-1.8.6.zip", hash = "sha256:c931a9371a86784cee25dec8d65bc2dc7a21f3f1552e3833d9ef8f919d22280a", size = 4956612 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/ce/5e093945df2da28dbd1bc14c631d71431d1aa08adc629e221c9658841f82/debugpy-1.8.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:30f467c5345d9dfdcc0afdb10e018e47f092e383447500f125b4e013236bf14b", size = 2089048 }, + { url = "https://files.pythonhosted.org/packages/d4/7a/a5fe4eaf648016a27a875403735a089ba7cc9a4cc906d37c8fdb2997b50d/debugpy-1.8.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d73d8c52614432f4215d0fe79a7e595d0dd162b5c15233762565be2f014803b", size = 3547450 }, + { url = "https://files.pythonhosted.org/packages/bf/fe/53d6d46e4a1cb5fb1a979695a9a26c8a04aed6d6ce4ba808a6d42341beba/debugpy-1.8.6-cp310-cp310-win32.whl", hash = "sha256:e3e182cd98eac20ee23a00653503315085b29ab44ed66269482349d307b08df9", size = 5151732 }, + { url = "https://files.pythonhosted.org/packages/ce/68/127cfc6012fbeef126eab1e168ad788ee9832b8b0d572743e5c6fa03ea83/debugpy-1.8.6-cp310-cp310-win_amd64.whl", hash = "sha256:e3a82da039cfe717b6fb1886cbbe5c4a3f15d7df4765af857f4307585121c2dd", size = 5183983 }, + { url = "https://files.pythonhosted.org/packages/9f/cc/3158aa2c96c677e324981230dfd33087ef4bfb5afb1d9cd40b7a1b35edb2/debugpy-1.8.6-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:67479a94cf5fd2c2d88f9615e087fcb4fec169ec780464a3f2ba4a9a2bb79955", size = 2203403 }, + { url = "https://files.pythonhosted.org/packages/d5/9f/5691af62c556392ee45ed9b5c3fde4aaa7cb3b519cc8bea92fc27eab31fc/debugpy-1.8.6-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fb8653f6cbf1dd0a305ac1aa66ec246002145074ea57933978346ea5afdf70b", size = 3120088 }, + { url = "https://files.pythonhosted.org/packages/5e/3e/e32b36f9a391af4f8ff6b9c068ee822b5e4aa2d9cf4dc0937696e9249fa6/debugpy-1.8.6-cp311-cp311-win32.whl", hash = "sha256:cdaf0b9691879da2d13fa39b61c01887c34558d1ff6e5c30e2eb698f5384cd43", size = 5077329 }, + { url = "https://files.pythonhosted.org/packages/9d/de/ddad801b7fdbe2f97c744b44bb61169c4e0ab48a90f881c8f43b463f206b/debugpy-1.8.6-cp311-cp311-win_amd64.whl", hash = "sha256:43996632bee7435583952155c06881074b9a742a86cee74e701d87ca532fe833", size = 5101373 }, + { url = "https://files.pythonhosted.org/packages/b8/9e/882dae43f281fc4742fd9e5d2e0f5dae77f38d4f345e78bf1ed5e1f6202e/debugpy-1.8.6-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:db891b141fc6ee4b5fc6d1cc8035ec329cabc64bdd2ae672b4550c87d4ecb128", size = 2526807 }, + { url = "https://files.pythonhosted.org/packages/77/cf/6c0497f4b092cb4a408dda5ab84750032e5535f994d21eb812086d62094d/debugpy-1.8.6-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:567419081ff67da766c898ccf21e79f1adad0e321381b0dfc7a9c8f7a9347972", size = 4162582 }, + { url = "https://files.pythonhosted.org/packages/8e/66/e9c0aef0a5118aeaa6dfccb6d4f388602271cfb37c689da5e7b6168075d2/debugpy-1.8.6-cp312-cp312-win32.whl", hash = "sha256:c9834dfd701a1f6bf0f7f0b8b1573970ae99ebbeee68314116e0ccc5c78eea3c", size = 5193541 }, + { url = "https://files.pythonhosted.org/packages/c2/97/2196c4132c29f7cd8e574bb05a4b03ed35f94e3fcd1f56e72ea9f10732f4/debugpy-1.8.6-cp312-cp312-win_amd64.whl", hash = "sha256:e4ce0570aa4aca87137890d23b86faeadf184924ad892d20c54237bcaab75d8f", size = 5233374 }, + { url = "https://files.pythonhosted.org/packages/b9/db/1fcb9b0cd12cd417fecaab545df7d3c77793092adbe614c51b8352904e85/debugpy-1.8.6-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:df5dc9eb4ca050273b8e374a4cd967c43be1327eeb42bfe2f58b3cdfe7c68dcb", size = 2090260 }, + { url = "https://files.pythonhosted.org/packages/dd/07/301ab6ce54793213eef5f85f86fd0f0c7b3579d204149405ffdb7e5c67db/debugpy-1.8.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a85707c6a84b0c5b3db92a2df685b5230dd8fb8c108298ba4f11dba157a615a", size = 3617517 }, + { url = "https://files.pythonhosted.org/packages/73/f9/934930dd49ed8f5660fe0c39fded7a5b180eabc6db03e49d9243ce316f1a/debugpy-1.8.6-cp38-cp38-win32.whl", hash = "sha256:538c6cdcdcdad310bbefd96d7850be1cd46e703079cc9e67d42a9ca776cdc8a8", size = 5156468 }, + { url = "https://files.pythonhosted.org/packages/e0/19/fa925b305b4c1766ec20ee1c6301fc16a40fb7affba0a0d3d1d12248ef3d/debugpy-1.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:22140bc02c66cda6053b6eb56dfe01bbe22a4447846581ba1dd6df2c9f97982d", size = 5189752 }, + { url = "https://files.pythonhosted.org/packages/e4/61/38fa2e907aae3a293e887b04045e4d30f931aafc462b207f4cb846e78c13/debugpy-1.8.6-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:c1cef65cffbc96e7b392d9178dbfd524ab0750da6c0023c027ddcac968fd1caa", size = 2090326 }, + { url = "https://files.pythonhosted.org/packages/39/b0/9790509ffeee155038f9707b74d031ed90a17552fe6a63e9069c9c42e0d9/debugpy-1.8.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1e60bd06bb3cc5c0e957df748d1fab501e01416c43a7bdc756d2a992ea1b881", size = 3544122 }, + { url = "https://files.pythonhosted.org/packages/7a/a1/d95a015eadf79997cdd2028a5fe3d1f37fbe2548b51470517d3d425960dc/debugpy-1.8.6-cp39-cp39-win32.whl", hash = "sha256:f7158252803d0752ed5398d291dee4c553bb12d14547c0e1843ab74ee9c31123", size = 5152549 }, + { url = "https://files.pythonhosted.org/packages/81/6a/32e2c9e980924f3c4b1b644a5c3d949d05fa7b445673ecf3e3244c883669/debugpy-1.8.6-cp39-cp39-win_amd64.whl", hash = "sha256:3358aa619a073b620cd0d51d8a6176590af24abcc3fe2e479929a154bf591b51", size = 5185080 }, + { url = "https://files.pythonhosted.org/packages/05/ce/785925e87ce735cc3da7fb2bd66d8ca83173d8a0b60ce35a59a60b8d636f/debugpy-1.8.6-py2.py3-none-any.whl", hash = "sha256:b48892df4d810eff21d3ef37274f4c60d32cdcafc462ad5647239036b0f0649f", size = 5209208 }, +] + +[[package]] +name = "decorator" +version = "5.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/0c/8d907af351aa16b42caae42f9d6aa37b900c67308052d10fdce809f8d952/decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", size = 35016 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/50/83c593b07763e1161326b3b8c6686f0f4b0f24d5526546bee538c89837d6/decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186", size = 9073 }, +] + +[[package]] +name = "docutils" +version = "0.19" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/330ea8d383eb2ce973df34d1239b3b21e91cd8c865d21ff82902d952f91f/docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6", size = 2056383 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/69/e391bd51bc08ed9141ecd899a0ddb61ab6465309f1eb470905c0c8868081/docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc", size = 570472 }, +] + +[[package]] +name = "exceptiongroup" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, +] + +[[package]] +name = "executing" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/e3/7d45f492c2c4a0e8e0fad57d081a7c8a0286cdd86372b070cca1ec0caa1e/executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab", size = 977485 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/fd/afcd0496feca3276f509df3dbd5dae726fcc756f1a08d9e25abe1733f962/executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf", size = 25805 }, +] + +[[package]] +name = "fastjsonschema" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/03/3f/3ad5e7be13b4b8b55f4477141885ab2364f65d5f6ad5f7a9daffd634d066/fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23", size = 373056 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/ca/086311cdfc017ec964b2436fe0c98c1f4efcb7e4c328956a22456e497655/fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a", size = 23543 }, +] + +[[package]] +name = "googleapis-common-protos" +version = "1.65.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/53/3b/1599ceafa875ffb951480c8c74f4b77646a6b80e80970698f2aa93c216ce/googleapis_common_protos-1.65.0.tar.gz", hash = "sha256:334a29d07cddc3aa01dee4988f9afd9b2916ee2ff49d6b757155dc0d197852c0", size = 113657 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/08/49bfe7cf737952cc1a9c43e80cc258ed45dad7f183c5b8276fc94cb3862d/googleapis_common_protos-1.65.0-py2.py3-none-any.whl", hash = "sha256:2972e6c496f435b92590fd54045060867f3fe9be2c82ab148fc8885035479a63", size = 220890 }, +] + +[[package]] +name = "greenlet" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/ff/df5fede753cc10f6a5be0931204ea30c35fa2f2ea7a35b25bdaf4fe40e46/greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467", size = 186022 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/90/5234a78dc0ef6496a6eb97b67a42a8e96742a56f7dc808cb954a85390448/greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563", size = 271235 }, + { url = "https://files.pythonhosted.org/packages/7c/16/cd631fa0ab7d06ef06387135b7549fdcc77d8d859ed770a0d28e47b20972/greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83", size = 637168 }, + { url = "https://files.pythonhosted.org/packages/2f/b1/aed39043a6fec33c284a2c9abd63ce191f4f1a07319340ffc04d2ed3256f/greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0", size = 648826 }, + { url = "https://files.pythonhosted.org/packages/76/25/40e0112f7f3ebe54e8e8ed91b2b9f970805143efef16d043dfc15e70f44b/greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120", size = 644443 }, + { url = "https://files.pythonhosted.org/packages/fb/2f/3850b867a9af519794784a7eeed1dd5bc68ffbcc5b28cef703711025fd0a/greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc", size = 643295 }, + { url = "https://files.pythonhosted.org/packages/cf/69/79e4d63b9387b48939096e25115b8af7cd8a90397a304f92436bcb21f5b2/greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617", size = 599544 }, + { url = "https://files.pythonhosted.org/packages/46/1d/44dbcb0e6c323bd6f71b8c2f4233766a5faf4b8948873225d34a0b7efa71/greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7", size = 1125456 }, + { url = "https://files.pythonhosted.org/packages/e0/1d/a305dce121838d0278cee39d5bb268c657f10a5363ae4b726848f833f1bb/greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6", size = 1149111 }, + { url = "https://files.pythonhosted.org/packages/96/28/d62835fb33fb5652f2e98d34c44ad1a0feacc8b1d3f1aecab035f51f267d/greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80", size = 298392 }, + { url = "https://files.pythonhosted.org/packages/28/62/1c2665558618553c42922ed47a4e6d6527e2fa3516a8256c2f431c5d0441/greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70", size = 272479 }, + { url = "https://files.pythonhosted.org/packages/76/9d/421e2d5f07285b6e4e3a676b016ca781f63cfe4a0cd8eaecf3fd6f7a71ae/greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159", size = 640404 }, + { url = "https://files.pythonhosted.org/packages/e5/de/6e05f5c59262a584e502dd3d261bbdd2c97ab5416cc9c0b91ea38932a901/greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e", size = 652813 }, + { url = "https://files.pythonhosted.org/packages/49/93/d5f93c84241acdea15a8fd329362c2c71c79e1a507c3f142a5d67ea435ae/greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1", size = 648517 }, + { url = "https://files.pythonhosted.org/packages/15/85/72f77fc02d00470c86a5c982b8daafdf65d38aefbbe441cebff3bf7037fc/greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383", size = 647831 }, + { url = "https://files.pythonhosted.org/packages/f7/4b/1c9695aa24f808e156c8f4813f685d975ca73c000c2a5056c514c64980f6/greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a", size = 602413 }, + { url = "https://files.pythonhosted.org/packages/76/70/ad6e5b31ef330f03b12559d19fda2606a522d3849cde46b24f223d6d1619/greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511", size = 1129619 }, + { url = "https://files.pythonhosted.org/packages/f4/fb/201e1b932e584066e0f0658b538e73c459b34d44b4bd4034f682423bc801/greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395", size = 1155198 }, + { url = "https://files.pythonhosted.org/packages/12/da/b9ed5e310bb8b89661b80cbcd4db5a067903bbcd7fc854923f5ebb4144f0/greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39", size = 298930 }, + { url = "https://files.pythonhosted.org/packages/7d/ec/bad1ac26764d26aa1353216fcbfa4670050f66d445448aafa227f8b16e80/greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d", size = 274260 }, + { url = "https://files.pythonhosted.org/packages/66/d4/c8c04958870f482459ab5956c2942c4ec35cac7fe245527f1039837c17a9/greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79", size = 649064 }, + { url = "https://files.pythonhosted.org/packages/51/41/467b12a8c7c1303d20abcca145db2be4e6cd50a951fa30af48b6ec607581/greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa", size = 663420 }, + { url = "https://files.pythonhosted.org/packages/27/8f/2a93cd9b1e7107d5c7b3b7816eeadcac2ebcaf6d6513df9abaf0334777f6/greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441", size = 658035 }, + { url = "https://files.pythonhosted.org/packages/57/5c/7c6f50cb12be092e1dccb2599be5a942c3416dbcfb76efcf54b3f8be4d8d/greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36", size = 660105 }, + { url = "https://files.pythonhosted.org/packages/f1/66/033e58a50fd9ec9df00a8671c74f1f3a320564c6415a4ed82a1c651654ba/greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9", size = 613077 }, + { url = "https://files.pythonhosted.org/packages/19/c5/36384a06f748044d06bdd8776e231fadf92fc896bd12cb1c9f5a1bda9578/greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0", size = 1135975 }, + { url = "https://files.pythonhosted.org/packages/38/f9/c0a0eb61bdf808d23266ecf1d63309f0e1471f284300ce6dac0ae1231881/greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942", size = 1163955 }, + { url = "https://files.pythonhosted.org/packages/43/21/a5d9df1d21514883333fc86584c07c2b49ba7c602e670b174bd73cfc9c7f/greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01", size = 299655 }, + { url = "https://files.pythonhosted.org/packages/f3/57/0db4940cd7bb461365ca8d6fd53e68254c9dbbcc2b452e69d0d41f10a85e/greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1", size = 272990 }, + { url = "https://files.pythonhosted.org/packages/1c/ec/423d113c9f74e5e402e175b157203e9102feeb7088cee844d735b28ef963/greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff", size = 649175 }, + { url = "https://files.pythonhosted.org/packages/a9/46/ddbd2db9ff209186b7b7c621d1432e2f21714adc988703dbdd0e65155c77/greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a", size = 663425 }, + { url = "https://files.pythonhosted.org/packages/bc/f9/9c82d6b2b04aa37e38e74f0c429aece5eeb02bab6e3b98e7db89b23d94c6/greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e", size = 657736 }, + { url = "https://files.pythonhosted.org/packages/d9/42/b87bc2a81e3a62c3de2b0d550bf91a86939442b7ff85abb94eec3fc0e6aa/greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4", size = 660347 }, + { url = "https://files.pythonhosted.org/packages/37/fa/71599c3fd06336cdc3eac52e6871cfebab4d9d70674a9a9e7a482c318e99/greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e", size = 615583 }, + { url = "https://files.pythonhosted.org/packages/4e/96/e9ef85de031703ee7a4483489b40cf307f93c1824a02e903106f2ea315fe/greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1", size = 1133039 }, + { url = "https://files.pythonhosted.org/packages/87/76/b2b6362accd69f2d1889db61a18c94bc743e961e3cab344c2effaa4b4a25/greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c", size = 1160716 }, + { url = "https://files.pythonhosted.org/packages/1f/1b/54336d876186920e185066d8c3024ad55f21d7cc3683c856127ddb7b13ce/greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761", size = 299490 }, + { url = "https://files.pythonhosted.org/packages/5f/17/bea55bf36990e1638a2af5ba10c1640273ef20f627962cf97107f1e5d637/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011", size = 643731 }, + { url = "https://files.pythonhosted.org/packages/78/d2/aa3d2157f9ab742a08e0fd8f77d4699f37c22adfbfeb0c610a186b5f75e0/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13", size = 649304 }, + { url = "https://files.pythonhosted.org/packages/f1/8e/d0aeffe69e53ccff5a28fa86f07ad1d2d2d6537a9506229431a2a02e2f15/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475", size = 646537 }, + { url = "https://files.pythonhosted.org/packages/05/79/e15408220bbb989469c8871062c97c6c9136770657ba779711b90870d867/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b", size = 642506 }, + { url = "https://files.pythonhosted.org/packages/18/87/470e01a940307796f1d25f8167b551a968540fbe0551c0ebb853cb527dd6/greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822", size = 602753 }, + { url = "https://files.pythonhosted.org/packages/e2/72/576815ba674eddc3c25028238f74d7b8068902b3968cbe456771b166455e/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01", size = 1122731 }, + { url = "https://files.pythonhosted.org/packages/ac/38/08cc303ddddc4b3d7c628c3039a61a3aae36c241ed01393d00c2fd663473/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6", size = 1142112 }, + { url = "https://files.pythonhosted.org/packages/97/83/bdf5f69fcf304065ec7cf8fc7c08248479cfed9bcca02bf0001c07e000aa/greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9", size = 271017 }, + { url = "https://files.pythonhosted.org/packages/31/4a/2d4443adcb38e1e90e50c653a26b2be39998ea78ca1a4cf414dfdeb2e98b/greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111", size = 642888 }, + { url = "https://files.pythonhosted.org/packages/5a/c9/b5d9ac1b932aa772dd1eb90a8a2b30dbd7ad5569dcb7fdac543810d206b4/greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81", size = 655451 }, + { url = "https://files.pythonhosted.org/packages/a8/18/218e21caf7caba5b2236370196eaebc00987d4a2b2d3bf63cc4d4dd5a69f/greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba", size = 651409 }, + { url = "https://files.pythonhosted.org/packages/a7/25/de419a2b22fa6e18ce3b2a5adb01d33ec7b2784530f76fa36ba43d8f0fac/greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8", size = 650661 }, + { url = "https://files.pythonhosted.org/packages/d8/88/0ce16c0afb2d71d85562a7bcd9b092fec80a7767ab5b5f7e1bbbca8200f8/greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1", size = 605959 }, + { url = "https://files.pythonhosted.org/packages/5a/10/39a417ad0afb0b7e5b150f1582cdeb9416f41f2e1df76018434dfac4a6cc/greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd", size = 1132341 }, + { url = "https://files.pythonhosted.org/packages/9f/f5/e9b151ddd2ed0508b7a47bef7857e46218dbc3fd10e564617a3865abfaac/greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7", size = 1159409 }, + { url = "https://files.pythonhosted.org/packages/86/97/2c86989ca4e0f089fbcdc9229c972a01ef53abdafd5ae89e0f3dcdcd4adb/greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef", size = 281126 }, + { url = "https://files.pythonhosted.org/packages/d3/50/7b7a3e10ed82c760c1fd8d3167a7c95508e9fdfc0b0604f05ed1a9a9efdc/greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d", size = 298285 }, + { url = "https://files.pythonhosted.org/packages/8c/82/8051e82af6d6b5150aacb6789a657a8afd48f0a44d8e91cb72aaaf28553a/greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3", size = 270027 }, + { url = "https://files.pythonhosted.org/packages/f9/74/f66de2785880293780eebd18a2958aeea7cbe7814af1ccef634f4701f846/greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42", size = 634822 }, + { url = "https://files.pythonhosted.org/packages/68/23/acd9ca6bc412b02b8aa755e47b16aafbe642dde0ad2f929f836e57a7949c/greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f", size = 646866 }, + { url = "https://files.pythonhosted.org/packages/a9/ab/562beaf8a53dc9f6b2459f200e7bc226bb07e51862a66351d8b7817e3efd/greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437", size = 641985 }, + { url = "https://files.pythonhosted.org/packages/03/d3/1006543621f16689f6dc75f6bcf06e3c23e044c26fe391c16c253623313e/greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145", size = 641268 }, + { url = "https://files.pythonhosted.org/packages/2f/c1/ad71ce1b5f61f900593377b3f77b39408bce5dc96754790311b49869e146/greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c", size = 597376 }, + { url = "https://files.pythonhosted.org/packages/f7/ff/183226685b478544d61d74804445589e069d00deb8ddef042699733950c7/greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e", size = 1123359 }, + { url = "https://files.pythonhosted.org/packages/c0/8b/9b3b85a89c22f55f315908b94cd75ab5fed5973f7393bbef000ca8b2c5c1/greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e", size = 1147458 }, + { url = "https://files.pythonhosted.org/packages/b8/1c/248fadcecd1790b0ba793ff81fa2375c9ad6442f4c748bf2cc2e6563346a/greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c", size = 281131 }, + { url = "https://files.pythonhosted.org/packages/ae/02/e7d0aef2354a38709b764df50b2b83608f0621493e47f47694eb80922822/greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22", size = 298306 }, +] + +[[package]] +name = "grpclib" +version = "0.4.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "h2" }, + { name = "multidict" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/79/b9/55936e462a5925190d7427e880b3033601d1effd13809b483d13a926061a/grpclib-0.4.7.tar.gz", hash = "sha256:2988ef57c02b22b7a2e8e961792c41ccf97efc2ace91ae7a5b0de03c363823c3", size = 61254 } + +[[package]] +name = "h2" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "hpack" }, + { name = "hyperframe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2a/32/fec683ddd10629ea4ea46d206752a95a2d8a48c22521edd70b142488efe1/h2-4.1.0.tar.gz", hash = "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb", size = 2145593 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/e5/db6d438da759efbb488c4f3fbdab7764492ff3c3f953132efa6b9f0e9e53/h2-4.1.0-py3-none-any.whl", hash = "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d", size = 57488 }, +] + +[[package]] +name = "hpack" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/9b/fda93fb4d957db19b0f6b370e79d586b3e8528b20252c729c476a2c02954/hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095", size = 49117 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/34/e8b383f35b77c402d28563d2b8f83159319b509bc5f760b15d60b0abf165/hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c", size = 32611 }, +] + +[[package]] +name = "hyperframe" +version = "6.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/2a/4747bff0a17f7281abe73e955d60d80aae537a5d203f417fa1c2e7578ebb/hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914", size = 25008 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/de/85a784bcc4a3779d1753a7ec2dee5de90e18c7bcf402e71b51fcf150b129/hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15", size = 12389 }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, +] + +[[package]] +name = "imagesize" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/84/62473fb57d61e31fef6e36d64a179c8781605429fd927b5dd608c997be31/imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a", size = 1280026 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b", size = 8769 }, +] + +[[package]] +name = "importlib-metadata" +version = "8.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", size = 55304 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", size = 26514 }, +] + +[[package]] +name = "importlib-resources" +version = "6.4.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp", marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/be/f3e8c6081b684f176b761e6a2fef02a0be939740ed6f54109a2951d806f3/importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065", size = 43372 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/6a/4604f9ae2fa62ef47b9de2fa5ad599589d28c9fd1d335f32759813dfa91e/importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717", size = 36115 }, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, +] + +[[package]] +name = "ipykernel" +version = "6.29.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "platform_system == 'Darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "matplotlib-inline" }, + { name = "nest-asyncio" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173 }, +] + +[[package]] +name = "ipython" +version = "8.12.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "backcall" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'win32'" }, + { name = "pickleshare" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, + { name = "typing-extensions", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/6a/44ef299b1762f5a73841e87fae8a73a8cc8aee538d6dc8c77a5afe1fd2ce/ipython-8.12.3.tar.gz", hash = "sha256:3910c4b54543c2ad73d06579aa771041b7d5707b033bd488669b4cf544e3b363", size = 5470171 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/97/8fe103906cd81bc42d3b0175b5534a9f67dccae47d6451131cf8d0d70bb2/ipython-8.12.3-py3-none-any.whl", hash = "sha256:b0340d46a933d27c657b211a329d0be23793c36595acf9e6ef4164bc01a1804c", size = 798307 }, +] + +[[package]] +name = "jedi" +version = "0.19.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d6/99/99b493cec4bf43176b678de30f81ed003fd6a647a301b9c927280c600f0a/jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd", size = 1227821 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/9f/bc63f0f0737ad7a60800bfd472a4836661adae21f9c2535f3957b1e54ceb/jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0", size = 1569361 }, +] + +[[package]] +name = "jinja2" +version = "3.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ed/55/39036716d19cab0747a5020fc7e907f362fbf48c984b14e62127f7e68e5d/jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369", size = 240245 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d", size = 133271 }, +] + +[[package]] +name = "jsonschema" +version = "4.23.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "importlib-resources", marker = "python_full_version < '3.9'" }, + { name = "jsonschema-specifications" }, + { name = "pkgutil-resolve-name", marker = "python_full_version < '3.9'" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462 }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2023.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-resources", marker = "python_full_version < '3.9'" }, + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/b9/cc0cc592e7c195fb8a650c1d5990b10175cf13b4c97465c72ec841de9e4b/jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc", size = 13983 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/07/44bd408781594c4d0a027666ef27fab1e441b109dc3b76b4f836f8fd04fe/jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c", size = 18482 }, +] + +[[package]] +name = "jupyter-cache" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "click" }, + { name = "importlib-metadata" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "pyyaml" }, + { name = "sqlalchemy" }, + { name = "tabulate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/69/64/08dcc1f6fc54a263525edd23b5d2754793470c1c41a8dd82d52406f8d876/jupyter-cache-0.6.1.tar.gz", hash = "sha256:26f83901143edf4af2f3ff5a91e2d2ad298e46e2cee03c8071d37a23a63ccbfc", size = 31953 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/8e/918b115bb3b4b821e2d43315e1a08b909219723191623ffbae9072fd226a/jupyter_cache-0.6.1-py3-none-any.whl", hash = "sha256:2fce7d4975805c77f75bdfc1bc2e82bc538b8e5b1af27f2f5e06d55b9f996a82", size = 33886 }, +] + +[[package]] +name = "jupyter-client" +version = "8.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105 }, +] + +[[package]] +name = "jupyter-core" +version = "5.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/11/b56381fa6c3f4cc5d2cf54a7dbf98ad9aa0b339ef7a601d6053538b079a7/jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9", size = 87629 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965 }, +] + +[[package]] +name = "markdown-it-py" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.9'", +] +dependencies = [ + { name = "mdurl", marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e4/c0/59bd6d0571986f72899288a95d9d6178d0eebd70b6650f1bb3f0da90f8f7/markdown-it-py-2.2.0.tar.gz", hash = "sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1", size = 67120 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/25/2d88e8feee8e055d015343f9b86e370a1ccbec546f2865c98397aaef24af/markdown_it_py-2.2.0-py3-none-any.whl", hash = "sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30", size = 84466 }, +] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.9' and python_full_version < '3.12'", + "python_full_version >= '3.12'", +] +dependencies = [ + { name = "mdurl", marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, +] + +[[package]] +name = "markupsafe" +version = "2.1.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/87/5b/aae44c6655f3801e81aa3eef09dbbf012431987ba564d7231722f68df02d/MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b", size = 19384 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e4/54/ad5eb37bf9d51800010a74e4665425831a9db4e7c4e0fde4352e391e808e/MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc", size = 18206 }, + { url = "https://files.pythonhosted.org/packages/6a/4a/a4d49415e600bacae038c67f9fecc1d5433b9d3c71a4de6f33537b89654c/MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5", size = 14079 }, + { url = "https://files.pythonhosted.org/packages/0a/7b/85681ae3c33c385b10ac0f8dd025c30af83c78cec1c37a6aa3b55e67f5ec/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46", size = 26620 }, + { url = "https://files.pythonhosted.org/packages/7c/52/2b1b570f6b8b803cef5ac28fdf78c0da318916c7d2fe9402a84d591b394c/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f", size = 25818 }, + { url = "https://files.pythonhosted.org/packages/29/fe/a36ba8c7ca55621620b2d7c585313efd10729e63ef81e4e61f52330da781/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900", size = 25493 }, + { url = "https://files.pythonhosted.org/packages/60/ae/9c60231cdfda003434e8bd27282b1f4e197ad5a710c14bee8bea8a9ca4f0/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff", size = 30630 }, + { url = "https://files.pythonhosted.org/packages/65/dc/1510be4d179869f5dafe071aecb3f1f41b45d37c02329dfba01ff59e5ac5/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad", size = 29745 }, + { url = "https://files.pythonhosted.org/packages/30/39/8d845dd7d0b0613d86e0ef89549bfb5f61ed781f59af45fc96496e897f3a/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd", size = 30021 }, + { url = "https://files.pythonhosted.org/packages/c7/5c/356a6f62e4f3c5fbf2602b4771376af22a3b16efa74eb8716fb4e328e01e/MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4", size = 16659 }, + { url = "https://files.pythonhosted.org/packages/69/48/acbf292615c65f0604a0c6fc402ce6d8c991276e16c80c46a8f758fbd30c/MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5", size = 17213 }, + { url = "https://files.pythonhosted.org/packages/11/e7/291e55127bb2ae67c64d66cef01432b5933859dfb7d6949daa721b89d0b3/MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f", size = 18219 }, + { url = "https://files.pythonhosted.org/packages/6b/cb/aed7a284c00dfa7c0682d14df85ad4955a350a21d2e3b06d8240497359bf/MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2", size = 14098 }, + { url = "https://files.pythonhosted.org/packages/1c/cf/35fe557e53709e93feb65575c93927942087e9b97213eabc3fe9d5b25a55/MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced", size = 29014 }, + { url = "https://files.pythonhosted.org/packages/97/18/c30da5e7a0e7f4603abfc6780574131221d9148f323752c2755d48abad30/MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5", size = 28220 }, + { url = "https://files.pythonhosted.org/packages/0c/40/2e73e7d532d030b1e41180807a80d564eda53babaf04d65e15c1cf897e40/MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c", size = 27756 }, + { url = "https://files.pythonhosted.org/packages/18/46/5dca760547e8c59c5311b332f70605d24c99d1303dd9a6e1fc3ed0d73561/MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f", size = 33988 }, + { url = "https://files.pythonhosted.org/packages/6d/c5/27febe918ac36397919cd4a67d5579cbbfa8da027fa1238af6285bb368ea/MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a", size = 32718 }, + { url = "https://files.pythonhosted.org/packages/f8/81/56e567126a2c2bc2684d6391332e357589a96a76cb9f8e5052d85cb0ead8/MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f", size = 33317 }, + { url = "https://files.pythonhosted.org/packages/00/0b/23f4b2470accb53285c613a3ab9ec19dc944eaf53592cb6d9e2af8aa24cc/MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906", size = 16670 }, + { url = "https://files.pythonhosted.org/packages/b7/a2/c78a06a9ec6d04b3445a949615c4c7ed86a0b2eb68e44e7541b9d57067cc/MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617", size = 17224 }, + { url = "https://files.pythonhosted.org/packages/53/bd/583bf3e4c8d6a321938c13f49d44024dbe5ed63e0a7ba127e454a66da974/MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1", size = 18215 }, + { url = "https://files.pythonhosted.org/packages/48/d6/e7cd795fc710292c3af3a06d80868ce4b02bfbbf370b7cee11d282815a2a/MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4", size = 14069 }, + { url = "https://files.pythonhosted.org/packages/51/b5/5d8ec796e2a08fc814a2c7d2584b55f889a55cf17dd1a90f2beb70744e5c/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee", size = 29452 }, + { url = "https://files.pythonhosted.org/packages/0a/0d/2454f072fae3b5a137c119abf15465d1771319dfe9e4acbb31722a0fff91/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5", size = 28462 }, + { url = "https://files.pythonhosted.org/packages/2d/75/fd6cb2e68780f72d47e6671840ca517bda5ef663d30ada7616b0462ad1e3/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b", size = 27869 }, + { url = "https://files.pythonhosted.org/packages/b0/81/147c477391c2750e8fc7705829f7351cf1cd3be64406edcf900dc633feb2/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a", size = 33906 }, + { url = "https://files.pythonhosted.org/packages/8b/ff/9a52b71839d7a256b563e85d11050e307121000dcebc97df120176b3ad93/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f", size = 32296 }, + { url = "https://files.pythonhosted.org/packages/88/07/2dc76aa51b481eb96a4c3198894f38b480490e834479611a4053fbf08623/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169", size = 33038 }, + { url = "https://files.pythonhosted.org/packages/96/0c/620c1fb3661858c0e37eb3cbffd8c6f732a67cd97296f725789679801b31/MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad", size = 16572 }, + { url = "https://files.pythonhosted.org/packages/3f/14/c3554d512d5f9100a95e737502f4a2323a1959f6d0d01e0d0997b35f7b10/MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb", size = 17127 }, + { url = "https://files.pythonhosted.org/packages/f8/ff/2c942a82c35a49df5de3a630ce0a8456ac2969691b230e530ac12314364c/MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a", size = 18192 }, + { url = "https://files.pythonhosted.org/packages/4f/14/6f294b9c4f969d0c801a4615e221c1e084722ea6114ab2114189c5b8cbe0/MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46", size = 14072 }, + { url = "https://files.pythonhosted.org/packages/81/d4/fd74714ed30a1dedd0b82427c02fa4deec64f173831ec716da11c51a50aa/MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532", size = 26928 }, + { url = "https://files.pythonhosted.org/packages/c7/bd/50319665ce81bb10e90d1cf76f9e1aa269ea6f7fa30ab4521f14d122a3df/MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab", size = 26106 }, + { url = "https://files.pythonhosted.org/packages/4c/6f/f2b0f675635b05f6afd5ea03c094557bdb8622fa8e673387444fe8d8e787/MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68", size = 25781 }, + { url = "https://files.pythonhosted.org/packages/51/e0/393467cf899b34a9d3678e78961c2c8cdf49fb902a959ba54ece01273fb1/MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0", size = 30518 }, + { url = "https://files.pythonhosted.org/packages/f6/02/5437e2ad33047290dafced9df741d9efc3e716b75583bbd73a9984f1b6f7/MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4", size = 29669 }, + { url = "https://files.pythonhosted.org/packages/0e/7d/968284145ffd9d726183ed6237c77938c021abacde4e073020f920e060b2/MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3", size = 29933 }, + { url = "https://files.pythonhosted.org/packages/bf/f3/ecb00fc8ab02b7beae8699f34db9357ae49d9f21d4d3de6f305f34fa949e/MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff", size = 16656 }, + { url = "https://files.pythonhosted.org/packages/92/21/357205f03514a49b293e214ac39de01fadd0970a6e05e4bf1ddd0ffd0881/MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029", size = 17206 }, + { url = "https://files.pythonhosted.org/packages/0f/31/780bb297db036ba7b7bbede5e1d7f1e14d704ad4beb3ce53fb495d22bc62/MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf", size = 18193 }, + { url = "https://files.pythonhosted.org/packages/6c/77/d77701bbef72892affe060cdacb7a2ed7fd68dae3b477a8642f15ad3b132/MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2", size = 14073 }, + { url = "https://files.pythonhosted.org/packages/d9/a7/1e558b4f78454c8a3a0199292d96159eb4d091f983bc35ef258314fe7269/MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8", size = 26486 }, + { url = "https://files.pythonhosted.org/packages/5f/5a/360da85076688755ea0cceb92472923086993e86b5613bbae9fbc14136b0/MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3", size = 25685 }, + { url = "https://files.pythonhosted.org/packages/6a/18/ae5a258e3401f9b8312f92b028c54d7026a97ec3ab20bfaddbdfa7d8cce8/MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465", size = 25338 }, + { url = "https://files.pythonhosted.org/packages/0b/cc/48206bd61c5b9d0129f4d75243b156929b04c94c09041321456fd06a876d/MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e", size = 30439 }, + { url = "https://files.pythonhosted.org/packages/d1/06/a41c112ab9ffdeeb5f77bc3e331fdadf97fa65e52e44ba31880f4e7f983c/MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea", size = 29531 }, + { url = "https://files.pythonhosted.org/packages/02/8c/ab9a463301a50dab04d5472e998acbd4080597abc048166ded5c7aa768c8/MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6", size = 29823 }, + { url = "https://files.pythonhosted.org/packages/bc/29/9bc18da763496b055d8e98ce476c8e718dcfd78157e17f555ce6dd7d0895/MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf", size = 16658 }, + { url = "https://files.pythonhosted.org/packages/f6/f8/4da07de16f10551ca1f640c92b5f316f9394088b183c6a57183df6de5ae4/MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5", size = 17211 }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 }, +] + +[[package]] +name = "mdit-py-plugins" +version = "0.3.5" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.9'", +] +dependencies = [ + { name = "markdown-it-py", version = "2.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/e7/cc2720da8a32724b36d04c6dba5644154cdf883a1482b3bbb81959a642ed/mdit-py-plugins-0.3.5.tar.gz", hash = "sha256:eee0adc7195e5827e17e02d2a258a2ba159944a0748f59c5099a4a27f78fcf6a", size = 39871 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/4c/a9b222f045f98775034d243198212cbea36d3524c3ee1e8ab8c0346d6953/mdit_py_plugins-0.3.5-py3-none-any.whl", hash = "sha256:ca9a0714ea59a24b2b044a1831f48d817dd0c817e84339f20e7889f392d77c4e", size = 52087 }, +] + +[[package]] +name = "mdit-py-plugins" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.9' and python_full_version < '3.12'", + "python_full_version >= '3.12'", +] +dependencies = [ + { name = "markdown-it-py", version = "3.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/03/a2ecab526543b152300717cf232bb4bb8605b6edb946c845016fa9c9c9fd/mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5", size = 43542 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636", size = 55316 }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, +] + +[[package]] +name = "multidict" +version = "6.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d6/be/504b89a5e9ca731cd47487e91c469064f8ae5af93b7259758dcfc2b9c848/multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a", size = 64002 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/68/259dee7fd14cf56a17c554125e534f6274c2860159692a414d0b402b9a6d/multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60", size = 48628 }, + { url = "https://files.pythonhosted.org/packages/50/79/53ba256069fe5386a4a9e80d4e12857ced9de295baf3e20c68cdda746e04/multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1", size = 29327 }, + { url = "https://files.pythonhosted.org/packages/ff/10/71f1379b05b196dae749b5ac062e87273e3f11634f447ebac12a571d90ae/multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53", size = 29689 }, + { url = "https://files.pythonhosted.org/packages/71/45/70bac4f87438ded36ad4793793c0095de6572d433d98575a5752629ef549/multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5", size = 126639 }, + { url = "https://files.pythonhosted.org/packages/80/cf/17f35b3b9509b4959303c05379c4bfb0d7dd05c3306039fc79cf035bbac0/multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581", size = 134315 }, + { url = "https://files.pythonhosted.org/packages/ef/1f/652d70ab5effb33c031510a3503d4d6efc5ec93153562f1ee0acdc895a57/multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56", size = 129471 }, + { url = "https://files.pythonhosted.org/packages/a6/64/2dd6c4c681688c0165dea3975a6a4eab4944ea30f35000f8b8af1df3148c/multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429", size = 124585 }, + { url = "https://files.pythonhosted.org/packages/87/56/e6ee5459894c7e554b57ba88f7257dc3c3d2d379cb15baaa1e265b8c6165/multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748", size = 116957 }, + { url = "https://files.pythonhosted.org/packages/36/9e/616ce5e8d375c24b84f14fc263c7ef1d8d5e8ef529dbc0f1df8ce71bb5b8/multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db", size = 128609 }, + { url = "https://files.pythonhosted.org/packages/8c/4f/4783e48a38495d000f2124020dc96bacc806a4340345211b1ab6175a6cb4/multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056", size = 123016 }, + { url = "https://files.pythonhosted.org/packages/3e/b3/4950551ab8fc39862ba5e9907dc821f896aa829b4524b4deefd3e12945ab/multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76", size = 133542 }, + { url = "https://files.pythonhosted.org/packages/96/4d/f0ce6ac9914168a2a71df117935bb1f1781916acdecbb43285e225b484b8/multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160", size = 130163 }, + { url = "https://files.pythonhosted.org/packages/be/72/17c9f67e7542a49dd252c5ae50248607dfb780bcc03035907dafefb067e3/multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7", size = 126832 }, + { url = "https://files.pythonhosted.org/packages/71/9f/72d719e248cbd755c8736c6d14780533a1606ffb3fbb0fbd77da9f0372da/multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0", size = 26402 }, + { url = "https://files.pythonhosted.org/packages/04/5a/d88cd5d00a184e1ddffc82aa2e6e915164a6d2641ed3606e766b5d2f275a/multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d", size = 28800 }, + { url = "https://files.pythonhosted.org/packages/93/13/df3505a46d0cd08428e4c8169a196131d1b0c4b515c3649829258843dde6/multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6", size = 48570 }, + { url = "https://files.pythonhosted.org/packages/f0/e1/a215908bfae1343cdb72f805366592bdd60487b4232d039c437fe8f5013d/multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156", size = 29316 }, + { url = "https://files.pythonhosted.org/packages/70/0f/6dc70ddf5d442702ed74f298d69977f904960b82368532c88e854b79f72b/multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb", size = 29640 }, + { url = "https://files.pythonhosted.org/packages/d8/6d/9c87b73a13d1cdea30b321ef4b3824449866bd7f7127eceed066ccb9b9ff/multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b", size = 131067 }, + { url = "https://files.pythonhosted.org/packages/cc/1e/1b34154fef373371fd6c65125b3d42ff5f56c7ccc6bfff91b9b3c60ae9e0/multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72", size = 138507 }, + { url = "https://files.pythonhosted.org/packages/fb/e0/0bc6b2bac6e461822b5f575eae85da6aae76d0e2a79b6665d6206b8e2e48/multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304", size = 133905 }, + { url = "https://files.pythonhosted.org/packages/ba/af/73d13b918071ff9b2205fcf773d316e0f8fefb4ec65354bbcf0b10908cc6/multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351", size = 129004 }, + { url = "https://files.pythonhosted.org/packages/74/21/23960627b00ed39643302d81bcda44c9444ebcdc04ee5bedd0757513f259/multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb", size = 121308 }, + { url = "https://files.pythonhosted.org/packages/8b/5c/cf282263ffce4a596ed0bb2aa1a1dddfe1996d6a62d08842a8d4b33dca13/multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3", size = 132608 }, + { url = "https://files.pythonhosted.org/packages/d7/3e/97e778c041c72063f42b290888daff008d3ab1427f5b09b714f5a8eff294/multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399", size = 127029 }, + { url = "https://files.pythonhosted.org/packages/47/ac/3efb7bfe2f3aefcf8d103e9a7162572f01936155ab2f7ebcc7c255a23212/multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423", size = 137594 }, + { url = "https://files.pythonhosted.org/packages/42/9b/6c6e9e8dc4f915fc90a9b7798c44a30773dea2995fdcb619870e705afe2b/multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3", size = 134556 }, + { url = "https://files.pythonhosted.org/packages/1d/10/8e881743b26aaf718379a14ac58572a240e8293a1c9d68e1418fb11c0f90/multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753", size = 130993 }, + { url = "https://files.pythonhosted.org/packages/45/84/3eb91b4b557442802d058a7579e864b329968c8d0ea57d907e7023c677f2/multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80", size = 26405 }, + { url = "https://files.pythonhosted.org/packages/9f/0b/ad879847ecbf6d27e90a6eabb7eff6b62c129eefe617ea45eae7c1f0aead/multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926", size = 28795 }, + { url = "https://files.pythonhosted.org/packages/fd/16/92057c74ba3b96d5e211b553895cd6dc7cc4d1e43d9ab8fafc727681ef71/multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa", size = 48713 }, + { url = "https://files.pythonhosted.org/packages/94/3d/37d1b8893ae79716179540b89fc6a0ee56b4a65fcc0d63535c6f5d96f217/multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436", size = 29516 }, + { url = "https://files.pythonhosted.org/packages/a2/12/adb6b3200c363062f805275b4c1e656be2b3681aada66c80129932ff0bae/multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761", size = 29557 }, + { url = "https://files.pythonhosted.org/packages/47/e9/604bb05e6e5bce1e6a5cf80a474e0f072e80d8ac105f1b994a53e0b28c42/multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e", size = 130170 }, + { url = "https://files.pythonhosted.org/packages/7e/13/9efa50801785eccbf7086b3c83b71a4fb501a4d43549c2f2f80b8787d69f/multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef", size = 134836 }, + { url = "https://files.pythonhosted.org/packages/bf/0f/93808b765192780d117814a6dfcc2e75de6dcc610009ad408b8814dca3ba/multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95", size = 133475 }, + { url = "https://files.pythonhosted.org/packages/d3/c8/529101d7176fe7dfe1d99604e48d69c5dfdcadb4f06561f465c8ef12b4df/multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925", size = 131049 }, + { url = "https://files.pythonhosted.org/packages/ca/0c/fc85b439014d5a58063e19c3a158a889deec399d47b5269a0f3b6a2e28bc/multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966", size = 120370 }, + { url = "https://files.pythonhosted.org/packages/db/46/d4416eb20176492d2258fbd47b4abe729ff3b6e9c829ea4236f93c865089/multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305", size = 125178 }, + { url = "https://files.pythonhosted.org/packages/5b/46/73697ad7ec521df7de5531a32780bbfd908ded0643cbe457f981a701457c/multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2", size = 119567 }, + { url = "https://files.pythonhosted.org/packages/cd/ed/51f060e2cb0e7635329fa6ff930aa5cffa17f4c7f5c6c3ddc3500708e2f2/multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2", size = 129822 }, + { url = "https://files.pythonhosted.org/packages/df/9e/ee7d1954b1331da3eddea0c4e08d9142da5f14b1321c7301f5014f49d492/multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6", size = 128656 }, + { url = "https://files.pythonhosted.org/packages/77/00/8538f11e3356b5d95fa4b024aa566cde7a38aa7a5f08f4912b32a037c5dc/multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3", size = 125360 }, + { url = "https://files.pythonhosted.org/packages/be/05/5d334c1f2462d43fec2363cd00b1c44c93a78c3925d952e9a71caf662e96/multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133", size = 26382 }, + { url = "https://files.pythonhosted.org/packages/a3/bf/f332a13486b1ed0496d624bcc7e8357bb8053823e8cd4b9a18edc1d97e73/multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1", size = 28529 }, + { url = "https://files.pythonhosted.org/packages/22/67/1c7c0f39fe069aa4e5d794f323be24bf4d33d62d2a348acdb7991f8f30db/multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008", size = 48771 }, + { url = "https://files.pythonhosted.org/packages/3c/25/c186ee7b212bdf0df2519eacfb1981a017bda34392c67542c274651daf23/multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f", size = 29533 }, + { url = "https://files.pythonhosted.org/packages/67/5e/04575fd837e0958e324ca035b339cea174554f6f641d3fb2b4f2e7ff44a2/multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28", size = 29595 }, + { url = "https://files.pythonhosted.org/packages/d3/b2/e56388f86663810c07cfe4a3c3d87227f3811eeb2d08450b9e5d19d78876/multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b", size = 130094 }, + { url = "https://files.pythonhosted.org/packages/6c/ee/30ae9b4186a644d284543d55d491fbd4239b015d36b23fea43b4c94f7052/multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c", size = 134876 }, + { url = "https://files.pythonhosted.org/packages/84/c7/70461c13ba8ce3c779503c70ec9d0345ae84de04521c1f45a04d5f48943d/multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3", size = 133500 }, + { url = "https://files.pythonhosted.org/packages/4a/9f/002af221253f10f99959561123fae676148dd730e2daa2cd053846a58507/multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44", size = 131099 }, + { url = "https://files.pythonhosted.org/packages/82/42/d1c7a7301d52af79d88548a97e297f9d99c961ad76bbe6f67442bb77f097/multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2", size = 120403 }, + { url = "https://files.pythonhosted.org/packages/68/f3/471985c2c7ac707547553e8f37cff5158030d36bdec4414cb825fbaa5327/multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3", size = 125348 }, + { url = "https://files.pythonhosted.org/packages/67/2c/e6df05c77e0e433c214ec1d21ddd203d9a4770a1f2866a8ca40a545869a0/multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa", size = 119673 }, + { url = "https://files.pythonhosted.org/packages/c5/cd/bc8608fff06239c9fb333f9db7743a1b2eafe98c2666c9a196e867a3a0a4/multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa", size = 129927 }, + { url = "https://files.pythonhosted.org/packages/44/8e/281b69b7bc84fc963a44dc6e0bbcc7150e517b91df368a27834299a526ac/multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4", size = 128711 }, + { url = "https://files.pythonhosted.org/packages/12/a4/63e7cd38ed29dd9f1881d5119f272c898ca92536cdb53ffe0843197f6c85/multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6", size = 125519 }, + { url = "https://files.pythonhosted.org/packages/38/e0/4f5855037a72cd8a7a2f60a3952d9aa45feedb37ae7831642102604e8a37/multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81", size = 26426 }, + { url = "https://files.pythonhosted.org/packages/7e/a5/17ee3a4db1e310b7405f5d25834460073a8ccd86198ce044dfaf69eac073/multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774", size = 28531 }, + { url = "https://files.pythonhosted.org/packages/3e/6a/af41f3aaf5f00fd86cc7d470a2f5b25299b0c84691163b8757f4a1a205f2/multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392", size = 48597 }, + { url = "https://files.pythonhosted.org/packages/d9/d6/3d4082760ed11b05734f8bf32a0615b99e7d9d2b3730ad698a4d7377c00a/multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a", size = 29338 }, + { url = "https://files.pythonhosted.org/packages/9d/7f/5d1ce7f47d44393d429922910afbe88fcd29ee3069babbb47507a4c3a7ea/multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2", size = 29562 }, + { url = "https://files.pythonhosted.org/packages/ce/ec/c425257671af9308a9b626e2e21f7f43841616e4551de94eb3c92aca75b2/multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc", size = 130980 }, + { url = "https://files.pythonhosted.org/packages/d8/d7/d4220ad2633a89b314593e9b85b5bc9287a7c563c7f9108a4a68d9da5374/multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478", size = 136694 }, + { url = "https://files.pythonhosted.org/packages/a1/2a/13e554db5830c8d40185a2e22aa8325516a5de9634c3fb2caf3886a829b3/multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4", size = 131616 }, + { url = "https://files.pythonhosted.org/packages/2e/a9/83692e37d8152f104333132105b67100aabfb2e96a87f6bed67f566035a7/multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d", size = 129664 }, + { url = "https://files.pythonhosted.org/packages/cc/1c/1718cd518fb9da7e8890d9d1611c1af0ea5e60f68ff415d026e38401ed36/multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6", size = 121855 }, + { url = "https://files.pythonhosted.org/packages/2b/92/f6ed67514b0e3894198f0eb42dcde22f0851ea35f4561a1e4acf36c7b1be/multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2", size = 127928 }, + { url = "https://files.pythonhosted.org/packages/f7/30/c66954115a4dc4dc3c84e02c8ae11bb35a43d79ef93122c3c3a40c4d459b/multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd", size = 122793 }, + { url = "https://files.pythonhosted.org/packages/62/c9/d386d01b43871e8e1631eb7b3695f6af071b7ae1ab716caf371100f0eb24/multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6", size = 132762 }, + { url = "https://files.pythonhosted.org/packages/69/ff/f70cb0a2f7a358acf48e32139ce3a150ff18c961ee9c714cc8c0dc7e3584/multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492", size = 127872 }, + { url = "https://files.pythonhosted.org/packages/89/5b/abea7db3ba4cd07752a9b560f9275a11787cd13f86849b5d99c1ceea921d/multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd", size = 126161 }, + { url = "https://files.pythonhosted.org/packages/22/03/acc77a4667cca4462ee974fc39990803e58fa573d5a923d6e82b7ef6da7e/multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167", size = 26338 }, + { url = "https://files.pythonhosted.org/packages/90/bf/3d0c1cc9c8163abc24625fae89c0ade1ede9bccb6eceb79edf8cff3cca46/multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef", size = 28736 }, + { url = "https://files.pythonhosted.org/packages/e7/c9/9e153a6572b38ac5ff4434113af38acf8d5e9957897cdb1f513b3d6614ed/multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c", size = 48550 }, + { url = "https://files.pythonhosted.org/packages/76/f5/79565ddb629eba6c7f704f09a09df085c8dc04643b12506f10f718cee37a/multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1", size = 29298 }, + { url = "https://files.pythonhosted.org/packages/60/1b/9851878b704bc98e641a3e0bce49382ae9e05743dac6d97748feb5b7baba/multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c", size = 29641 }, + { url = "https://files.pythonhosted.org/packages/89/87/d451d45aab9e422cb0fb2f7720c31a4c1d3012c740483c37f642eba568fb/multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c", size = 126202 }, + { url = "https://files.pythonhosted.org/packages/fa/b4/27cbe9f3e2e469359887653f2e45470272eef7295139916cc21107c6b48c/multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f", size = 133925 }, + { url = "https://files.pythonhosted.org/packages/4d/a3/afc841899face8adfd004235ce759a37619f6ec99eafd959650c5ce4df57/multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875", size = 129039 }, + { url = "https://files.pythonhosted.org/packages/5e/41/0d0fb18c1ad574f807196f5f3d99164edf9de3e169a58c6dc2d6ed5742b9/multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255", size = 124072 }, + { url = "https://files.pythonhosted.org/packages/00/22/defd7a2e71a44e6e5b9a5428f972e5b572e7fe28e404dfa6519bbf057c93/multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30", size = 116532 }, + { url = "https://files.pythonhosted.org/packages/91/25/f7545102def0b1d456ab6449388eed2dfd822debba1d65af60194904a23a/multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057", size = 128173 }, + { url = "https://files.pythonhosted.org/packages/45/79/3dbe8d35fc99f5ea610813a72ab55f426cb9cf482f860fa8496e5409be11/multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657", size = 122654 }, + { url = "https://files.pythonhosted.org/packages/97/cb/209e735eeab96e1b160825b5d0b36c56d3862abff828fc43999bb957dcad/multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28", size = 133197 }, + { url = "https://files.pythonhosted.org/packages/e4/3a/a13808a7ada62808afccea67837a79d00ad6581440015ef00f726d064c2d/multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972", size = 129754 }, + { url = "https://files.pythonhosted.org/packages/77/dd/8540e139eafb240079242da8f8ffdf9d3f4b4ad1aac5a786cd4050923783/multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43", size = 126402 }, + { url = "https://files.pythonhosted.org/packages/86/99/e82e1a275d8b1ea16d3a251474262258dbbe41c05cce0c01bceda1fc8ea5/multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada", size = 26421 }, + { url = "https://files.pythonhosted.org/packages/86/1c/9fa630272355af7e4446a2c7550c259f11ee422ab2d30ff90a0a71cf3d9e/multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a", size = 28791 }, + { url = "https://files.pythonhosted.org/packages/99/b7/b9e70fde2c0f0c9af4cc5277782a89b66d35948ea3369ec9f598358c3ac5/multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506", size = 10051 }, +] + +[[package]] +name = "mypy-protobuf" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, + { name = "types-protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4d/6f/282d64d66bf48ce60e38a6560753f784e0f88ab245ac2fb5e93f701a36cd/mypy-protobuf-3.6.0.tar.gz", hash = "sha256:02f242eb3409f66889f2b1a3aa58356ec4d909cdd0f93115622e9e70366eca3c", size = 24445 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/73/d6b999782ae22f16971cc05378b3b33f6a89ede3b9619e8366aa23484bca/mypy_protobuf-3.6.0-py3-none-any.whl", hash = "sha256:56176e4d569070e7350ea620262478b49b7efceba4103d468448f1d21492fd6c", size = 16434 }, +] + +[[package]] +name = "myst-nb" +version = "0.17.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.9'", +] +dependencies = [ + { name = "importlib-metadata", marker = "python_full_version < '3.9'" }, + { name = "ipykernel", marker = "python_full_version < '3.9'" }, + { name = "ipython", marker = "python_full_version < '3.9'" }, + { name = "jupyter-cache", marker = "python_full_version < '3.9'" }, + { name = "myst-parser", version = "0.18.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "nbclient", marker = "python_full_version < '3.9'" }, + { name = "nbformat", marker = "python_full_version < '3.9'" }, + { name = "pyyaml", marker = "python_full_version < '3.9'" }, + { name = "sphinx", version = "5.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/15/e6/6ec454f930f1d542f1c1d9562d939acc41220408ff996b7c5b3b957fba1d/myst-nb-0.17.2.tar.gz", hash = "sha256:0f61386515fab07c73646adca97fff2f69f41e90d313a260217c5bbe419d858b", size = 74184 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/84/38b6468146945cf0466a149763d62bd0264cb221eaa74c979498ea215f22/myst_nb-0.17.2-py3-none-any.whl", hash = "sha256:132ca4d0f5c308fdd4b6fdaba077712e28e119ccdafd04d6e41b51aac5483494", size = 78636 }, +] + +[[package]] +name = "myst-nb" +version = "1.1.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.9' and python_full_version < '3.12'", + "python_full_version >= '3.12'", +] +dependencies = [ + { name = "importlib-metadata", marker = "python_full_version >= '3.9'" }, + { name = "ipykernel", marker = "python_full_version >= '3.9'" }, + { name = "ipython", marker = "python_full_version >= '3.9'" }, + { name = "jupyter-cache", marker = "python_full_version >= '3.9'" }, + { name = "myst-parser", version = "3.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "nbclient", marker = "python_full_version >= '3.9'" }, + { name = "nbformat", marker = "python_full_version >= '3.9'" }, + { name = "pyyaml", marker = "python_full_version >= '3.9'" }, + { name = "sphinx", version = "7.1.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "typing-extensions", marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/e3/01c093f6a46be2edc0fd370cbf6d227495ea19452939b2810b36657c63d4/myst_nb-1.1.2.tar.gz", hash = "sha256:961b4005657029ca89892a4c75edbf0856c54ceaf6172368b46bf7676c1f7700", size = 78036 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/45/cf78b2f09c46b36f486b75c34a8b48580e53b543bd9a467b3c7eb9054b70/myst_nb-1.1.2-py3-none-any.whl", hash = "sha256:9b7034e5d62640cb6daf03f9ca16ef45d0462fced27944c77aa3f98c7cdcd566", size = 80281 }, +] + +[[package]] +name = "myst-parser" +version = "0.18.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.9'", +] +dependencies = [ + { name = "docutils", marker = "python_full_version < '3.9'" }, + { name = "jinja2", marker = "python_full_version < '3.9'" }, + { name = "markdown-it-py", version = "2.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "mdit-py-plugins", version = "0.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "pyyaml", marker = "python_full_version < '3.9'" }, + { name = "sphinx", version = "5.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "typing-extensions", marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/13/91438d3b835a022fcacd858a7106d4813cfccf98b1fd9a6196cfa2c859df/myst-parser-0.18.1.tar.gz", hash = "sha256:79317f4bb2c13053dd6e64f9da1ba1da6cd9c40c8a430c447a7b146a594c246d", size = 64147 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/fd/594c936c65e707deda5670e8fff5ca2c948a12e922813eab5d316694e9ca/myst_parser-0.18.1-py3-none-any.whl", hash = "sha256:61b275b85d9f58aa327f370913ae1bec26ebad372cc99f3ab85c8ec3ee8d9fb8", size = 58157 }, +] + +[[package]] +name = "myst-parser" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.9' and python_full_version < '3.12'", + "python_full_version >= '3.12'", +] +dependencies = [ + { name = "docutils", marker = "python_full_version >= '3.9'" }, + { name = "jinja2", 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.9'" }, + { name = "mdit-py-plugins", version = "0.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "pyyaml", marker = "python_full_version >= '3.9'" }, + { name = "sphinx", version = "7.1.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/64/e2f13dac02f599980798c01156393b781aec983b52a6e4057ee58f07c43a/myst_parser-3.0.1.tar.gz", hash = "sha256:88f0cb406cb363b077d176b51c476f62d60604d68a8dcdf4832e080441301a87", size = 92392 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/de/21aa8394f16add8f7427f0a1326ccd2b3a2a8a3245c9252bc5ac034c6155/myst_parser-3.0.1-py3-none-any.whl", hash = "sha256:6457aaa33a5d474aca678b8ead9b3dc298e89c68e67012e73146ea6fd54babf1", size = 83163 }, +] + +[[package]] +name = "nbclient" +version = "0.6.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-client" }, + { name = "nbformat" }, + { name = "nest-asyncio" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/01/21/917a25fbc2b37ed37135be97efb4c98526008505451ffa841adcd7d11ed5/nbclient-0.6.8.tar.gz", hash = "sha256:268fde3457cafe1539e32eb1c6d796bbedb90b9e92bacd3e43d83413734bb0e8", size = 78917 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/1d/de31c4139603b3f43147dca571de7d1928bd23d5c674865342bd457ec419/nbclient-0.6.8-py3-none-any.whl", hash = "sha256:7cce8b415888539180535953f80ea2385cdbb444944cdeb73ffac1556fdbc228", size = 71848 }, +] + +[[package]] +name = "nbformat" +version = "5.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastjsonschema" }, + { name = "jsonschema" }, + { name = "jupyter-core" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454 }, +] + +[[package]] +name = "nbmake" +version = "1.5.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "pygments" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/db/25/46a5818e699dc72e708754a8b6cfe4383d714d6d2578a795e9393bd5a0a8/nbmake-1.5.4.tar.gz", hash = "sha256:56417fe80d50069671122955532df6e26369a23f68b9c6e2191ae9cfef19abb2", size = 11306 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/b6/4c8649228a418b0a4ea0577fcc921d9facef9f2b1d8669f2808f2cdf1429/nbmake-1.5.4-py3-none-any.whl", hash = "sha256:8e440a61a7d4ab303064aa86b8d2c088177c89960e2b4a0f91a768dc9f68382b", size = 12860 }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, +] + +[[package]] +name = "nodeenv" +version = "1.9.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, +] + +[[package]] +name = "numpy" +version = "1.24.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.9'", +] +sdist = { url = "https://files.pythonhosted.org/packages/a4/9b/027bec52c633f6556dba6b722d9a0befb40498b9ceddd29cbe67a45a127c/numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463", size = 10911229 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/80/6cdfb3e275d95155a34659163b83c09e3a3ff9f1456880bec6cc63d71083/numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64", size = 19789140 }, + { url = "https://files.pythonhosted.org/packages/64/5f/3f01d753e2175cfade1013eea08db99ba1ee4bdb147ebcf3623b75d12aa7/numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1", size = 13854297 }, + { url = "https://files.pythonhosted.org/packages/5a/b3/2f9c21d799fa07053ffa151faccdceeb69beec5a010576b8991f614021f7/numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4", size = 13995611 }, + { url = "https://files.pythonhosted.org/packages/10/be/ae5bf4737cb79ba437879915791f6f26d92583c738d7d960ad94e5c36adf/numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6", size = 17282357 }, + { url = "https://files.pythonhosted.org/packages/c0/64/908c1087be6285f40e4b3e79454552a701664a079321cff519d8c7051d06/numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc", size = 12429222 }, + { url = "https://files.pythonhosted.org/packages/22/55/3d5a7c1142e0d9329ad27cece17933b0e2ab4e54ddc5c1861fbfeb3f7693/numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e", size = 14841514 }, + { url = "https://files.pythonhosted.org/packages/a9/cc/5ed2280a27e5dab12994c884f1f4d8c3bd4d885d02ae9e52a9d213a6a5e2/numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810", size = 19775508 }, + { url = "https://files.pythonhosted.org/packages/c0/bc/77635c657a3668cf652806210b8662e1aff84b818a55ba88257abf6637a8/numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254", size = 13840033 }, + { url = "https://files.pythonhosted.org/packages/a7/4c/96cdaa34f54c05e97c1c50f39f98d608f96f0677a6589e64e53104e22904/numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7", size = 13991951 }, + { url = "https://files.pythonhosted.org/packages/22/97/dfb1a31bb46686f09e68ea6ac5c63fdee0d22d7b23b8f3f7ea07712869ef/numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5", size = 17278923 }, + { url = "https://files.pythonhosted.org/packages/35/e2/76a11e54139654a324d107da1d98f99e7aa2a7ef97cfd7c631fba7dbde71/numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d", size = 12422446 }, + { url = "https://files.pythonhosted.org/packages/d8/ec/ebef2f7d7c28503f958f0f8b992e7ce606fb74f9e891199329d5f5f87404/numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694", size = 14834466 }, + { url = "https://files.pythonhosted.org/packages/11/10/943cfb579f1a02909ff96464c69893b1d25be3731b5d3652c2e0cf1281ea/numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61", size = 19780722 }, + { url = "https://files.pythonhosted.org/packages/a7/ae/f53b7b265fdc701e663fbb322a8e9d4b14d9cb7b2385f45ddfabfc4327e4/numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f", size = 13843102 }, + { url = "https://files.pythonhosted.org/packages/25/6f/2586a50ad72e8dbb1d8381f837008a0321a3516dfd7cb57fc8cf7e4bb06b/numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e", size = 14039616 }, + { url = "https://files.pythonhosted.org/packages/98/5d/5738903efe0ecb73e51eb44feafba32bdba2081263d40c5043568ff60faf/numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc", size = 17316263 }, + { url = "https://files.pythonhosted.org/packages/d1/57/8d328f0b91c733aa9aa7ee540dbc49b58796c862b4fbcb1146c701e888da/numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2", size = 12455660 }, + { url = "https://files.pythonhosted.org/packages/69/65/0d47953afa0ad569d12de5f65d964321c208492064c38fe3b0b9744f8d44/numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706", size = 14868112 }, + { url = "https://files.pythonhosted.org/packages/9a/cd/d5b0402b801c8a8b56b04c1e85c6165efab298d2f0ab741c2406516ede3a/numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400", size = 19816549 }, + { url = "https://files.pythonhosted.org/packages/14/27/638aaa446f39113a3ed38b37a66243e21b38110d021bfcb940c383e120f2/numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f", size = 13879950 }, + { url = "https://files.pythonhosted.org/packages/8f/27/91894916e50627476cff1a4e4363ab6179d01077d71b9afed41d9e1f18bf/numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9", size = 14030228 }, + { url = "https://files.pythonhosted.org/packages/7a/7c/d7b2a0417af6428440c0ad7cb9799073e507b1a465f827d058b826236964/numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d", size = 17311170 }, + { url = "https://files.pythonhosted.org/packages/18/9d/e02ace5d7dfccee796c37b995c63322674daf88ae2f4a4724c5dd0afcc91/numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835", size = 12454918 }, + { url = "https://files.pythonhosted.org/packages/63/38/6cc19d6b8bfa1d1a459daf2b3fe325453153ca7019976274b6f33d8b5663/numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8", size = 14867441 }, + { url = "https://files.pythonhosted.org/packages/a4/fd/8dff40e25e937c94257455c237b9b6bf5a30d42dd1cc11555533be099492/numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef", size = 19156590 }, + { url = "https://files.pythonhosted.org/packages/42/e7/4bf953c6e05df90c6d351af69966384fed8e988d0e8c54dad7103b59f3ba/numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a", size = 16705744 }, + { url = "https://files.pythonhosted.org/packages/fc/dd/9106005eb477d022b60b3817ed5937a43dad8fd1f20b0610ea8a32fcb407/numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2", size = 14734290 }, +] + +[[package]] +name = "numpy" +version = "1.26.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.9' and python_full_version < '3.12'", + "python_full_version >= '3.12'", +] +sdist = { url = "https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010", size = 15786129 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/94/ace0fdea5241a27d13543ee117cbc65868e82213fb31a8eb7fe9ff23f313/numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0", size = 20631468 }, + { url = "https://files.pythonhosted.org/packages/20/f7/b24208eba89f9d1b58c1668bc6c8c4fd472b20c45573cb767f59d49fb0f6/numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a", size = 13966411 }, + { url = "https://files.pythonhosted.org/packages/fc/a5/4beee6488160798683eed5bdb7eead455892c3b4e1f78d79d8d3f3b084ac/numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4", size = 14219016 }, + { url = "https://files.pythonhosted.org/packages/4b/d7/ecf66c1cd12dc28b4040b15ab4d17b773b87fa9d29ca16125de01adb36cd/numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f", size = 18240889 }, + { url = "https://files.pythonhosted.org/packages/24/03/6f229fe3187546435c4f6f89f6d26c129d4f5bed40552899fcf1f0bf9e50/numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a", size = 13876746 }, + { url = "https://files.pythonhosted.org/packages/39/fe/39ada9b094f01f5a35486577c848fe274e374bbf8d8f472e1423a0bbd26d/numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2", size = 18078620 }, + { url = "https://files.pythonhosted.org/packages/d5/ef/6ad11d51197aad206a9ad2286dc1aac6a378059e06e8cf22cd08ed4f20dc/numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07", size = 5972659 }, + { url = "https://files.pythonhosted.org/packages/19/77/538f202862b9183f54108557bfda67e17603fc560c384559e769321c9d92/numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5", size = 15808905 }, + { url = "https://files.pythonhosted.org/packages/11/57/baae43d14fe163fa0e4c47f307b6b2511ab8d7d30177c491960504252053/numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71", size = 20630554 }, + { url = "https://files.pythonhosted.org/packages/1a/2e/151484f49fd03944c4a3ad9c418ed193cfd02724e138ac8a9505d056c582/numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef", size = 13997127 }, + { url = "https://files.pythonhosted.org/packages/79/ae/7e5b85136806f9dadf4878bf73cf223fe5c2636818ba3ab1c585d0403164/numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e", size = 14222994 }, + { url = "https://files.pythonhosted.org/packages/3a/d0/edc009c27b406c4f9cbc79274d6e46d634d139075492ad055e3d68445925/numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5", size = 18252005 }, + { url = "https://files.pythonhosted.org/packages/09/bf/2b1aaf8f525f2923ff6cfcf134ae5e750e279ac65ebf386c75a0cf6da06a/numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a", size = 13885297 }, + { url = "https://files.pythonhosted.org/packages/df/a0/4e0f14d847cfc2a633a1c8621d00724f3206cfeddeb66d35698c4e2cf3d2/numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a", size = 18093567 }, + { url = "https://files.pythonhosted.org/packages/d2/b7/a734c733286e10a7f1a8ad1ae8c90f2d33bf604a96548e0a4a3a6739b468/numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20", size = 5968812 }, + { url = "https://files.pythonhosted.org/packages/3f/6b/5610004206cf7f8e7ad91c5a85a8c71b2f2f8051a0c0c4d5916b76d6cbb2/numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2", size = 15811913 }, + { url = "https://files.pythonhosted.org/packages/95/12/8f2020a8e8b8383ac0177dc9570aad031a3beb12e38847f7129bacd96228/numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218", size = 20335901 }, + { url = "https://files.pythonhosted.org/packages/75/5b/ca6c8bd14007e5ca171c7c03102d17b4f4e0ceb53957e8c44343a9546dcc/numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b", size = 13685868 }, + { url = "https://files.pythonhosted.org/packages/79/f8/97f10e6755e2a7d027ca783f63044d5b1bc1ae7acb12afe6a9b4286eac17/numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b", size = 13925109 }, + { url = "https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed", size = 17950613 }, + { url = "https://files.pythonhosted.org/packages/4c/0c/9c603826b6465e82591e05ca230dfc13376da512b25ccd0894709b054ed0/numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a", size = 13572172 }, + { url = "https://files.pythonhosted.org/packages/76/8c/2ba3902e1a0fc1c74962ea9bb33a534bb05984ad7ff9515bf8d07527cadd/numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0", size = 17786643 }, + { url = "https://files.pythonhosted.org/packages/28/4a/46d9e65106879492374999e76eb85f87b15328e06bd1550668f79f7b18c6/numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110", size = 5677803 }, + { url = "https://files.pythonhosted.org/packages/16/2e/86f24451c2d530c88daf997cb8d6ac622c1d40d19f5a031ed68a4b73a374/numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818", size = 15517754 }, + { url = "https://files.pythonhosted.org/packages/7d/24/ce71dc08f06534269f66e73c04f5709ee024a1afe92a7b6e1d73f158e1f8/numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c", size = 20636301 }, + { url = "https://files.pythonhosted.org/packages/ae/8c/ab03a7c25741f9ebc92684a20125fbc9fc1b8e1e700beb9197d750fdff88/numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be", size = 13971216 }, + { url = "https://files.pythonhosted.org/packages/6d/64/c3bcdf822269421d85fe0d64ba972003f9bb4aa9a419da64b86856c9961f/numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764", size = 14226281 }, + { url = "https://files.pythonhosted.org/packages/54/30/c2a907b9443cf42b90c17ad10c1e8fa801975f01cb9764f3f8eb8aea638b/numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3", size = 18249516 }, + { url = "https://files.pythonhosted.org/packages/43/12/01a563fc44c07095996d0129b8899daf89e4742146f7044cdbdb3101c57f/numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd", size = 13882132 }, + { url = "https://files.pythonhosted.org/packages/16/ee/9df80b06680aaa23fc6c31211387e0db349e0e36d6a63ba3bd78c5acdf11/numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c", size = 18084181 }, + { url = "https://files.pythonhosted.org/packages/28/7d/4b92e2fe20b214ffca36107f1a3e75ef4c488430e64de2d9af5db3a4637d/numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6", size = 5976360 }, + { url = "https://files.pythonhosted.org/packages/b5/42/054082bd8220bbf6f297f982f0a8f5479fcbc55c8b511d928df07b965869/numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea", size = 15814633 }, + { url = "https://files.pythonhosted.org/packages/3f/72/3df6c1c06fc83d9cfe381cccb4be2532bbd38bf93fbc9fad087b6687f1c0/numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30", size = 20455961 }, + { url = "https://files.pythonhosted.org/packages/8e/02/570545bac308b58ffb21adda0f4e220ba716fb658a63c151daecc3293350/numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c", size = 18061071 }, + { url = "https://files.pythonhosted.org/packages/f4/5f/fafd8c51235f60d49f7a88e2275e13971e90555b67da52dd6416caec32fe/numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0", size = 15709730 }, +] + +[[package]] +name = "packaging" +version = "24.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", size = 148788 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", size = 53985 }, +] + +[[package]] +name = "parso" +version = "0.8.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 }, +] + +[[package]] +name = "pickleshare" +version = "0.7.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/b6/df3c1c9b616e9c0edbc4fbab6ddd09df9535849c64ba51fcb6531c32d4d8/pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", size = 6161 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/41/220f49aaea88bc6fa6cba8d05ecf24676326156c23b991e80b3f2fc24c77/pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56", size = 6877 }, +] + +[[package]] +name = "pillow" +version = "10.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", size = 46555059 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/69/a31cccd538ca0b5272be2a38347f8839b97a14be104ea08b0db92f749c74/pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e", size = 3509271 }, + { url = "https://files.pythonhosted.org/packages/9a/9e/4143b907be8ea0bce215f2ae4f7480027473f8b61fcedfda9d851082a5d2/pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d", size = 3375658 }, + { url = "https://files.pythonhosted.org/packages/8a/25/1fc45761955f9359b1169aa75e241551e74ac01a09f487adaaf4c3472d11/pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856", size = 4332075 }, + { url = "https://files.pythonhosted.org/packages/5e/dd/425b95d0151e1d6c951f45051112394f130df3da67363b6bc75dc4c27aba/pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f", size = 4444808 }, + { url = "https://files.pythonhosted.org/packages/b1/84/9a15cc5726cbbfe7f9f90bfb11f5d028586595907cd093815ca6644932e3/pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b", size = 4356290 }, + { url = "https://files.pythonhosted.org/packages/b5/5b/6651c288b08df3b8c1e2f8c1152201e0b25d240e22ddade0f1e242fc9fa0/pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc", size = 4525163 }, + { url = "https://files.pythonhosted.org/packages/07/8b/34854bf11a83c248505c8cb0fcf8d3d0b459a2246c8809b967963b6b12ae/pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e", size = 4463100 }, + { url = "https://files.pythonhosted.org/packages/78/63/0632aee4e82476d9cbe5200c0cdf9ba41ee04ed77887432845264d81116d/pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46", size = 4592880 }, + { url = "https://files.pythonhosted.org/packages/df/56/b8663d7520671b4398b9d97e1ed9f583d4afcbefbda3c6188325e8c297bd/pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984", size = 2235218 }, + { url = "https://files.pythonhosted.org/packages/f4/72/0203e94a91ddb4a9d5238434ae6c1ca10e610e8487036132ea9bf806ca2a/pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141", size = 2554487 }, + { url = "https://files.pythonhosted.org/packages/bd/52/7e7e93d7a6e4290543f17dc6f7d3af4bd0b3dd9926e2e8a35ac2282bc5f4/pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1", size = 2243219 }, + { url = "https://files.pythonhosted.org/packages/a7/62/c9449f9c3043c37f73e7487ec4ef0c03eb9c9afc91a92b977a67b3c0bbc5/pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", size = 3509265 }, + { url = "https://files.pythonhosted.org/packages/f4/5f/491dafc7bbf5a3cc1845dc0430872e8096eb9e2b6f8161509d124594ec2d/pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", size = 3375655 }, + { url = "https://files.pythonhosted.org/packages/73/d5/c4011a76f4207a3c151134cd22a1415741e42fa5ddecec7c0182887deb3d/pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", size = 4340304 }, + { url = "https://files.pythonhosted.org/packages/ac/10/c67e20445a707f7a610699bba4fe050583b688d8cd2d202572b257f46600/pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", size = 4452804 }, + { url = "https://files.pythonhosted.org/packages/a9/83/6523837906d1da2b269dee787e31df3b0acb12e3d08f024965a3e7f64665/pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", size = 4365126 }, + { url = "https://files.pythonhosted.org/packages/ba/e5/8c68ff608a4203085158cff5cc2a3c534ec384536d9438c405ed6370d080/pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", size = 4533541 }, + { url = "https://files.pythonhosted.org/packages/f4/7c/01b8dbdca5bc6785573f4cee96e2358b0918b7b2c7b60d8b6f3abf87a070/pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", size = 4471616 }, + { url = "https://files.pythonhosted.org/packages/c8/57/2899b82394a35a0fbfd352e290945440e3b3785655a03365c0ca8279f351/pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", size = 4600802 }, + { url = "https://files.pythonhosted.org/packages/4d/d7/a44f193d4c26e58ee5d2d9db3d4854b2cfb5b5e08d360a5e03fe987c0086/pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496", size = 2235213 }, + { url = "https://files.pythonhosted.org/packages/c1/d0/5866318eec2b801cdb8c82abf190c8343d8a1cd8bf5a0c17444a6f268291/pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91", size = 2554498 }, + { url = "https://files.pythonhosted.org/packages/d4/c8/310ac16ac2b97e902d9eb438688de0d961660a87703ad1561fd3dfbd2aa0/pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22", size = 2243219 }, + { url = "https://files.pythonhosted.org/packages/05/cb/0353013dc30c02a8be34eb91d25e4e4cf594b59e5a55ea1128fde1e5f8ea/pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94", size = 3509350 }, + { url = "https://files.pythonhosted.org/packages/e7/cf/5c558a0f247e0bf9cec92bff9b46ae6474dd736f6d906315e60e4075f737/pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597", size = 3374980 }, + { url = "https://files.pythonhosted.org/packages/84/48/6e394b86369a4eb68b8a1382c78dc092245af517385c086c5094e3b34428/pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80", size = 4343799 }, + { url = "https://files.pythonhosted.org/packages/3b/f3/a8c6c11fa84b59b9df0cd5694492da8c039a24cd159f0f6918690105c3be/pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca", size = 4459973 }, + { url = "https://files.pythonhosted.org/packages/7d/1b/c14b4197b80150fb64453585247e6fb2e1d93761fa0fa9cf63b102fde822/pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef", size = 4370054 }, + { url = "https://files.pythonhosted.org/packages/55/77/40daddf677897a923d5d33329acd52a2144d54a9644f2a5422c028c6bf2d/pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a", size = 4539484 }, + { url = "https://files.pythonhosted.org/packages/40/54/90de3e4256b1207300fb2b1d7168dd912a2fb4b2401e439ba23c2b2cabde/pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b", size = 4477375 }, + { url = "https://files.pythonhosted.org/packages/13/24/1bfba52f44193860918ff7c93d03d95e3f8748ca1de3ceaf11157a14cf16/pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9", size = 4608773 }, + { url = "https://files.pythonhosted.org/packages/55/04/5e6de6e6120451ec0c24516c41dbaf80cce1b6451f96561235ef2429da2e/pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42", size = 2235690 }, + { url = "https://files.pythonhosted.org/packages/74/0a/d4ce3c44bca8635bd29a2eab5aa181b654a734a29b263ca8efe013beea98/pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a", size = 2554951 }, + { url = "https://files.pythonhosted.org/packages/b5/ca/184349ee40f2e92439be9b3502ae6cfc43ac4b50bc4fc6b3de7957563894/pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9", size = 2243427 }, + { url = "https://files.pythonhosted.org/packages/c3/00/706cebe7c2c12a6318aabe5d354836f54adff7156fd9e1bd6c89f4ba0e98/pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3", size = 3525685 }, + { url = "https://files.pythonhosted.org/packages/cf/76/f658cbfa49405e5ecbfb9ba42d07074ad9792031267e782d409fd8fe7c69/pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb", size = 3374883 }, + { url = "https://files.pythonhosted.org/packages/46/2b/99c28c4379a85e65378211971c0b430d9c7234b1ec4d59b2668f6299e011/pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70", size = 4339837 }, + { url = "https://files.pythonhosted.org/packages/f1/74/b1ec314f624c0c43711fdf0d8076f82d9d802afd58f1d62c2a86878e8615/pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be", size = 4455562 }, + { url = "https://files.pythonhosted.org/packages/4a/2a/4b04157cb7b9c74372fa867096a1607e6fedad93a44deeff553ccd307868/pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0", size = 4366761 }, + { url = "https://files.pythonhosted.org/packages/ac/7b/8f1d815c1a6a268fe90481232c98dd0e5fa8c75e341a75f060037bd5ceae/pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc", size = 4536767 }, + { url = "https://files.pythonhosted.org/packages/e5/77/05fa64d1f45d12c22c314e7b97398ffb28ef2813a485465017b7978b3ce7/pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a", size = 4477989 }, + { url = "https://files.pythonhosted.org/packages/12/63/b0397cfc2caae05c3fb2f4ed1b4fc4fc878f0243510a7a6034ca59726494/pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309", size = 4610255 }, + { url = "https://files.pythonhosted.org/packages/7b/f9/cfaa5082ca9bc4a6de66ffe1c12c2d90bf09c309a5f52b27759a596900e7/pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060", size = 2235603 }, + { url = "https://files.pythonhosted.org/packages/01/6a/30ff0eef6e0c0e71e55ded56a38d4859bf9d3634a94a88743897b5f96936/pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea", size = 2554972 }, + { url = "https://files.pythonhosted.org/packages/48/2c/2e0a52890f269435eee38b21c8218e102c621fe8d8df8b9dd06fabf879ba/pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d", size = 2243375 }, + { url = "https://files.pythonhosted.org/packages/56/70/f40009702a477ce87d8d9faaa4de51d6562b3445d7a314accd06e4ffb01d/pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736", size = 3509213 }, + { url = "https://files.pythonhosted.org/packages/10/43/105823d233c5e5d31cea13428f4474ded9d961652307800979a59d6a4276/pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b", size = 3375883 }, + { url = "https://files.pythonhosted.org/packages/3c/ad/7850c10bac468a20c918f6a5dbba9ecd106ea1cdc5db3c35e33a60570408/pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2", size = 4330810 }, + { url = "https://files.pythonhosted.org/packages/84/4c/69bbed9e436ac22f9ed193a2b64f64d68fcfbc9f4106249dc7ed4889907b/pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680", size = 4444341 }, + { url = "https://files.pythonhosted.org/packages/8f/4f/c183c63828a3f37bf09644ce94cbf72d4929b033b109160a5379c2885932/pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b", size = 4356005 }, + { url = "https://files.pythonhosted.org/packages/fb/ad/435fe29865f98a8fbdc64add8875a6e4f8c97749a93577a8919ec6f32c64/pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd", size = 4525201 }, + { url = "https://files.pythonhosted.org/packages/80/74/be8bf8acdfd70e91f905a12ae13cfb2e17c0f1da745c40141e26d0971ff5/pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84", size = 4460635 }, + { url = "https://files.pythonhosted.org/packages/e4/90/763616e66dc9ad59c9b7fb58f863755e7934ef122e52349f62c7742b82d3/pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0", size = 4590283 }, + { url = "https://files.pythonhosted.org/packages/69/66/03002cb5b2c27bb519cba63b9f9aa3709c6f7a5d3b285406c01f03fb77e5/pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e", size = 2235185 }, + { url = "https://files.pythonhosted.org/packages/f2/75/3cb820b2812405fc7feb3d0deb701ef0c3de93dc02597115e00704591bc9/pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab", size = 2554594 }, + { url = "https://files.pythonhosted.org/packages/31/85/955fa5400fa8039921f630372cfe5056eed6e1b8e0430ee4507d7de48832/pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d", size = 3509283 }, + { url = "https://files.pythonhosted.org/packages/23/9c/343827267eb28d41cd82b4180d33b10d868af9077abcec0af9793aa77d2d/pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b", size = 3375691 }, + { url = "https://files.pythonhosted.org/packages/60/a3/7ebbeabcd341eab722896d1a5b59a3df98c4b4d26cf4b0385f8aa94296f7/pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd", size = 4328295 }, + { url = "https://files.pythonhosted.org/packages/32/3f/c02268d0c6fb6b3958bdda673c17b315c821d97df29ae6969f20fb49388a/pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126", size = 4440810 }, + { url = "https://files.pythonhosted.org/packages/67/5d/1c93c8cc35f2fdd3d6cc7e4ad72d203902859a2867de6ad957d9b708eb8d/pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b", size = 4352283 }, + { url = "https://files.pythonhosted.org/packages/bc/a8/8655557c9c7202b8abbd001f61ff36711cefaf750debcaa1c24d154ef602/pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c", size = 4521800 }, + { url = "https://files.pythonhosted.org/packages/58/78/6f95797af64d137124f68af1bdaa13b5332da282b86031f6fa70cf368261/pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1", size = 4459177 }, + { url = "https://files.pythonhosted.org/packages/8a/6d/2b3ce34f1c4266d79a78c9a51d1289a33c3c02833fe294ef0dcbb9cba4ed/pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df", size = 4589079 }, + { url = "https://files.pythonhosted.org/packages/e3/e0/456258c74da1ff5bf8ef1eab06a95ca994d8b9ed44c01d45c3f8cbd1db7e/pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef", size = 2235247 }, + { url = "https://files.pythonhosted.org/packages/37/f8/bef952bdb32aa53741f58bf21798642209e994edc3f6598f337f23d5400a/pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5", size = 2554479 }, + { url = "https://files.pythonhosted.org/packages/bb/8e/805201619cad6651eef5fc1fdef913804baf00053461522fabbc5588ea12/pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e", size = 2243226 }, + { url = "https://files.pythonhosted.org/packages/38/30/095d4f55f3a053392f75e2eae45eba3228452783bab3d9a920b951ac495c/pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4", size = 3493889 }, + { url = "https://files.pythonhosted.org/packages/f3/e8/4ff79788803a5fcd5dc35efdc9386af153569853767bff74540725b45863/pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da", size = 3346160 }, + { url = "https://files.pythonhosted.org/packages/d7/ac/4184edd511b14f760c73f5bb8a5d6fd85c591c8aff7c2229677a355c4179/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026", size = 3435020 }, + { url = "https://files.pythonhosted.org/packages/da/21/1749cd09160149c0a246a81d646e05f35041619ce76f6493d6a96e8d1103/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e", size = 3490539 }, + { url = "https://files.pythonhosted.org/packages/b6/f5/f71fe1888b96083b3f6dfa0709101f61fc9e972c0c8d04e9d93ccef2a045/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5", size = 3476125 }, + { url = "https://files.pythonhosted.org/packages/96/b9/c0362c54290a31866c3526848583a2f45a535aa9d725fd31e25d318c805f/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885", size = 3579373 }, + { url = "https://files.pythonhosted.org/packages/52/3b/ce7a01026a7cf46e5452afa86f97a5e88ca97f562cafa76570178ab56d8d/pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5", size = 2554661 }, + { url = "https://files.pythonhosted.org/packages/e1/1f/5a9fcd6ced51633c22481417e11b1b47d723f64fb536dfd67c015eb7f0ab/pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b", size = 3493850 }, + { url = "https://files.pythonhosted.org/packages/cb/e6/3ea4755ed5320cb62aa6be2f6de47b058c6550f752dd050e86f694c59798/pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908", size = 3346118 }, + { url = "https://files.pythonhosted.org/packages/0a/22/492f9f61e4648422b6ca39268ec8139277a5b34648d28f400faac14e0f48/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b", size = 3434958 }, + { url = "https://files.pythonhosted.org/packages/f9/19/559a48ad4045704bb0547965b9a9345f5cd461347d977a56d178db28819e/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8", size = 3490340 }, + { url = "https://files.pythonhosted.org/packages/d9/de/cebaca6fb79905b3a1aa0281d238769df3fb2ede34fd7c0caa286575915a/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a", size = 3476048 }, + { url = "https://files.pythonhosted.org/packages/71/f0/86d5b2f04693b0116a01d75302b0a307800a90d6c351a8aa4f8ae76cd499/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27", size = 3579366 }, + { url = "https://files.pythonhosted.org/packages/37/ae/2dbfc38cc4fd14aceea14bc440d5151b21f64c4c3ba3f6f4191610b7ee5d/pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3", size = 2554652 }, +] + +[[package]] +name = "pkgutil-resolve-name" +version = "1.3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/f2/f2891a9dc37398696ddd945012b90ef8d0a034f0012e3f83c3f7a70b0f79/pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174", size = 5054 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/5c/3d4882ba113fd55bdba9326c1e4c62a15e674a2501de4869e6bd6301f87e/pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e", size = 4734 }, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 }, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.48" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2d/4f/feb5e137aff82f7c7f3248267b97451da3644f6cdc218edfe549fb354127/prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90", size = 424684 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/6a/fd08d94654f7e67c52ca30523a178b3f8ccc4237fce4be90d39c938a831a/prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e", size = 386595 }, +] + +[[package]] +name = "protobuf" +version = "5.28.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/a4/4579a61de526e19005ceeb93e478b61d77aa38c8a85ad958ff16a9906549/protobuf-5.28.2.tar.gz", hash = "sha256:59379674ff119717404f7454647913787034f03fe7049cbef1d74a97bb4593f0", size = 422494 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/30/231764750e0987755b7b8d66771f161e5f002e165d27b72154c776dbabf7/protobuf-5.28.2-cp310-abi3-win32.whl", hash = "sha256:eeea10f3dc0ac7e6b4933d32db20662902b4ab81bf28df12218aa389e9c2102d", size = 419662 }, + { url = "https://files.pythonhosted.org/packages/7d/46/3fdf7462160135aee6a530f1ec66665b5b4132fa2e1002ab971bc6ec2589/protobuf-5.28.2-cp310-abi3-win_amd64.whl", hash = "sha256:2c69461a7fcc8e24be697624c09a839976d82ae75062b11a0972e41fd2cd9132", size = 431479 }, + { url = "https://files.pythonhosted.org/packages/37/45/d2a760580f8f2ed2825ba44cb370e0a4011ddef85e728f46ea3dd565a8a5/protobuf-5.28.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a8b9403fc70764b08d2f593ce44f1d2920c5077bf7d311fefec999f8c40f78b7", size = 414736 }, + { url = "https://files.pythonhosted.org/packages/e6/23/ed718dc18e6a561445ece1e7a17d2dda0c634ad9cf663102b47f10005d8f/protobuf-5.28.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:35cfcb15f213449af7ff6198d6eb5f739c37d7e4f1c09b5d0641babf2cc0c68f", size = 316518 }, + { url = "https://files.pythonhosted.org/packages/23/08/a1ce0415a115c2b703bfa798f06f0e43ca91dbe29d6180bf86a9287b15e2/protobuf-5.28.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:5e8a95246d581eef20471b5d5ba010d55f66740942b95ba9b872d918c459452f", size = 316605 }, + { url = "https://files.pythonhosted.org/packages/0f/99/b71c43758cb96dcd28ebc34fc394883cb7ea99a63d4c93622c2ccee53ba9/protobuf-5.28.2-cp38-cp38-win32.whl", hash = "sha256:87317e9bcda04a32f2ee82089a204d3a2f0d3c8aeed16568c7daf4756e4f1fe0", size = 419600 }, + { url = "https://files.pythonhosted.org/packages/1b/99/8d51383f6f326003e59cf1915e315803c9b786459bacf709e5edca158c5e/protobuf-5.28.2-cp38-cp38-win_amd64.whl", hash = "sha256:c0ea0123dac3399a2eeb1a1443d82b7afc9ff40241433296769f7da42d142ec3", size = 431522 }, + { url = "https://files.pythonhosted.org/packages/2d/27/d10aaae326ffd446893d4d1ef18e22c4ece87eb4273ee560ce4e616f0959/protobuf-5.28.2-cp39-cp39-win32.whl", hash = "sha256:ca53faf29896c526863366a52a8f4d88e69cd04ec9571ed6082fa117fac3ab36", size = 419587 }, + { url = "https://files.pythonhosted.org/packages/94/12/af94b0654fa6bde64272b2abab39b221544c32e9e911284745569f65e73a/protobuf-5.28.2-cp39-cp39-win_amd64.whl", hash = "sha256:8ddc60bf374785fb7cb12510b267f59067fa10087325b8e1855b898a0d81d276", size = 431552 }, + { url = "https://files.pythonhosted.org/packages/9b/55/f24e3b801d2e108c48aa2b1b59bb791b5cffba89465cbbf66fc98de89270/protobuf-5.28.2-py3-none-any.whl", hash = "sha256:52235802093bd8a2811abbe8bf0ab9c5f54cca0a751fdd3f6ac2a21438bffece", size = 169566 }, +] + +[[package]] +name = "psutil" +version = "6.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/c7/8c6872f7372eb6a6b2e4708b88419fb46b857f7a2e1892966b851cc79fc9/psutil-6.0.0.tar.gz", hash = "sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2", size = 508067 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/66/78c9c3020f573c58101dc43a44f6855d01bbbd747e24da2f0c4491200ea3/psutil-6.0.0-cp27-none-win32.whl", hash = "sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35", size = 249766 }, + { url = "https://files.pythonhosted.org/packages/e1/3f/2403aa9558bea4d3854b0e5e567bc3dd8e9fbc1fc4453c0aa9aafeb75467/psutil-6.0.0-cp27-none-win_amd64.whl", hash = "sha256:21f1fb635deccd510f69f485b87433460a603919b45e2a324ad65b0cc74f8fb1", size = 253024 }, + { url = "https://files.pythonhosted.org/packages/0b/37/f8da2fbd29690b3557cca414c1949f92162981920699cd62095a984983bf/psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0", size = 250961 }, + { url = "https://files.pythonhosted.org/packages/35/56/72f86175e81c656a01c4401cd3b1c923f891b31fbcebe98985894176d7c9/psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0", size = 287478 }, + { url = "https://files.pythonhosted.org/packages/19/74/f59e7e0d392bc1070e9a70e2f9190d652487ac115bb16e2eff6b22ad1d24/psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd", size = 290455 }, + { url = "https://files.pythonhosted.org/packages/cd/5f/60038e277ff0a9cc8f0c9ea3d0c5eb6ee1d2470ea3f9389d776432888e47/psutil-6.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e8d0054fc88153ca0544f5c4d554d42e33df2e009c4ff42284ac9ebdef4132", size = 292046 }, + { url = "https://files.pythonhosted.org/packages/8b/20/2ff69ad9c35c3df1858ac4e094f20bd2374d33c8643cf41da8fd7cdcb78b/psutil-6.0.0-cp37-abi3-win32.whl", hash = "sha256:a495580d6bae27291324fe60cea0b5a7c23fa36a7cd35035a16d93bdcf076b9d", size = 253560 }, + { url = "https://files.pythonhosted.org/packages/73/44/561092313ae925f3acfaace6f9ddc4f6a9c748704317bad9c8c8f8a36a79/psutil-6.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:33ea5e1c975250a720b3a6609c490db40dae5d83a4eb315170c4fe0d8b1f34b3", size = 257399 }, + { url = "https://files.pythonhosted.org/packages/7c/06/63872a64c312a24fb9b4af123ee7007a306617da63ff13bcc1432386ead7/psutil-6.0.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:ffe7fc9b6b36beadc8c322f84e1caff51e8703b88eee1da46d1e3a6ae11b4fd0", size = 251988 }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993 }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842 }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, +] + +[[package]] +name = "pygments" +version = "2.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", size = 4891905 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", size = 1205513 }, +] + +[[package]] +name = "pyright" +version = "1.1.382.post1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nodeenv" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1b/d3/fbf59f51cb74fc62a0c2b791aaa6242c8004db551b30c726783ba4432f05/pyright-1.1.382.post1.tar.gz", hash = "sha256:66a5d4e83be9452853d73e9dd9e95ba0ac3061845270e4e331d0070a597d3445", size = 21965 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/e2/7661f69927bf052e36d9c162c5087a02c346d0269be238cea2f5ae1e80f2/pyright-1.1.382.post1-py3-none-any.whl", hash = "sha256:21a4749dd1740e209f88d3a601e9f40748670d39481ea32b9d77edf7f3f1fb2e", size = 18669 }, +] + +[[package]] +name = "pytest" +version = "8.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", size = 1442487 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2", size = 342341 }, +] + +[[package]] +name = "pytest-asyncio" +version = "0.24.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/52/6d/c6cf50ce320cf8611df7a1254d86233b3df7cc07f9b5f5cbcb82e08aa534/pytest_asyncio-0.24.0.tar.gz", hash = "sha256:d081d828e576d85f875399194281e92bf8a68d60d72d1a2faf2feddb6c46b276", size = 49855 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/31/6607dab48616902f76885dfcf62c08d929796fc3b2d2318faf9fd54dbed9/pytest_asyncio-0.24.0-py3-none-any.whl", hash = "sha256:a811296ed596b69bf0b6f3dc40f83bcaf341b155a269052d82efa2b25ac7037b", size = 18024 }, +] + +[[package]] +name = "pytest-mock" +version = "3.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/90/a955c3ab35ccd41ad4de556596fa86685bf4fc5ffcc62d22d856cfd4e29a/pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0", size = 32814 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/3b/b26f90f74e2986a82df6e7ac7e319b8ea7ccece1caec9f8ab6104dc70603/pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f", size = 9863 }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, +] + +[[package]] +name = "pytz" +version = "2024.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/31/3c70bf7603cc2dca0f19bdc53b4537a797747a58875b552c8c413d963a3f/pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a", size = 319692 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/c3/005fcca25ce078d2cc29fd559379817424e94885510568bc1bc53d7d5846/pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725", size = 508002 }, +] + +[[package]] +name = "pywin32" +version = "306" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/dc/28c668097edfaf4eac4617ef7adf081b9cf50d254672fcf399a70f5efc41/pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d", size = 8506422 }, + { url = "https://files.pythonhosted.org/packages/d3/d6/891894edec688e72c2e308b3243fad98b4066e1839fd2fe78f04129a9d31/pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8", size = 9226392 }, + { url = "https://files.pythonhosted.org/packages/8b/1e/fc18ad83ca553e01b97aa8393ff10e33c1fb57801db05488b83282ee9913/pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407", size = 8507689 }, + { url = "https://files.pythonhosted.org/packages/7e/9e/ad6b1ae2a5ad1066dc509350e0fbf74d8d50251a51e420a2a8feaa0cecbd/pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e", size = 9227547 }, + { url = "https://files.pythonhosted.org/packages/91/20/f744bff1da8f43388498503634378dbbefbe493e65675f2cc52f7185c2c2/pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a", size = 10388324 }, + { url = "https://files.pythonhosted.org/packages/14/91/17e016d5923e178346aabda3dfec6629d1a26efe587d19667542105cf0a6/pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b", size = 8507705 }, + { url = "https://files.pythonhosted.org/packages/83/1c/25b79fc3ec99b19b0a0730cc47356f7e2959863bf9f3cd314332bddb4f68/pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e", size = 9227429 }, + { url = "https://files.pythonhosted.org/packages/1c/43/e3444dc9a12f8365d9603c2145d16bf0a2f8180f343cf87be47f5579e547/pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040", size = 10388145 }, + { url = "https://files.pythonhosted.org/packages/0e/57/c3ec32b498f24a2392404d1f0fd29f47a3f7339d7d579df7a0560cff337c/pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a", size = 8632118 }, + { url = "https://files.pythonhosted.org/packages/fa/80/a6b22e031590cc5f4fcbd5bf4bcf63a9dabce9d59065f53add99a8caaec5/pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0", size = 9373699 }, + { url = "https://files.pythonhosted.org/packages/7e/7f/419c4fcadcaa374a0ae41cbdf6c3a81452892dd6c523aea629d17e49146e/pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802", size = 8573451 }, + { url = "https://files.pythonhosted.org/packages/1c/f7/24d8ed4fd9c43b90354df7764f81f0dd5e623f9a50f1538f90fe085d6dff/pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4", size = 9312883 }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199 }, + { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758 }, + { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463 }, + { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280 }, + { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239 }, + { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802 }, + { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527 }, + { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052 }, + { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774 }, + { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612 }, + { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040 }, + { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829 }, + { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167 }, + { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952 }, + { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301 }, + { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638 }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850 }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980 }, + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, + { url = "https://files.pythonhosted.org/packages/74/d9/323a59d506f12f498c2097488d80d16f4cf965cee1791eab58b56b19f47a/PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a", size = 183218 }, + { url = "https://files.pythonhosted.org/packages/74/cc/20c34d00f04d785f2028737e2e2a8254e1425102e730fee1d6396f832577/PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5", size = 728067 }, + { url = "https://files.pythonhosted.org/packages/20/52/551c69ca1501d21c0de51ddafa8c23a0191ef296ff098e98358f69080577/PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d", size = 757812 }, + { url = "https://files.pythonhosted.org/packages/fd/7f/2c3697bba5d4aa5cc2afe81826d73dfae5f049458e44732c7a0938baa673/PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083", size = 746531 }, + { url = "https://files.pythonhosted.org/packages/8c/ab/6226d3df99900e580091bb44258fde77a8433511a86883bd4681ea19a858/PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706", size = 800820 }, + { url = "https://files.pythonhosted.org/packages/a0/99/a9eb0f3e710c06c5d922026f6736e920d431812ace24aae38228d0d64b04/PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a", size = 145514 }, + { url = "https://files.pythonhosted.org/packages/75/8a/ee831ad5fafa4431099aa4e078d4c8efd43cd5e48fbc774641d233b683a9/PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff", size = 162702 }, + { url = "https://files.pythonhosted.org/packages/65/d8/b7a1db13636d7fb7d4ff431593c510c8b8fca920ade06ca8ef20015493c5/PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d", size = 184777 }, + { url = "https://files.pythonhosted.org/packages/0a/02/6ec546cd45143fdf9840b2c6be8d875116a64076218b61d68e12548e5839/PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f", size = 172318 }, + { url = "https://files.pythonhosted.org/packages/0e/9a/8cc68be846c972bda34f6c2a93abb644fb2476f4dcc924d52175786932c9/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290", size = 720891 }, + { url = "https://files.pythonhosted.org/packages/e9/6c/6e1b7f40181bc4805e2e07f4abc10a88ce4648e7e95ff1abe4ae4014a9b2/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12", size = 722614 }, + { url = "https://files.pythonhosted.org/packages/3d/32/e7bd8535d22ea2874cef6a81021ba019474ace0d13a4819c2a4bce79bd6a/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19", size = 737360 }, + { url = "https://files.pythonhosted.org/packages/d7/12/7322c1e30b9be969670b672573d45479edef72c9a0deac3bb2868f5d7469/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e", size = 699006 }, + { url = "https://files.pythonhosted.org/packages/82/72/04fcad41ca56491995076630c3ec1e834be241664c0c09a64c9a2589b507/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725", size = 723577 }, + { url = "https://files.pythonhosted.org/packages/ed/5e/46168b1f2757f1fcd442bc3029cd8767d88a98c9c05770d8b420948743bb/PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631", size = 144593 }, + { url = "https://files.pythonhosted.org/packages/19/87/5124b1c1f2412bb95c59ec481eaf936cd32f0fe2a7b16b97b81c4c017a6a/PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8", size = 162312 }, +] + +[[package]] +name = "pyzmq" +version = "26.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/05/bed626b9f7bb2322cdbbf7b4bd8f54b1b617b0d2ab2d3547d6e39428a48e/pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f", size = 271975 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/a8/9837c39aba390eb7d01924ace49d761c8dbe7bc2d6082346d00c8332e431/pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629", size = 1340058 }, + { url = "https://files.pythonhosted.org/packages/a2/1f/a006f2e8e4f7d41d464272012695da17fb95f33b54342612a6890da96ff6/pyzmq-26.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dacd995031a01d16eec825bf30802fceb2c3791ef24bcce48fa98ce40918c27b", size = 1008818 }, + { url = "https://files.pythonhosted.org/packages/b6/09/b51b6683fde5ca04593a57bbe81788b6b43114d8f8ee4e80afc991e14760/pyzmq-26.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89289a5ee32ef6c439086184529ae060c741334b8970a6855ec0b6ad3ff28764", size = 673199 }, + { url = "https://files.pythonhosted.org/packages/c9/78/486f3e2e824f3a645238332bf5a4c4b4477c3063033a27c1e4052358dee2/pyzmq-26.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5506f06d7dc6ecf1efacb4a013b1f05071bb24b76350832c96449f4a2d95091c", size = 911762 }, + { url = "https://files.pythonhosted.org/packages/5e/3b/2eb1667c9b866f53e76ee8b0c301b0469745a23bd5a87b7ee3d5dd9eb6e5/pyzmq-26.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ea039387c10202ce304af74def5021e9adc6297067f3441d348d2b633e8166a", size = 868773 }, + { url = "https://files.pythonhosted.org/packages/16/29/ca99b4598a9dc7e468b5417eda91f372b595be1e3eec9b7cbe8e5d3584e8/pyzmq-26.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2224fa4a4c2ee872886ed00a571f5e967c85e078e8e8c2530a2fb01b3309b88", size = 868834 }, + { url = "https://files.pythonhosted.org/packages/ad/e5/9efaeb1d2f4f8c50da04144f639b042bc52869d3a206d6bf672ab3522163/pyzmq-26.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:28ad5233e9c3b52d76196c696e362508959741e1a005fb8fa03b51aea156088f", size = 1202861 }, + { url = "https://files.pythonhosted.org/packages/c3/62/c721b5608a8ac0a69bb83cbb7d07a56f3ff00b3991a138e44198a16f94c7/pyzmq-26.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1c17211bc037c7d88e85ed8b7d8f7e52db6dc8eca5590d162717c654550f7282", size = 1515304 }, + { url = "https://files.pythonhosted.org/packages/87/84/e8bd321aa99b72f48d4606fc5a0a920154125bd0a4608c67eab742dab087/pyzmq-26.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b8f86dd868d41bea9a5f873ee13bf5551c94cf6bc51baebc6f85075971fe6eea", size = 1414712 }, + { url = "https://files.pythonhosted.org/packages/cd/cd/420e3fd1ac6977b008b72e7ad2dae6350cc84d4c5027fc390b024e61738f/pyzmq-26.2.0-cp310-cp310-win32.whl", hash = "sha256:46a446c212e58456b23af260f3d9fb785054f3e3653dbf7279d8f2b5546b21c2", size = 578113 }, + { url = "https://files.pythonhosted.org/packages/5c/57/73930d56ed45ae0cb4946f383f985c855c9b3d4063f26416998f07523c0e/pyzmq-26.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:49d34ab71db5a9c292a7644ce74190b1dd5a3475612eefb1f8be1d6961441971", size = 641631 }, + { url = "https://files.pythonhosted.org/packages/61/d2/ae6ac5c397f1ccad59031c64beaafce7a0d6182e0452cc48f1c9c87d2dd0/pyzmq-26.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:bfa832bfa540e5b5c27dcf5de5d82ebc431b82c453a43d141afb1e5d2de025fa", size = 543528 }, + { url = "https://files.pythonhosted.org/packages/12/20/de7442172f77f7c96299a0ac70e7d4fb78cd51eca67aa2cf552b66c14196/pyzmq-26.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:8f7e66c7113c684c2b3f1c83cdd3376103ee0ce4c49ff80a648643e57fb22218", size = 1340639 }, + { url = "https://files.pythonhosted.org/packages/98/4d/5000468bd64c7910190ed0a6c76a1ca59a68189ec1f007c451dc181a22f4/pyzmq-26.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3a495b30fc91db2db25120df5847d9833af237546fd59170701acd816ccc01c4", size = 1008710 }, + { url = "https://files.pythonhosted.org/packages/e1/bf/c67fd638c2f9fbbab8090a3ee779370b97c82b84cc12d0c498b285d7b2c0/pyzmq-26.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77eb0968da535cba0470a5165468b2cac7772cfb569977cff92e240f57e31bef", size = 673129 }, + { url = "https://files.pythonhosted.org/packages/86/94/99085a3f492aa538161cbf27246e8886ff850e113e0c294a5b8245f13b52/pyzmq-26.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ace4f71f1900a548f48407fc9be59c6ba9d9aaf658c2eea6cf2779e72f9f317", size = 910107 }, + { url = "https://files.pythonhosted.org/packages/31/1d/346809e8a9b999646d03f21096428453465b1bca5cd5c64ecd048d9ecb01/pyzmq-26.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92a78853d7280bffb93df0a4a6a2498cba10ee793cc8076ef797ef2f74d107cf", size = 867960 }, + { url = "https://files.pythonhosted.org/packages/ab/68/6fb6ae5551846ad5beca295b7bca32bf0a7ce19f135cb30e55fa2314e6b6/pyzmq-26.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:689c5d781014956a4a6de61d74ba97b23547e431e9e7d64f27d4922ba96e9d6e", size = 869204 }, + { url = "https://files.pythonhosted.org/packages/0f/f9/18417771dee223ccf0f48e29adf8b4e25ba6d0e8285e33bcbce078070bc3/pyzmq-26.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aca98bc423eb7d153214b2df397c6421ba6373d3397b26c057af3c904452e37", size = 1203351 }, + { url = "https://files.pythonhosted.org/packages/e0/46/f13e67fe0d4f8a2315782cbad50493de6203ea0d744610faf4d5f5b16e90/pyzmq-26.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f3496d76b89d9429a656293744ceca4d2ac2a10ae59b84c1da9b5165f429ad3", size = 1514204 }, + { url = "https://files.pythonhosted.org/packages/50/11/ddcf7343b7b7a226e0fc7b68cbf5a5bb56291fac07f5c3023bb4c319ebb4/pyzmq-26.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5c2b3bfd4b9689919db068ac6c9911f3fcb231c39f7dd30e3138be94896d18e6", size = 1414339 }, + { url = "https://files.pythonhosted.org/packages/01/14/1c18d7d5b7be2708f513f37c61bfadfa62161c10624f8733f1c8451b3509/pyzmq-26.2.0-cp311-cp311-win32.whl", hash = "sha256:eac5174677da084abf378739dbf4ad245661635f1600edd1221f150b165343f4", size = 576928 }, + { url = "https://files.pythonhosted.org/packages/3b/1b/0a540edd75a41df14ec416a9a500b9fec66e554aac920d4c58fbd5756776/pyzmq-26.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:5a509df7d0a83a4b178d0f937ef14286659225ef4e8812e05580776c70e155d5", size = 642317 }, + { url = "https://files.pythonhosted.org/packages/98/77/1cbfec0358078a4c5add529d8a70892db1be900980cdb5dd0898b3d6ab9d/pyzmq-26.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0e6091b157d48cbe37bd67233318dbb53e1e6327d6fc3bb284afd585d141003", size = 543834 }, + { url = "https://files.pythonhosted.org/packages/28/2f/78a766c8913ad62b28581777ac4ede50c6d9f249d39c2963e279524a1bbe/pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:ded0fc7d90fe93ae0b18059930086c51e640cdd3baebdc783a695c77f123dcd9", size = 1343105 }, + { url = "https://files.pythonhosted.org/packages/b7/9c/4b1e2d3d4065be715e007fe063ec7885978fad285f87eae1436e6c3201f4/pyzmq-26.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17bf5a931c7f6618023cdacc7081f3f266aecb68ca692adac015c383a134ca52", size = 1008365 }, + { url = "https://files.pythonhosted.org/packages/4f/ef/5a23ec689ff36d7625b38d121ef15abfc3631a9aecb417baf7a4245e4124/pyzmq-26.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55cf66647e49d4621a7e20c8d13511ef1fe1efbbccf670811864452487007e08", size = 665923 }, + { url = "https://files.pythonhosted.org/packages/ae/61/d436461a47437d63c6302c90724cf0981883ec57ceb6073873f32172d676/pyzmq-26.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4661c88db4a9e0f958c8abc2b97472e23061f0bc737f6f6179d7a27024e1faa5", size = 903400 }, + { url = "https://files.pythonhosted.org/packages/47/42/fc6d35ecefe1739a819afaf6f8e686f7f02a4dd241c78972d316f403474c/pyzmq-26.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7f69de383cb47522c9c208aec6dd17697db7875a4674c4af3f8cfdac0bdeae", size = 860034 }, + { url = "https://files.pythonhosted.org/packages/07/3b/44ea6266a6761e9eefaa37d98fabefa112328808ac41aa87b4bbb668af30/pyzmq-26.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f98f6dfa8b8ccaf39163ce872bddacca38f6a67289116c8937a02e30bbe9711", size = 860579 }, + { url = "https://files.pythonhosted.org/packages/38/6f/4df2014ab553a6052b0e551b37da55166991510f9e1002c89cab7ce3b3f2/pyzmq-26.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3e0210287329272539eea617830a6a28161fbbd8a3271bf4150ae3e58c5d0e6", size = 1196246 }, + { url = "https://files.pythonhosted.org/packages/38/9d/ee240fc0c9fe9817f0c9127a43238a3e28048795483c403cc10720ddef22/pyzmq-26.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6b274e0762c33c7471f1a7471d1a2085b1a35eba5cdc48d2ae319f28b6fc4de3", size = 1507441 }, + { url = "https://files.pythonhosted.org/packages/85/4f/01711edaa58d535eac4a26c294c617c9a01f09857c0ce191fd574d06f359/pyzmq-26.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29c6a4635eef69d68a00321e12a7d2559fe2dfccfa8efae3ffb8e91cd0b36a8b", size = 1406498 }, + { url = "https://files.pythonhosted.org/packages/07/18/907134c85c7152f679ed744e73e645b365f3ad571f38bdb62e36f347699a/pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7", size = 575533 }, + { url = "https://files.pythonhosted.org/packages/ce/2c/a6f4a20202a4d3c582ad93f95ee78d79bbdc26803495aec2912b17dbbb6c/pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a", size = 637768 }, + { url = "https://files.pythonhosted.org/packages/5f/0e/eb16ff731632d30554bf5af4dbba3ffcd04518219d82028aea4ae1b02ca5/pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b", size = 540675 }, + { url = "https://files.pythonhosted.org/packages/04/a7/0f7e2f6c126fe6e62dbae0bc93b1bd3f1099cf7fea47a5468defebe3f39d/pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726", size = 1006564 }, + { url = "https://files.pythonhosted.org/packages/31/b6/a187165c852c5d49f826a690857684333a6a4a065af0a6015572d2284f6a/pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3", size = 1340447 }, + { url = "https://files.pythonhosted.org/packages/68/ba/f4280c58ff71f321602a6e24fd19879b7e79793fb8ab14027027c0fb58ef/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50", size = 665485 }, + { url = "https://files.pythonhosted.org/packages/77/b5/c987a5c53c7d8704216f29fc3d810b32f156bcea488a940e330e1bcbb88d/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb", size = 903484 }, + { url = "https://files.pythonhosted.org/packages/29/c9/07da157d2db18c72a7eccef8e684cefc155b712a88e3d479d930aa9eceba/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187", size = 859981 }, + { url = "https://files.pythonhosted.org/packages/43/09/e12501bd0b8394b7d02c41efd35c537a1988da67fc9c745cae9c6c776d31/pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b", size = 860334 }, + { url = "https://files.pythonhosted.org/packages/eb/ff/f5ec1d455f8f7385cc0a8b2acd8c807d7fade875c14c44b85c1bddabae21/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18", size = 1196179 }, + { url = "https://files.pythonhosted.org/packages/ec/8a/bb2ac43295b1950fe436a81fc5b298be0b96ac76fb029b514d3ed58f7b27/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115", size = 1507668 }, + { url = "https://files.pythonhosted.org/packages/a9/49/dbc284ebcfd2dca23f6349227ff1616a7ee2c4a35fe0a5d6c3deff2b4fed/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e", size = 1406539 }, + { url = "https://files.pythonhosted.org/packages/00/68/093cdce3fe31e30a341d8e52a1ad86392e13c57970d722c1f62a1d1a54b6/pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5", size = 575567 }, + { url = "https://files.pythonhosted.org/packages/92/ae/6cc4657148143412b5819b05e362ae7dd09fb9fe76e2a539dcff3d0386bc/pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad", size = 637551 }, + { url = "https://files.pythonhosted.org/packages/6c/67/fbff102e201688f97c8092e4c3445d1c1068c2f27bbd45a578df97ed5f94/pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797", size = 540378 }, + { url = "https://files.pythonhosted.org/packages/3f/fe/2d998380b6e0122c6c4bdf9b6caf490831e5f5e2d08a203b5adff060c226/pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a", size = 1007378 }, + { url = "https://files.pythonhosted.org/packages/4a/f4/30d6e7157f12b3a0390bde94d6a8567cdb88846ed068a6e17238a4ccf600/pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc", size = 1329532 }, + { url = "https://files.pythonhosted.org/packages/82/86/3fe917870e15ee1c3ad48229a2a64458e36036e64b4afa9659045d82bfa8/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5", size = 653242 }, + { url = "https://files.pythonhosted.org/packages/50/2d/242e7e6ef6c8c19e6cb52d095834508cd581ffb925699fd3c640cdc758f1/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672", size = 888404 }, + { url = "https://files.pythonhosted.org/packages/ac/11/7270566e1f31e4ea73c81ec821a4b1688fd551009a3d2bab11ec66cb1e8f/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797", size = 845858 }, + { url = "https://files.pythonhosted.org/packages/91/d5/72b38fbc69867795c8711bdd735312f9fef1e3d9204e2f63ab57085434b9/pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386", size = 847375 }, + { url = "https://files.pythonhosted.org/packages/dd/9a/10ed3c7f72b4c24e719c59359fbadd1a27556a28b36cdf1cd9e4fb7845d5/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306", size = 1183489 }, + { url = "https://files.pythonhosted.org/packages/72/2d/8660892543fabf1fe41861efa222455811adac9f3c0818d6c3170a1153e3/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6", size = 1492932 }, + { url = "https://files.pythonhosted.org/packages/7b/d6/32fd69744afb53995619bc5effa2a405ae0d343cd3e747d0fbc43fe894ee/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0", size = 1392485 }, + { url = "https://files.pythonhosted.org/packages/64/e7/d5d59205d446c299001d27bfc18702c5353512c5485b11ec7cf6df9552d7/pyzmq-26.2.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2eb7735ee73ca1b0d71e0e67c3739c689067f055c764f73aac4cc8ecf958ee3f", size = 1340492 }, + { url = "https://files.pythonhosted.org/packages/59/bb/aa6616a83694ab43cfb3bdb868d194a5ee2fa24b49e6ec7ec4400691ac3b/pyzmq-26.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a534f43bc738181aa7cbbaf48e3eca62c76453a40a746ab95d4b27b1111a7d2", size = 1008257 }, + { url = "https://files.pythonhosted.org/packages/a6/b6/e578e6c08970df0daa08b7c54e82b606211f9a7e61317ef2db79cc334389/pyzmq-26.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aedd5dd8692635813368e558a05266b995d3d020b23e49581ddd5bbe197a8ab6", size = 907602 }, + { url = "https://files.pythonhosted.org/packages/ab/3a/a26b98aebeb7924b24e9973a2f5bf8974201bb5a3f6ed06ddc3bac19372d/pyzmq-26.2.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8be4700cd8bb02cc454f630dcdf7cfa99de96788b80c51b60fe2fe1dac480289", size = 862291 }, + { url = "https://files.pythonhosted.org/packages/c1/b5/7eedb8d63af13c2858beb9c1f58e90e7e00929176b57f45e3592fccd56dc/pyzmq-26.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fcc03fa4997c447dce58264e93b5aa2d57714fbe0f06c07b7785ae131512732", size = 673879 }, + { url = "https://files.pythonhosted.org/packages/af/22/38734f47543e61b4eb97eee476f0f7ae544988533215eea22fc65e1ca1d7/pyzmq-26.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:402b190912935d3db15b03e8f7485812db350d271b284ded2b80d2e5704be780", size = 1207011 }, + { url = "https://files.pythonhosted.org/packages/59/a4/104cc979ae88ed948ef829db5fb49bca4a771891125fa4166bba1598b2ec/pyzmq-26.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8685fa9c25ff00f550c1fec650430c4b71e4e48e8d852f7ddcf2e48308038640", size = 1516183 }, + { url = "https://files.pythonhosted.org/packages/52/8f/73a8e08897f8ed21fe44fc73b5faf3ea4cacb97bfd219a63ee5f3ea203a8/pyzmq-26.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:76589c020680778f06b7e0b193f4b6dd66d470234a16e1df90329f5e14a171cd", size = 1417481 }, + { url = "https://files.pythonhosted.org/packages/67/cf/f418670a83fb3a91e2d6d26f271a828a58e0265199944a76e4ef274f9ba7/pyzmq-26.2.0-cp38-cp38-win32.whl", hash = "sha256:8423c1877d72c041f2c263b1ec6e34360448decfb323fa8b94e85883043ef988", size = 577930 }, + { url = "https://files.pythonhosted.org/packages/f0/51/1f2b47c8d8fb85c07f088e21df6364b8b5e8298e75bb23ea0e65340ebd82/pyzmq-26.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:76589f2cd6b77b5bdea4fca5992dc1c23389d68b18ccc26a53680ba2dc80ff2f", size = 642503 }, + { url = "https://files.pythonhosted.org/packages/ac/9e/ad5fbbe1bcc7a9d1e8c5f4f7de48f2c1dc481e151ef80cc1ce9a7fe67b55/pyzmq-26.2.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:b1d464cb8d72bfc1a3adc53305a63a8e0cac6bc8c5a07e8ca190ab8d3faa43c2", size = 1341256 }, + { url = "https://files.pythonhosted.org/packages/4c/d9/d7a8022108c214803a82b0b69d4885cee00933d21928f1f09dca371cf4bf/pyzmq-26.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4da04c48873a6abdd71811c5e163bd656ee1b957971db7f35140a2d573f6949c", size = 1009385 }, + { url = "https://files.pythonhosted.org/packages/ed/69/0529b59ac667ea8bfe8796ac71796b688fbb42ff78e06525dabfed3bc7ae/pyzmq-26.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d049df610ac811dcffdc147153b414147428567fbbc8be43bb8885f04db39d98", size = 908009 }, + { url = "https://files.pythonhosted.org/packages/6e/bd/3ff3e1172f12f55769793a3a334e956ec2886805ebfb2f64756b6b5c6a1a/pyzmq-26.2.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05590cdbc6b902101d0e65d6a4780af14dc22914cc6ab995d99b85af45362cc9", size = 862078 }, + { url = "https://files.pythonhosted.org/packages/c3/ec/ab13585c3a1f48e2874253844c47b194d56eb25c94718691349c646f336f/pyzmq-26.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c811cfcd6a9bf680236c40c6f617187515269ab2912f3d7e8c0174898e2519db", size = 673756 }, + { url = "https://files.pythonhosted.org/packages/1e/be/febcd4b04dd50ee6d514dfbc33a3d5d9cb38ec9516e02bbfc929baa0f141/pyzmq-26.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6835dd60355593de10350394242b5757fbbd88b25287314316f266e24c61d073", size = 1203684 }, + { url = "https://files.pythonhosted.org/packages/16/28/304150e71afd2df3b82f52f66c0d8ab9ac6fe1f1ffdf92bad4c8cc91d557/pyzmq-26.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc6bee759a6bddea5db78d7dcd609397449cb2d2d6587f48f3ca613b19410cfc", size = 1515864 }, + { url = "https://files.pythonhosted.org/packages/18/89/8d48d8cd505c12a1f5edee597cc32ffcedc65fd8d2603aebaaedc38a7041/pyzmq-26.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c530e1eecd036ecc83c3407f77bb86feb79916d4a33d11394b8234f3bd35b940", size = 1415383 }, + { url = "https://files.pythonhosted.org/packages/d4/7e/43a60c3b179f7da0cbc2b649bd2702fd6a39bff5f72aa38d6e1aeb00256d/pyzmq-26.2.0-cp39-cp39-win32.whl", hash = "sha256:367b4f689786fca726ef7a6c5ba606958b145b9340a5e4808132cc65759abd44", size = 578540 }, + { url = "https://files.pythonhosted.org/packages/3a/55/8841dcd28f783ad06674c8fe8d7d72794b548d0bff8829aaafeb72e8b44d/pyzmq-26.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:e6fa2e3e683f34aea77de8112f6483803c96a44fd726d7358b9888ae5bb394ec", size = 642147 }, + { url = "https://files.pythonhosted.org/packages/b4/78/b3c31ccfcfcdd6ea50b6abc8f46a2a7aadb9c3d40531d1b908d834aaa12e/pyzmq-26.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:7445be39143a8aa4faec43b076e06944b8f9d0701b669df4af200531b21e40bb", size = 543903 }, + { url = "https://files.pythonhosted.org/packages/53/fb/36b2b2548286e9444e52fcd198760af99fd89102b5be50f0660fcfe902df/pyzmq-26.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:706e794564bec25819d21a41c31d4df2d48e1cc4b061e8d345d7fb4dd3e94072", size = 906955 }, + { url = "https://files.pythonhosted.org/packages/77/8f/6ce54f8979a01656e894946db6299e2273fcee21c8e5fa57c6295ef11f57/pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b435f2753621cd36e7c1762156815e21c985c72b19135dac43a7f4f31d28dd1", size = 565701 }, + { url = "https://files.pythonhosted.org/packages/ee/1c/bf8cd66730a866b16db8483286078892b7f6536f8c389fb46e4beba0a970/pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160c7e0a5eb178011e72892f99f918c04a131f36056d10d9c1afb223fc952c2d", size = 794312 }, + { url = "https://files.pythonhosted.org/packages/71/43/91fa4ff25bbfdc914ab6bafa0f03241d69370ef31a761d16bb859f346582/pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4a71d5d6e7b28a47a394c0471b7e77a0661e2d651e7ae91e0cab0a587859ca", size = 752775 }, + { url = "https://files.pythonhosted.org/packages/ec/d2/3b2ab40f455a256cb6672186bea95cd97b459ce4594050132d71e76f0d6f/pyzmq-26.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:90412f2db8c02a3864cbfc67db0e3dcdbda336acf1c469526d3e869394fe001c", size = 550762 }, + { url = "https://files.pythonhosted.org/packages/38/a7/1c80b0c8013befad391b92ba8a8e597de8884605ad5ad8ab943c888eb3ca/pyzmq-26.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:39887ac397ff35b7b775db7201095fc6310a35fdbae85bac4523f7eb3b840e20", size = 906946 }, + { url = "https://files.pythonhosted.org/packages/9c/ac/34a7ee2e7edb07c7222752096650313424eb05f18401ed0a964e996088fb/pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fdb5b3e311d4d4b0eb8b3e8b4d1b0a512713ad7e6a68791d0923d1aec433d919", size = 802021 }, + { url = "https://files.pythonhosted.org/packages/cd/70/c65ddccfb88b469b6044f9664c81f0b7f649711e0dc172cba8b2a968ad99/pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:226af7dcb51fdb0109f0016449b357e182ea0ceb6b47dfb5999d569e5db161d5", size = 756818 }, + { url = "https://files.pythonhosted.org/packages/07/7a/fc77f6d57f592207403eab2deca4c6f1ffa9c78b0f03b59e69069a12a1a1/pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bed0e799e6120b9c32756203fb9dfe8ca2fb8467fed830c34c877e25638c3fc", size = 565698 }, + { url = "https://files.pythonhosted.org/packages/dc/13/e8494ba2d161fb471955fadbef7f48076bd29b19a4dd3c5d61d22e500505/pyzmq-26.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:29c7947c594e105cb9e6c466bace8532dc1ca02d498684128b339799f5248277", size = 550757 }, + { url = "https://files.pythonhosted.org/packages/6c/78/3096d72581365dfb0081ac9512a3b53672fa69854aa174d78636510c4db8/pyzmq-26.2.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cdeabcff45d1c219636ee2e54d852262e5c2e085d6cb476d938aee8d921356b3", size = 906945 }, + { url = "https://files.pythonhosted.org/packages/da/f2/8054574d77c269c31d055d4daf3d8407adf61ea384a50c8d14b158551d09/pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35cffef589bcdc587d06f9149f8d5e9e8859920a071df5a2671de2213bef592a", size = 565698 }, + { url = "https://files.pythonhosted.org/packages/77/21/c3ad93236d1d60eea10b67528f55e7db115a9d32e2bf163fcf601f85e9cc/pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18c8dc3b7468d8b4bdf60ce9d7141897da103c7a4690157b32b60acb45e333e6", size = 794307 }, + { url = "https://files.pythonhosted.org/packages/6a/49/e95b491724500fcb760178ce8db39b923429e328e57bcf9162e32c2c187c/pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7133d0a1677aec369d67dd78520d3fa96dd7f3dcec99d66c1762870e5ea1a50a", size = 752769 }, + { url = "https://files.pythonhosted.org/packages/9b/a9/50c9c06762b30792f71aaad8d1886748d39c4bffedc1171fbc6ad2b92d67/pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a96179a24b14fa6428cbfc08641c779a53f8fcec43644030328f44034c7f1f4", size = 751338 }, + { url = "https://files.pythonhosted.org/packages/ca/63/27e6142b4f67a442ee480986ca5b88edb01462dd2319843057683a5148bd/pyzmq-26.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4f78c88905461a9203eac9faac157a2a0dbba84a0fd09fd29315db27be40af9f", size = 550757 }, +] + +[[package]] +name = "referencing" +version = "0.35.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/73ca1f8e72fff6fa52119dbd185f73a907b1989428917b24cff660129b6d/referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c", size = 62991 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/59/2056f61236782a2c86b33906c025d4f4a0b17be0161b63b70fd9e8775d36/referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de", size = 26684 }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, +] + +[[package]] +name = "rpds-py" +version = "0.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/55/64/b693f262791b818880d17268f3f8181ef799b0d187f6f731b1772e05a29a/rpds_py-0.20.0.tar.gz", hash = "sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121", size = 25814 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/2d/a7e60483b72b91909e18f29a5c5ae847bac4e2ae95b77bb77e1f41819a58/rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2", size = 318432 }, + { url = "https://files.pythonhosted.org/packages/b5/b4/f15b0c55a6d880ce74170e7e28c3ed6c5acdbbd118df50b91d1dabf86008/rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f", size = 311333 }, + { url = "https://files.pythonhosted.org/packages/36/10/3f4e490fe6eb069c07c22357d0b4804cd94cb9f8d01345ef9b1d93482b9d/rpds_py-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150", size = 366697 }, + { url = "https://files.pythonhosted.org/packages/f5/c8/cd6ab31b4424c7fab3b17e153b6ea7d1bb0d7cabea5c1ef683cc8adb8bc2/rpds_py-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e", size = 368386 }, + { url = "https://files.pythonhosted.org/packages/60/5e/642a44fda6dda90b5237af7a0ef1d088159c30a504852b94b0396eb62125/rpds_py-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2", size = 395374 }, + { url = "https://files.pythonhosted.org/packages/7c/b5/ff18c093c9e72630f6d6242e5ccb0728ef8265ba0a154b5972f89d23790a/rpds_py-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3", size = 433189 }, + { url = "https://files.pythonhosted.org/packages/4a/6d/1166a157b227f2333f8e8ae320b6b7ea2a6a38fbe7a3563ad76dffc8608d/rpds_py-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf", size = 354849 }, + { url = "https://files.pythonhosted.org/packages/70/a4/70ea49863ea09ae4c2971f2eef58e80b757e3c0f2f618c5815bb751f7847/rpds_py-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140", size = 373233 }, + { url = "https://files.pythonhosted.org/packages/3b/d3/822a28152a1e7e2ba0dc5d06cf8736f4cd64b191bb6ec47fb51d1c3c5ccf/rpds_py-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f", size = 541852 }, + { url = "https://files.pythonhosted.org/packages/c6/a5/6ef91e4425dc8b3445ff77d292fc4c5e37046462434a0423c4e0a596a8bd/rpds_py-0.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce", size = 547630 }, + { url = "https://files.pythonhosted.org/packages/72/f8/d5625ee05c4e5c478954a16d9359069c66fe8ac8cd5ddf28f80d3b321837/rpds_py-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94", size = 525766 }, + { url = "https://files.pythonhosted.org/packages/94/3c/1ff1ed6ae323b3e16fdfcdae0f0a67f373a6c3d991229dc32b499edeffb7/rpds_py-0.20.0-cp310-none-win32.whl", hash = "sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee", size = 199174 }, + { url = "https://files.pythonhosted.org/packages/ec/ba/5762c0aee2403dfea14ed74b0f8a2415cfdbb21cf745d600d9a8ac952c5b/rpds_py-0.20.0-cp310-none-win_amd64.whl", hash = "sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399", size = 213543 }, + { url = "https://files.pythonhosted.org/packages/ab/2a/191374c52d7be0b056cc2a04d718d2244c152f915d4a8d2db2aacc526189/rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489", size = 318369 }, + { url = "https://files.pythonhosted.org/packages/0e/6a/2c9fdcc6d235ac0d61ec4fd9981184689c3e682abd05e3caa49bccb9c298/rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318", size = 311303 }, + { url = "https://files.pythonhosted.org/packages/d2/b2/725487d29633f64ef8f9cbf4729111a0b61702c8f8e94db1653930f52cce/rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db", size = 366424 }, + { url = "https://files.pythonhosted.org/packages/7a/8c/668195ab9226d01b7cf7cd9e59c1c0be1df05d602df7ec0cf46f857dcf59/rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5", size = 368359 }, + { url = "https://files.pythonhosted.org/packages/52/28/356f6a39c1adeb02cf3e5dd526f5e8e54e17899bef045397abcfbf50dffa/rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5", size = 394886 }, + { url = "https://files.pythonhosted.org/packages/a2/65/640fb1a89080a8fb6f4bebd3dafb65a2edba82e2e44c33e6eb0f3e7956f1/rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6", size = 432416 }, + { url = "https://files.pythonhosted.org/packages/a7/e8/85835077b782555d6b3416874b702ea6ebd7db1f145283c9252968670dd5/rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209", size = 354819 }, + { url = "https://files.pythonhosted.org/packages/4f/87/1ac631e923d65cbf36fbcfc6eaa702a169496de1311e54be142f178e53ee/rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3", size = 373282 }, + { url = "https://files.pythonhosted.org/packages/e4/ce/cb316f7970189e217b998191c7cf0da2ede3d5437932c86a7210dc1e9994/rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272", size = 541540 }, + { url = "https://files.pythonhosted.org/packages/90/d7/4112d7655ec8aff168ecc91d4ceb51c557336edde7e6ccf6463691a2f253/rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad", size = 547640 }, + { url = "https://files.pythonhosted.org/packages/ab/44/4f61d64dfed98cc71623f3a7fcb612df636a208b4b2c6611eaa985e130a9/rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58", size = 525555 }, + { url = "https://files.pythonhosted.org/packages/35/f2/a862d81eacb21f340d584cd1c749c289979f9a60e9229f78bffc0418a199/rpds_py-0.20.0-cp311-none-win32.whl", hash = "sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0", size = 199338 }, + { url = "https://files.pythonhosted.org/packages/cc/ec/77d0674f9af4872919f3738018558dd9d37ad3f7ad792d062eadd4af7cba/rpds_py-0.20.0-cp311-none-win_amd64.whl", hash = "sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c", size = 213585 }, + { url = "https://files.pythonhosted.org/packages/89/b7/f9682c5cc37fcc035f4a0fc33c1fe92ec9cbfdee0cdfd071cf948f53e0df/rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6", size = 321468 }, + { url = "https://files.pythonhosted.org/packages/b8/ad/fc82be4eaceb8d444cb6fc1956ce972b3a0795104279de05e0e4131d0a47/rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b", size = 313062 }, + { url = "https://files.pythonhosted.org/packages/0e/1c/6039e80b13a08569a304dc13476dc986352dca4598e909384db043b4e2bb/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739", size = 370168 }, + { url = "https://files.pythonhosted.org/packages/dc/c9/5b9aa35acfb58946b4b785bc8e700ac313669e02fb100f3efa6176a83e81/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c", size = 371376 }, + { url = "https://files.pythonhosted.org/packages/7b/dd/0e0dbeb70d8a5357d2814764d467ded98d81d90d3570de4fb05ec7224f6b/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee", size = 397200 }, + { url = "https://files.pythonhosted.org/packages/e4/da/a47d931eb688ccfd77a7389e45935c79c41e8098d984d87335004baccb1d/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96", size = 426824 }, + { url = "https://files.pythonhosted.org/packages/0f/f7/a59a673594e6c2ff2dbc44b00fd4ecdec2fc399bb6a7bd82d612699a0121/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4", size = 357967 }, + { url = "https://files.pythonhosted.org/packages/5f/61/3ba1905396b2cb7088f9503a460b87da33452da54d478cb9241f6ad16d00/rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef", size = 378905 }, + { url = "https://files.pythonhosted.org/packages/08/31/6d0df9356b4edb0a3a077f1ef714e25ad21f9f5382fc490c2383691885ea/rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821", size = 546348 }, + { url = "https://files.pythonhosted.org/packages/ae/15/d33c021de5cb793101df9961c3c746dfc476953dbbf5db337d8010dffd4e/rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940", size = 553152 }, + { url = "https://files.pythonhosted.org/packages/70/2d/5536d28c507a4679179ab15aa0049440e4d3dd6752050fa0843ed11e9354/rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174", size = 528807 }, + { url = "https://files.pythonhosted.org/packages/e3/62/7ebe6ec0d3dd6130921f8cffb7e34afb7f71b3819aa0446a24c5e81245ec/rpds_py-0.20.0-cp312-none-win32.whl", hash = "sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139", size = 200993 }, + { url = "https://files.pythonhosted.org/packages/ec/2f/b938864d66b86a6e4acadefdc56de75ef56f7cafdfd568a6464605457bd5/rpds_py-0.20.0-cp312-none-win_amd64.whl", hash = "sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585", size = 214458 }, + { url = "https://files.pythonhosted.org/packages/99/32/43b919a0a423c270a838ac2726b1c7168b946f2563fd99a51aaa9692d00f/rpds_py-0.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29", size = 321465 }, + { url = "https://files.pythonhosted.org/packages/58/a9/c4d899cb28e9e47b0ff12462e8f827381f243176036f17bef9c1604667f2/rpds_py-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91", size = 312900 }, + { url = "https://files.pythonhosted.org/packages/8f/90/9e51670575b5dfaa8c823369ef7d943087bfb73d4f124a99ad6ef19a2b26/rpds_py-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24", size = 370973 }, + { url = "https://files.pythonhosted.org/packages/fc/c1/523f2a03f853fc0d4c1acbef161747e9ab7df0a8abf6236106e333540921/rpds_py-0.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7", size = 370890 }, + { url = "https://files.pythonhosted.org/packages/51/ca/2458a771f16b0931de4d384decbe43016710bc948036c8f4562d6e063437/rpds_py-0.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9", size = 397174 }, + { url = "https://files.pythonhosted.org/packages/00/7d/6e06807f6305ea2408b364efb0eef83a6e21b5e7b5267ad6b473b9a7e416/rpds_py-0.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8", size = 426449 }, + { url = "https://files.pythonhosted.org/packages/8c/d1/6c9e65260a819a1714510a7d69ac1d68aa23ee9ce8a2d9da12187263c8fc/rpds_py-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879", size = 357698 }, + { url = "https://files.pythonhosted.org/packages/5d/fb/ecea8b5286d2f03eec922be7173a03ed17278944f7c124348f535116db15/rpds_py-0.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f", size = 378530 }, + { url = "https://files.pythonhosted.org/packages/e3/e3/ac72f858957f52a109c588589b73bd2fad4a0fc82387fb55fb34aeb0f9cd/rpds_py-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c", size = 545753 }, + { url = "https://files.pythonhosted.org/packages/b2/a4/a27683b519d5fc98e4390a3b130117d80fd475c67aeda8aac83c0e8e326a/rpds_py-0.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2", size = 552443 }, + { url = "https://files.pythonhosted.org/packages/a1/ed/c074d248409b4432b1ccb2056974175fa0af2d1bc1f9c21121f80a358fa3/rpds_py-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57", size = 528380 }, + { url = "https://files.pythonhosted.org/packages/d5/bd/04caf938895d2d78201e89c0c8a94dfd9990c34a19ff52fb01d0912343e3/rpds_py-0.20.0-cp313-none-win32.whl", hash = "sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a", size = 200540 }, + { url = "https://files.pythonhosted.org/packages/95/cc/109eb8b9863680411ae703664abacaa035820c7755acc9686d5dd02cdd2e/rpds_py-0.20.0-cp313-none-win_amd64.whl", hash = "sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2", size = 214111 }, + { url = "https://files.pythonhosted.org/packages/37/cf/0081318cde7d7e89f802b4939ec8d079d7b59b0ee3fc168435bde31e861c/rpds_py-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24", size = 319397 }, + { url = "https://files.pythonhosted.org/packages/09/4e/ea988bb4fe0f39613dd2b868fc698c19fd970e33dfe4f1bd90658f94fed3/rpds_py-0.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29", size = 311674 }, + { url = "https://files.pythonhosted.org/packages/9e/38/d4a1f901068dfcb51183266a91bcef614f616d4d820a4dd288ccaff83cbb/rpds_py-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965", size = 367607 }, + { url = "https://files.pythonhosted.org/packages/7a/e3/dc75f3f118f3dc29be962f68729b2d203be9ad52ad34b1ae907c60271302/rpds_py-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1", size = 367870 }, + { url = "https://files.pythonhosted.org/packages/8d/23/2b6acbc76fddb7f89ef2382f136a7a4cf10e078e6e149508a59d7448e2e1/rpds_py-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752", size = 395245 }, + { url = "https://files.pythonhosted.org/packages/53/21/9d405f690986f0215d655c2980de10f63c073e66c56bd5f4d039214d1624/rpds_py-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c", size = 431699 }, + { url = "https://files.pythonhosted.org/packages/88/9d/07fedb6afebe0fe6f1c2981223ffa82c3ff3cc09ffeab8c9859b4852d7e3/rpds_py-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751", size = 355123 }, + { url = "https://files.pythonhosted.org/packages/16/80/857ed7ca6dbb33805f2c8298868d029f9cf0a06f182d7058c8484b47941b/rpds_py-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8", size = 373349 }, + { url = "https://files.pythonhosted.org/packages/97/69/ae242d3c59f04ca3f56d9dbd768e7cabfc093cfb9e030dfc8fbd7fadbc4d/rpds_py-0.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e", size = 542737 }, + { url = "https://files.pythonhosted.org/packages/9f/c1/06d6c461c41e73c8187471595ce1c9a67c280d533fbd705889e6a0e9da2f/rpds_py-0.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253", size = 547562 }, + { url = "https://files.pythonhosted.org/packages/1c/0b/918acbb2aa360822f18c6bc8672ee3c231d357f55d5e7f980d8207360742/rpds_py-0.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a", size = 525769 }, + { url = "https://files.pythonhosted.org/packages/0e/7f/446eb1f1ed22ca855e3966e1b97e10f68f3a40578d9596a4b83323456cef/rpds_py-0.20.0-cp38-none-win32.whl", hash = "sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5", size = 199321 }, + { url = "https://files.pythonhosted.org/packages/3d/c7/ae73dfcf417fa1bb087341b670083afc3228d6a496d0d2221afd5b20d95f/rpds_py-0.20.0-cp38-none-win_amd64.whl", hash = "sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232", size = 213048 }, + { url = "https://files.pythonhosted.org/packages/a1/55/228f6d9a8c6940c8d5e49db5e0434ffcbad669c33509ac39cb0af061b0fa/rpds_py-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22", size = 319496 }, + { url = "https://files.pythonhosted.org/packages/68/61/074236253586feb550954f8b4359d38eefb45bafcbbb7d2e74062a82f386/rpds_py-0.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789", size = 311837 }, + { url = "https://files.pythonhosted.org/packages/03/67/ed6c2fe076bf78296934d4356145fedf3c7c2f8d490e099bcf6f31794dc0/rpds_py-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5", size = 367819 }, + { url = "https://files.pythonhosted.org/packages/30/25/4a9e7b89b6760ac032f375cb236e4f8e518ad1fad685c40b6a9752056d6f/rpds_py-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2", size = 368322 }, + { url = "https://files.pythonhosted.org/packages/67/17/0255bb0e564517b53343ea672ebec9fb7ad40e9083ca09a4080fbc986bb9/rpds_py-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c", size = 395552 }, + { url = "https://files.pythonhosted.org/packages/af/6e/77c65ccb0d7cdc39ec2be19b918a4d4fe9e2d2a1c5cab36745b36f2c1e59/rpds_py-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de", size = 433735 }, + { url = "https://files.pythonhosted.org/packages/04/d8/e73d56b1908a6c0e3e5982365eb293170cd458cc25a19363f69c76e00fd2/rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda", size = 355542 }, + { url = "https://files.pythonhosted.org/packages/47/df/e72c79053b0c882b818bfd8f0ed1f1ace550bc9cdba27165cb73dddb9394/rpds_py-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580", size = 373644 }, + { url = "https://files.pythonhosted.org/packages/7f/00/3e16cb08c0cc6a233f0f61e4d009e3098cbe280ec975d14f28935bd15316/rpds_py-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b", size = 543139 }, + { url = "https://files.pythonhosted.org/packages/41/71/799c6b6f6031ed535f22fcf6802601cc7f981842bd28007bb7bb4bd10b2f/rpds_py-0.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420", size = 548007 }, + { url = "https://files.pythonhosted.org/packages/53/58/ad03eb6718e814fa045198c72d45d2ae60180eb48338f22c9fa34bd89964/rpds_py-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b", size = 526102 }, + { url = "https://files.pythonhosted.org/packages/78/99/a52e5b460f2311fc8ee75ff769e8d67e76208947180eacb4f153af2d9967/rpds_py-0.20.0-cp39-none-win32.whl", hash = "sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7", size = 199391 }, + { url = "https://files.pythonhosted.org/packages/0c/7d/fd42a27fe392a69faf4a5e635870fc425edcb998485ee73afbc734ecef16/rpds_py-0.20.0-cp39-none-win_amd64.whl", hash = "sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364", size = 213205 }, + { url = "https://files.pythonhosted.org/packages/06/39/bf1f664c347c946ef56cecaa896e3693d91acc741afa78ebb3fdb7aba08b/rpds_py-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045", size = 319444 }, + { url = "https://files.pythonhosted.org/packages/c1/71/876135d3cb90d62468540b84e8e83ff4dc92052ab309bfdea7ea0b9221ad/rpds_py-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc", size = 311699 }, + { url = "https://files.pythonhosted.org/packages/f7/da/8ccaeba6a3dda7467aebaf893de9eafd56275e2c90773c83bf15fb0b8374/rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02", size = 367825 }, + { url = "https://files.pythonhosted.org/packages/04/b6/02a54c47c178d180395b3c9a8bfb3b93906e08f9acf7b4a1067d27c3fae0/rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92", size = 369046 }, + { url = "https://files.pythonhosted.org/packages/a7/64/df4966743aa4def8727dc13d06527c8b13eb7412c1429def2d4701bee520/rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d", size = 395896 }, + { url = "https://files.pythonhosted.org/packages/6f/d9/7ff03ff3642c600f27ff94512bb158a8d815fea5ed4162c75a7e850d6003/rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855", size = 432427 }, + { url = "https://files.pythonhosted.org/packages/b8/c6/e1b886f7277b3454e55e85332e165091c19114eecb5377b88d892fd36ccf/rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511", size = 355403 }, + { url = "https://files.pythonhosted.org/packages/e2/62/e26bd5b944e547c7bfd0b6ca7e306bfa430f8bd298ab72a1217976a7ca8d/rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51", size = 374491 }, + { url = "https://files.pythonhosted.org/packages/c3/92/93c5a530898d3a5d1ce087455071ba714b77806ed9ffee4070d0c7a53b7e/rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075", size = 543622 }, + { url = "https://files.pythonhosted.org/packages/01/9e/d68fba289625b5d3c9d1925825d7da716fbf812bda2133ac409021d5db13/rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60", size = 548558 }, + { url = "https://files.pythonhosted.org/packages/bf/d6/4b2fad4898154365f0f2bd72ffd190349274a4c1d6a6f94f02a83bb2b8f1/rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344", size = 525753 }, + { url = "https://files.pythonhosted.org/packages/d2/ea/6f121d1802f3adae1981aea4209ea66f9d3c7f2f6d6b85ef4f13a61d17ef/rpds_py-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989", size = 213529 }, + { url = "https://files.pythonhosted.org/packages/0a/6f/7ab47005469f0d73dad89d29b733e3555d454a45146c30f5628242e56d33/rpds_py-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e", size = 320800 }, + { url = "https://files.pythonhosted.org/packages/cc/a1/bef9e0ef30f89c7516559ca7acc40e8ae70397535a0b1a4535a4a01d9ed0/rpds_py-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c", size = 312001 }, + { url = "https://files.pythonhosted.org/packages/31/44/9093c5dca95ee463c3669651e710af182eb6f9cd83626b15a2ebde2247b1/rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03", size = 369279 }, + { url = "https://files.pythonhosted.org/packages/6f/ac/0c36e067681fa3fe4c60a9422b011ec0ccc80c1e124f5210951f7982e887/rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921", size = 369716 }, + { url = "https://files.pythonhosted.org/packages/6b/78/8896e08625d46ea5bfdd526ee688b91eeafecbc3cf7223612c82ed77905b/rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab", size = 396708 }, + { url = "https://files.pythonhosted.org/packages/24/5f/d865ae460e47e46fd2b489f2aceed34439bd8f18a1ff414c299142e0e22a/rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5", size = 433356 }, + { url = "https://files.pythonhosted.org/packages/bd/8b/04031937ffa565021f934a9acf44bb6b1b60ea19fa9e58950b32357e85a1/rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f", size = 356157 }, + { url = "https://files.pythonhosted.org/packages/3a/64/1f0471b1e688704a716e07340b85f4145109359951feb08676a1f3b8cec4/rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1", size = 374826 }, + { url = "https://files.pythonhosted.org/packages/73/4e/082c0c5eba463e29dff1c6b49557f6ad0d6faae4b46832fa9c1e5b69b7ba/rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074", size = 544549 }, + { url = "https://files.pythonhosted.org/packages/cd/ee/f4af0a62d1ba912c4a3a7f5ec04350946ddd59017f3f3d1c227b20ddf558/rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08", size = 549245 }, + { url = "https://files.pythonhosted.org/packages/59/42/34601dc773be86a85a9ca47f68301a69fdb019aaae0c1426813f265f5ac0/rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec", size = 526722 }, + { url = "https://files.pythonhosted.org/packages/ff/4f/280745d5180c9d78df6b53b6e8b65336f8b6adeb958a8fd19c749fded637/rpds_py-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8", size = 214379 }, +] + +[[package]] +name = "ruff" +version = "0.6.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/74/f9/4ce3e765a72ab8fe0f80f48508ea38b4196daab3da14d803c21349b2d367/ruff-0.6.8.tar.gz", hash = "sha256:a5bf44b1aa0adaf6d9d20f86162b34f7c593bfedabc51239953e446aefc8ce18", size = 3084543 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/07/42ee57e8b76ca585297a663a552b4f6d6a99372ca47fdc2276ef72cc0f2f/ruff-0.6.8-py3-none-linux_armv6l.whl", hash = "sha256:77944bca110ff0a43b768f05a529fecd0706aac7bcce36d7f1eeb4cbfca5f0f2", size = 10404327 }, + { url = "https://files.pythonhosted.org/packages/eb/51/d42571ff8156d65086acb72d39aa64cb24181db53b497d0ed6293f43f07a/ruff-0.6.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:27b87e1801e786cd6ede4ada3faa5e254ce774de835e6723fd94551464c56b8c", size = 10018797 }, + { url = "https://files.pythonhosted.org/packages/c1/d7/fa5514a60b03976af972b67fe345deb0335dc96b9f9a9fa4df9890472427/ruff-0.6.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:cd48f945da2a6334f1793d7f701725a76ba93bf3d73c36f6b21fb04d5338dcf5", size = 9691303 }, + { url = "https://files.pythonhosted.org/packages/d6/c4/d812a74976927e51d0782a47539069657ac78535779bfa4d061c4fc8d89d/ruff-0.6.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:677e03c00f37c66cea033274295a983c7c546edea5043d0c798833adf4cf4c6f", size = 10719452 }, + { url = "https://files.pythonhosted.org/packages/ec/b6/aa700c4ae6db9b3ee660e23f3c7db596e2b16a3034b797704fba33ddbc96/ruff-0.6.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f1476236b3eacfacfc0f66aa9e6cd39f2a624cb73ea99189556015f27c0bdeb", size = 10161353 }, + { url = "https://files.pythonhosted.org/packages/ea/39/0b10075ffcd52ff3a581b9b69eac53579deb230aad300ce8f9d0b58e77bc/ruff-0.6.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f5a2f17c7d32991169195d52a04c95b256378bbf0de8cb98478351eb70d526f", size = 10980630 }, + { url = "https://files.pythonhosted.org/packages/c1/af/9eb9efc98334f62652e2f9318f137b2667187851911fac3b395365a83708/ruff-0.6.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5fd0d4b7b1457c49e435ee1e437900ced9b35cb8dc5178921dfb7d98d65a08d0", size = 11768996 }, + { url = "https://files.pythonhosted.org/packages/e0/59/8b1369cf7878358952b1c0a1559b4d6b5c824c003d09b0db26d26c9d094f/ruff-0.6.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8034b19b993e9601f2ddf2c517451e17a6ab5cdb1c13fdff50c1442a7171d87", size = 11317469 }, + { url = "https://files.pythonhosted.org/packages/b9/6d/e252e9b11bbca4114c386ee41ad559d0dac13246201d77ea1223c6fea17f/ruff-0.6.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6cfb227b932ba8ef6e56c9f875d987973cd5e35bc5d05f5abf045af78ad8e098", size = 12467185 }, + { url = "https://files.pythonhosted.org/packages/48/44/7caa223af7d4ea0f0b2bd34acca65a7694a58317714675a2478815ab3f45/ruff-0.6.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef0411eccfc3909269fed47c61ffebdcb84a04504bafa6b6df9b85c27e813b0", size = 10887766 }, + { url = "https://files.pythonhosted.org/packages/81/ed/394aff3a785f171869158b9d5be61eec9ffb823c3ad5d2bdf2e5f13cb029/ruff-0.6.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:007dee844738c3d2e6c24ab5bc7d43c99ba3e1943bd2d95d598582e9c1b27750", size = 10711609 }, + { url = "https://files.pythonhosted.org/packages/47/31/f31d04c842e54699eab7e3b864538fea26e6c94b71806cd10aa49f13e1c1/ruff-0.6.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:ce60058d3cdd8490e5e5471ef086b3f1e90ab872b548814e35930e21d848c9ce", size = 10237621 }, + { url = "https://files.pythonhosted.org/packages/20/95/a764e84acf11d425f2f23b8b78b4fd715e9c20be4aac157c6414ca859a67/ruff-0.6.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:1085c455d1b3fdb8021ad534379c60353b81ba079712bce7a900e834859182fa", size = 10558329 }, + { url = "https://files.pythonhosted.org/packages/2a/76/d4e38846ac9f6dd62dce858a54583911361b5339dcf8f84419241efac93a/ruff-0.6.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:70edf6a93b19481affd287d696d9e311388d808671bc209fb8907b46a8c3af44", size = 10954102 }, + { url = "https://files.pythonhosted.org/packages/e7/36/f18c678da6c69f8d022480f3e8ddce6e4a52e07602c1d212056fbd234f8f/ruff-0.6.8-py3-none-win32.whl", hash = "sha256:792213f7be25316f9b46b854df80a77e0da87ec66691e8f012f887b4a671ab5a", size = 8511090 }, + { url = "https://files.pythonhosted.org/packages/4c/c4/0ca7d8ffa358b109db7d7d045a1a076fd8e5d9cbeae022242d3c060931da/ruff-0.6.8-py3-none-win_amd64.whl", hash = "sha256:ec0517dc0f37cad14a5319ba7bba6e7e339d03fbf967a6d69b0907d61be7a263", size = 9350079 }, + { url = "https://files.pythonhosted.org/packages/d9/bd/a8b0c64945a92eaeeb8d0283f27a726a776a1c9d12734d990c5fc7a1278c/ruff-0.6.8-py3-none-win_arm64.whl", hash = "sha256:8d3bb2e3fbb9875172119021a13eed38849e762499e3cfde9588e4b4d70968dc", size = 8669595 }, +] + +[[package]] +name = "six" +version = "1.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", size = 34041 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053 }, +] + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/44/7b/af302bebf22c749c56c9c3e8ae13190b5b5db37a33d9068652e8f73b7089/snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1", size = 86699 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a", size = 93002 }, +] + +[[package]] +name = "sphinx" +version = "5.3.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.9'", +] +dependencies = [ + { name = "alabaster", marker = "python_full_version < '3.9'" }, + { name = "babel", marker = "python_full_version < '3.9'" }, + { name = "colorama", marker = "python_full_version < '3.9' and sys_platform == 'win32'" }, + { name = "docutils", marker = "python_full_version < '3.9'" }, + { name = "imagesize", marker = "python_full_version < '3.9'" }, + { name = "importlib-metadata", marker = "python_full_version < '3.9'" }, + { name = "jinja2", marker = "python_full_version < '3.9'" }, + { name = "packaging", marker = "python_full_version < '3.9'" }, + { name = "pygments", marker = "python_full_version < '3.9'" }, + { name = "requests", marker = "python_full_version < '3.9'" }, + { name = "snowballstemmer", marker = "python_full_version < '3.9'" }, + { name = "sphinxcontrib-applehelp", marker = "python_full_version < '3.9'" }, + { name = "sphinxcontrib-devhelp", marker = "python_full_version < '3.9'" }, + { name = "sphinxcontrib-htmlhelp", marker = "python_full_version < '3.9'" }, + { name = "sphinxcontrib-jsmath", marker = "python_full_version < '3.9'" }, + { name = "sphinxcontrib-qthelp", marker = "python_full_version < '3.9'" }, + { name = "sphinxcontrib-serializinghtml", marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/af/b2/02a43597980903483fe5eb081ee8e0ba2bb62ea43a70499484343795f3bf/Sphinx-5.3.0.tar.gz", hash = "sha256:51026de0a9ff9fc13c05d74913ad66047e104f56a129ff73e174eb5c3ee794b5", size = 6811365 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/a7/01dd6fd9653c056258d65032aa09a615b5d7b07dd840845a9f41a8860fbc/sphinx-5.3.0-py3-none-any.whl", hash = "sha256:060ca5c9f7ba57a08a1219e547b269fadf125ae25b06b9fa7f66768efb652d6d", size = 3183160 }, +] + +[[package]] +name = "sphinx" +version = "7.1.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.9' and python_full_version < '3.12'", + "python_full_version >= '3.12'", +] +dependencies = [ + { name = "alabaster", marker = "python_full_version >= '3.9'" }, + { name = "babel", marker = "python_full_version >= '3.9'" }, + { name = "colorama", marker = "python_full_version >= '3.9' and sys_platform == 'win32'" }, + { name = "docutils", marker = "python_full_version >= '3.9'" }, + { name = "imagesize", marker = "python_full_version >= '3.9'" }, + { name = "importlib-metadata", marker = "python_full_version == '3.9.*'" }, + { name = "jinja2", marker = "python_full_version >= '3.9'" }, + { name = "packaging", marker = "python_full_version >= '3.9'" }, + { name = "pygments", marker = "python_full_version >= '3.9'" }, + { name = "requests", marker = "python_full_version >= '3.9'" }, + { name = "snowballstemmer", marker = "python_full_version >= '3.9'" }, + { name = "sphinxcontrib-applehelp", marker = "python_full_version >= '3.9'" }, + { name = "sphinxcontrib-devhelp", marker = "python_full_version >= '3.9'" }, + { name = "sphinxcontrib-htmlhelp", marker = "python_full_version >= '3.9'" }, + { name = "sphinxcontrib-jsmath", marker = "python_full_version >= '3.9'" }, + { name = "sphinxcontrib-qthelp", marker = "python_full_version >= '3.9'" }, + { name = "sphinxcontrib-serializinghtml", marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/01/688bdf9282241dca09fe6e3a1110eda399fa9b10d0672db609e37c2e7a39/sphinx-7.1.2.tar.gz", hash = "sha256:780f4d32f1d7d1126576e0e5ecc19dc32ab76cd24e950228dcf7b1f6d3d9e22f", size = 6828258 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/17/325cf6a257d84751a48ae90752b3d8fe0be8f9535b6253add61c49d0d9bc/sphinx-7.1.2-py3-none-any.whl", hash = "sha256:d170a81825b2fcacb6dfd5a0d7f578a053e45d3f2b153fecc948c37344eb4cbe", size = 3169543 }, +] + +[[package]] +name = "sphinx-autoapi" +version = "2.1.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.9'", +] +dependencies = [ + { name = "anyascii", marker = "python_full_version < '3.9'" }, + { name = "astroid", marker = "python_full_version < '3.9'" }, + { name = "jinja2", marker = "python_full_version < '3.9'" }, + { name = "pyyaml", marker = "python_full_version < '3.9'" }, + { name = "sphinx", version = "5.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/6a/e9448b7bd3f892e05e538779f0c39e764457807bf08b252c19542f6d0833/sphinx-autoapi-2.1.1.tar.gz", hash = "sha256:fbadb96e79020d6b0ec45d888517bf816d6b587a2d340fbe1ec31135e300a6c8", size = 42160540 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/33/90ed4963df94d3780fe0fd61ce834ae17dcdc507060a3fb1610a68309f2f/sphinx_autoapi-2.1.1-py2.py3-none-any.whl", hash = "sha256:d8da890477bd18e3327cafdead9d5a44a7d798476c6fa32492100e288250a5a3", size = 54197 }, +] + +[[package]] +name = "sphinx-autoapi" +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.9' and python_full_version < '3.12'", + "python_full_version >= '3.12'", +] +dependencies = [ + { name = "astroid", marker = "python_full_version >= '3.9'" }, + { name = "jinja2", marker = "python_full_version >= '3.9'" }, + { name = "pyyaml", marker = "python_full_version >= '3.9'" }, + { name = "sphinx", version = "7.1.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "stdlib-list", marker = "python_full_version == '3.9.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e1/00/aeca40dec5288678df6dbe69c9fcc3fd5d53d1f94a462f4e6bb821d389a8/sphinx_autoapi-3.3.2.tar.gz", hash = "sha256:ebf8b44b2ebab5c28f0263ec6c2f8acdd156e9b2d539a58eca39d2f368445173", size = 66053 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/f4/73094ddb805607c5661e1b80f528e5235710e52b37a890423ad2ba5a7cee/sphinx_autoapi-3.3.2-py2.py3-none-any.whl", hash = "sha256:08afa656f7fcd45fe7dd64bf9f44698ddb8ca7c2d5cd0614c7455912ed580324", size = 34778 }, +] + +[[package]] +name = "sphinx-rtd-theme" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { name = "sphinx", version = "5.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "sphinx", version = "7.1.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "sphinxcontrib-jquery" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fe/33/2a35a9cdbfda9086bda11457bcc872173ab3565b16b6d7f6b3efaa6dc3d6/sphinx_rtd_theme-2.0.0.tar.gz", hash = "sha256:bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b", size = 2785005 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/46/00fda84467815c29951a9c91e3ae7503c409ddad04373e7cfc78daad4300/sphinx_rtd_theme-2.0.0-py2.py3-none-any.whl", hash = "sha256:ec93d0856dc280cf3aee9a4c9807c60e027c7f7b461b77aeffed682e68f0e586", size = 2824721 }, +] + +[[package]] +name = "sphinxcontrib-applehelp" +version = "1.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/32/df/45e827f4d7e7fcc84e853bcef1d836effd762d63ccb86f43ede4e98b478c/sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e", size = 24766 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/c1/5e2cafbd03105ce50d8500f9b4e8a6e8d02e22d0475b574c3b3e9451a15f/sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228", size = 120601 }, +] + +[[package]] +name = "sphinxcontrib-devhelp" +version = "1.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/33/dc28393f16385f722c893cb55539c641c9aaec8d1bc1c15b69ce0ac2dbb3/sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4", size = 17398 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/09/5de5ed43a521387f18bdf5f5af31d099605c992fd25372b2b9b825ce48ee/sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e", size = 84690 }, +] + +[[package]] +name = "sphinxcontrib-htmlhelp" +version = "2.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/47/64cff68ea3aa450c373301e5bebfbb9fce0a3e70aca245fcadd4af06cd75/sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff", size = 27967 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/ee/a1f5e39046cbb5f8bc8fba87d1ddf1c6643fbc9194e58d26e606de4b9074/sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903", size = 99833 }, +] + +[[package]] +name = "sphinxcontrib-jquery" +version = "4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx", version = "5.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "sphinx", version = "7.1.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/de/f3/aa67467e051df70a6330fe7770894b3e4f09436dea6881ae0b4f3d87cad8/sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a", size = 122331 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/85/749bd22d1a68db7291c89e2ebca53f4306c3f205853cf31e9de279034c3c/sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae", size = 121104 }, +] + +[[package]] +name = "sphinxcontrib-jsmath" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/e8/9ed3830aeed71f17c026a07a5097edcf44b692850ef215b161b8ad875729/sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8", size = 5787 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178", size = 5071 }, +] + +[[package]] +name = "sphinxcontrib-qthelp" +version = "1.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/8e/c4846e59f38a5f2b4a0e3b27af38f2fcf904d4bfd82095bf92de0b114ebd/sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72", size = 21658 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/14/05f9206cf4e9cfca1afb5fd224c7cd434dcc3a433d6d9e4e0264d29c6cdb/sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6", size = 90609 }, +] + +[[package]] +name = "sphinxcontrib-serializinghtml" +version = "1.1.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/72/835d6fadb9e5d02304cf39b18f93d227cd93abd3c41ebf58e6853eeb1455/sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952", size = 21019 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/77/5464ec50dd0f1c1037e3c93249b040c8fc8078fdda97530eeb02424b6eea/sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd", size = 94021 }, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.35" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet", marker = "(python_full_version < '3.13' and platform_machine == 'AMD64') or (python_full_version < '3.13' and platform_machine == 'WIN32') or (python_full_version < '3.13' and platform_machine == 'aarch64') or (python_full_version < '3.13' and platform_machine == 'amd64') or (python_full_version < '3.13' and platform_machine == 'ppc64le') or (python_full_version < '3.13' and platform_machine == 'win32') or (python_full_version < '3.13' and platform_machine == 'x86_64')" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/36/48/4f190a83525f5cefefa44f6adc9e6386c4de5218d686c27eda92eb1f5424/sqlalchemy-2.0.35.tar.gz", hash = "sha256:e11d7ea4d24f0a262bccf9a7cd6284c976c5369dac21db237cff59586045ab9f", size = 9562798 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/61/19395d0ae78c94f6f80c8adf39a142f3fe56cfb2235d8f2317d6dae1bf0e/SQLAlchemy-2.0.35-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:67219632be22f14750f0d1c70e62f204ba69d28f62fd6432ba05ab295853de9b", size = 2090086 }, + { url = "https://files.pythonhosted.org/packages/e6/82/06b5fcbe5d49043e40cf4e01e3b33c471c8d9292d478420b08538cae8928/SQLAlchemy-2.0.35-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4668bd8faf7e5b71c0319407b608f278f279668f358857dbfd10ef1954ac9f90", size = 2081278 }, + { url = "https://files.pythonhosted.org/packages/68/d1/7fb7ee46949a5fb34005795b1fc06a8fef67587a66da731c14e545f7eb5b/SQLAlchemy-2.0.35-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb8bea573863762bbf45d1e13f87c2d2fd32cee2dbd50d050f83f87429c9e1ea", size = 3063763 }, + { url = "https://files.pythonhosted.org/packages/7e/ff/a1eacd78b31e52a5073e9924fb4722ecc2a72f093ca8181ed81fc61aed2e/SQLAlchemy-2.0.35-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f552023710d4b93d8fb29a91fadf97de89c5926c6bd758897875435f2a939f33", size = 3072032 }, + { url = "https://files.pythonhosted.org/packages/21/ae/ddfecf149a6d16af87408bca7bd108eef7ef23d376cc8464317efb3cea3f/SQLAlchemy-2.0.35-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:016b2e665f778f13d3c438651dd4de244214b527a275e0acf1d44c05bc6026a9", size = 3028092 }, + { url = "https://files.pythonhosted.org/packages/cc/51/3e84d42121662a160bacd311cfacb29c1e6a229d59dd8edb09caa8ab283b/SQLAlchemy-2.0.35-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7befc148de64b6060937231cbff8d01ccf0bfd75aa26383ffdf8d82b12ec04ff", size = 3053543 }, + { url = "https://files.pythonhosted.org/packages/3e/7a/039c78105958da3fc361887f0a82c974cb6fa5bba965c1689ec778be1c01/SQLAlchemy-2.0.35-cp310-cp310-win32.whl", hash = "sha256:22b83aed390e3099584b839b93f80a0f4a95ee7f48270c97c90acd40ee646f0b", size = 2062372 }, + { url = "https://files.pythonhosted.org/packages/a2/50/f31e927d32f9729f69d150ffe47e7cf51e3e0bb2148fc400b3e93a92ca4c/SQLAlchemy-2.0.35-cp310-cp310-win_amd64.whl", hash = "sha256:a29762cd3d116585278ffb2e5b8cc311fb095ea278b96feef28d0b423154858e", size = 2086485 }, + { url = "https://files.pythonhosted.org/packages/c3/46/9215a35bf98c3a2528e987791e6180eb51624d2c7d5cb8e2d96a6450b657/SQLAlchemy-2.0.35-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e21f66748ab725ade40fa7af8ec8b5019c68ab00b929f6643e1b1af461eddb60", size = 2091274 }, + { url = "https://files.pythonhosted.org/packages/1e/69/919673c5101a0c633658d58b11b454b251ca82300941fba801201434755d/SQLAlchemy-2.0.35-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8a6219108a15fc6d24de499d0d515c7235c617b2540d97116b663dade1a54d62", size = 2081672 }, + { url = "https://files.pythonhosted.org/packages/67/ea/a6b0597cbda12796be2302153369dbbe90573fdab3bc4885f8efac499247/SQLAlchemy-2.0.35-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:042622a5306c23b972192283f4e22372da3b8ddf5f7aac1cc5d9c9b222ab3ff6", size = 3200083 }, + { url = "https://files.pythonhosted.org/packages/8c/d6/97bdc8d714fb21762f2092511f380f18cdb2d985d516071fa925bb433a90/SQLAlchemy-2.0.35-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:627dee0c280eea91aed87b20a1f849e9ae2fe719d52cbf847c0e0ea34464b3f7", size = 3200080 }, + { url = "https://files.pythonhosted.org/packages/87/d2/8c2adaf2ade4f6f1b725acd0b0be9210bb6a2df41024729a8eec6a86fe5a/SQLAlchemy-2.0.35-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4fdcd72a789c1c31ed242fd8c1bcd9ea186a98ee8e5408a50e610edfef980d71", size = 3137108 }, + { url = "https://files.pythonhosted.org/packages/7e/ae/ea05d0bfa8f2b25ae34591895147152854fc950f491c4ce362ae06035db8/SQLAlchemy-2.0.35-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:89b64cd8898a3a6f642db4eb7b26d1b28a497d4022eccd7717ca066823e9fb01", size = 3157437 }, + { url = "https://files.pythonhosted.org/packages/fe/5d/8ad6df01398388a766163d27960b3365f1bbd8bb7b05b5cad321a8b69b25/SQLAlchemy-2.0.35-cp311-cp311-win32.whl", hash = "sha256:6a93c5a0dfe8d34951e8a6f499a9479ffb9258123551fa007fc708ae2ac2bc5e", size = 2061935 }, + { url = "https://files.pythonhosted.org/packages/ff/68/8557efc0c32c8e2c147cb6512237448b8ed594a57cd015fda67f8e56bb3f/SQLAlchemy-2.0.35-cp311-cp311-win_amd64.whl", hash = "sha256:c68fe3fcde03920c46697585620135b4ecfdfc1ed23e75cc2c2ae9f8502c10b8", size = 2087281 }, + { url = "https://files.pythonhosted.org/packages/2f/2b/fff87e6db0da31212c98bbc445f83fb608ea92b96bda3f3f10e373bac76c/SQLAlchemy-2.0.35-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:eb60b026d8ad0c97917cb81d3662d0b39b8ff1335e3fabb24984c6acd0c900a2", size = 2089790 }, + { url = "https://files.pythonhosted.org/packages/68/92/4bb761bd82764d5827bf6b6095168c40fb5dbbd23670203aef2f96ba6bc6/SQLAlchemy-2.0.35-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6921ee01caf375363be5e9ae70d08ce7ca9d7e0e8983183080211a062d299468", size = 2080266 }, + { url = "https://files.pythonhosted.org/packages/22/46/068a65db6dc253c6f25a7598d99e0a1d60b14f661f9d09ef6c73c718fa4e/SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cdf1a0dbe5ced887a9b127da4ffd7354e9c1a3b9bb330dce84df6b70ccb3a8d", size = 3229760 }, + { url = "https://files.pythonhosted.org/packages/6e/36/59830dafe40dda592304debd4cd86e583f63472f3a62c9e2695a5795e786/SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93a71c8601e823236ac0e5d087e4f397874a421017b3318fd92c0b14acf2b6db", size = 3240649 }, + { url = "https://files.pythonhosted.org/packages/00/50/844c50c6996f9c7f000c959dd1a7436a6c94e449ee113046a1d19e470089/SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e04b622bb8a88f10e439084486f2f6349bf4d50605ac3e445869c7ea5cf0fa8c", size = 3176138 }, + { url = "https://files.pythonhosted.org/packages/df/d2/336b18cac68eecb67de474fc15c85f13be4e615c6f5bae87ea38c6734ce0/SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1b56961e2d31389aaadf4906d453859f35302b4eb818d34a26fab72596076bb8", size = 3202753 }, + { url = "https://files.pythonhosted.org/packages/f0/f3/ee1e62fabdc10910b5ef720ae08e59bc785f26652876af3a50b89b97b412/SQLAlchemy-2.0.35-cp312-cp312-win32.whl", hash = "sha256:0f9f3f9a3763b9c4deb8c5d09c4cc52ffe49f9876af41cc1b2ad0138878453cf", size = 2060113 }, + { url = "https://files.pythonhosted.org/packages/60/63/a3cef44a52979169d884f3583d0640e64b3c28122c096474a1d7cfcaf1f3/SQLAlchemy-2.0.35-cp312-cp312-win_amd64.whl", hash = "sha256:25b0f63e7fcc2a6290cb5f7f5b4fc4047843504983a28856ce9b35d8f7de03cc", size = 2085839 }, + { url = "https://files.pythonhosted.org/packages/da/bb/38c09ba518abc7da92d6bf638143cfe6298c12e5df0f1b37538e4ea46feb/SQLAlchemy-2.0.35-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4c31943b61ed8fdd63dfd12ccc919f2bf95eefca133767db6fbbd15da62078ec", size = 2095015 }, + { url = "https://files.pythonhosted.org/packages/c2/73/7d133479bc602dfb993bafe109727cf8684b3119e9bdee8c8510ebface91/SQLAlchemy-2.0.35-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a62dd5d7cc8626a3634208df458c5fe4f21200d96a74d122c83bc2015b333bc1", size = 2085697 }, + { url = "https://files.pythonhosted.org/packages/d9/54/bef04ac2ad5becdcc9f9de6f80d7bf0f679a5d288b1de95507b9823644d6/SQLAlchemy-2.0.35-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0630774b0977804fba4b6bbea6852ab56c14965a2b0c7fc7282c5f7d90a1ae72", size = 3088293 }, + { url = "https://files.pythonhosted.org/packages/19/7f/95df57d4763477c23ef2c72ca2fdb0ac3dbf4cc473052b3728cd586185ea/SQLAlchemy-2.0.35-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d625eddf7efeba2abfd9c014a22c0f6b3796e0ffb48f5d5ab106568ef01ff5a", size = 3095166 }, + { url = "https://files.pythonhosted.org/packages/97/38/ec497616369b9d1dabd90f80a9a7da2f5e07b8a1ea934a283cbd19a9f3eb/SQLAlchemy-2.0.35-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ada603db10bb865bbe591939de854faf2c60f43c9b763e90f653224138f910d9", size = 3042288 }, + { url = "https://files.pythonhosted.org/packages/30/99/9d8513d54b9455ebd10d6e1089e0742578e64c144f5dbbf1f8b74bb0f851/SQLAlchemy-2.0.35-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c41411e192f8d3ea39ea70e0fae48762cd11a2244e03751a98bd3c0ca9a4e936", size = 3065416 }, + { url = "https://files.pythonhosted.org/packages/b3/bb/1e31ed9b69080d5d962497189628c3f695e3186949640635db5aa3190ab2/SQLAlchemy-2.0.35-cp38-cp38-win32.whl", hash = "sha256:d299797d75cd747e7797b1b41817111406b8b10a4f88b6e8fe5b5e59598b43b0", size = 2064976 }, + { url = "https://files.pythonhosted.org/packages/a2/0c/9e6f99e0e7ae3e01a159b91f8adef6a32d893a8b21196d9d2d1591280ae5/SQLAlchemy-2.0.35-cp38-cp38-win_amd64.whl", hash = "sha256:0375a141e1c0878103eb3d719eb6d5aa444b490c96f3fedab8471c7f6ffe70ee", size = 2089743 }, + { url = "https://files.pythonhosted.org/packages/d1/4c/3a538c077057a449441b3e10a62ff1608eaa6e0910e681b2664ce0bcf961/SQLAlchemy-2.0.35-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ccae5de2a0140d8be6838c331604f91d6fafd0735dbdcee1ac78fc8fbaba76b4", size = 2092966 }, + { url = "https://files.pythonhosted.org/packages/4e/f0/ac290c05f9118cff70e48abd598bcb0dfb725a7ad0aeebaaa0d781d75367/SQLAlchemy-2.0.35-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2a275a806f73e849e1c309ac11108ea1a14cd7058577aba962cd7190e27c9e3c", size = 2084203 }, + { url = "https://files.pythonhosted.org/packages/8f/a7/6ddbcefb0ada3dbc9bc9260de32f9cd85b1eb5ea35c12344472a028a606e/SQLAlchemy-2.0.35-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:732e026240cdd1c1b2e3ac515c7a23820430ed94292ce33806a95869c46bd139", size = 3078233 }, + { url = "https://files.pythonhosted.org/packages/08/7b/6fae14cf33ebc54423f0e9c7de793dd2debe3ffd44b399a4905adb4b1225/SQLAlchemy-2.0.35-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:890da8cd1941fa3dab28c5bac3b9da8502e7e366f895b3b8e500896f12f94d11", size = 3086017 }, + { url = "https://files.pythonhosted.org/packages/d7/0c/fa68271e608bf4a86c131044966a9f63bc7c6f44e93535be70c7562ff19e/SQLAlchemy-2.0.35-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0d8326269dbf944b9201911b0d9f3dc524d64779a07518199a58384c3d37a44", size = 3045236 }, + { url = "https://files.pythonhosted.org/packages/f1/29/65d6441a2875c9e960703fb730c651f0a62505a16e968e6f99f5dd5bb925/SQLAlchemy-2.0.35-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b76d63495b0508ab9fc23f8152bac63205d2a704cd009a2b0722f4c8e0cba8e0", size = 3071708 }, + { url = "https://files.pythonhosted.org/packages/13/cb/c354d16eb4b9af27a8ef16ef476118497f61f99bf21cf177ec85d9a23d3f/SQLAlchemy-2.0.35-cp39-cp39-win32.whl", hash = "sha256:69683e02e8a9de37f17985905a5eca18ad651bf592314b4d3d799029797d0eb3", size = 2064708 }, + { url = "https://files.pythonhosted.org/packages/56/0a/3025867277836c325a0f69d3e43cfd35e72f877f472d4c4791d32c264d13/SQLAlchemy-2.0.35-cp39-cp39-win_amd64.whl", hash = "sha256:aee110e4ef3c528f3abbc3c2018c121e708938adeeff9006428dd7c8555e9b3f", size = 2088933 }, + { url = "https://files.pythonhosted.org/packages/0e/c6/33c706449cdd92b1b6d756b247761e27d32230fd6b2de5f44c4c3e5632b2/SQLAlchemy-2.0.35-py3-none-any.whl", hash = "sha256:2ab3f0336c0387662ce6221ad30ab3a5e6499aab01b9790879b6578fd9b8faa1", size = 1881276 }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 }, +] + +[[package]] +name = "stdlib-list" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/39/bb/1cdbc326a5ab0026602e0489cbf02357e78140253c4b57cd866d380eb355/stdlib_list-0.10.0.tar.gz", hash = "sha256:6519c50d645513ed287657bfe856d527f277331540691ddeaf77b25459964a14", size = 59447 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/d9/9085375f0d23a4896b307bf14dcc61b49ec8cc67cb33e06cf95bf3af3966/stdlib_list-0.10.0-py3-none-any.whl", hash = "sha256:b3a911bc441d03e0332dd1a9e7d0870ba3bb0a542a74d7524f54fb431256e214", size = 79814 }, +] + +[[package]] +name = "tabulate" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252 }, +] + +[[package]] +name = "tomli" +version = "2.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c0/3f/d7af728f075fb08564c5949a9c95e44352e23dee646869fa104a3b2060a3/tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f", size = 15164 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", size = 12757 }, +] + +[[package]] +name = "tornado" +version = "6.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/66/398ac7167f1c7835406888a386f6d0d26ee5dbf197d8a571300be57662d3/tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9", size = 500623 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/d9/c33be3c1a7564f7d42d87a8d186371a75fd142097076767a5c27da941fef/tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8", size = 435924 }, + { url = "https://files.pythonhosted.org/packages/2e/0f/721e113a2fac2f1d7d124b3279a1da4c77622e104084f56119875019ffab/tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14", size = 433883 }, + { url = "https://files.pythonhosted.org/packages/13/cf/786b8f1e6fe1c7c675e79657448178ad65e41c1c9765ef82e7f6f765c4c5/tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4", size = 437224 }, + { url = "https://files.pythonhosted.org/packages/e4/8e/a6ce4b8d5935558828b0f30f3afcb2d980566718837b3365d98e34f6067e/tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842", size = 436597 }, + { url = "https://files.pythonhosted.org/packages/22/d4/54f9d12668b58336bd30defe0307e6c61589a3e687b05c366f804b7faaf0/tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3", size = 436797 }, + { url = "https://files.pythonhosted.org/packages/cf/3f/2c792e7afa7dd8b24fad7a2ed3c2f24a5ec5110c7b43a64cb6095cc106b8/tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f", size = 437516 }, + { url = "https://files.pythonhosted.org/packages/71/63/c8fc62745e669ac9009044b889fc531b6f88ac0f5f183cac79eaa950bb23/tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4", size = 436958 }, + { url = "https://files.pythonhosted.org/packages/94/d4/f8ac1f5bd22c15fad3b527e025ce219bd526acdbd903f52053df2baecc8b/tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698", size = 436882 }, + { url = "https://files.pythonhosted.org/packages/4b/3e/a8124c21cc0bbf144d7903d2a0cadab15cadaf683fa39a0f92bc567f0d4d/tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d", size = 438092 }, + { url = "https://files.pythonhosted.org/packages/d9/2f/3f2f05e84a7aff787a96d5fb06821323feb370fe0baed4db6ea7b1088f32/tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7", size = 438532 }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, +] + +[[package]] +name = "types-pillow" +version = "10.2.0.20240822" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/4a/4495264dddaa600d65d68bcedb64dcccf9d9da61adff51f7d2ffd8e4c9ce/types-Pillow-10.2.0.20240822.tar.gz", hash = "sha256:559fb52a2ef991c326e4a0d20accb3bb63a7ba8d40eb493e0ecb0310ba52f0d3", size = 35389 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/66/23/e81a5354859831fcf54d488d33b80ba6133ea84f874a9c0ec40a4881e133/types_Pillow-10.2.0.20240822-py3-none-any.whl", hash = "sha256:d9dab025aba07aeb12fd50a6799d4eac52a9603488eca09d7662543983f16c5d", size = 54354 }, +] + +[[package]] +name = "types-protobuf" +version = "5.28.0.20240924" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/c3/217fe2c6a4b8ed75c5ecbd27ae8dedd7bc8e8728ac4b29d16005d3a3aba2/types-protobuf-5.28.0.20240924.tar.gz", hash = "sha256:d181af8a256e5a91ce8d5adb53496e880efd9144c7d54483e3653332b60296f0", size = 54324 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/2b/98bfe67a73b15964513b471ce10b610ab0df28825900e0e7517b2bf23952/types_protobuf-5.28.0.20240924-py3-none-any.whl", hash = "sha256:5cecf612ccdefb7dc95f7a51fb502902f20fc2e6681cd500184aaa1b3931d6a7", size = 68761 }, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, +] + +[[package]] +name = "urllib3" +version = "2.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", size = 300677 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", size = 126338 }, +] + +[[package]] +name = "viam-sdk" +version = "0.30.0" +source = { editable = "." } +dependencies = [ + { name = "googleapis-common-protos" }, + { name = "grpclib" }, + { name = "protobuf" }, + { name = "typing-extensions" }, +] + +[package.optional-dependencies] +mlmodel = [ + { name = "numpy", version = "1.24.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, +] + +[package.dev-dependencies] +dev = [ + { name = "coverage" }, + { name = "mypy-protobuf" }, + { name = "myst-nb", version = "0.17.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "myst-nb", version = "1.1.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "nbmake" }, + { name = "numpy", version = "1.24.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "pillow" }, + { name = "pyright" }, + { name = "pytest" }, + { name = "pytest-asyncio" }, + { name = "pytest-mock" }, + { name = "ruff" }, + { name = "sphinx-autoapi", version = "2.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "sphinx-autoapi", version = "3.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "sphinx-rtd-theme" }, + { name = "types-pillow" }, +] + +[package.metadata] +requires-dist = [ + { name = "googleapis-common-protos", specifier = ">=1.65.0" }, + { name = "grpclib", specifier = ">=0.4.7" }, + { name = "numpy", marker = "extra == 'mlmodel'" }, + { name = "protobuf", specifier = "==5.28.2" }, + { name = "typing-extensions", specifier = ">=4.12.2" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "coverage", specifier = ">=7.6.1" }, + { name = "mypy-protobuf", specifier = ">=3.6.0" }, + { name = "myst-nb", marker = "python_full_version < '3.9'", specifier = "<1.0.0" }, + { name = "myst-nb", marker = "python_full_version >= '3.9'", specifier = ">=1.0.0" }, + { name = "nbmake", specifier = ">=1.5.4" }, + { name = "numpy", marker = "python_full_version < '3.9'", specifier = "<1.25.0" }, + { name = "numpy", marker = "python_full_version >= '3.9'", specifier = ">=1.26.2,<2" }, + { name = "pillow", specifier = ">=10.4.0" }, + { name = "pyright", specifier = ">=1.1.382.post1" }, + { name = "pytest", specifier = ">=8.3.3" }, + { name = "pytest-asyncio", specifier = ">=0.24.0" }, + { name = "pytest-mock", specifier = ">=3.14.0" }, + { name = "ruff", specifier = ">=0.6.8" }, + { name = "sphinx-autoapi", marker = "python_full_version < '3.9'", specifier = "<3.0.0" }, + { name = "sphinx-autoapi", marker = "python_full_version >= '3.9'", specifier = ">=3.0.0" }, + { name = "sphinx-rtd-theme", specifier = ">=2.0.0" }, + { name = "types-pillow", specifier = ">=10.2.0.20240822" }, +] + +[[package]] +name = "wcwidth" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, +] + +[[package]] +name = "zipp" +version = "3.20.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", size = 24199 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", size = 9200 }, +]