diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d74ae70f6..f323ff73e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -154,6 +154,14 @@ jobs: docker run --rm -itd -p 5555:5555 rigetti/quilc -R docker run --rm -itd -p 5000:5000 rigetti/qvm -S poetry run make test + - name: Report Coverage + if: matrix.python-version == '3.11' + uses: orgoro/coverage@v3.1 + with: + coverageFile: coverage.xml + thresholdAll: 0.87 + thresholdNew: 0.9 + token: ${{ secrets.PAT }} test-e2e: name: Test e2e QVM diff --git a/.gitignore b/.gitignore index 4cd26c636..18c05e8c0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ README.rst docs/source/changes.rst docs/source/apidocs/ +coverage.xml # Created by https://www.gitignore.io/api/python,osx,pycharm diff --git a/CHANGELOG.md b/CHANGELOG.md index 002f8e01a..b116c8d90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,120 +1,52 @@ # Changelog -## 4.0.0-rc.12 +## 4.0.0 + +The 4.0 release of pyQuil migrates its core functionality into Rigetti's latest generation of Rust SDKs. With this comes access to new features, improved performance, stronger type safety, and better error messages. While this is a significant change for the internals of pyQuil, we've attempted to keep breaking changes to a minimum. Unless necessary, we've chosen to only remove redunant or lesser used features that aren't likely to bother most users. ### Breaking Changes -- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) -- remove qcs-api-client dependency (#1550) -- Removes the compatilbility.v2 subpackage +- Replaced the `qcs-api-client` dependency with `qcs-sdk-python`. Consequentially, the former's `QCSClientConfiguration` has been replaced by the latter’s `QCSClient`. The `QCSClient` class can be imported from the `api` module. +- Removed the `compatibility.v2` sub-package. +- Removed the `EngagementManager` class as RPCQ is no longer used. +- Python 3.7 is no longer supported. +- The environment variable overrides for `quilc` and `QVM` URLs have been renamed to `QCS_APPLICATIONS_QUILC_URL` and `QCS_APPLICATIONS_QVM_URL`, respectively. +- The `QuantumComputer`'s `run` method now takes an optional `memory_map` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the ability to use `write_memory` on `Program`s. ### Features -- remove v2 compatibility layer (#1475) -- gracefully handle error when QPU unavailable for engagement (#1457) +- pyQuil now uses `qcs-sdk-python` (bindings to the [QCS Rust SDK](https://github.com/rigetti/qcs-sdk-rust/)) for compiling and executing programs. +- With the exception of requests to a `quilc` server, RPCQ has been removed in favor of OpenAPI and gRPC calls. This enables: + - Better performance + - Better error messages when a request fails +- The improved Rust backend allows on-demand access to a QPU. +- The new `QPUCompilerAPIOptions` class provides can now be used to customize how a program is compiled against a QPU. + +## 3.5.4 ### Fixes -- bump qcs-sdk-python to fix waveforms (#1507) -- Remove pyi type annotations causing runtime errors (#1506) -- use highest priority Gateway (#1504) -- use properly packaged qcs-sdk types -- Docs Theme -- Docker qvm/quilc in `rigetti/forest` image. (#1437) -- DefFrame to/from Quil with JSON values (#1419) -- DefFrame to/from Quil with JSON values (#1419) -- Correctly apply the phase in quilwaveforms (#1408) -- allow spaces in DEFFRAME specs -- Correctly apply the phase in quilwaveforms (#1408) -- Changed pad_left to pad_right -- allow spaces in DEFFRAME specs -- Changed pad_left to pad_right -- update Quil-T docs to use `get_calibration_program()` name (#1389) -- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) -- document error on noisy qcs qpu request -- Fix bug in QPU workflow -- Fix execution of parametric programs (#1353) -- sphinx>=3.0.0,<4.0.0 -- support instructions with no qubits or parameters -- remove extraneous debug prints -- Remove test RPCQ server to improve CI consistency. (#1350) -- lock port test fixture -- provide default client configuration on get qcs qpu (#1333) -- raise error on noisy qcs qpu (#1332) -- ignore node modules and commit npm lock -- Fix contiguous engagement handling (#1325) -- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) -- add git commit messge check (#1318) -- include dead attributes when no gates present (#1317) -- Fix RC publising to PyPI -- GitHub checks for PRs to rc branch - -## 4.0.0-rc.11 +- Loosen `networkx` requirements (#1584) -### Breaking Changes +## 3.5.3 -- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) -- remove qcs-api-client dependency (#1550) -- Removes the compatilbility.v2 subpackage +### Fixes -### Features +- Correctly parse matrix gate definitions and support lower case function call expressions (#1588) -- remove v2 compatibility layer (#1475) -- gracefully handle error when QPU unavailable for engagement (#1457) +## 3.5.2 -### Fixes +## 3.5.1 -- bump qcs-sdk-python to fix waveforms (#1507) -- Remove pyi type annotations causing runtime errors (#1506) -- use highest priority Gateway (#1504) -- use properly packaged qcs-sdk types -- Docs Theme -- Docker qvm/quilc in `rigetti/forest` image. (#1437) -- DefFrame to/from Quil with JSON values (#1419) -- DefFrame to/from Quil with JSON values (#1419) -- Correctly apply the phase in quilwaveforms (#1408) -- allow spaces in DEFFRAME specs -- Correctly apply the phase in quilwaveforms (#1408) -- Changed pad_left to pad_right -- allow spaces in DEFFRAME specs -- Changed pad_left to pad_right -- update Quil-T docs to use `get_calibration_program()` name (#1389) -- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) -- document error on noisy qcs qpu request -- Fix bug in QPU workflow -- Fix execution of parametric programs (#1353) -- sphinx>=3.0.0,<4.0.0 -- support instructions with no qubits or parameters -- remove extraneous debug prints -- Remove test RPCQ server to improve CI consistency. (#1350) -- lock port test fixture -- provide default client configuration on get qcs qpu (#1333) -- raise error on noisy qcs qpu (#1332) -- ignore node modules and commit npm lock -- Fix contiguous engagement handling (#1325) -- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) -- add git commit messge check (#1318) -- include dead attributes when no gates present (#1317) -- Fix RC publising to PyPI -- GitHub checks for PRs to rc branch - -## 4.0.0-rc.10 +## 3.5.0 -### Breaking Changes +### Features -- Use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) -- Replace `qcs-api-client` with `qcs-sdk-python` (#1550) -- Removed the `compatilbility.v2` subpackage (#1475) -- Removed the `EngagementManager` class as RPCQ is no longer used. -- Python 3.7 is no longer supported. +- Add CHANNEL-DELAY attribute to DefFrame (#1564) -### Features +### Fixes -- pyQuil now uses `qcs-sdk-python` (bindings to the QCS Rust SDK) for compiling and executing programs. -- RPCQ has been removed in favor of OpenAPI and GRPC calls. This enables: - - Better performance - - Better error messages when a request fails -- The improved Rust backend allows on-demand access to a QPU. +- improve messaging on QPU and compiler timeout (#1397) ## 3.5.0-rc.0 diff --git a/Makefile b/Makefile index bc89c744a..0ce5da1bd 100644 --- a/Makefile +++ b/Makefile @@ -69,7 +69,7 @@ install: .PHONY: test test: poetry install --extras latex - pytest -v --runslow --cov=pyquil test/unit + pytest -v --runslow --cov=pyquil --cov-report xml:coverage.xml test/unit .PHONY: test-fast test-fast: diff --git a/README.md b/README.md index ab3048ec8..55afc34a0 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ PyQuil: Quantum programming in Python [![binder](https://mybinder.org/badge_logo.svg)][binder] [![docs][docs-badge]][docs-repo] -[![coverage][coverage-badge]][coverage-repo] [![docker][docker-badge]][docker-repo] [![pepy][pepy-badge]][pepy-repo] [![pypi][pypi-badge]][pypi-repo] @@ -181,8 +180,6 @@ PyQuil is licensed under the [conda-forge-repo]: https://anaconda.org/conda-forge/pyquil [conda-rigetti-badge]: https://img.shields.io/conda/vn/rigetti/pyquil?label=conda-rigetti [conda-rigetti-repo]: https://anaconda.org/rigetti/pyquil -[coverage-badge]: https://coveralls.io/repos/github/rigetti/pyquil/badge.svg?branch=more-badges -[coverage-repo]: https://coveralls.io/github/rigetti/pyquil?branch=more-badges [docker-badge]: https://img.shields.io/docker/pulls/rigetti/forest [docker-repo]: https://hub.docker.com/r/rigetti/forest [docs-badge]: https://readthedocs.org/projects/pyquil/badge/?version=latest diff --git a/V4_PRERELEASE_CHANGELOG.md b/V4_PRERELEASE_CHANGELOG.md new file mode 100644 index 000000000..27629168a --- /dev/null +++ b/V4_PRERELEASE_CHANGELOG.md @@ -0,0 +1,1635 @@ +# Changelog + +## 4.0.0-rc.38 + +### Breaking Changes + +- Use `ExecutionOptions` parameter to configure how jobs are submitted and retrieved from a QPU. This replaces the `use_gateway` flag on `QCSClient.load()` has been removed. (#1598) +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- increase gRPC message size limit (#1610) +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- Getting a QuantumComputer based on a generic QVM will no longer hang if quilc isn't running (#1624) +- The timeout parameter on the `QPU` class is now respected. The default has been increased to 30.0 seconds (#1615) +- Initializing a QPU with an `endpoint_id` should no longer raise an exception +- `Program.copy_everything_except_instructions()` no longer adds declarations to the instructions property (#1612) +- specify `quil` as a dependency +- `copy_everything_but_instructions` now correctly copies `DECLARE` statements (#1600) +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.37 + +### Breaking Changes + +- Use `ExecutionOptions` parameter to configure how jobs are submitted and retrieved from a QPU. This replaces the `use_gateway` flag on `QCSClient.load()` has been removed. (#1598) +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- increase gRPC message size limit (#1610) +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- The timeout parameter on the `QPU` class is now respected. The default has been increased to 30.0 seconds (#1615) +- Initializing a QPU with an `endpoint_id` should no longer raise an exception +- `Program.copy_everything_except_instructions()` no longer adds declarations to the instructions property (#1612) +- specify `quil` as a dependency +- `copy_everything_but_instructions` now correctly copies `DECLARE` statements (#1600) +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.36 + +### Breaking Changes + +- Use `ExecutionOptions` parameter to configure how jobs are submitted and retrieved from a QPU. This replaces the `use_gateway` flag on `QCSClient.load()` has been removed. (#1598) +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- increase gRPC message size limit (#1610) +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- Initializing a QPU with an `endpoint_id` should no longer raise an exception +- `Program.copy_everything_except_instructions()` no longer adds declarations to the instructions property (#1612) +- specify `quil` as a dependency +- `copy_everything_but_instructions` now correctly copies `DECLARE` statements (#1600) +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.35 + +### Breaking Changes + +- Use `ExecutionOptions` parameter to configure how jobs are submitted and retrieved from a QPU. This replaces the `use_gateway` flag on `QCSClient.load()` has been removed. (#1598) +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- increase gRPC message size limit (#1610) +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- Initializing a QPU with an `endpoint_id` should no longer raise an exception +- `Program.copy_everything_except_instructions()` no longer adds declarations to the instructions property (#1612) +- specify `quil` as a dependency +- `copy_everything_but_instructions` now correctly copies `DECLARE` statements (#1600) +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.34 + +### Breaking Changes + +- Use `ExecutionOptions` parameter to configure how jobs are submitted and retrieved from a QPU. This replaces the `use_gateway` flag on `QCSClient.load()` has been removed. (#1598) +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- increase gRPC message size limit (#1610) +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- Initializing a QPU with an `endpoint_id` should no longer raise an exception +- `Program.copy_everything_except_instructions()` no longer adds declarations to the instructions property (#1612) +- specify `quil` as a dependency +- `copy_everything_but_instructions` now correctly copies `DECLARE` statements (#1600) +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.33 + +### Breaking Changes + +- Use `ExecutionOptions` parameter to configure how jobs are submitted and retrieved from a QPU. This replaces the `use_gateway` flag on `QCSClient.load()` has been removed. (#1598) +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- increase gRPC message size limit (#1610) +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- Initializing a QPU with an `endpoint_id` should no longer raise an exception +- `Program.copy_everything_except_instructions()` no longer adds declarations to the instructions property (#1612) +- specify `quil` as a dependency +- `copy_everything_but_instructions` now correctly copies `DECLARE` statements (#1600) +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.32 + +### Breaking Changes + +- Use `ExecutionOptions` parameter to configure how jobs are submitted and retrieved from a QPU. This replaces the `use_gateway` flag on `QCSClient.load()` has been removed. (#1598) +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- increase gRPC message size limit (#1610) +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- Initializing a QPU with an `endpoint_id` should no longer raise an exception +- `Program.copy_everything_except_instructions()` no longer adds declarations to the instructions property (#1612) +- specify `quil` as a dependency +- `copy_everything_but_instructions` now correctly copies `DECLARE` statements (#1600) +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.31 + +### Breaking Changes + +- Use `ExecutionOptions` parameter to configure how jobs are submitted and retrieved from a QPU. This replaces the `use_gateway` flag on `QCSClient.load()` has been removed. (#1598) +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- increase gRPC message size limit (#1610) +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- Initializing a QPU with an `endpoint_id` should no longer raise an exception +- `Program.copy_everything_except_instructions()` no longer adds declarations to the instructions property (#1612) +- specify `quil` as a dependency +- `copy_everything_but_instructions` now correctly copies `DECLARE` statements (#1600) +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.30 + +### Breaking Changes + +- Use `ExecutionOptions` parameter to configure how jobs are submitted and retrieved from a QPU. This replaces the `use_gateway` flag on `QCSClient.load()` has been removed. (#1598) +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- increase gRPC message size limit (#1610) +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- `Program.copy_everything_except_instructions()` no longer adds declarations to the instructions property (#1612) +- specify `quil` as a dependency +- `copy_everything_but_instructions` now correctly copies `DECLARE` statements (#1600) +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.29 + +### Breaking Changes + +- Use `ExecutionOptions` parameter to configure how jobs are submitted and retrieved from a QPU. This replaces the `use_gateway` flag on `QCSClient.load()` has been removed. (#1598) +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- increase gRPC message size limit (#1610) +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- `Program.copy_everything_except_instructions()` no longer adds declarations to the instructions property (#1612) +- specify `quil` as a dependency +- `copy_everything_but_instructions` now correctly copies `DECLARE` statements (#1600) +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.28 + +### Breaking Changes + +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- increase gRPC message size limit (#1610) +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- `Program.copy_everything_except_instructions()` no longer adds declarations to the instructions property (#1612) +- specify `quil` as a dependency +- `copy_everything_but_instructions` now correctly copies `DECLARE` statements (#1600) +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.27 + +### Breaking Changes + +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- increase gRPC message size limit (#1610) +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- specify `quil` as a dependency +- `copy_everything_but_instructions` now correctly copies `DECLARE` statements (#1600) +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.26 + +### Breaking Changes + +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- specify `quil` as a dependency +- `copy_everything_but_instructions` now correctly copies `DECLARE` statements (#1600) +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.25 + +### Breaking Changes + +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- `copy_everything_but_instructions` now correctly copies `DECLARE` statements (#1600) +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.24 + +### Breaking Changes + +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- `copy_everything_but_instructions` now correctly copies `DECLARE` statements (#1600) +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.23 + +### Breaking Changes + +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- `copy_everything_but_instructions` now correctly copies `DECLARE` statements (#1600) +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.22 + +### Breaking Changes + +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- get_qc will use the given client_configuration +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.21 + +### Breaking Changes + +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.20 + +### Breaking Changes + +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- Remove calibrations from program before sending them to a QVM (#1592) +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.19 + +### Breaking Changes + +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- support translation options for QPUCompiler (#1590) +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.18 + +### Breaking Changes + +- The `QuantumComputer`'s `run` method now takes an optional `MemoryMap` parameter. This mapping takes memory region names to a list of values to use for a run. This replaces the need to use `write_memory` on `Program`s between runs. +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.17 + +### Breaking Changes + +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- Replace `retry`, loosen `networkx` requirements, ensure adding programs don't mutate the first +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.16 + +### Breaking Changes + +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- Parametric DefGates and upper case function call expressions will no longer fail to parse. (#1589) +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.15 + +### Breaking Changes + +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- native_quil_to_executable will no longer block indefinitely (#1585) +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.14 + +### Breaking Changes + +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- The default QCSClient will now load without having QCS credentials (#1582) +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.13 + +### Breaking Changes + +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.12 + +### Breaking Changes + +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.11 + +### Breaking Changes + +- use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- remove qcs-api-client dependency (#1550) +- Removes the compatilbility.v2 subpackage + +### Features + +- remove v2 compatibility layer (#1475) +- gracefully handle error when QPU unavailable for engagement (#1457) + +### Fixes + +- bump qcs-sdk-python to fix waveforms (#1507) +- Remove pyi type annotations causing runtime errors (#1506) +- use highest priority Gateway (#1504) +- use properly packaged qcs-sdk types +- Docs Theme +- Docker qvm/quilc in `rigetti/forest` image. (#1437) +- DefFrame to/from Quil with JSON values (#1419) +- DefFrame to/from Quil with JSON values (#1419) +- Correctly apply the phase in quilwaveforms (#1408) +- allow spaces in DEFFRAME specs +- Correctly apply the phase in quilwaveforms (#1408) +- Changed pad_left to pad_right +- allow spaces in DEFFRAME specs +- Changed pad_left to pad_right +- update Quil-T docs to use `get_calibration_program()` name (#1389) +- allow np.ndarray in write_memory and disallow non-int and non-fl… (#1365) +- document error on noisy qcs qpu request +- Fix bug in QPU workflow +- Fix execution of parametric programs (#1353) +- sphinx>=3.0.0,<4.0.0 +- support instructions with no qubits or parameters +- remove extraneous debug prints +- Remove test RPCQ server to improve CI consistency. (#1350) +- lock port test fixture +- provide default client configuration on get qcs qpu (#1333) +- raise error on noisy qcs qpu (#1332) +- ignore node modules and commit npm lock +- Fix contiguous engagement handling (#1325) +- Re-add `QPUCompiler.refresh_calibration_program()` (#1323) +- add git commit messge check (#1318) +- include dead attributes when no gates present (#1317) +- Fix RC publising to PyPI +- GitHub checks for PRs to rc branch + +## 4.0.0-rc.10 + +### Breaking Changes + +- Use qcs-sdk-python implementation of conjugate_pauli_by_clifford and generate_randomized_benchmarking_sequence (#1557) +- Replace `qcs-api-client` with `qcs-sdk-python` (#1550) +- Removed the `compatilbility.v2` subpackage (#1475) +- Removed the `EngagementManager` class as RPCQ is no longer used. +- Python 3.7 is no longer supported. + +### Features + +- pyQuil now uses `qcs-sdk-python` (bindings to the QCS Rust SDK) for compiling and executing programs. +- RPCQ has been removed in favor of OpenAPI and GRPC calls. This enables: + - Better performance + - Better error messages when a request fails +- The improved Rust backend allows on-demand access to a QPU. diff --git a/docs/source/basics.rst b/docs/source/basics.rst index 57ec3df71..f24dc3160 100644 --- a/docs/source/basics.rst +++ b/docs/source/basics.rst @@ -306,10 +306,10 @@ filled in for, say, 200 values between :math:`0` and :math:`2\pi`. We demonstrat for theta in np.linspace(0, 2 * np.pi, 200): # Set the desired parameter value in executable memory - executable.write_memory(region_name='theta', value=theta) + memory_map = {"theta": [theta]} # Get the results of the run with the value we want to execute with - bitstrings = qc.run(executable).readout_data.get("ro") + bitstrings = qc.run(executable, memory_map=memory_map).readout_data.get("ro") # Store our results parametric_measurements.append(bitstrings) diff --git a/docs/source/index.rst b/docs/source/index.rst index 3c3d9c0ef..371b615f9 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -20,7 +20,7 @@ to get started. .. note:: - If you've used pyQuil before, be sure to check out :ref:`migration` for help with moving to the newest pyQuil release. + If you've used pyQuil before, be sure to check out :ref:`introducing_v4` to help get oriented on the key changes in v4. .. note:: @@ -38,8 +38,8 @@ to get started. noise advanced_usage troubleshooting + introducing_v4 exercises - migration changes .. toctree:: diff --git a/docs/source/introducing_v4.rst b/docs/source/introducing_v4.rst new file mode 100644 index 000000000..07dafe9b9 --- /dev/null +++ b/docs/source/introducing_v4.rst @@ -0,0 +1,90 @@ +.. _introducing_v4: + +Introducing pyQuil v4 +===================== + +The 4.0 major release of pyQuil moves the foundation of program parsing, manipulation, compilation, and execution into Rigetti's latest generation of SDKs written in Rust. This comes with improved performance, stronger type safety, better error messages, and access to exciting new features. + +As a first step, read through the :doc:`changes` to get an overview of what's new. Pay special attention to the breaking changes you may need to accommodate. In the rest of this introduction, we'll expand on some of the key changes and new features. + +.. note:: + + pyQuil v4 is currently pre-release software. If using ``pip``, be sure to install it with the ``--pre`` flag: ``pip install --pre pyquil`` + +Parameters & Memory +------------------- + +In order to provide more flexibility when executing parameterized Programs, the execution methods on ``QAM``, ``QVM``, ``QPU`` and the like now accept an optional ``memory_map`` keyword parameter. This parameter is defined as a mapping of a memory region's name to a sequence of values that will be used to initialize that memory region before executing the program. This replaces the ability to use the write_memory method on a Program. +Here is an example of how you might use a memory map in practice: + +.. code:: python + + from pyquil.api import get_qc + from pyquil.gates import RZ + from pyquil.quil import Program + + qc = get_qc("Ankaa-1") + program = Program() + theta = program.declare("theta", "REAL") + program += RZ(theta, 0) + exe = qc.compile(program) + + # Previously, we would've used program.write_memory(region_name="theta", value=0.0) + memory_map = {"theta": [0.0]} + + result = qc.run(exe, memory_map=memory_map) + +The ``MemoryMap`` type is defined as ``Mapping[str, Union[Sequence[int], Sequence[float]]``. Note that the values mapped to a memory region must always be a sequence. This is different from ``write_memory`` which would allow writing an atomic value to a region of length 1. + + +QCS Gateway and Execution Options +--------------------------------- + +The QCS Gateway is a new service that provides on-demand access to a QPU. See the `QCS documentation`_ for more information on what it is and why you might find it useful. + +.. _QCS documentation: https://docs.rigetti.com/qcs/guides/qcs-gateway + +In pyQuil v4, Gateway is enabled by default and it is generally recommended to keep it on. However, if you have a use case for sending your job to the QPU directly, you can use the new ``ExecutionOptions`` and ``ConnectionStrategy`` classes to configure your request: + +.. code:: python + + from pyquil.api import get_qc, ExecutionOptionsBuilder, ConnectionStrategy + from pyquil.quil import Program + + qc = get_qc("Ankaa-1") + program = Program() + exe = qc.compile(program) + + # Use an ``ExecutionOptionsBuilder`` to build a custom ``ExecutionOptions`` + execution_options_builder = ExecutionOptionsBuilder() + execution_options_builder.connection_strategy = ConnectionStrategy.direct_access() + execution_options = execution_options_builder.build() + + # Option 1: Override execution options on a per-request basis. + result = qc.run(exe, execution_options=execution_options) + + # Option 2: Sets the default options for all execution requests where no execution_options parameter is provided. + result = qc.qam.execution_options = execution_options + + +Using the new QPU Compiler Backend +---------------------------------- + +Rigetti's next-generation QPU compiler is accessible through pyQuil v4. This new backend is still in development, so while it will eventually become the default, it is currently in limited access. If you have access, you can configure your compiler to use it using the new ``QPUCompilerAPIOptions`` class: + +.. code:: python + + from pyquil.api import get_qc, QPUCompilerAPIOptions + from pyquil.quil import Program + + program = Program() + qc = get_qc("Ankaa-1") + + api_options = QPUCompilerAPIOptions() + api_options.use_backend_v2() + + # Option 1: Apply to all compiled programs + qc.compiler.api_options = api_options + + # Option 2: Apply to one specific compilation + qc.compiler.native_quil_to_executable(program, api_options=api_options) diff --git a/docs/source/migration.rst b/docs/source/migration.rst deleted file mode 100644 index 79f84acbc..000000000 --- a/docs/source/migration.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _migration: - -Migrating from pyQuil v3 to v4 -============================== - -Internally, `asyncio` is now used for compilation, execution, and result collection. If using pyQuil in an existing `asyncio` context, -it may be necessary to use [nest-asyncio](https://pypi.org/project/nest-asyncio/) to allow nesting of async contexts. \ No newline at end of file diff --git a/docs/source/noise.rst b/docs/source/noise.rst index 9fa010b74..4cb56838f 100644 --- a/docs/source/noise.rst +++ b/docs/source/noise.rst @@ -1056,9 +1056,9 @@ probability matrix directly from a QPU. header1 = Program().define_noisy_readout(1, .8, .9) header2 = Program().define_noisy_readout(2, .9, .85) - ap0 = estimate_assignment_probs(0, 100000, qc, header0) - ap1 = estimate_assignment_probs(1, 100000, qc, header1) - ap2 = estimate_assignment_probs(2, 100000, qc, header2) + ap0 = estimate_assignment_probs(0, 10000, qc, header0) + ap1 = estimate_assignment_probs(1, 10000, qc, header1) + ap2 = estimate_assignment_probs(2, 10000, qc, header2) .. testcode:: readout-noise diff --git a/docs/source/troubleshooting.rst b/docs/source/troubleshooting.rst index 8a54d1a34..292291438 100644 --- a/docs/source/troubleshooting.rst +++ b/docs/source/troubleshooting.rst @@ -7,6 +7,35 @@ If you're having any trouble running your pyQuil programs locally or on the QPU, following things before sending a support request. It will save you time and make it easier for us to help! +Timeout in Compilation +---------------------- + +This may occur due to the size of your program, problems with your local ``quilc`` service, or problems +with the remote QCS API. + +1. Ensure that ``quilc`` is running, per the compiler documentation: :ref:`compiler`. +2. Try compiling and running a smaller program, or one that previously worked. +3. If you have a larger program and expect it to take a long time to compile, set a higher ``compiler_timeout`` + value per the instructions here: :ref:`compiler`. + +Timeout in Execution +-------------------- + +This may occur due to one of several different problems. Often, it's because you don't have network access +to the execution endpoint. + +If you're running against the QVM, ensure that it is properly running: :ref:`server`. If you're using docker, +you can check this using ``docker ps``. + +If you're running against the QPU, ensure that you are running your program from a supported environment. +Live Rigetti QPUs are **only accessible from Rigetti-provided environments**, such as +`JupyterHub `_. If you are running from anywhere else, such as a +script on your local computer or a public cloud virtual machine, +**your program will not be able to reach a QPU and will time out**. + +Collect Debug Information +---------------------------- + 1. Ensure that your pyQuil version is up to date. If you're using ``pip``, you can do this with ``pip freeze``. Within your script, you can use ``__version__``: @@ -42,5 +71,8 @@ to help! logger.setLevel(logging.DEBUG) -If the problem still isn't clear, then we can help! Please contact us at our -`support page `_. Thanks for using pyQuil! +If the problem still isn't clear, then we can help! Please file an issue +on the `GitHub repo `_ if it's an issue with pyQuil itself, +or contact us at our `support page `_ for problems with QCS. + +Thanks for using pyQuil! diff --git a/knope.toml b/knope.toml index c8727e030..0944de2f2 100644 --- a/knope.toml +++ b/knope.toml @@ -1,6 +1,8 @@ [package] versioned_files = ["pyproject.toml"] -changelog = "CHANGELOG.md" +# This should be changed back to CHANGELOG.md once v4.0.0 is released. +# https://github.com/rigetti/pyquil/issues/1621 +changelog = "V4_PRERELEASE_CHANGELOG.md" [[workflows]] name = "release" diff --git a/poetry.lock b/poetry.lock index 8da267777..dd7dddfc0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. +# This file is automatically @generated by Poetry and should not be changed by hand. [[package]] name = "alabaster" @@ -14,24 +14,25 @@ files = [ [[package]] name = "anyio" -version = "3.6.2" +version = "3.7.1" description = "High level compatibility layer for multiple asynchronous event loop implementations" category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7" files = [ - {file = "anyio-3.6.2-py3-none-any.whl", hash = "sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3"}, - {file = "anyio-3.6.2.tar.gz", hash = "sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421"}, + {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"}, + {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"}, ] [package.dependencies] +exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["contextlib2", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "uvloop (>=0.15)"] -trio = ["trio (>=0.16,<0.22)"] +doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"] +test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (<0.22)"] [[package]] name = "appnope" @@ -267,99 +268,99 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "3.1.0" +version = "3.2.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = true python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"}, - {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, + {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, + {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, ] [[package]] name = "click" -version = "8.1.3" +version = "8.1.5" description = "Composable command line interface toolkit" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, + {file = "click-8.1.5-py3-none-any.whl", hash = "sha256:e576aa487d679441d7d30abb87e1b43d24fc53bffb8758443b1a9e1cee504548"}, + {file = "click-8.1.5.tar.gz", hash = "sha256:4be4b1af8d665c6d942909916d31a213a106800c47d0eeba73d34da3cbc11367"}, ] [package.dependencies] @@ -394,138 +395,131 @@ test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] [[package]] name = "contourpy" -version = "1.0.7" +version = "1.1.0" description = "Python library for calculating contours of 2D quadrilateral grids" category = "main" optional = true python-versions = ">=3.8" files = [ - {file = "contourpy-1.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:95c3acddf921944f241b6773b767f1cbce71d03307270e2d769fd584d5d1092d"}, - {file = "contourpy-1.0.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fc1464c97579da9f3ab16763c32e5c5d5bb5fa1ec7ce509a4ca6108b61b84fab"}, - {file = "contourpy-1.0.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8acf74b5d383414401926c1598ed77825cd530ac7b463ebc2e4f46638f56cce6"}, - {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c71fdd8f1c0f84ffd58fca37d00ca4ebaa9e502fb49825484da075ac0b0b803"}, - {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f99e9486bf1bb979d95d5cffed40689cb595abb2b841f2991fc894b3452290e8"}, - {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87f4d8941a9564cda3f7fa6a6cd9b32ec575830780677932abdec7bcb61717b0"}, - {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9e20e5a1908e18aaa60d9077a6d8753090e3f85ca25da6e25d30dc0a9e84c2c6"}, - {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a877ada905f7d69b2a31796c4b66e31a8068b37aa9b78832d41c82fc3e056ddd"}, - {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6381fa66866b0ea35e15d197fc06ac3840a9b2643a6475c8fff267db8b9f1e69"}, - {file = "contourpy-1.0.7-cp310-cp310-win32.whl", hash = "sha256:3c184ad2433635f216645fdf0493011a4667e8d46b34082f5a3de702b6ec42e3"}, - {file = "contourpy-1.0.7-cp310-cp310-win_amd64.whl", hash = "sha256:3caea6365b13119626ee996711ab63e0c9d7496f65641f4459c60a009a1f3e80"}, - {file = "contourpy-1.0.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ed33433fc3820263a6368e532f19ddb4c5990855e4886088ad84fd7c4e561c71"}, - {file = "contourpy-1.0.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:38e2e577f0f092b8e6774459317c05a69935a1755ecfb621c0a98f0e3c09c9a5"}, - {file = "contourpy-1.0.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ae90d5a8590e5310c32a7630b4b8618cef7563cebf649011da80874d0aa8f414"}, - {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:130230b7e49825c98edf0b428b7aa1125503d91732735ef897786fe5452b1ec2"}, - {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58569c491e7f7e874f11519ef46737cea1d6eda1b514e4eb5ac7dab6aa864d02"}, - {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54d43960d809c4c12508a60b66cb936e7ed57d51fb5e30b513934a4a23874fae"}, - {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:152fd8f730c31fd67fe0ffebe1df38ab6a669403da93df218801a893645c6ccc"}, - {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9056c5310eb1daa33fc234ef39ebfb8c8e2533f088bbf0bc7350f70a29bde1ac"}, - {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a9d7587d2fdc820cc9177139b56795c39fb8560f540bba9ceea215f1f66e1566"}, - {file = "contourpy-1.0.7-cp311-cp311-win32.whl", hash = "sha256:4ee3ee247f795a69e53cd91d927146fb16c4e803c7ac86c84104940c7d2cabf0"}, - {file = "contourpy-1.0.7-cp311-cp311-win_amd64.whl", hash = "sha256:5caeacc68642e5f19d707471890f037a13007feba8427eb7f2a60811a1fc1350"}, - {file = "contourpy-1.0.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd7dc0e6812b799a34f6d12fcb1000539098c249c8da54f3566c6a6461d0dbad"}, - {file = "contourpy-1.0.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0f9d350b639db6c2c233d92c7f213d94d2e444d8e8fc5ca44c9706cf72193772"}, - {file = "contourpy-1.0.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e96a08b62bb8de960d3a6afbc5ed8421bf1a2d9c85cc4ea73f4bc81b4910500f"}, - {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:031154ed61f7328ad7f97662e48660a150ef84ee1bc8876b6472af88bf5a9b98"}, - {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e9ebb4425fc1b658e13bace354c48a933b842d53c458f02c86f371cecbedecc"}, - {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efb8f6d08ca7998cf59eaf50c9d60717f29a1a0a09caa46460d33b2924839dbd"}, - {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6c180d89a28787e4b73b07e9b0e2dac7741261dbdca95f2b489c4f8f887dd810"}, - {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b8d587cc39057d0afd4166083d289bdeff221ac6d3ee5046aef2d480dc4b503c"}, - {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:769eef00437edf115e24d87f8926955f00f7704bede656ce605097584f9966dc"}, - {file = "contourpy-1.0.7-cp38-cp38-win32.whl", hash = "sha256:62398c80ef57589bdbe1eb8537127321c1abcfdf8c5f14f479dbbe27d0322e66"}, - {file = "contourpy-1.0.7-cp38-cp38-win_amd64.whl", hash = "sha256:57119b0116e3f408acbdccf9eb6ef19d7fe7baf0d1e9aaa5381489bc1aa56556"}, - {file = "contourpy-1.0.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:30676ca45084ee61e9c3da589042c24a57592e375d4b138bd84d8709893a1ba4"}, - {file = "contourpy-1.0.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e927b3868bd1e12acee7cc8f3747d815b4ab3e445a28d2e5373a7f4a6e76ba1"}, - {file = "contourpy-1.0.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:366a0cf0fc079af5204801786ad7a1c007714ee3909e364dbac1729f5b0849e5"}, - {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ba9bb365446a22411f0673abf6ee1fea3b2cf47b37533b970904880ceb72f3"}, - {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:71b0bf0c30d432278793d2141362ac853859e87de0a7dee24a1cea35231f0d50"}, - {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7281244c99fd7c6f27c1c6bfafba878517b0b62925a09b586d88ce750a016d2"}, - {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b6d0f9e1d39dbfb3977f9dd79f156c86eb03e57a7face96f199e02b18e58d32a"}, - {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7f6979d20ee5693a1057ab53e043adffa1e7418d734c1532e2d9e915b08d8ec2"}, - {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5dd34c1ae752515318224cba7fc62b53130c45ac6a1040c8b7c1a223c46e8967"}, - {file = "contourpy-1.0.7-cp39-cp39-win32.whl", hash = "sha256:c5210e5d5117e9aec8c47d9156d1d3835570dd909a899171b9535cb4a3f32693"}, - {file = "contourpy-1.0.7-cp39-cp39-win_amd64.whl", hash = "sha256:60835badb5ed5f4e194a6f21c09283dd6e007664a86101431bf870d9e86266c4"}, - {file = "contourpy-1.0.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ce41676b3d0dd16dbcfabcc1dc46090aaf4688fd6e819ef343dbda5a57ef0161"}, - {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a011cf354107b47c58ea932d13b04d93c6d1d69b8b6dce885e642531f847566"}, - {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31a55dccc8426e71817e3fe09b37d6d48ae40aae4ecbc8c7ad59d6893569c436"}, - {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69f8ff4db108815addd900a74df665e135dbbd6547a8a69333a68e1f6e368ac2"}, - {file = "contourpy-1.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efe99298ba37e37787f6a2ea868265465410822f7bea163edcc1bd3903354ea9"}, - {file = "contourpy-1.0.7-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a1e97b86f73715e8670ef45292d7cc033548266f07d54e2183ecb3c87598888f"}, - {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc331c13902d0f50845099434cd936d49d7a2ca76cb654b39691974cb1e4812d"}, - {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24847601071f740837aefb730e01bd169fbcaa610209779a78db7ebb6e6a7051"}, - {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abf298af1e7ad44eeb93501e40eb5a67abbf93b5d90e468d01fc0c4451971afa"}, - {file = "contourpy-1.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:64757f6460fc55d7e16ed4f1de193f362104285c667c112b50a804d482777edd"}, - {file = "contourpy-1.0.7.tar.gz", hash = "sha256:d8165a088d31798b59e91117d1f5fc3df8168d8b48c4acc10fc0df0d0bdbcc5e"}, + {file = "contourpy-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:89f06eff3ce2f4b3eb24c1055a26981bffe4e7264acd86f15b97e40530b794bc"}, + {file = "contourpy-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dffcc2ddec1782dd2f2ce1ef16f070861af4fb78c69862ce0aab801495dda6a3"}, + {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25ae46595e22f93592d39a7eac3d638cda552c3e1160255258b695f7b58e5655"}, + {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:17cfaf5ec9862bc93af1ec1f302457371c34e688fbd381f4035a06cd47324f48"}, + {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18a64814ae7bce73925131381603fff0116e2df25230dfc80d6d690aa6e20b37"}, + {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c81f22b4f572f8a2110b0b741bb64e5a6427e0a198b2cdc1fbaf85f352a3aa"}, + {file = "contourpy-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53cc3a40635abedbec7f1bde60f8c189c49e84ac180c665f2cd7c162cc454baa"}, + {file = "contourpy-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:1f795597073b09d631782e7245016a4323cf1cf0b4e06eef7ea6627e06a37ff2"}, + {file = "contourpy-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0b7b04ed0961647691cfe5d82115dd072af7ce8846d31a5fac6c142dcce8b882"}, + {file = "contourpy-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27bc79200c742f9746d7dd51a734ee326a292d77e7d94c8af6e08d1e6c15d545"}, + {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052cc634bf903c604ef1a00a5aa093c54f81a2612faedaa43295809ffdde885e"}, + {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9382a1c0bc46230fb881c36229bfa23d8c303b889b788b939365578d762b5c18"}, + {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5cec36c5090e75a9ac9dbd0ff4a8cf7cecd60f1b6dc23a374c7d980a1cd710e"}, + {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f0cbd657e9bde94cd0e33aa7df94fb73c1ab7799378d3b3f902eb8eb2e04a3a"}, + {file = "contourpy-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:181cbace49874f4358e2929aaf7ba84006acb76694102e88dd15af861996c16e"}, + {file = "contourpy-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fb3b7d9e6243bfa1efb93ccfe64ec610d85cfe5aec2c25f97fbbd2e58b531256"}, + {file = "contourpy-1.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bcb41692aa09aeb19c7c213411854402f29f6613845ad2453d30bf421fe68fed"}, + {file = "contourpy-1.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5d123a5bc63cd34c27ff9c7ac1cd978909e9c71da12e05be0231c608048bb2ae"}, + {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62013a2cf68abc80dadfd2307299bfa8f5aa0dcaec5b2954caeb5fa094171103"}, + {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b6616375d7de55797d7a66ee7d087efe27f03d336c27cf1f32c02b8c1a5ac70"}, + {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:317267d915490d1e84577924bd61ba71bf8681a30e0d6c545f577363157e5e94"}, + {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d551f3a442655f3dcc1285723f9acd646ca5858834efeab4598d706206b09c9f"}, + {file = "contourpy-1.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e7a117ce7df5a938fe035cad481b0189049e8d92433b4b33aa7fc609344aafa1"}, + {file = "contourpy-1.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:d4f26b25b4f86087e7d75e63212756c38546e70f2a92d2be44f80114826e1cd4"}, + {file = "contourpy-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc00bb4225d57bff7ebb634646c0ee2a1298402ec10a5fe7af79df9a51c1bfd9"}, + {file = "contourpy-1.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:189ceb1525eb0655ab8487a9a9c41f42a73ba52d6789754788d1883fb06b2d8a"}, + {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f2931ed4741f98f74b410b16e5213f71dcccee67518970c42f64153ea9313b9"}, + {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30f511c05fab7f12e0b1b7730ebdc2ec8deedcfb505bc27eb570ff47c51a8f15"}, + {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:143dde50520a9f90e4a2703f367cf8ec96a73042b72e68fcd184e1279962eb6f"}, + {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e94bef2580e25b5fdb183bf98a2faa2adc5b638736b2c0a4da98691da641316a"}, + {file = "contourpy-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ed614aea8462735e7d70141374bd7650afd1c3f3cb0c2dbbcbe44e14331bf002"}, + {file = "contourpy-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:438ba416d02f82b692e371858143970ed2eb6337d9cdbbede0d8ad9f3d7dd17d"}, + {file = "contourpy-1.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a698c6a7a432789e587168573a864a7ea374c6be8d4f31f9d87c001d5a843493"}, + {file = "contourpy-1.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:397b0ac8a12880412da3551a8cb5a187d3298a72802b45a3bd1805e204ad8439"}, + {file = "contourpy-1.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:a67259c2b493b00e5a4d0f7bfae51fb4b3371395e47d079a4446e9b0f4d70e76"}, + {file = "contourpy-1.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2b836d22bd2c7bb2700348e4521b25e077255ebb6ab68e351ab5aa91ca27e027"}, + {file = "contourpy-1.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084eaa568400cfaf7179b847ac871582199b1b44d5699198e9602ecbbb5f6104"}, + {file = "contourpy-1.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:911ff4fd53e26b019f898f32db0d4956c9d227d51338fb3b03ec72ff0084ee5f"}, + {file = "contourpy-1.1.0.tar.gz", hash = "sha256:e53046c3863828d21d531cc3b53786e6580eb1ba02477e8681009b6aa0870b21"}, ] [package.dependencies] numpy = ">=1.16" [package.extras] -bokeh = ["bokeh", "chromedriver", "selenium"] +bokeh = ["bokeh", "selenium"] docs = ["furo", "sphinx-copybutton"] -mypy = ["contourpy[bokeh]", "docutils-stubs", "mypy (==0.991)", "types-Pillow"] -test = ["Pillow", "matplotlib", "pytest"] -test-no-images = ["pytest"] +mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.2.0)", "types-Pillow"] +test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] +test-no-images = ["pytest", "pytest-cov", "wurlitzer"] [[package]] name = "coverage" -version = "7.2.5" +version = "7.2.7" description = "Code coverage measurement for Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "coverage-7.2.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:883123d0bbe1c136f76b56276074b0c79b5817dd4238097ffa64ac67257f4b6c"}, - {file = "coverage-7.2.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d2fbc2a127e857d2f8898aaabcc34c37771bf78a4d5e17d3e1f5c30cd0cbc62a"}, - {file = "coverage-7.2.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f3671662dc4b422b15776cdca89c041a6349b4864a43aa2350b6b0b03bbcc7f"}, - {file = "coverage-7.2.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780551e47d62095e088f251f5db428473c26db7829884323e56d9c0c3118791a"}, - {file = "coverage-7.2.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:066b44897c493e0dcbc9e6a6d9f8bbb6607ef82367cf6810d387c09f0cd4fe9a"}, - {file = "coverage-7.2.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b9a4ee55174b04f6af539218f9f8083140f61a46eabcaa4234f3c2a452c4ed11"}, - {file = "coverage-7.2.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:706ec567267c96717ab9363904d846ec009a48d5f832140b6ad08aad3791b1f5"}, - {file = "coverage-7.2.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ae453f655640157d76209f42c62c64c4d4f2c7f97256d3567e3b439bd5c9b06c"}, - {file = "coverage-7.2.5-cp310-cp310-win32.whl", hash = "sha256:f81c9b4bd8aa747d417407a7f6f0b1469a43b36a85748145e144ac4e8d303cb5"}, - {file = "coverage-7.2.5-cp310-cp310-win_amd64.whl", hash = "sha256:dc945064a8783b86fcce9a0a705abd7db2117d95e340df8a4333f00be5efb64c"}, - {file = "coverage-7.2.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:40cc0f91c6cde033da493227797be2826cbf8f388eaa36a0271a97a332bfd7ce"}, - {file = "coverage-7.2.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a66e055254a26c82aead7ff420d9fa8dc2da10c82679ea850d8feebf11074d88"}, - {file = "coverage-7.2.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c10fbc8a64aa0f3ed136b0b086b6b577bc64d67d5581acd7cc129af52654384e"}, - {file = "coverage-7.2.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a22cbb5ede6fade0482111fa7f01115ff04039795d7092ed0db43522431b4f2"}, - {file = "coverage-7.2.5-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:292300f76440651529b8ceec283a9370532f4ecba9ad67d120617021bb5ef139"}, - {file = "coverage-7.2.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7ff8f3fb38233035028dbc93715551d81eadc110199e14bbbfa01c5c4a43f8d8"}, - {file = "coverage-7.2.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:a08c7401d0b24e8c2982f4e307124b671c6736d40d1c39e09d7a8687bddf83ed"}, - {file = "coverage-7.2.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ef9659d1cda9ce9ac9585c045aaa1e59223b143f2407db0eaee0b61a4f266fb6"}, - {file = "coverage-7.2.5-cp311-cp311-win32.whl", hash = "sha256:30dcaf05adfa69c2a7b9f7dfd9f60bc8e36b282d7ed25c308ef9e114de7fc23b"}, - {file = "coverage-7.2.5-cp311-cp311-win_amd64.whl", hash = "sha256:97072cc90f1009386c8a5b7de9d4fc1a9f91ba5ef2146c55c1f005e7b5c5e068"}, - {file = "coverage-7.2.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bebea5f5ed41f618797ce3ffb4606c64a5de92e9c3f26d26c2e0aae292f015c1"}, - {file = "coverage-7.2.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:828189fcdda99aae0d6bf718ea766b2e715eabc1868670a0a07bf8404bf58c33"}, - {file = "coverage-7.2.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e8a95f243d01ba572341c52f89f3acb98a3b6d1d5d830efba86033dd3687ade"}, - {file = "coverage-7.2.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8834e5f17d89e05697c3c043d3e58a8b19682bf365048837383abfe39adaed5"}, - {file = "coverage-7.2.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d1f25ee9de21a39b3a8516f2c5feb8de248f17da7eead089c2e04aa097936b47"}, - {file = "coverage-7.2.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1637253b11a18f453e34013c665d8bf15904c9e3c44fbda34c643fbdc9d452cd"}, - {file = "coverage-7.2.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8e575a59315a91ccd00c7757127f6b2488c2f914096077c745c2f1ba5b8c0969"}, - {file = "coverage-7.2.5-cp37-cp37m-win32.whl", hash = "sha256:509ecd8334c380000d259dc66feb191dd0a93b21f2453faa75f7f9cdcefc0718"}, - {file = "coverage-7.2.5-cp37-cp37m-win_amd64.whl", hash = "sha256:12580845917b1e59f8a1c2ffa6af6d0908cb39220f3019e36c110c943dc875b0"}, - {file = "coverage-7.2.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b5016e331b75310610c2cf955d9f58a9749943ed5f7b8cfc0bb89c6134ab0a84"}, - {file = "coverage-7.2.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:373ea34dca98f2fdb3e5cb33d83b6d801007a8074f992b80311fc589d3e6b790"}, - {file = "coverage-7.2.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a063aad9f7b4c9f9da7b2550eae0a582ffc7623dca1c925e50c3fbde7a579771"}, - {file = "coverage-7.2.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38c0a497a000d50491055805313ed83ddba069353d102ece8aef5d11b5faf045"}, - {file = "coverage-7.2.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2b3b05e22a77bb0ae1a3125126a4e08535961c946b62f30985535ed40e26614"}, - {file = "coverage-7.2.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0342a28617e63ad15d96dca0f7ae9479a37b7d8a295f749c14f3436ea59fdcb3"}, - {file = "coverage-7.2.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cf97ed82ca986e5c637ea286ba2793c85325b30f869bf64d3009ccc1a31ae3fd"}, - {file = "coverage-7.2.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c2c41c1b1866b670573657d584de413df701f482574bad7e28214a2362cb1fd1"}, - {file = "coverage-7.2.5-cp38-cp38-win32.whl", hash = "sha256:10b15394c13544fce02382360cab54e51a9e0fd1bd61ae9ce012c0d1e103c813"}, - {file = "coverage-7.2.5-cp38-cp38-win_amd64.whl", hash = "sha256:a0b273fe6dc655b110e8dc89b8ec7f1a778d78c9fd9b4bda7c384c8906072212"}, - {file = "coverage-7.2.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5c587f52c81211d4530fa6857884d37f514bcf9453bdeee0ff93eaaf906a5c1b"}, - {file = "coverage-7.2.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4436cc9ba5414c2c998eaedee5343f49c02ca93b21769c5fdfa4f9d799e84200"}, - {file = "coverage-7.2.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6599bf92f33ab041e36e06d25890afbdf12078aacfe1f1d08c713906e49a3fe5"}, - {file = "coverage-7.2.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:857abe2fa6a4973f8663e039ead8d22215d31db613ace76e4a98f52ec919068e"}, - {file = "coverage-7.2.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6f5cab2d7f0c12f8187a376cc6582c477d2df91d63f75341307fcdcb5d60303"}, - {file = "coverage-7.2.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:aa387bd7489f3e1787ff82068b295bcaafbf6f79c3dad3cbc82ef88ce3f48ad3"}, - {file = "coverage-7.2.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:156192e5fd3dbbcb11cd777cc469cf010a294f4c736a2b2c891c77618cb1379a"}, - {file = "coverage-7.2.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bd3b4b8175c1db502adf209d06136c000df4d245105c8839e9d0be71c94aefe1"}, - {file = "coverage-7.2.5-cp39-cp39-win32.whl", hash = "sha256:ddc5a54edb653e9e215f75de377354e2455376f416c4378e1d43b08ec50acc31"}, - {file = "coverage-7.2.5-cp39-cp39-win_amd64.whl", hash = "sha256:338aa9d9883aaaad53695cb14ccdeb36d4060485bb9388446330bef9c361c252"}, - {file = "coverage-7.2.5-pp37.pp38.pp39-none-any.whl", hash = "sha256:8877d9b437b35a85c18e3c6499b23674684bf690f5d96c1006a1ef61f9fdf0f3"}, - {file = "coverage-7.2.5.tar.gz", hash = "sha256:f99ef080288f09ffc687423b8d60978cf3a465d3f404a18d1a05474bd8575a47"}, + {file = "coverage-7.2.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d39b5b4f2a66ccae8b7263ac3c8170994b65266797fb96cbbfd3fb5b23921db8"}, + {file = "coverage-7.2.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d040ef7c9859bb11dfeb056ff5b3872436e3b5e401817d87a31e1750b9ae2fb"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba90a9563ba44a72fda2e85302c3abc71c5589cea608ca16c22b9804262aaeb6"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d9405291c6928619403db1d10bd07888888ec1abcbd9748fdaa971d7d661b2"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31563e97dae5598556600466ad9beea39fb04e0229e61c12eaa206e0aa202063"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ebba1cd308ef115925421d3e6a586e655ca5a77b5bf41e02eb0e4562a111f2d1"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cb017fd1b2603ef59e374ba2063f593abe0fc45f2ad9abdde5b4d83bd922a353"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62a5c7dad11015c66fbb9d881bc4caa5b12f16292f857842d9d1871595f4495"}, + {file = "coverage-7.2.7-cp310-cp310-win32.whl", hash = "sha256:ee57190f24fba796e36bb6d3aa8a8783c643d8fa9760c89f7a98ab5455fbf818"}, + {file = "coverage-7.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:f75f7168ab25dd93110c8a8117a22450c19976afbc44234cbf71481094c1b850"}, + {file = "coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f"}, + {file = "coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52edc1a60c0d34afa421c9c37078817b2e67a392cab17d97283b64c5833f427f"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:afb17f84d56068a7c29f5fa37bfd38d5aba69e3304af08ee94da8ed5b0865833"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:48c19d2159d433ccc99e729ceae7d5293fbffa0bdb94952d3579983d1c8c9d97"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0e1f928eaf5469c11e886fe0885ad2bf1ec606434e79842a879277895a50942a"}, + {file = "coverage-7.2.7-cp311-cp311-win32.whl", hash = "sha256:33d6d3ea29d5b3a1a632b3c4e4f4ecae24ef170b0b9ee493883f2df10039959a"}, + {file = "coverage-7.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:5b7540161790b2f28143191f5f8ec02fb132660ff175b7747b95dcb77ac26562"}, + {file = "coverage-7.2.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a342242fe22407f3c17f4b499276a02b01e80f861f1682ad1d95b04018e0c0d4"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:171717c7cb6b453aebac9a2ef603699da237f341b38eebfee9be75d27dc38e01"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49969a9f7ffa086d973d91cec8d2e31080436ef0fb4a359cae927e742abfaaa6"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b46517c02ccd08092f4fa99f24c3b83d8f92f739b4657b0f146246a0ca6a831d"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a3d33a6b3eae87ceaefa91ffdc130b5e8536182cd6dfdbfc1aa56b46ff8c86de"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:976b9c42fb2a43ebf304fa7d4a310e5f16cc99992f33eced91ef6f908bd8f33d"}, + {file = "coverage-7.2.7-cp312-cp312-win32.whl", hash = "sha256:8de8bb0e5ad103888d65abef8bca41ab93721647590a3f740100cd65c3b00511"}, + {file = "coverage-7.2.7-cp312-cp312-win_amd64.whl", hash = "sha256:9e31cb64d7de6b6f09702bb27c02d1904b3aebfca610c12772452c4e6c21a0d3"}, + {file = "coverage-7.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58c2ccc2f00ecb51253cbe5d8d7122a34590fac9646a960d1430d5b15321d95f"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d22656368f0e6189e24722214ed8d66b8022db19d182927b9a248a2a8a2f67eb"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a895fcc7b15c3fc72beb43cdcbdf0ddb7d2ebc959edac9cef390b0d14f39f8a9"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84606b74eb7de6ff581a7915e2dab7a28a0517fbe1c9239eb227e1354064dcd"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a5f9e1dbd7fbe30196578ca36f3fba75376fb99888c395c5880b355e2875f8a"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:419bfd2caae268623dd469eff96d510a920c90928b60f2073d79f8fe2bbc5959"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2aee274c46590717f38ae5e4650988d1af340fe06167546cc32fe2f58ed05b02"}, + {file = "coverage-7.2.7-cp37-cp37m-win32.whl", hash = "sha256:61b9a528fb348373c433e8966535074b802c7a5d7f23c4f421e6c6e2f1697a6f"}, + {file = "coverage-7.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:b1c546aca0ca4d028901d825015dc8e4d56aac4b541877690eb76490f1dc8ed0"}, + {file = "coverage-7.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:54b896376ab563bd38453cecb813c295cf347cf5906e8b41d340b0321a5433e5"}, + {file = "coverage-7.2.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d376df58cc111dc8e21e3b6e24606b5bb5dee6024f46a5abca99124b2229ef5"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e330fc79bd7207e46c7d7fd2bb4af2963f5f635703925543a70b99574b0fea9"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e9d683426464e4a252bf70c3498756055016f99ddaec3774bf368e76bbe02b6"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d13c64ee2d33eccf7437961b6ea7ad8673e2be040b4f7fd4fd4d4d28d9ccb1e"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7aa5f8a41217360e600da646004f878250a0d6738bcdc11a0a39928d7dc2050"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fa03bce9bfbeeef9f3b160a8bed39a221d82308b4152b27d82d8daa7041fee5"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:245167dd26180ab4c91d5e1496a30be4cd721a5cf2abf52974f965f10f11419f"}, + {file = "coverage-7.2.7-cp38-cp38-win32.whl", hash = "sha256:d2c2db7fd82e9b72937969bceac4d6ca89660db0a0967614ce2481e81a0b771e"}, + {file = "coverage-7.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:2e07b54284e381531c87f785f613b833569c14ecacdcb85d56b25c4622c16c3c"}, + {file = "coverage-7.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:537891ae8ce59ef63d0123f7ac9e2ae0fc8b72c7ccbe5296fec45fd68967b6c9"}, + {file = "coverage-7.2.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06fb182e69f33f6cd1d39a6c597294cff3143554b64b9825d1dc69d18cc2fff2"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:201e7389591af40950a6480bd9edfa8ed04346ff80002cec1a66cac4549c1ad7"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6951407391b639504e3b3be51b7ba5f3528adbf1a8ac3302b687ecababf929e"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b29019c76039dc3c0fd815c41392a044ce555d9bcdd38b0fb60fb4cd8e475ba9"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:81c13a1fc7468c40f13420732805a4c38a105d89848b7c10af65a90beff25250"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:975d70ab7e3c80a3fe86001d8751f6778905ec723f5b110aed1e450da9d4b7f2"}, + {file = "coverage-7.2.7-cp39-cp39-win32.whl", hash = "sha256:7ee7d9d4822c8acc74a5e26c50604dff824710bc8de424904c0982e25c39c6cb"}, + {file = "coverage-7.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb393e5ebc85245347950143969b241d08b52b88a3dc39479822e073a1a8eb27"}, + {file = "coverage-7.2.7-pp37.pp38.pp39-none-any.whl", hash = "sha256:b7b4c971f05e6ae490fef852c218b0e79d4e52f79ef0c8475566584a8fb3e01d"}, + {file = "coverage-7.2.7.tar.gz", hash = "sha256:924d94291ca674905fe9481f12294eb11f2d3d3fd1adb20314ba89e94f44ed59"}, ] [package.extras] @@ -548,7 +542,7 @@ name = "decorator" version = "5.1.1" description = "Decorators for Humans" category = "main" -optional = false +optional = true python-versions = ">=3.5" files = [ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, @@ -567,6 +561,24 @@ files = [ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, ] +[[package]] +name = "deprecated" +version = "1.2.14" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, + {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, +] + +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] + [[package]] name = "docutils" version = "0.19" @@ -579,20 +591,35 @@ files = [ {file = "docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6"}, ] +[[package]] +name = "exceptiongroup" +version = "1.1.2" +description = "Backport of PEP 654 (exception groups)" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.1.2-py3-none-any.whl", hash = "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f"}, + {file = "exceptiongroup-1.1.2.tar.gz", hash = "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"}, +] + +[package.extras] +test = ["pytest (>=6)"] + [[package]] name = "execnet" -version = "1.9.0" +version = "2.0.2" description = "execnet: rapid multi-Python deployment" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7" files = [ - {file = "execnet-1.9.0-py2.py3-none-any.whl", hash = "sha256:a295f7cc774947aac58dde7fdc85f4aa00c42adf5d8f5468fc630c1acf30a142"}, - {file = "execnet-1.9.0.tar.gz", hash = "sha256:8f694f3ba9cc92cab508b152dcfe322153975c29bda272e2fd7f3f00f36e47c5"}, + {file = "execnet-2.0.2-py3-none-any.whl", hash = "sha256:88256416ae766bc9e8895c76a87928c0012183da3cc4fc18016e6f050e025f41"}, + {file = "execnet-2.0.2.tar.gz", hash = "sha256:cc59bc4423742fd71ad227122eb0dd44db51efb3dc4095b45ac9a08c770096af"}, ] [package.extras] -testing = ["pre-commit"] +testing = ["hatch", "pre-commit", "pytest", "tox"] [[package]] name = "fastjsonschema" @@ -628,14 +655,46 @@ pyflakes = ">=2.3.0,<2.4.0" [[package]] name = "fonttools" -version = "4.39.4" +version = "4.41.1" description = "Tools to manipulate font files" category = "main" optional = true python-versions = ">=3.8" files = [ - {file = "fonttools-4.39.4-py3-none-any.whl", hash = "sha256:106caf6167c4597556b31a8d9175a3fdc0356fdcd70ab19973c3b0d4c893c461"}, - {file = "fonttools-4.39.4.zip", hash = "sha256:dba8d7cdb8e2bac1b3da28c5ed5960de09e59a2fe7e63bb73f5a59e57b0430d2"}, + {file = "fonttools-4.41.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a7bbb290d13c6dd718ec2c3db46fe6c5f6811e7ea1e07f145fd8468176398224"}, + {file = "fonttools-4.41.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ec453a45778524f925a8f20fd26a3326f398bfc55d534e37bab470c5e415caa1"}, + {file = "fonttools-4.41.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c2071267deaa6d93cb16288613419679c77220543551cbe61da02c93d92df72f"}, + {file = "fonttools-4.41.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e3334d51f0e37e2c6056e67141b2adabc92613a968797e2571ca8a03bd64773"}, + {file = "fonttools-4.41.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cac73bbef7734e78c60949da11c4903ee5837168e58772371bd42a75872f4f82"}, + {file = "fonttools-4.41.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:edee0900cf0eedb29d17c7876102d6e5a91ee333882b1f5abc83e85b934cadb5"}, + {file = "fonttools-4.41.1-cp310-cp310-win32.whl", hash = "sha256:2a22b2c425c698dcd5d6b0ff0b566e8e9663172118db6fd5f1941f9b8063da9b"}, + {file = "fonttools-4.41.1-cp310-cp310-win_amd64.whl", hash = "sha256:547ab36a799dded58a46fa647266c24d0ed43a66028cd1cd4370b246ad426cac"}, + {file = "fonttools-4.41.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:849ec722bbf7d3501a0e879e57dec1fc54919d31bff3f690af30bb87970f9784"}, + {file = "fonttools-4.41.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:38cdecd8f1fd4bf4daae7fed1b3170dfc1b523388d6664b2204b351820aa78a7"}, + {file = "fonttools-4.41.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ae64303ba670f8959fdaaa30ba0c2dabe75364fdec1caeee596c45d51ca3425"}, + {file = "fonttools-4.41.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f14f3ccea4cc7dd1b277385adf3c3bf18f9860f87eab9c2fb650b0af16800f55"}, + {file = "fonttools-4.41.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:33191f062549e6bb1a4782c22a04ebd37009c09360e2d6686ac5083774d06d95"}, + {file = "fonttools-4.41.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:704bccd69b0abb6fab9f5e4d2b75896afa48b427caa2c7988792a2ffce35b441"}, + {file = "fonttools-4.41.1-cp311-cp311-win32.whl", hash = "sha256:4edc795533421e98f60acee7d28fc8d941ff5ac10f44668c9c3635ad72ae9045"}, + {file = "fonttools-4.41.1-cp311-cp311-win_amd64.whl", hash = "sha256:aaaef294d8e411f0ecb778a0aefd11bb5884c9b8333cc1011bdaf3b58ca4bd75"}, + {file = "fonttools-4.41.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3d1f9471134affc1e3b1b806db6e3e2ad3fa99439e332f1881a474c825101096"}, + {file = "fonttools-4.41.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:59eba8b2e749a1de85760da22333f3d17c42b66e03758855a12a2a542723c6e7"}, + {file = "fonttools-4.41.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9b3cc10dc9e0834b6665fd63ae0c6964c6bc3d7166e9bc84772e0edd09f9fa2"}, + {file = "fonttools-4.41.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2c2964bdc827ba6b8a91dc6de792620be4da3922c4cf0599f36a488c07e2b2"}, + {file = "fonttools-4.41.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7763316111df7b5165529f4183a334aa24c13cdb5375ffa1dc8ce309c8bf4e5c"}, + {file = "fonttools-4.41.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b2d1ee95be42b80d1f002d1ee0a51d7a435ea90d36f1a5ae331be9962ee5a3f1"}, + {file = "fonttools-4.41.1-cp38-cp38-win32.whl", hash = "sha256:f48602c0b3fd79cd83a34c40af565fe6db7ac9085c8823b552e6e751e3a5b8be"}, + {file = "fonttools-4.41.1-cp38-cp38-win_amd64.whl", hash = "sha256:b0938ebbeccf7c80bb9a15e31645cf831572c3a33d5cc69abe436e7000c61b14"}, + {file = "fonttools-4.41.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e5c2b0a95a221838991e2f0e455dec1ca3a8cc9cd54febd68cc64d40fdb83669"}, + {file = "fonttools-4.41.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:891cfc5a83b0307688f78b9bb446f03a7a1ad981690ac8362f50518bc6153975"}, + {file = "fonttools-4.41.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73ef0bb5d60eb02ba4d3a7d23ada32184bd86007cb2de3657cfcb1175325fc83"}, + {file = "fonttools-4.41.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f240d9adf0583ac8fc1646afe7f4ac039022b6f8fa4f1575a2cfa53675360b69"}, + {file = "fonttools-4.41.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bdd729744ae7ecd7f7311ad25d99da4999003dcfe43b436cf3c333d4e68de73d"}, + {file = "fonttools-4.41.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b927e5f466d99c03e6e20961946314b81d6e3490d95865ef88061144d9f62e38"}, + {file = "fonttools-4.41.1-cp39-cp39-win32.whl", hash = "sha256:afce2aeb80be72b4da7dd114f10f04873ff512793d13ce0b19d12b2a4c44c0f0"}, + {file = "fonttools-4.41.1-cp39-cp39-win_amd64.whl", hash = "sha256:1df1b6f4c7c4bc8201eb47f3b268adbf2539943aa43c400f84556557e3e109c0"}, + {file = "fonttools-4.41.1-py3-none-any.whl", hash = "sha256:952cb405f78734cf6466252fec42e206450d1a6715746013f64df9cbd4f896fa"}, + {file = "fonttools-4.41.1.tar.gz", hash = "sha256:e16a9449f21a93909c5be2f5ed5246420f2316e94195dbfccb5238aaa38f9751"}, ] [package.extras] @@ -681,14 +740,14 @@ files = [ [[package]] name = "httpcore" -version = "0.17.1" +version = "0.17.3" description = "A minimal low-level HTTP client." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "httpcore-0.17.1-py3-none-any.whl", hash = "sha256:628e768aaeec1f7effdc6408ba1c3cdbd7487c1fc570f7d66844ec4f003e1ca4"}, - {file = "httpcore-0.17.1.tar.gz", hash = "sha256:caf508597c525f9b8bfff187e270666309f63115af30f7d68b16143a403c8356"}, + {file = "httpcore-0.17.3-py3-none-any.whl", hash = "sha256:c2789b767ddddfa2a5782e3199b2b7f6894540b17b16ec26b2c4d8e103510b87"}, + {file = "httpcore-0.17.3.tar.gz", hash = "sha256:a6f30213335e34c1ade7be6ec7c47f19f50c56db36abef1a9dfa3815b1cb3888"}, ] [package.dependencies] @@ -751,14 +810,14 @@ files = [ [[package]] name = "importlib-metadata" -version = "6.6.0" +version = "6.8.0" description = "Read metadata from Python packages" category = "main" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.6.0-py3-none-any.whl", hash = "sha256:43dd286a2cd8995d5eaef7fee2066340423b818ed3fd70adf0bad5f1fac53fed"}, - {file = "importlib_metadata-6.6.0.tar.gz", hash = "sha256:92501cdf9cc66ebd3e612f1b4f0c0765dfa42f0fa38ffb319b6bd84dd675d705"}, + {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, + {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, ] [package.dependencies] @@ -767,26 +826,26 @@ zipp = ">=0.5" [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] [[package]] name = "importlib-resources" -version = "5.12.0" +version = "6.0.0" description = "Read resources from Python packages" category = "main" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"}, - {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"}, + {file = "importlib_resources-6.0.0-py3-none-any.whl", hash = "sha256:d952faee11004c045f785bb5636e8f885bed30dc3c940d5d42798a2a4541c185"}, + {file = "importlib_resources-6.0.0.tar.gz", hash = "sha256:4cf94875a8368bd89531a756df9a9ebe1f150e0f885030b461237bc7f2d905f2"}, ] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [[package]] name = "iniconfig" @@ -877,36 +936,54 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jsonschema" -version = "4.17.3" +version = "4.18.3" description = "An implementation of JSON Schema validation for Python" category = "main" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "jsonschema-4.17.3-py3-none-any.whl", hash = "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6"}, - {file = "jsonschema-4.17.3.tar.gz", hash = "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d"}, + {file = "jsonschema-4.18.3-py3-none-any.whl", hash = "sha256:aab78b34c2de001c6b692232f08c21a97b436fe18e0b817bf0511046924fceef"}, + {file = "jsonschema-4.18.3.tar.gz", hash = "sha256:64b7104d72efe856bea49ca4af37a14a9eba31b40bb7238179f3803130fd34d9"}, ] [package.dependencies] -attrs = ">=17.4.0" +attrs = ">=22.2.0" importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} +jsonschema-specifications = ">=2023.03.6" pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} -pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" +referencing = ">=0.28.4" +rpds-py = ">=0.7.1" [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 (>=1.11)"] +[[package]] +name = "jsonschema-specifications" +version = "2023.6.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +category = "main" +optional = true +python-versions = ">=3.8" +files = [ + {file = "jsonschema_specifications-2023.6.1-py3-none-any.whl", hash = "sha256:3d2b82663aff01815f744bb5c7887e2121a63399b49b104a3c96145474d091d7"}, + {file = "jsonschema_specifications-2023.6.1.tar.gz", hash = "sha256:ca1c4dd059a9e7b34101cf5b3ab7ff1d18b139f35950d598d629837ef66e8f28"}, +] + +[package.dependencies] +importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} +referencing = ">=0.28.0" + [[package]] name = "jupyter-client" -version = "8.2.0" +version = "8.3.0" description = "Jupyter protocol implementation and client libraries" category = "main" optional = true python-versions = ">=3.8" files = [ - {file = "jupyter_client-8.2.0-py3-none-any.whl", hash = "sha256:b18219aa695d39e2ad570533e0d71fb7881d35a873051054a84ee2a17c4b7389"}, - {file = "jupyter_client-8.2.0.tar.gz", hash = "sha256:9fe233834edd0e6c0aa5f05ca2ab4bdea1842bfd2d8a932878212fc5301ddaf0"}, + {file = "jupyter_client-8.3.0-py3-none-any.whl", hash = "sha256:7441af0c0672edc5d28035e92ba5e32fadcfa8a4e608a434c228836a89df6158"}, + {file = "jupyter_client-8.3.0.tar.gz", hash = "sha256:3af69921fe99617be1670399a0b857ad67275eefcfa291e2c81a160b7b650f5f"}, ] [package.dependencies] @@ -923,14 +1000,14 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt [[package]] name = "jupyter-core" -version = "5.3.0" +version = "5.3.1" description = "Jupyter core package. A base package on which Jupyter projects rely." category = "main" optional = true python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.3.0-py3-none-any.whl", hash = "sha256:d4201af84559bc8c70cead287e1ab94aeef3c512848dde077b7684b54d67730d"}, - {file = "jupyter_core-5.3.0.tar.gz", hash = "sha256:6db75be0c83edbf1b7c9f91ec266a9a24ef945da630f3120e1a0046dc13713fc"}, + {file = "jupyter_core-5.3.1-py3-none-any.whl", hash = "sha256:ae9036db959a71ec1cac33081eeb040a79e681f08ab68b0883e9a676c7a90dce"}, + {file = "jupyter_core-5.3.1.tar.gz", hash = "sha256:5ba5c7938a7f97a6b0481463f7ff0dbac7c15ba48cf46fa4035ca6e838aa1aba"}, ] [package.dependencies] @@ -1050,113 +1127,113 @@ regex = ["regex"] [[package]] name = "markupsafe" -version = "2.1.2" +version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"}, - {file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, + {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, ] [[package]] name = "matplotlib" -version = "3.7.1" +version = "3.7.2" description = "Python plotting package" category = "main" optional = true python-versions = ">=3.8" files = [ - {file = "matplotlib-3.7.1-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:95cbc13c1fc6844ab8812a525bbc237fa1470863ff3dace7352e910519e194b1"}, - {file = "matplotlib-3.7.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:08308bae9e91aca1ec6fd6dda66237eef9f6294ddb17f0d0b3c863169bf82353"}, - {file = "matplotlib-3.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:544764ba51900da4639c0f983b323d288f94f65f4024dc40ecb1542d74dc0500"}, - {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56d94989191de3fcc4e002f93f7f1be5da476385dde410ddafbb70686acf00ea"}, - {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e99bc9e65901bb9a7ce5e7bb24af03675cbd7c70b30ac670aa263240635999a4"}, - {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb7d248c34a341cd4c31a06fd34d64306624c8cd8d0def7abb08792a5abfd556"}, - {file = "matplotlib-3.7.1-cp310-cp310-win32.whl", hash = "sha256:ce463ce590f3825b52e9fe5c19a3c6a69fd7675a39d589e8b5fbe772272b3a24"}, - {file = "matplotlib-3.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3d7bc90727351fb841e4d8ae620d2d86d8ed92b50473cd2b42ce9186104ecbba"}, - {file = "matplotlib-3.7.1-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:770a205966d641627fd5cf9d3cb4b6280a716522cd36b8b284a8eb1581310f61"}, - {file = "matplotlib-3.7.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f67bfdb83a8232cb7a92b869f9355d677bce24485c460b19d01970b64b2ed476"}, - {file = "matplotlib-3.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2bf092f9210e105f414a043b92af583c98f50050559616930d884387d0772aba"}, - {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89768d84187f31717349c6bfadc0e0d8c321e8eb34522acec8a67b1236a66332"}, - {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83111e6388dec67822e2534e13b243cc644c7494a4bb60584edbff91585a83c6"}, - {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a867bf73a7eb808ef2afbca03bcdb785dae09595fbe550e1bab0cd023eba3de0"}, - {file = "matplotlib-3.7.1-cp311-cp311-win32.whl", hash = "sha256:fbdeeb58c0cf0595efe89c05c224e0a502d1aa6a8696e68a73c3efc6bc354304"}, - {file = "matplotlib-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:c0bd19c72ae53e6ab979f0ac6a3fafceb02d2ecafa023c5cca47acd934d10be7"}, - {file = "matplotlib-3.7.1-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:6eb88d87cb2c49af00d3bbc33a003f89fd9f78d318848da029383bfc08ecfbfb"}, - {file = "matplotlib-3.7.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:cf0e4f727534b7b1457898c4f4ae838af1ef87c359b76dcd5330fa31893a3ac7"}, - {file = "matplotlib-3.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:46a561d23b91f30bccfd25429c3c706afe7d73a5cc64ef2dfaf2b2ac47c1a5dc"}, - {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8704726d33e9aa8a6d5215044b8d00804561971163563e6e6591f9dcf64340cc"}, - {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4cf327e98ecf08fcbb82685acaf1939d3338548620ab8dfa02828706402c34de"}, - {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:617f14ae9d53292ece33f45cba8503494ee199a75b44de7717964f70637a36aa"}, - {file = "matplotlib-3.7.1-cp38-cp38-win32.whl", hash = "sha256:7c9a4b2da6fac77bcc41b1ea95fadb314e92508bf5493ceff058e727e7ecf5b0"}, - {file = "matplotlib-3.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:14645aad967684e92fc349493fa10c08a6da514b3d03a5931a1bac26e6792bd1"}, - {file = "matplotlib-3.7.1-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:81a6b377ea444336538638d31fdb39af6be1a043ca5e343fe18d0f17e098770b"}, - {file = "matplotlib-3.7.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:28506a03bd7f3fe59cd3cd4ceb2a8d8a2b1db41afede01f66c42561b9be7b4b7"}, - {file = "matplotlib-3.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8c587963b85ce41e0a8af53b9b2de8dddbf5ece4c34553f7bd9d066148dc719c"}, - {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8bf26ade3ff0f27668989d98c8435ce9327d24cffb7f07d24ef609e33d582439"}, - {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:def58098f96a05f90af7e92fd127d21a287068202aa43b2a93476170ebd99e87"}, - {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f883a22a56a84dba3b588696a2b8a1ab0d2c3d41be53264115c71b0a942d8fdb"}, - {file = "matplotlib-3.7.1-cp39-cp39-win32.whl", hash = "sha256:4f99e1b234c30c1e9714610eb0c6d2f11809c9c78c984a613ae539ea2ad2eb4b"}, - {file = "matplotlib-3.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:3ba2af245e36990facf67fde840a760128ddd71210b2ab6406e640188d69d136"}, - {file = "matplotlib-3.7.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3032884084f541163f295db8a6536e0abb0db464008fadca6c98aaf84ccf4717"}, - {file = "matplotlib-3.7.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a2cb34336110e0ed8bb4f650e817eed61fa064acbefeb3591f1b33e3a84fd96"}, - {file = "matplotlib-3.7.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b867e2f952ed592237a1828f027d332d8ee219ad722345b79a001f49df0936eb"}, - {file = "matplotlib-3.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:57bfb8c8ea253be947ccb2bc2d1bb3862c2bccc662ad1b4626e1f5e004557042"}, - {file = "matplotlib-3.7.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:438196cdf5dc8d39b50a45cb6e3f6274edbcf2254f85fa9b895bf85851c3a613"}, - {file = "matplotlib-3.7.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:21e9cff1a58d42e74d01153360de92b326708fb205250150018a52c70f43c290"}, - {file = "matplotlib-3.7.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75d4725d70b7c03e082bbb8a34639ede17f333d7247f56caceb3801cb6ff703d"}, - {file = "matplotlib-3.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:97cc368a7268141afb5690760921765ed34867ffb9655dd325ed207af85c7529"}, - {file = "matplotlib-3.7.1.tar.gz", hash = "sha256:7b73305f25eab4541bd7ee0b96d87e53ae9c9f1823be5659b806cd85786fe882"}, + {file = "matplotlib-3.7.2-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:2699f7e73a76d4c110f4f25be9d2496d6ab4f17345307738557d345f099e07de"}, + {file = "matplotlib-3.7.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a8035ba590658bae7562786c9cc6ea1a84aa49d3afab157e414c9e2ea74f496d"}, + {file = "matplotlib-3.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2f8e4a49493add46ad4a8c92f63e19d548b2b6ebbed75c6b4c7f46f57d36cdd1"}, + {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71667eb2ccca4c3537d9414b1bc00554cb7f91527c17ee4ec38027201f8f1603"}, + {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:152ee0b569a37630d8628534c628456b28686e085d51394da6b71ef84c4da201"}, + {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:070f8dddd1f5939e60aacb8fa08f19551f4b0140fab16a3669d5cd6e9cb28fc8"}, + {file = "matplotlib-3.7.2-cp310-cp310-win32.whl", hash = "sha256:fdbb46fad4fb47443b5b8ac76904b2e7a66556844f33370861b4788db0f8816a"}, + {file = "matplotlib-3.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:23fb1750934e5f0128f9423db27c474aa32534cec21f7b2153262b066a581fd1"}, + {file = "matplotlib-3.7.2-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:30e1409b857aa8a747c5d4f85f63a79e479835f8dffc52992ac1f3f25837b544"}, + {file = "matplotlib-3.7.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:50e0a55ec74bf2d7a0ebf50ac580a209582c2dd0f7ab51bc270f1b4a0027454e"}, + {file = "matplotlib-3.7.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ac60daa1dc83e8821eed155796b0f7888b6b916cf61d620a4ddd8200ac70cd64"}, + {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:305e3da477dc8607336ba10bac96986d6308d614706cae2efe7d3ffa60465b24"}, + {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c308b255efb9b06b23874236ec0f10f026673ad6515f602027cc8ac7805352d"}, + {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60c521e21031632aa0d87ca5ba0c1c05f3daacadb34c093585a0be6780f698e4"}, + {file = "matplotlib-3.7.2-cp311-cp311-win32.whl", hash = "sha256:26bede320d77e469fdf1bde212de0ec889169b04f7f1179b8930d66f82b30cbc"}, + {file = "matplotlib-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:af4860132c8c05261a5f5f8467f1b269bf1c7c23902d75f2be57c4a7f2394b3e"}, + {file = "matplotlib-3.7.2-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:a1733b8e84e7e40a9853e505fe68cc54339f97273bdfe6f3ed980095f769ddc7"}, + {file = "matplotlib-3.7.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d9881356dc48e58910c53af82b57183879129fa30492be69058c5b0d9fddf391"}, + {file = "matplotlib-3.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f081c03f413f59390a80b3e351cc2b2ea0205839714dbc364519bcf51f4b56ca"}, + {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1cd120fca3407a225168238b790bd5c528f0fafde6172b140a2f3ab7a4ea63e9"}, + {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2c1590b90aa7bd741b54c62b78de05d4186271e34e2377e0289d943b3522273"}, + {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d2ff3c984b8a569bc1383cd468fc06b70d7b59d5c2854ca39f1436ae8394117"}, + {file = "matplotlib-3.7.2-cp38-cp38-win32.whl", hash = "sha256:5dea00b62d28654b71ca92463656d80646675628d0828e08a5f3b57e12869e13"}, + {file = "matplotlib-3.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:0f506a1776ee94f9e131af1ac6efa6e5bc7cb606a3e389b0ccb6e657f60bb676"}, + {file = "matplotlib-3.7.2-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:6515e878f91894c2e4340d81f0911857998ccaf04dbc1bba781e3d89cbf70608"}, + {file = "matplotlib-3.7.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:71f7a8c6b124e904db550f5b9fe483d28b896d4135e45c4ea381ad3b8a0e3256"}, + {file = "matplotlib-3.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12f01b92ecd518e0697da4d97d163b2b3aa55eb3eb4e2c98235b3396d7dad55f"}, + {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7e28d6396563955f7af437894a36bf2b279462239a41028323e04b85179058b"}, + {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbcf59334ff645e6a67cd5f78b4b2cdb76384cdf587fa0d2dc85f634a72e1a3e"}, + {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:318c89edde72ff95d8df67d82aca03861240512994a597a435a1011ba18dbc7f"}, + {file = "matplotlib-3.7.2-cp39-cp39-win32.whl", hash = "sha256:ce55289d5659b5b12b3db4dc9b7075b70cef5631e56530f14b2945e8836f2d20"}, + {file = "matplotlib-3.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:2ecb5be2b2815431c81dc115667e33da0f5a1bcf6143980d180d09a717c4a12e"}, + {file = "matplotlib-3.7.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fdcd28360dbb6203fb5219b1a5658df226ac9bebc2542a9e8f457de959d713d0"}, + {file = "matplotlib-3.7.2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c3cca3e842b11b55b52c6fb8bd6a4088693829acbfcdb3e815fa9b7d5c92c1b"}, + {file = "matplotlib-3.7.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebf577c7a6744e9e1bd3fee45fc74a02710b214f94e2bde344912d85e0c9af7c"}, + {file = "matplotlib-3.7.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:936bba394682049919dda062d33435b3be211dc3dcaa011e09634f060ec878b2"}, + {file = "matplotlib-3.7.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bc221ffbc2150458b1cd71cdd9ddd5bb37962b036e41b8be258280b5b01da1dd"}, + {file = "matplotlib-3.7.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35d74ebdb3f71f112b36c2629cf32323adfbf42679e2751252acd468f5001c07"}, + {file = "matplotlib-3.7.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:717157e61b3a71d3d26ad4e1770dc85156c9af435659a25ee6407dc866cb258d"}, + {file = "matplotlib-3.7.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:20f844d6be031948148ba49605c8b96dfe7d3711d1b63592830d650622458c11"}, + {file = "matplotlib-3.7.2.tar.gz", hash = "sha256:a8cdb91dddb04436bd2f098b8fdf4b81352e68cf4d2c6756fcc414791076569b"}, ] [package.dependencies] @@ -1168,7 +1245,7 @@ kiwisolver = ">=1.0.1" numpy = ">=1.20" packaging = ">=20.0" pillow = ">=6.2.0" -pyparsing = ">=2.3.1" +pyparsing = ">=2.3.1,<3.1" python-dateutil = ">=2.7" [[package]] @@ -1200,14 +1277,14 @@ files = [ [[package]] name = "mistune" -version = "2.0.5" -description = "A sane Markdown parser with useful plugins and renderers" +version = "3.0.1" +description = "A sane and fast Markdown parser with useful plugins and renderers" category = "main" optional = true -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "mistune-2.0.5-py2.py3-none-any.whl", hash = "sha256:bad7f5d431886fcbaf5f758118ecff70d31f75231b34024a1341120340a65ce8"}, - {file = "mistune-2.0.5.tar.gz", hash = "sha256:0246113cb2492db875c6be56974a7c893333bf26cd92891c85f63151cee09d34"}, + {file = "mistune-3.0.1-py3-none-any.whl", hash = "sha256:b9b3e438efbb57c62b5beb5e134dab664800bdf1284a7ee09e8b12b13eb1aac6"}, + {file = "mistune-3.0.1.tar.gz", hash = "sha256:e912116c13aa0944f9dc530db38eb88f6a77087ab128f49f84a48f4c05ea163c"}, ] [[package]] @@ -1285,44 +1362,44 @@ files = [ [[package]] name = "mypy" -version = "1.3.0" +version = "1.4.1" description = "Optional static typing for Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "mypy-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c1eb485cea53f4f5284e5baf92902cd0088b24984f4209e25981cc359d64448d"}, - {file = "mypy-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4c99c3ecf223cf2952638da9cd82793d8f3c0c5fa8b6ae2b2d9ed1e1ff51ba85"}, - {file = "mypy-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:550a8b3a19bb6589679a7c3c31f64312e7ff482a816c96e0cecec9ad3a7564dd"}, - {file = "mypy-1.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cbc07246253b9e3d7d74c9ff948cd0fd7a71afcc2b77c7f0a59c26e9395cb152"}, - {file = "mypy-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:a22435632710a4fcf8acf86cbd0d69f68ac389a3892cb23fbad176d1cddaf228"}, - {file = "mypy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6e33bb8b2613614a33dff70565f4c803f889ebd2f859466e42b46e1df76018dd"}, - {file = "mypy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7d23370d2a6b7a71dc65d1266f9a34e4cde9e8e21511322415db4b26f46f6b8c"}, - {file = "mypy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:658fe7b674769a0770d4b26cb4d6f005e88a442fe82446f020be8e5f5efb2fae"}, - {file = "mypy-1.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6e42d29e324cdda61daaec2336c42512e59c7c375340bd202efa1fe0f7b8f8ca"}, - {file = "mypy-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:d0b6c62206e04061e27009481cb0ec966f7d6172b5b936f3ead3d74f29fe3dcf"}, - {file = "mypy-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:76ec771e2342f1b558c36d49900dfe81d140361dd0d2df6cd71b3db1be155409"}, - {file = "mypy-1.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebc95f8386314272bbc817026f8ce8f4f0d2ef7ae44f947c4664efac9adec929"}, - {file = "mypy-1.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:faff86aa10c1aa4a10e1a301de160f3d8fc8703b88c7e98de46b531ff1276a9a"}, - {file = "mypy-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:8c5979d0deb27e0f4479bee18ea0f83732a893e81b78e62e2dda3e7e518c92ee"}, - {file = "mypy-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c5d2cc54175bab47011b09688b418db71403aefad07cbcd62d44010543fc143f"}, - {file = "mypy-1.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:87df44954c31d86df96c8bd6e80dfcd773473e877ac6176a8e29898bfb3501cb"}, - {file = "mypy-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:473117e310febe632ddf10e745a355714e771ffe534f06db40702775056614c4"}, - {file = "mypy-1.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:74bc9b6e0e79808bf8678d7678b2ae3736ea72d56eede3820bd3849823e7f305"}, - {file = "mypy-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:44797d031a41516fcf5cbfa652265bb994e53e51994c1bd649ffcd0c3a7eccbf"}, - {file = "mypy-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ddae0f39ca146972ff6bb4399f3b2943884a774b8771ea0a8f50e971f5ea5ba8"}, - {file = "mypy-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c4c42c60a8103ead4c1c060ac3cdd3ff01e18fddce6f1016e08939647a0e703"}, - {file = "mypy-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e86c2c6852f62f8f2b24cb7a613ebe8e0c7dc1402c61d36a609174f63e0ff017"}, - {file = "mypy-1.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f9dca1e257d4cc129517779226753dbefb4f2266c4eaad610fc15c6a7e14283e"}, - {file = "mypy-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:95d8d31a7713510685b05fbb18d6ac287a56c8f6554d88c19e73f724a445448a"}, - {file = "mypy-1.3.0-py3-none-any.whl", hash = "sha256:a8763e72d5d9574d45ce5881962bc8e9046bf7b375b0abf031f3e6811732a897"}, - {file = "mypy-1.3.0.tar.gz", hash = "sha256:e1f4d16e296f5135624b34e8fb741eb0eadedca90862405b1f1fde2040b9bd11"}, + {file = "mypy-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:566e72b0cd6598503e48ea610e0052d1b8168e60a46e0bfd34b3acf2d57f96a8"}, + {file = "mypy-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ca637024ca67ab24a7fd6f65d280572c3794665eaf5edcc7e90a866544076878"}, + {file = "mypy-1.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dde1d180cd84f0624c5dcaaa89c89775550a675aff96b5848de78fb11adabcd"}, + {file = "mypy-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8c4d8e89aa7de683e2056a581ce63c46a0c41e31bd2b6d34144e2c80f5ea53dc"}, + {file = "mypy-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:bfdca17c36ae01a21274a3c387a63aa1aafe72bff976522886869ef131b937f1"}, + {file = "mypy-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7549fbf655e5825d787bbc9ecf6028731973f78088fbca3a1f4145c39ef09462"}, + {file = "mypy-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:98324ec3ecf12296e6422939e54763faedbfcc502ea4a4c38502082711867258"}, + {file = "mypy-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:141dedfdbfe8a04142881ff30ce6e6653c9685b354876b12e4fe6c78598b45e2"}, + {file = "mypy-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8207b7105829eca6f3d774f64a904190bb2231de91b8b186d21ffd98005f14a7"}, + {file = "mypy-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:16f0db5b641ba159eff72cff08edc3875f2b62b2fa2bc24f68c1e7a4e8232d01"}, + {file = "mypy-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:470c969bb3f9a9efcedbadcd19a74ffb34a25f8e6b0e02dae7c0e71f8372f97b"}, + {file = "mypy-1.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5952d2d18b79f7dc25e62e014fe5a23eb1a3d2bc66318df8988a01b1a037c5b"}, + {file = "mypy-1.4.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:190b6bab0302cec4e9e6767d3eb66085aef2a1cc98fe04936d8a42ed2ba77bb7"}, + {file = "mypy-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9d40652cc4fe33871ad3338581dca3297ff5f2213d0df345bcfbde5162abf0c9"}, + {file = "mypy-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:01fd2e9f85622d981fd9063bfaef1aed6e336eaacca00892cd2d82801ab7c042"}, + {file = "mypy-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2460a58faeea905aeb1b9b36f5065f2dc9a9c6e4c992a6499a2360c6c74ceca3"}, + {file = "mypy-1.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2746d69a8196698146a3dbe29104f9eb6a2a4d8a27878d92169a6c0b74435b6"}, + {file = "mypy-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ae704dcfaa180ff7c4cfbad23e74321a2b774f92ca77fd94ce1049175a21c97f"}, + {file = "mypy-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:43d24f6437925ce50139a310a64b2ab048cb2d3694c84c71c3f2a1626d8101dc"}, + {file = "mypy-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c482e1246726616088532b5e964e39765b6d1520791348e6c9dc3af25b233828"}, + {file = "mypy-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:43b592511672017f5b1a483527fd2684347fdffc041c9ef53428c8dc530f79a3"}, + {file = "mypy-1.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34a9239d5b3502c17f07fd7c0b2ae6b7dd7d7f6af35fbb5072c6208e76295816"}, + {file = "mypy-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5703097c4936bbb9e9bce41478c8d08edd2865e177dc4c52be759f81ee4dd26c"}, + {file = "mypy-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e02d700ec8d9b1859790c0475df4e4092c7bf3272a4fd2c9f33d87fac4427b8f"}, + {file = "mypy-1.4.1-py3-none-any.whl", hash = "sha256:45d32cec14e7b97af848bddd97d85ea4f0db4d5a149ed9676caa4eb2f7402bb4"}, + {file = "mypy-1.4.1.tar.gz", hash = "sha256:9bbcd9ab8ea1f2e1c8031c21445b511442cc45c89951e49bbf852cbb70755b1b"}, ] [package.dependencies] mypy-extensions = ">=1.0.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = ">=3.10" +typing-extensions = ">=4.1.0" [package.extras] dmypy = ["psutil (>=4.0)"] @@ -1367,33 +1444,33 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= [[package]] name = "nbconvert" -version = "7.4.0" +version = "7.6.0" description = "Converting Jupyter Notebooks" category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "nbconvert-7.4.0-py3-none-any.whl", hash = "sha256:af5064a9db524f9f12f4e8be7f0799524bd5b14c1adea37e34e83c95127cc818"}, - {file = "nbconvert-7.4.0.tar.gz", hash = "sha256:51b6c77b507b177b73f6729dba15676e42c4e92bcb00edc8cc982ee72e7d89d7"}, + {file = "nbconvert-7.6.0-py3-none-any.whl", hash = "sha256:5a445c6794b0791984bc5436608fe2c066cb43c83920c7bc91bde3b765e9a264"}, + {file = "nbconvert-7.6.0.tar.gz", hash = "sha256:24fcf27efdef2b51d7f090cc5ce5a9b178766a55be513c4ebab08c91899ab550"}, ] [package.dependencies] beautifulsoup4 = "*" -bleach = "*" +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,<3" +mistune = ">=2.0.3,<4" nbclient = ">=0.5.0" -nbformat = ">=5.1" +nbformat = ">=5.7" packaging = "*" pandocfilters = ">=1.4.1" pygments = ">=2.4.1" tinycss2 = "*" -traitlets = ">=5.0" +traitlets = ">=5.1" [package.extras] all = ["nbconvert[docs,qtpdf,serve,test,webpdf]"] @@ -1406,14 +1483,14 @@ webpdf = ["pyppeteer (>=1,<1.1)"] [[package]] name = "nbformat" -version = "5.8.0" +version = "5.9.1" description = "The Jupyter Notebook format" category = "main" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "nbformat-5.8.0-py3-none-any.whl", hash = "sha256:d910082bd3e0bffcf07eabf3683ed7dda0727a326c446eeb2922abe102e65162"}, - {file = "nbformat-5.8.0.tar.gz", hash = "sha256:46dac64c781f1c34dfd8acba16547024110348f9fc7eab0f31981c2a3dc48d1f"}, + {file = "nbformat-5.9.1-py3-none-any.whl", hash = "sha256:b7968ebf4811178a4108ee837eae1442e3f054132100f0359219e9ed1ce3ca45"}, + {file = "nbformat-5.9.1.tar.gz", hash = "sha256:3a7f52d040639cbd8a3890218c8b0ffb93211588c57446c90095e32ba5881b5d"}, ] [package.dependencies] @@ -1428,14 +1505,14 @@ test = ["pep440", "pre-commit", "pytest", "testpath"] [[package]] name = "nbsphinx" -version = "0.9.1" +version = "0.9.2" description = "Jupyter Notebook Tools for Sphinx" category = "main" optional = true python-versions = ">=3.6" files = [ - {file = "nbsphinx-0.9.1-py3-none-any.whl", hash = "sha256:c2991a2c497715f52f6c727f8a633e309f097fe9bb794538011ca1ddb6b698fa"}, - {file = "nbsphinx-0.9.1.tar.gz", hash = "sha256:59bbfb7bc676a6647805fb3ca83490338ae7f96c1674a9e5e707f055c272c59d"}, + {file = "nbsphinx-0.9.2-py3-none-any.whl", hash = "sha256:2746680ece5ad3b0e980639d717a5041a1c1aafb416846b72dfaeecc306bc351"}, + {file = "nbsphinx-0.9.2.tar.gz", hash = "sha256:540db7f4066347f23d0650c4ae8e7d85334c69adf749e030af64c12e996ff88e"}, ] [package.dependencies] @@ -1460,59 +1537,59 @@ files = [ [[package]] name = "networkx" -version = "2.8.8" +version = "3.1" description = "Python package for creating and manipulating graphs and networks" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "networkx-2.8.8-py3-none-any.whl", hash = "sha256:e435dfa75b1d7195c7b8378c3859f0445cd88c6b0375c181ed66823a9ceb7524"}, - {file = "networkx-2.8.8.tar.gz", hash = "sha256:230d388117af870fce5647a3c52401fcf753e94720e6ea6b4197a5355648885e"}, + {file = "networkx-3.1-py3-none-any.whl", hash = "sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36"}, + {file = "networkx-3.1.tar.gz", hash = "sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61"}, ] [package.extras] -default = ["matplotlib (>=3.4)", "numpy (>=1.19)", "pandas (>=1.3)", "scipy (>=1.8)"] -developer = ["mypy (>=0.982)", "pre-commit (>=2.20)"] -doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.2)", "pydata-sphinx-theme (>=0.11)", "sphinx (>=5.2)", "sphinx-gallery (>=0.11)", "texext (>=0.6.6)"] -extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.9)", "sympy (>=1.10)"] +default = ["matplotlib (>=3.4)", "numpy (>=1.20)", "pandas (>=1.3)", "scipy (>=1.8)"] +developer = ["mypy (>=1.1)", "pre-commit (>=3.2)"] +doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.13)", "sphinx (>=6.1)", "sphinx-gallery (>=0.12)", "texext (>=0.6.7)"] +extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.10)", "sympy (>=1.10)"] test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] [[package]] name = "numpy" -version = "1.24.3" +version = "1.24.4" description = "Fundamental package for array computing in Python" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "numpy-1.24.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3c1104d3c036fb81ab923f507536daedc718d0ad5a8707c6061cdfd6d184e570"}, - {file = "numpy-1.24.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:202de8f38fc4a45a3eea4b63e2f376e5f2dc64ef0fa692838e31a808520efaf7"}, - {file = "numpy-1.24.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8535303847b89aa6b0f00aa1dc62867b5a32923e4d1681a35b5eef2d9591a463"}, - {file = "numpy-1.24.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d926b52ba1367f9acb76b0df6ed21f0b16a1ad87c6720a1121674e5cf63e2b6"}, - {file = "numpy-1.24.3-cp310-cp310-win32.whl", hash = "sha256:f21c442fdd2805e91799fbe044a7b999b8571bb0ab0f7850d0cb9641a687092b"}, - {file = "numpy-1.24.3-cp310-cp310-win_amd64.whl", hash = "sha256:ab5f23af8c16022663a652d3b25dcdc272ac3f83c3af4c02eb8b824e6b3ab9d7"}, - {file = "numpy-1.24.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9a7721ec204d3a237225db3e194c25268faf92e19338a35f3a224469cb6039a3"}, - {file = "numpy-1.24.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d6cc757de514c00b24ae8cf5c876af2a7c3df189028d68c0cb4eaa9cd5afc2bf"}, - {file = "numpy-1.24.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76e3f4e85fc5d4fd311f6e9b794d0c00e7002ec122be271f2019d63376f1d385"}, - {file = "numpy-1.24.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1d3c026f57ceaad42f8231305d4653d5f05dc6332a730ae5c0bea3513de0950"}, - {file = "numpy-1.24.3-cp311-cp311-win32.whl", hash = "sha256:c91c4afd8abc3908e00a44b2672718905b8611503f7ff87390cc0ac3423fb096"}, - {file = "numpy-1.24.3-cp311-cp311-win_amd64.whl", hash = "sha256:5342cf6aad47943286afa6f1609cad9b4266a05e7f2ec408e2cf7aea7ff69d80"}, - {file = "numpy-1.24.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7776ea65423ca6a15255ba1872d82d207bd1e09f6d0894ee4a64678dd2204078"}, - {file = "numpy-1.24.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ae8d0be48d1b6ed82588934aaaa179875e7dc4f3d84da18d7eae6eb3f06c242c"}, - {file = "numpy-1.24.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecde0f8adef7dfdec993fd54b0f78183051b6580f606111a6d789cd14c61ea0c"}, - {file = "numpy-1.24.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4749e053a29364d3452c034827102ee100986903263e89884922ef01a0a6fd2f"}, - {file = "numpy-1.24.3-cp38-cp38-win32.whl", hash = "sha256:d933fabd8f6a319e8530d0de4fcc2e6a61917e0b0c271fded460032db42a0fe4"}, - {file = "numpy-1.24.3-cp38-cp38-win_amd64.whl", hash = "sha256:56e48aec79ae238f6e4395886b5eaed058abb7231fb3361ddd7bfdf4eed54289"}, - {file = "numpy-1.24.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4719d5aefb5189f50887773699eaf94e7d1e02bf36c1a9d353d9f46703758ca4"}, - {file = "numpy-1.24.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0ec87a7084caa559c36e0a2309e4ecb1baa03b687201d0a847c8b0ed476a7187"}, - {file = "numpy-1.24.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea8282b9bcfe2b5e7d491d0bf7f3e2da29700cec05b49e64d6246923329f2b02"}, - {file = "numpy-1.24.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:210461d87fb02a84ef243cac5e814aad2b7f4be953b32cb53327bb49fd77fbb4"}, - {file = "numpy-1.24.3-cp39-cp39-win32.whl", hash = "sha256:784c6da1a07818491b0ffd63c6bbe5a33deaa0e25a20e1b3ea20cf0e43f8046c"}, - {file = "numpy-1.24.3-cp39-cp39-win_amd64.whl", hash = "sha256:d5036197ecae68d7f491fcdb4df90082b0d4960ca6599ba2659957aafced7c17"}, - {file = "numpy-1.24.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:352ee00c7f8387b44d19f4cada524586f07379c0d49270f87233983bc5087ca0"}, - {file = "numpy-1.24.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7d6acc2e7524c9955e5c903160aa4ea083736fde7e91276b0e5d98e6332812"}, - {file = "numpy-1.24.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:35400e6a8d102fd07c71ed7dcadd9eb62ee9a6e84ec159bd48c28235bbb0f8e4"}, - {file = "numpy-1.24.3.tar.gz", hash = "sha256:ab344f1bf21f140adab8e47fdbc7c35a477dc01408791f8ba00d018dd0bc5155"}, + {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]] @@ -1529,37 +1606,37 @@ files = [ [[package]] name = "pandas" -version = "2.0.1" +version = "2.0.3" description = "Powerful data structures for data analysis, time series, and statistics" category = "main" optional = true python-versions = ">=3.8" files = [ - {file = "pandas-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:70a996a1d2432dadedbb638fe7d921c88b0cc4dd90374eab51bb33dc6c0c2a12"}, - {file = "pandas-2.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:909a72b52175590debbf1d0c9e3e6bce2f1833c80c76d80bd1aa09188be768e5"}, - {file = "pandas-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe7914d8ddb2d54b900cec264c090b88d141a1eed605c9539a187dbc2547f022"}, - {file = "pandas-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a514ae436b23a92366fbad8365807fc0eed15ca219690b3445dcfa33597a5cc"}, - {file = "pandas-2.0.1-cp310-cp310-win32.whl", hash = "sha256:12bd6618e3cc737c5200ecabbbb5eaba8ab645a4b0db508ceeb4004bb10b060e"}, - {file = "pandas-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:2b6fe5f7ce1cba0e74188c8473c9091ead9b293ef0a6794939f8cc7947057abd"}, - {file = "pandas-2.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:00959a04a1d7bbc63d75a768540fb20ecc9e65fd80744c930e23768345a362a7"}, - {file = "pandas-2.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:af2449e9e984dfad39276b885271ba31c5e0204ffd9f21f287a245980b0e4091"}, - {file = "pandas-2.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:910df06feaf9935d05247db6de452f6d59820e432c18a2919a92ffcd98f8f79b"}, - {file = "pandas-2.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fa0067f2419f933101bdc6001bcea1d50812afbd367b30943417d67fbb99678"}, - {file = "pandas-2.0.1-cp311-cp311-win32.whl", hash = "sha256:7b8395d335b08bc8b050590da264f94a439b4770ff16bb51798527f1dd840388"}, - {file = "pandas-2.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:8db5a644d184a38e6ed40feeb12d410d7fcc36648443defe4707022da127fc35"}, - {file = "pandas-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7bbf173d364130334e0159a9a034f573e8b44a05320995127cf676b85fd8ce86"}, - {file = "pandas-2.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6c0853d487b6c868bf107a4b270a823746175b1932093b537b9b76c639fc6f7e"}, - {file = "pandas-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25e23a03f7ad7211ffa30cb181c3e5f6d96a8e4cb22898af462a7333f8a74eb"}, - {file = "pandas-2.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e09a53a4fe8d6ae2149959a2d02e1ef2f4d2ceb285ac48f74b79798507e468b4"}, - {file = "pandas-2.0.1-cp38-cp38-win32.whl", hash = "sha256:a2564629b3a47b6aa303e024e3d84e850d36746f7e804347f64229f8c87416ea"}, - {file = "pandas-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:03e677c6bc9cfb7f93a8b617d44f6091613a5671ef2944818469be7b42114a00"}, - {file = "pandas-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3d099ecaa5b9e977b55cd43cf842ec13b14afa1cfa51b7e1179d90b38c53ce6a"}, - {file = "pandas-2.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a37ee35a3eb6ce523b2c064af6286c45ea1c7ff882d46e10d0945dbda7572753"}, - {file = "pandas-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:320b180d125c3842c5da5889183b9a43da4ebba375ab2ef938f57bf267a3c684"}, - {file = "pandas-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18d22cb9043b6c6804529810f492ab09d638ddf625c5dea8529239607295cb59"}, - {file = "pandas-2.0.1-cp39-cp39-win32.whl", hash = "sha256:90d1d365d77d287063c5e339f49b27bd99ef06d10a8843cf00b1a49326d492c1"}, - {file = "pandas-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:99f7192d8b0e6daf8e0d0fd93baa40056684e4b4aaaef9ea78dff34168e1f2f0"}, - {file = "pandas-2.0.1.tar.gz", hash = "sha256:19b8e5270da32b41ebf12f0e7165efa7024492e9513fb46fb631c5022ae5709d"}, + {file = "pandas-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8"}, + {file = "pandas-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f"}, + {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0c6f76a0f1ba361551f3e6dceaff06bde7514a374aa43e33b588ec10420183"}, + {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba619e410a21d8c387a1ea6e8a0e49bb42216474436245718d7f2e88a2f8d7c0"}, + {file = "pandas-2.0.3-cp310-cp310-win32.whl", hash = "sha256:3ef285093b4fe5058eefd756100a367f27029913760773c8bf1d2d8bebe5d210"}, + {file = "pandas-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:9ee1a69328d5c36c98d8e74db06f4ad518a1840e8ccb94a4ba86920986bb617e"}, + {file = "pandas-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8"}, + {file = "pandas-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26"}, + {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d"}, + {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df"}, + {file = "pandas-2.0.3-cp311-cp311-win32.whl", hash = "sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd"}, + {file = "pandas-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b"}, + {file = "pandas-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4da0d45e7f34c069fe4d522359df7d23badf83abc1d1cef398895822d11061"}, + {file = "pandas-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:32fca2ee1b0d93dd71d979726b12b61faa06aeb93cf77468776287f41ff8fdc5"}, + {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:258d3624b3ae734490e4d63c430256e716f488c4fcb7c8e9bde2d3aa46c29089"}, + {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eae3dc34fa1aa7772dd3fc60270d13ced7346fcbcfee017d3132ec625e23bb0"}, + {file = "pandas-2.0.3-cp38-cp38-win32.whl", hash = "sha256:f3421a7afb1a43f7e38e82e844e2bca9a6d793d66c1a7f9f0ff39a795bbc5e02"}, + {file = "pandas-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:69d7f3884c95da3a31ef82b7618af5710dba95bb885ffab339aad925c3e8ce78"}, + {file = "pandas-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5247fb1ba347c1261cbbf0fcfba4a3121fbb4029d95d9ef4dc45406620b25c8b"}, + {file = "pandas-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81af086f4543c9d8bb128328b5d32e9986e0c84d3ee673a2ac6fb57fd14f755e"}, + {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1994c789bf12a7c5098277fb43836ce090f1073858c10f9220998ac74f37c69b"}, + {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec591c48e29226bcbb316e0c1e9423622bc7a4eaf1ef7c3c9fa1a3981f89641"}, + {file = "pandas-2.0.3-cp39-cp39-win32.whl", hash = "sha256:04dbdbaf2e4d46ca8da896e1805bc04eb85caa9a82e259e8eed00254d5e0c682"}, + {file = "pandas-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc"}, + {file = "pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c"}, ] [package.dependencies] @@ -1573,7 +1650,7 @@ pytz = ">=2020.1" tzdata = ">=2022.1" [package.extras] -all = ["PyQt5 (>=5.15.1)", "SQLAlchemy (>=1.4.16)", "beautifulsoup4 (>=4.9.3)", "bottleneck (>=1.3.2)", "brotlipy (>=0.7.0)", "fastparquet (>=0.6.3)", "fsspec (>=2021.07.0)", "gcsfs (>=2021.07.0)", "html5lib (>=1.1)", "hypothesis (>=6.34.2)", "jinja2 (>=3.0.0)", "lxml (>=4.6.3)", "matplotlib (>=3.6.1)", "numba (>=0.53.1)", "numexpr (>=2.7.3)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pandas-gbq (>=0.15.0)", "psycopg2 (>=2.8.6)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.2)", "pytest (>=7.0.0)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "python-snappy (>=0.6.0)", "pyxlsb (>=1.0.8)", "qtpy (>=2.2.0)", "s3fs (>=2021.08.0)", "scipy (>=1.7.1)", "tables (>=3.6.1)", "tabulate (>=0.8.9)", "xarray (>=0.21.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)", "zstandard (>=0.15.2)"] +all = ["PyQt5 (>=5.15.1)", "SQLAlchemy (>=1.4.16)", "beautifulsoup4 (>=4.9.3)", "bottleneck (>=1.3.2)", "brotlipy (>=0.7.0)", "fastparquet (>=0.6.3)", "fsspec (>=2021.07.0)", "gcsfs (>=2021.07.0)", "html5lib (>=1.1)", "hypothesis (>=6.34.2)", "jinja2 (>=3.0.0)", "lxml (>=4.6.3)", "matplotlib (>=3.6.1)", "numba (>=0.53.1)", "numexpr (>=2.7.3)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pandas-gbq (>=0.15.0)", "psycopg2 (>=2.8.6)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "python-snappy (>=0.6.0)", "pyxlsb (>=1.0.8)", "qtpy (>=2.2.0)", "s3fs (>=2021.08.0)", "scipy (>=1.7.1)", "tables (>=3.6.1)", "tabulate (>=0.8.9)", "xarray (>=0.21.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)", "zstandard (>=0.15.2)"] aws = ["s3fs (>=2021.08.0)"] clipboard = ["PyQt5 (>=5.15.1)", "qtpy (>=2.2.0)"] compression = ["brotlipy (>=0.7.0)", "python-snappy (>=0.6.0)", "zstandard (>=0.15.2)"] @@ -1592,7 +1669,7 @@ plot = ["matplotlib (>=3.6.1)"] postgresql = ["SQLAlchemy (>=1.4.16)", "psycopg2 (>=2.8.6)"] spss = ["pyreadstat (>=1.1.2)"] sql-other = ["SQLAlchemy (>=1.4.16)"] -test = ["hypothesis (>=6.34.2)", "pytest (>=7.0.0)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"] +test = ["hypothesis (>=6.34.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"] xml = ["lxml (>=4.6.3)"] [[package]] @@ -1680,78 +1757,68 @@ files = [ [[package]] name = "pillow" -version = "9.5.0" +version = "10.0.0" description = "Python Imaging Library (Fork)" category = "main" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Pillow-9.5.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:ace6ca218308447b9077c14ea4ef381ba0b67ee78d64046b3f19cf4e1139ad16"}, - {file = "Pillow-9.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3d403753c9d5adc04d4694d35cf0391f0f3d57c8e0030aac09d7678fa8030aa"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ba1b81ee69573fe7124881762bb4cd2e4b6ed9dd28c9c60a632902fe8db8b38"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe7e1c262d3392afcf5071df9afa574544f28eac825284596ac6db56e6d11062"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f36397bf3f7d7c6a3abdea815ecf6fd14e7fcd4418ab24bae01008d8d8ca15e"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:252a03f1bdddce077eff2354c3861bf437c892fb1832f75ce813ee94347aa9b5"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:85ec677246533e27770b0de5cf0f9d6e4ec0c212a1f89dfc941b64b21226009d"}, - {file = "Pillow-9.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b416f03d37d27290cb93597335a2f85ed446731200705b22bb927405320de903"}, - {file = "Pillow-9.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1781a624c229cb35a2ac31cc4a77e28cafc8900733a864870c49bfeedacd106a"}, - {file = "Pillow-9.5.0-cp310-cp310-win32.whl", hash = "sha256:8507eda3cd0608a1f94f58c64817e83ec12fa93a9436938b191b80d9e4c0fc44"}, - {file = "Pillow-9.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:d3c6b54e304c60c4181da1c9dadf83e4a54fd266a99c70ba646a9baa626819eb"}, - {file = "Pillow-9.5.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:7ec6f6ce99dab90b52da21cf0dc519e21095e332ff3b399a357c187b1a5eee32"}, - {file = "Pillow-9.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:560737e70cb9c6255d6dcba3de6578a9e2ec4b573659943a5e7e4af13f298f5c"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96e88745a55b88a7c64fa49bceff363a1a27d9a64e04019c2281049444a571e3"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9c206c29b46cfd343ea7cdfe1232443072bbb270d6a46f59c259460db76779a"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfcc2c53c06f2ccb8976fb5c71d448bdd0a07d26d8e07e321c103416444c7ad1"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:a0f9bb6c80e6efcde93ffc51256d5cfb2155ff8f78292f074f60f9e70b942d99"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8d935f924bbab8f0a9a28404422da8af4904e36d5c33fc6f677e4c4485515625"}, - {file = "Pillow-9.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fed1e1cf6a42577953abbe8e6cf2fe2f566daebde7c34724ec8803c4c0cda579"}, - {file = "Pillow-9.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c1170d6b195555644f0616fd6ed929dfcf6333b8675fcca044ae5ab110ded296"}, - {file = "Pillow-9.5.0-cp311-cp311-win32.whl", hash = "sha256:54f7102ad31a3de5666827526e248c3530b3a33539dbda27c6843d19d72644ec"}, - {file = "Pillow-9.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:cfa4561277f677ecf651e2b22dc43e8f5368b74a25a8f7d1d4a3a243e573f2d4"}, - {file = "Pillow-9.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:965e4a05ef364e7b973dd17fc765f42233415974d773e82144c9bbaaaea5d089"}, - {file = "Pillow-9.5.0-cp312-cp312-win32.whl", hash = "sha256:22baf0c3cf0c7f26e82d6e1adf118027afb325e703922c8dfc1d5d0156bb2eeb"}, - {file = "Pillow-9.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:432b975c009cf649420615388561c0ce7cc31ce9b2e374db659ee4f7d57a1f8b"}, - {file = "Pillow-9.5.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:5d4ebf8e1db4441a55c509c4baa7a0587a0210f7cd25fcfe74dbbce7a4bd1906"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:375f6e5ee9620a271acb6820b3d1e94ffa8e741c0601db4c0c4d3cb0a9c224bf"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99eb6cafb6ba90e436684e08dad8be1637efb71c4f2180ee6b8f940739406e78"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dfaaf10b6172697b9bceb9a3bd7b951819d1ca339a5ef294d1f1ac6d7f63270"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:763782b2e03e45e2c77d7779875f4432e25121ef002a41829d8868700d119392"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:35f6e77122a0c0762268216315bf239cf52b88865bba522999dc38f1c52b9b47"}, - {file = "Pillow-9.5.0-cp37-cp37m-win32.whl", hash = "sha256:aca1c196f407ec7cf04dcbb15d19a43c507a81f7ffc45b690899d6a76ac9fda7"}, - {file = "Pillow-9.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322724c0032af6692456cd6ed554bb85f8149214d97398bb80613b04e33769f6"}, - {file = "Pillow-9.5.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:a0aa9417994d91301056f3d0038af1199eb7adc86e646a36b9e050b06f526597"}, - {file = "Pillow-9.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8286396b351785801a976b1e85ea88e937712ee2c3ac653710a4a57a8da5d9c"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c830a02caeb789633863b466b9de10c015bded434deb3ec87c768e53752ad22a"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fbd359831c1657d69bb81f0db962905ee05e5e9451913b18b831febfe0519082"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8fc330c3370a81bbf3f88557097d1ea26cd8b019d6433aa59f71195f5ddebbf"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:7002d0797a3e4193c7cdee3198d7c14f92c0836d6b4a3f3046a64bd1ce8df2bf"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:229e2c79c00e85989a34b5981a2b67aa079fd08c903f0aaead522a1d68d79e51"}, - {file = "Pillow-9.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9adf58f5d64e474bed00d69bcd86ec4bcaa4123bfa70a65ce72e424bfb88ed96"}, - {file = "Pillow-9.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:662da1f3f89a302cc22faa9f14a262c2e3951f9dbc9617609a47521c69dd9f8f"}, - {file = "Pillow-9.5.0-cp38-cp38-win32.whl", hash = "sha256:6608ff3bf781eee0cd14d0901a2b9cc3d3834516532e3bd673a0a204dc8615fc"}, - {file = "Pillow-9.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:e49eb4e95ff6fd7c0c402508894b1ef0e01b99a44320ba7d8ecbabefddcc5569"}, - {file = "Pillow-9.5.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:482877592e927fd263028c105b36272398e3e1be3269efda09f6ba21fd83ec66"}, - {file = "Pillow-9.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3ded42b9ad70e5f1754fb7c2e2d6465a9c842e41d178f262e08b8c85ed8a1d8e"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c446d2245ba29820d405315083d55299a796695d747efceb5717a8b450324115"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8aca1152d93dcc27dc55395604dcfc55bed5f25ef4c98716a928bacba90d33a3"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:608488bdcbdb4ba7837461442b90ea6f3079397ddc968c31265c1e056964f1ef"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:60037a8db8750e474af7ffc9faa9b5859e6c6d0a50e55c45576bf28be7419705"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:07999f5834bdc404c442146942a2ecadd1cb6292f5229f4ed3b31e0a108746b1"}, - {file = "Pillow-9.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a127ae76092974abfbfa38ca2d12cbeddcdeac0fb71f9627cc1135bedaf9d51a"}, - {file = "Pillow-9.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:489f8389261e5ed43ac8ff7b453162af39c3e8abd730af8363587ba64bb2e865"}, - {file = "Pillow-9.5.0-cp39-cp39-win32.whl", hash = "sha256:9b1af95c3a967bf1da94f253e56b6286b50af23392a886720f563c547e48e964"}, - {file = "Pillow-9.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:77165c4a5e7d5a284f10a6efaa39a0ae8ba839da344f20b111d62cc932fa4e5d"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:833b86a98e0ede388fa29363159c9b1a294b0905b5128baf01db683672f230f5"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aaf305d6d40bd9632198c766fb64f0c1a83ca5b667f16c1e79e1661ab5060140"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0852ddb76d85f127c135b6dd1f0bb88dbb9ee990d2cd9aa9e28526c93e794fba"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:91ec6fe47b5eb5a9968c79ad9ed78c342b1f97a091677ba0e012701add857829"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cb841572862f629b99725ebaec3287fc6d275be9b14443ea746c1dd325053cbd"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:c380b27d041209b849ed246b111b7c166ba36d7933ec6e41175fd15ab9eb1572"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c9af5a3b406a50e313467e3565fc99929717f780164fe6fbb7704edba0cebbe"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5671583eab84af046a397d6d0ba25343c00cd50bce03787948e0fff01d4fd9b1"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:84a6f19ce086c1bf894644b43cd129702f781ba5751ca8572f08aa40ef0ab7b7"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1e7723bd90ef94eda669a3c2c19d549874dd5badaeefabefd26053304abe5799"}, - {file = "Pillow-9.5.0.tar.gz", hash = "sha256:bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1"}, + {file = "Pillow-10.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1f62406a884ae75fb2f818694469519fb685cc7eaff05d3451a9ebe55c646891"}, + {file = "Pillow-10.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d5db32e2a6ccbb3d34d87c87b432959e0db29755727afb37290e10f6e8e62614"}, + {file = "Pillow-10.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edf4392b77bdc81f36e92d3a07a5cd072f90253197f4a52a55a8cec48a12483b"}, + {file = "Pillow-10.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:520f2a520dc040512699f20fa1c363eed506e94248d71f85412b625026f6142c"}, + {file = "Pillow-10.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:8c11160913e3dd06c8ffdb5f233a4f254cb449f4dfc0f8f4549eda9e542c93d1"}, + {file = "Pillow-10.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a74ba0c356aaa3bb8e3eb79606a87669e7ec6444be352870623025d75a14a2bf"}, + {file = "Pillow-10.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5d0dae4cfd56969d23d94dc8e89fb6a217be461c69090768227beb8ed28c0a3"}, + {file = "Pillow-10.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22c10cc517668d44b211717fd9775799ccec4124b9a7f7b3635fc5386e584992"}, + {file = "Pillow-10.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:dffe31a7f47b603318c609f378ebcd57f1554a3a6a8effbc59c3c69f804296de"}, + {file = "Pillow-10.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:9fb218c8a12e51d7ead2a7c9e101a04982237d4855716af2e9499306728fb485"}, + {file = "Pillow-10.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d35e3c8d9b1268cbf5d3670285feb3528f6680420eafe35cccc686b73c1e330f"}, + {file = "Pillow-10.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ed64f9ca2f0a95411e88a4efbd7a29e5ce2cea36072c53dd9d26d9c76f753b3"}, + {file = "Pillow-10.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b6eb5502f45a60a3f411c63187db83a3d3107887ad0d036c13ce836f8a36f1d"}, + {file = "Pillow-10.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:c1fbe7621c167ecaa38ad29643d77a9ce7311583761abf7836e1510c580bf3dd"}, + {file = "Pillow-10.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:cd25d2a9d2b36fcb318882481367956d2cf91329f6892fe5d385c346c0649629"}, + {file = "Pillow-10.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3b08d4cc24f471b2c8ca24ec060abf4bebc6b144cb89cba638c720546b1cf538"}, + {file = "Pillow-10.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d737a602fbd82afd892ca746392401b634e278cb65d55c4b7a8f48e9ef8d008d"}, + {file = "Pillow-10.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3a82c40d706d9aa9734289740ce26460a11aeec2d9c79b7af87bb35f0073c12f"}, + {file = "Pillow-10.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:bc2ec7c7b5d66b8ec9ce9f720dbb5fa4bace0f545acd34870eff4a369b44bf37"}, + {file = "Pillow-10.0.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:d80cf684b541685fccdd84c485b31ce73fc5c9b5d7523bf1394ce134a60c6883"}, + {file = "Pillow-10.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76de421f9c326da8f43d690110f0e79fe3ad1e54be811545d7d91898b4c8493e"}, + {file = "Pillow-10.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81ff539a12457809666fef6624684c008e00ff6bf455b4b89fd00a140eecd640"}, + {file = "Pillow-10.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce543ed15570eedbb85df19b0a1a7314a9c8141a36ce089c0a894adbfccb4568"}, + {file = "Pillow-10.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:685ac03cc4ed5ebc15ad5c23bc555d68a87777586d970c2c3e216619a5476223"}, + {file = "Pillow-10.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d72e2ecc68a942e8cf9739619b7f408cc7b272b279b56b2c83c6123fcfa5cdff"}, + {file = "Pillow-10.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d50b6aec14bc737742ca96e85d6d0a5f9bfbded018264b3b70ff9d8c33485551"}, + {file = "Pillow-10.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:00e65f5e822decd501e374b0650146063fbb30a7264b4d2744bdd7b913e0cab5"}, + {file = "Pillow-10.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:f31f9fdbfecb042d046f9d91270a0ba28368a723302786c0009ee9b9f1f60199"}, + {file = "Pillow-10.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:1ce91b6ec08d866b14413d3f0bbdea7e24dfdc8e59f562bb77bc3fe60b6144ca"}, + {file = "Pillow-10.0.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:349930d6e9c685c089284b013478d6f76e3a534e36ddfa912cde493f235372f3"}, + {file = "Pillow-10.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3a684105f7c32488f7153905a4e3015a3b6c7182e106fe3c37fbb5ef3e6994c3"}, + {file = "Pillow-10.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4f69b3700201b80bb82c3a97d5e9254084f6dd5fb5b16fc1a7b974260f89f43"}, + {file = "Pillow-10.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f07ea8d2f827d7d2a49ecf1639ec02d75ffd1b88dcc5b3a61bbb37a8759ad8d"}, + {file = "Pillow-10.0.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:040586f7d37b34547153fa383f7f9aed68b738992380ac911447bb78f2abe530"}, + {file = "Pillow-10.0.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:f88a0b92277de8e3ca715a0d79d68dc82807457dae3ab8699c758f07c20b3c51"}, + {file = "Pillow-10.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c7cf14a27b0d6adfaebb3ae4153f1e516df54e47e42dcc073d7b3d76111a8d86"}, + {file = "Pillow-10.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3400aae60685b06bb96f99a21e1ada7bc7a413d5f49bce739828ecd9391bb8f7"}, + {file = "Pillow-10.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:dbc02381779d412145331789b40cc7b11fdf449e5d94f6bc0b080db0a56ea3f0"}, + {file = "Pillow-10.0.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:9211e7ad69d7c9401cfc0e23d49b69ca65ddd898976d660a2fa5904e3d7a9baa"}, + {file = "Pillow-10.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:faaf07ea35355b01a35cb442dd950d8f1bb5b040a7787791a535de13db15ed90"}, + {file = "Pillow-10.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9f72a021fbb792ce98306ffb0c348b3c9cb967dce0f12a49aa4c3d3fdefa967"}, + {file = "Pillow-10.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f7c16705f44e0504a3a2a14197c1f0b32a95731d251777dcb060aa83022cb2d"}, + {file = "Pillow-10.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:76edb0a1fa2b4745fb0c99fb9fb98f8b180a1bbceb8be49b087e0b21867e77d3"}, + {file = "Pillow-10.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:368ab3dfb5f49e312231b6f27b8820c823652b7cd29cfbd34090565a015e99ba"}, + {file = "Pillow-10.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:608bfdee0d57cf297d32bcbb3c728dc1da0907519d1784962c5f0c68bb93e5a3"}, + {file = "Pillow-10.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5c6e3df6bdd396749bafd45314871b3d0af81ff935b2d188385e970052091017"}, + {file = "Pillow-10.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:7be600823e4c8631b74e4a0d38384c73f680e6105a7d3c6824fcf226c178c7e6"}, + {file = "Pillow-10.0.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:92be919bbc9f7d09f7ae343c38f5bb21c973d2576c1d45600fce4b74bafa7ac0"}, + {file = "Pillow-10.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8182b523b2289f7c415f589118228d30ac8c355baa2f3194ced084dac2dbba"}, + {file = "Pillow-10.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:38250a349b6b390ee6047a62c086d3817ac69022c127f8a5dc058c31ccef17f3"}, + {file = "Pillow-10.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:88af2003543cc40c80f6fca01411892ec52b11021b3dc22ec3bc9d5afd1c5334"}, + {file = "Pillow-10.0.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:c189af0545965fa8d3b9613cfdb0cd37f9d71349e0f7750e1fd704648d475ed2"}, + {file = "Pillow-10.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce7b031a6fc11365970e6a5686d7ba8c63e4c1cf1ea143811acbb524295eabed"}, + {file = "Pillow-10.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:db24668940f82321e746773a4bc617bfac06ec831e5c88b643f91f122a785684"}, + {file = "Pillow-10.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:efe8c0681042536e0d06c11f48cebe759707c9e9abf880ee213541c5b46c5bf3"}, + {file = "Pillow-10.0.0.tar.gz", hash = "sha256:9c82b5b3e043c7af0d95792d0d20ccf68f61a1fec6b3530e718b688422727396"}, ] [package.extras] @@ -1772,30 +1839,30 @@ files = [ [[package]] name = "platformdirs" -version = "3.5.1" +version = "3.8.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.5.1-py3-none-any.whl", hash = "sha256:e2378146f1964972c03c085bb5662ae80b2b8c06226c54b2ff4aa9483e8a13a5"}, - {file = "platformdirs-3.5.1.tar.gz", hash = "sha256:412dae91f52a6f84830f39a8078cecd0e866cb72294a5c66808e74d5e88d251f"}, + {file = "platformdirs-3.8.1-py3-none-any.whl", hash = "sha256:cec7b889196b9144d088e4c57d9ceef7374f6c39694ad1577a0aab50d27ea28c"}, + {file = "platformdirs-3.8.1.tar.gz", hash = "sha256:f87ca4fcff7d2b0f81c6a748a77973d7af0f4d526f98f308477c3c436c74d528"}, ] [package.extras] -docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.2.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] +docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)"] [[package]] name = "pluggy" -version = "1.0.0" +version = "1.2.0" description = "plugin and hook calling mechanisms for python" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, + {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"}, + {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"}, ] [package.extras] @@ -1804,14 +1871,14 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "plumbum" -version = "1.8.1" +version = "1.8.2" description = "Plumbum: shell combinators library" category = "main" optional = true python-versions = ">=3.6" files = [ - {file = "plumbum-1.8.1-py3-none-any.whl", hash = "sha256:07cf5f50bf739e91fb83ce304fc66b41dbd12db4d4546ff5266087dd9d148314"}, - {file = "plumbum-1.8.1.tar.gz", hash = "sha256:88a40fc69247d0cd585e21ca169b3820f46c484535102e16455d2202727bb37b"}, + {file = "plumbum-1.8.2-py3-none-any.whl", hash = "sha256:3ad9e5f56c6ec98f6f7988f7ea8b52159662ea9e915868d369dbccbfca0e367e"}, + {file = "plumbum-1.8.2.tar.gz", hash = "sha256:9e6dc032f4af952665f32f3206567bc23b7858b1413611afe603a3f8ad9bfd75"}, ] [package.dependencies] @@ -1836,14 +1903,14 @@ files = [ [[package]] name = "prompt-toolkit" -version = "3.0.38" +version = "3.0.39" description = "Library for building powerful interactive command lines in Python" category = "main" optional = true python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.38-py3-none-any.whl", hash = "sha256:45ea77a2f7c60418850331366c81cf6b5b9cf4c7fd34616f733c5427e6abbb1f"}, - {file = "prompt_toolkit-3.0.38.tar.gz", hash = "sha256:23ac5d50538a9a38c8bde05fecb47d0b403ecd0662857a86f886f798563d5b9b"}, + {file = "prompt_toolkit-3.0.39-py3-none-any.whl", hash = "sha256:9dffbe1d8acf91e3de75f3b544e4842382fc06c6babe903ac9acb74dc6e08d88"}, + {file = "prompt_toolkit-3.0.39.tar.gz", hash = "sha256:04505ade687dc26dc4284b1ad19a83be2f2afe83e7a828ace0c72f3a1df72aac"}, ] [package.dependencies] @@ -1865,7 +1932,7 @@ files = [ name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "main" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -1899,48 +1966,48 @@ files = [ [[package]] name = "pydantic" -version = "1.10.7" +version = "1.10.11" description = "Data validation and settings management using python type hints" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic-1.10.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e79e999e539872e903767c417c897e729e015872040e56b96e67968c3b918b2d"}, - {file = "pydantic-1.10.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:01aea3a42c13f2602b7ecbbea484a98169fb568ebd9e247593ea05f01b884b2e"}, - {file = "pydantic-1.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:516f1ed9bc2406a0467dd777afc636c7091d71f214d5e413d64fef45174cfc7a"}, - {file = "pydantic-1.10.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae150a63564929c675d7f2303008d88426a0add46efd76c3fc797cd71cb1b46f"}, - {file = "pydantic-1.10.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ecbbc51391248116c0a055899e6c3e7ffbb11fb5e2a4cd6f2d0b93272118a209"}, - {file = "pydantic-1.10.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f4a2b50e2b03d5776e7f21af73e2070e1b5c0d0df255a827e7c632962f8315af"}, - {file = "pydantic-1.10.7-cp310-cp310-win_amd64.whl", hash = "sha256:a7cd2251439988b413cb0a985c4ed82b6c6aac382dbaff53ae03c4b23a70e80a"}, - {file = "pydantic-1.10.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:68792151e174a4aa9e9fc1b4e653e65a354a2fa0fed169f7b3d09902ad2cb6f1"}, - {file = "pydantic-1.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe2507b8ef209da71b6fb5f4e597b50c5a34b78d7e857c4f8f3115effaef5fe"}, - {file = "pydantic-1.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10a86d8c8db68086f1e30a530f7d5f83eb0685e632e411dbbcf2d5c0150e8dcd"}, - {file = "pydantic-1.10.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d75ae19d2a3dbb146b6f324031c24f8a3f52ff5d6a9f22f0683694b3afcb16fb"}, - {file = "pydantic-1.10.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:464855a7ff7f2cc2cf537ecc421291b9132aa9c79aef44e917ad711b4a93163b"}, - {file = "pydantic-1.10.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:193924c563fae6ddcb71d3f06fa153866423ac1b793a47936656e806b64e24ca"}, - {file = "pydantic-1.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:b4a849d10f211389502059c33332e91327bc154acc1845f375a99eca3afa802d"}, - {file = "pydantic-1.10.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cc1dde4e50a5fc1336ee0581c1612215bc64ed6d28d2c7c6f25d2fe3e7c3e918"}, - {file = "pydantic-1.10.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0cfe895a504c060e5d36b287ee696e2fdad02d89e0d895f83037245218a87fe"}, - {file = "pydantic-1.10.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:670bb4683ad1e48b0ecb06f0cfe2178dcf74ff27921cdf1606e527d2617a81ee"}, - {file = "pydantic-1.10.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:950ce33857841f9a337ce07ddf46bc84e1c4946d2a3bba18f8280297157a3fd1"}, - {file = "pydantic-1.10.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c15582f9055fbc1bfe50266a19771bbbef33dd28c45e78afbe1996fd70966c2a"}, - {file = "pydantic-1.10.7-cp37-cp37m-win_amd64.whl", hash = "sha256:82dffb306dd20bd5268fd6379bc4bfe75242a9c2b79fec58e1041fbbdb1f7914"}, - {file = "pydantic-1.10.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c7f51861d73e8b9ddcb9916ae7ac39fb52761d9ea0df41128e81e2ba42886cd"}, - {file = "pydantic-1.10.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6434b49c0b03a51021ade5c4daa7d70c98f7a79e95b551201fff682fc1661245"}, - {file = "pydantic-1.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64d34ab766fa056df49013bb6e79921a0265204c071984e75a09cbceacbbdd5d"}, - {file = "pydantic-1.10.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:701daea9ffe9d26f97b52f1d157e0d4121644f0fcf80b443248434958fd03dc3"}, - {file = "pydantic-1.10.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cf135c46099ff3f919d2150a948ce94b9ce545598ef2c6c7bf55dca98a304b52"}, - {file = "pydantic-1.10.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0f85904f73161817b80781cc150f8b906d521fa11e3cdabae19a581c3606209"}, - {file = "pydantic-1.10.7-cp38-cp38-win_amd64.whl", hash = "sha256:9f6f0fd68d73257ad6685419478c5aece46432f4bdd8d32c7345f1986496171e"}, - {file = "pydantic-1.10.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c230c0d8a322276d6e7b88c3f7ce885f9ed16e0910354510e0bae84d54991143"}, - {file = "pydantic-1.10.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:976cae77ba6a49d80f461fd8bba183ff7ba79f44aa5cfa82f1346b5626542f8e"}, - {file = "pydantic-1.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d45fc99d64af9aaf7e308054a0067fdcd87ffe974f2442312372dfa66e1001d"}, - {file = "pydantic-1.10.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d2a5ebb48958754d386195fe9e9c5106f11275867051bf017a8059410e9abf1f"}, - {file = "pydantic-1.10.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:abfb7d4a7cd5cc4e1d1887c43503a7c5dd608eadf8bc615413fc498d3e4645cd"}, - {file = "pydantic-1.10.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:80b1fab4deb08a8292d15e43a6edccdffa5377a36a4597bb545b93e79c5ff0a5"}, - {file = "pydantic-1.10.7-cp39-cp39-win_amd64.whl", hash = "sha256:d71e69699498b020ea198468e2480a2f1e7433e32a3a99760058c6520e2bea7e"}, - {file = "pydantic-1.10.7-py3-none-any.whl", hash = "sha256:0cd181f1d0b1d00e2b705f1bf1ac7799a2d938cce3376b8007df62b29be3c2c6"}, - {file = "pydantic-1.10.7.tar.gz", hash = "sha256:cfc83c0678b6ba51b0532bea66860617c4cd4251ecf76e9846fa5a9f3454e97e"}, + {file = "pydantic-1.10.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ff44c5e89315b15ff1f7fdaf9853770b810936d6b01a7bcecaa227d2f8fe444f"}, + {file = "pydantic-1.10.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a6c098d4ab5e2d5b3984d3cb2527e2d6099d3de85630c8934efcfdc348a9760e"}, + {file = "pydantic-1.10.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16928fdc9cb273c6af00d9d5045434c39afba5f42325fb990add2c241402d151"}, + {file = "pydantic-1.10.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0588788a9a85f3e5e9ebca14211a496409cb3deca5b6971ff37c556d581854e7"}, + {file = "pydantic-1.10.11-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e9baf78b31da2dc3d3f346ef18e58ec5f12f5aaa17ac517e2ffd026a92a87588"}, + {file = "pydantic-1.10.11-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:373c0840f5c2b5b1ccadd9286782852b901055998136287828731868027a724f"}, + {file = "pydantic-1.10.11-cp310-cp310-win_amd64.whl", hash = "sha256:c3339a46bbe6013ef7bdd2844679bfe500347ac5742cd4019a88312aa58a9847"}, + {file = "pydantic-1.10.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:08a6c32e1c3809fbc49debb96bf833164f3438b3696abf0fbeceb417d123e6eb"}, + {file = "pydantic-1.10.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a451ccab49971af043ec4e0d207cbc8cbe53dbf148ef9f19599024076fe9c25b"}, + {file = "pydantic-1.10.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b02d24f7b2b365fed586ed73582c20f353a4c50e4be9ba2c57ab96f8091ddae"}, + {file = "pydantic-1.10.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f34739a89260dfa420aa3cbd069fbcc794b25bbe5c0a214f8fb29e363484b66"}, + {file = "pydantic-1.10.11-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e297897eb4bebde985f72a46a7552a7556a3dd11e7f76acda0c1093e3dbcf216"}, + {file = "pydantic-1.10.11-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d185819a7a059550ecb85d5134e7d40f2565f3dd94cfd870132c5f91a89cf58c"}, + {file = "pydantic-1.10.11-cp311-cp311-win_amd64.whl", hash = "sha256:4400015f15c9b464c9db2d5d951b6a780102cfa5870f2c036d37c23b56f7fc1b"}, + {file = "pydantic-1.10.11-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2417de68290434461a266271fc57274a138510dca19982336639484c73a07af6"}, + {file = "pydantic-1.10.11-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:331c031ba1554b974c98679bd0780d89670d6fd6f53f5d70b10bdc9addee1713"}, + {file = "pydantic-1.10.11-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8268a735a14c308923e8958363e3a3404f6834bb98c11f5ab43251a4e410170c"}, + {file = "pydantic-1.10.11-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:44e51ba599c3ef227e168424e220cd3e544288c57829520dc90ea9cb190c3248"}, + {file = "pydantic-1.10.11-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d7781f1d13b19700b7949c5a639c764a077cbbdd4322ed505b449d3ca8edcb36"}, + {file = "pydantic-1.10.11-cp37-cp37m-win_amd64.whl", hash = "sha256:7522a7666157aa22b812ce14c827574ddccc94f361237ca6ea8bb0d5c38f1629"}, + {file = "pydantic-1.10.11-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bc64eab9b19cd794a380179ac0e6752335e9555d214cfcb755820333c0784cb3"}, + {file = "pydantic-1.10.11-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8dc77064471780262b6a68fe67e013298d130414d5aaf9b562c33987dbd2cf4f"}, + {file = "pydantic-1.10.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe429898f2c9dd209bd0632a606bddc06f8bce081bbd03d1c775a45886e2c1cb"}, + {file = "pydantic-1.10.11-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:192c608ad002a748e4a0bed2ddbcd98f9b56df50a7c24d9a931a8c5dd053bd3d"}, + {file = "pydantic-1.10.11-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ef55392ec4bb5721f4ded1096241e4b7151ba6d50a50a80a2526c854f42e6a2f"}, + {file = "pydantic-1.10.11-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:41e0bb6efe86281623abbeeb0be64eab740c865388ee934cd3e6a358784aca6e"}, + {file = "pydantic-1.10.11-cp38-cp38-win_amd64.whl", hash = "sha256:265a60da42f9f27e0b1014eab8acd3e53bd0bad5c5b4884e98a55f8f596b2c19"}, + {file = "pydantic-1.10.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:469adf96c8e2c2bbfa655fc7735a2a82f4c543d9fee97bd113a7fb509bf5e622"}, + {file = "pydantic-1.10.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e6cbfbd010b14c8a905a7b10f9fe090068d1744d46f9e0c021db28daeb8b6de1"}, + {file = "pydantic-1.10.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abade85268cc92dff86d6effcd917893130f0ff516f3d637f50dadc22ae93999"}, + {file = "pydantic-1.10.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e9738b0f2e6c70f44ee0de53f2089d6002b10c33264abee07bdb5c7f03038303"}, + {file = "pydantic-1.10.11-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:787cf23e5a0cde753f2eabac1b2e73ae3844eb873fd1f5bdbff3048d8dbb7604"}, + {file = "pydantic-1.10.11-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:174899023337b9fc685ac8adaa7b047050616136ccd30e9070627c1aaab53a13"}, + {file = "pydantic-1.10.11-cp39-cp39-win_amd64.whl", hash = "sha256:1954f8778489a04b245a1e7b8b22a9d3ea8ef49337285693cf6959e4b757535e"}, + {file = "pydantic-1.10.11-py3-none-any.whl", hash = "sha256:008c5e266c8aada206d0627a011504e14268a62091450210eda7c07fabe6963e"}, + {file = "pydantic-1.10.11.tar.gz", hash = "sha256:f66d479cf7eb331372c470614be6511eae96f1f120344c25f3f9bb59fb1b5528"}, ] [package.dependencies] @@ -1992,43 +2059,6 @@ files = [ [package.extras] diagrams = ["jinja2", "railroad-diagrams"] -[[package]] -name = "pyrsistent" -version = "0.19.3" -description = "Persistent/Functional/Immutable data structures" -category = "main" -optional = true -python-versions = ">=3.7" -files = [ - {file = "pyrsistent-0.19.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a"}, - {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64"}, - {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf"}, - {file = "pyrsistent-0.19.3-cp310-cp310-win32.whl", hash = "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a"}, - {file = "pyrsistent-0.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da"}, - {file = "pyrsistent-0.19.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9"}, - {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393"}, - {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19"}, - {file = "pyrsistent-0.19.3-cp311-cp311-win32.whl", hash = "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3"}, - {file = "pyrsistent-0.19.3-cp311-cp311-win_amd64.whl", hash = "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-win32.whl", hash = "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-win_amd64.whl", hash = "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b"}, - {file = "pyrsistent-0.19.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8"}, - {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a"}, - {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c"}, - {file = "pyrsistent-0.19.3-cp38-cp38-win32.whl", hash = "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c"}, - {file = "pyrsistent-0.19.3-cp38-cp38-win_amd64.whl", hash = "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7"}, - {file = "pyrsistent-0.19.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc"}, - {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2"}, - {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3"}, - {file = "pyrsistent-0.19.3-cp39-cp39-win32.whl", hash = "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2"}, - {file = "pyrsistent-0.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98"}, - {file = "pyrsistent-0.19.3-py3-none-any.whl", hash = "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64"}, - {file = "pyrsistent-0.19.3.tar.gz", hash = "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440"}, -] - [[package]] name = "pytest" version = "6.2.5" @@ -2108,14 +2138,14 @@ pytest = ">=3.0.0" [[package]] name = "pytest-mock" -version = "3.10.0" +version = "3.11.1" description = "Thin-wrapper around the mock package for easier use with pytest" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-mock-3.10.0.tar.gz", hash = "sha256:fbbdb085ef7c252a326fd8cdcac0aa3b1333d8811f131bdcc701002e1be7ed4f"}, - {file = "pytest_mock-3.10.0-py3-none-any.whl", hash = "sha256:f4c973eeae0282963eb293eb173ce91b091a79c1334455acfac9ddee8a1c784b"}, + {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"}, + {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"}, ] [package.dependencies] @@ -2296,89 +2326,89 @@ files = [ [[package]] name = "pyzmq" -version = "25.0.2" +version = "25.1.0" description = "Python bindings for 0MQ" category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "pyzmq-25.0.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ac178e666c097c8d3deb5097b58cd1316092fc43e8ef5b5fdb259b51da7e7315"}, - {file = "pyzmq-25.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:659e62e1cbb063151c52f5b01a38e1df6b54feccfa3e2509d44c35ca6d7962ee"}, - {file = "pyzmq-25.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8280ada89010735a12b968ec3ea9a468ac2e04fddcc1cede59cb7f5178783b9c"}, - {file = "pyzmq-25.0.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9b5eeb5278a8a636bb0abdd9ff5076bcbb836cd2302565df53ff1fa7d106d54"}, - {file = "pyzmq-25.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a2e5fe42dfe6b73ca120b97ac9f34bfa8414feb15e00e37415dbd51cf227ef6"}, - {file = "pyzmq-25.0.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:827bf60e749e78acb408a6c5af6688efbc9993e44ecc792b036ec2f4b4acf485"}, - {file = "pyzmq-25.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7b504ae43d37e282301da586529e2ded8b36d4ee2cd5e6db4386724ddeaa6bbc"}, - {file = "pyzmq-25.0.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cb1f69a0a2a2b1aae8412979dd6293cc6bcddd4439bf07e4758d864ddb112354"}, - {file = "pyzmq-25.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2b9c9cc965cdf28381e36da525dcb89fc1571d9c54800fdcd73e3f73a2fc29bd"}, - {file = "pyzmq-25.0.2-cp310-cp310-win32.whl", hash = "sha256:24abbfdbb75ac5039205e72d6c75f10fc39d925f2df8ff21ebc74179488ebfca"}, - {file = "pyzmq-25.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6a821a506822fac55d2df2085a52530f68ab15ceed12d63539adc32bd4410f6e"}, - {file = "pyzmq-25.0.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:9af0bb0277e92f41af35e991c242c9c71920169d6aa53ade7e444f338f4c8128"}, - {file = "pyzmq-25.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:54a96cf77684a3a537b76acfa7237b1e79a8f8d14e7f00e0171a94b346c5293e"}, - {file = "pyzmq-25.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88649b19ede1cab03b96b66c364cbbf17c953615cdbc844f7f6e5f14c5e5261c"}, - {file = "pyzmq-25.0.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:715cff7644a80a7795953c11b067a75f16eb9fc695a5a53316891ebee7f3c9d5"}, - {file = "pyzmq-25.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:312b3f0f066b4f1d17383aae509bacf833ccaf591184a1f3c7a1661c085063ae"}, - {file = "pyzmq-25.0.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d488c5c8630f7e782e800869f82744c3aca4aca62c63232e5d8c490d3d66956a"}, - {file = "pyzmq-25.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:38d9f78d69bcdeec0c11e0feb3bc70f36f9b8c44fc06e5d06d91dc0a21b453c7"}, - {file = "pyzmq-25.0.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3059a6a534c910e1d5d068df42f60d434f79e6cc6285aa469b384fa921f78cf8"}, - {file = "pyzmq-25.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6526d097b75192f228c09d48420854d53dfbc7abbb41b0e26f363ccb26fbc177"}, - {file = "pyzmq-25.0.2-cp311-cp311-win32.whl", hash = "sha256:5c5fbb229e40a89a2fe73d0c1181916f31e30f253cb2d6d91bea7927c2e18413"}, - {file = "pyzmq-25.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:ed15e3a2c3c2398e6ae5ce86d6a31b452dfd6ad4cd5d312596b30929c4b6e182"}, - {file = "pyzmq-25.0.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:032f5c8483c85bf9c9ca0593a11c7c749d734ce68d435e38c3f72e759b98b3c9"}, - {file = "pyzmq-25.0.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:374b55516393bfd4d7a7daa6c3b36d6dd6a31ff9d2adad0838cd6a203125e714"}, - {file = "pyzmq-25.0.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:08bfcc21b5997a9be4fefa405341320d8e7f19b4d684fb9c0580255c5bd6d695"}, - {file = "pyzmq-25.0.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1a843d26a8da1b752c74bc019c7b20e6791ee813cd6877449e6a1415589d22ff"}, - {file = "pyzmq-25.0.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:b48616a09d7df9dbae2f45a0256eee7b794b903ddc6d8657a9948669b345f220"}, - {file = "pyzmq-25.0.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d4427b4a136e3b7f85516c76dd2e0756c22eec4026afb76ca1397152b0ca8145"}, - {file = "pyzmq-25.0.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:26b0358e8933990502f4513c991c9935b6c06af01787a36d133b7c39b1df37fa"}, - {file = "pyzmq-25.0.2-cp36-cp36m-win32.whl", hash = "sha256:c8fedc3ccd62c6b77dfe6f43802057a803a411ee96f14e946f4a76ec4ed0e117"}, - {file = "pyzmq-25.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:2da6813b7995b6b1d1307329c73d3e3be2fd2d78e19acfc4eff2e27262732388"}, - {file = "pyzmq-25.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a35960c8b2f63e4ef67fd6731851030df68e4b617a6715dd11b4b10312d19fef"}, - {file = "pyzmq-25.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eef2a0b880ab40aca5a878933376cb6c1ec483fba72f7f34e015c0f675c90b20"}, - {file = "pyzmq-25.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:85762712b74c7bd18e340c3639d1bf2f23735a998d63f46bb6584d904b5e401d"}, - {file = "pyzmq-25.0.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:64812f29d6eee565e129ca14b0c785744bfff679a4727137484101b34602d1a7"}, - {file = "pyzmq-25.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:510d8e55b3a7cd13f8d3e9121edf0a8730b87d925d25298bace29a7e7bc82810"}, - {file = "pyzmq-25.0.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b164cc3c8acb3d102e311f2eb6f3c305865ecb377e56adc015cb51f721f1dda6"}, - {file = "pyzmq-25.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:28fdb9224a258134784a9cf009b59265a9dde79582fb750d4e88a6bcbc6fa3dc"}, - {file = "pyzmq-25.0.2-cp37-cp37m-win32.whl", hash = "sha256:dd771a440effa1c36d3523bc6ba4e54ff5d2e54b4adcc1e060d8f3ca3721d228"}, - {file = "pyzmq-25.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:9bdc40efb679b9dcc39c06d25629e55581e4c4f7870a5e88db4f1c51ce25e20d"}, - {file = "pyzmq-25.0.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:1f82906a2d8e4ee310f30487b165e7cc8ed09c009e4502da67178b03083c4ce0"}, - {file = "pyzmq-25.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:21ec0bf4831988af43c8d66ba3ccd81af2c5e793e1bf6790eb2d50e27b3c570a"}, - {file = "pyzmq-25.0.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abbce982a17c88d2312ec2cf7673985d444f1beaac6e8189424e0a0e0448dbb3"}, - {file = "pyzmq-25.0.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9e1d2f2d86fc75ed7f8845a992c5f6f1ab5db99747fb0d78b5e4046d041164d2"}, - {file = "pyzmq-25.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2e92ff20ad5d13266bc999a29ed29a3b5b101c21fdf4b2cf420c09db9fb690e"}, - {file = "pyzmq-25.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edbbf06cc2719889470a8d2bf5072bb00f423e12de0eb9ffec946c2c9748e149"}, - {file = "pyzmq-25.0.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:77942243ff4d14d90c11b2afd8ee6c039b45a0be4e53fb6fa7f5e4fd0b59da39"}, - {file = "pyzmq-25.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ab046e9cb902d1f62c9cc0eca055b1d11108bdc271caf7c2171487298f229b56"}, - {file = "pyzmq-25.0.2-cp38-cp38-win32.whl", hash = "sha256:ad761cfbe477236802a7ab2c080d268c95e784fe30cafa7e055aacd1ca877eb0"}, - {file = "pyzmq-25.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:8560756318ec7c4c49d2c341012167e704b5a46d9034905853c3d1ade4f55bee"}, - {file = "pyzmq-25.0.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:ab2c056ac503f25a63f6c8c6771373e2a711b98b304614151dfb552d3d6c81f6"}, - {file = "pyzmq-25.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cca8524b61c0eaaa3505382dc9b9a3bc8165f1d6c010fdd1452c224225a26689"}, - {file = "pyzmq-25.0.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cfb9f7eae02d3ac42fbedad30006b7407c984a0eb4189a1322241a20944d61e5"}, - {file = "pyzmq-25.0.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5eaeae038c68748082137d6896d5c4db7927e9349237ded08ee1bbd94f7361c9"}, - {file = "pyzmq-25.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a31992a8f8d51663ebf79df0df6a04ffb905063083d682d4380ab8d2c67257c"}, - {file = "pyzmq-25.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6a979e59d2184a0c8f2ede4b0810cbdd86b64d99d9cc8a023929e40dce7c86cc"}, - {file = "pyzmq-25.0.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1f124cb73f1aa6654d31b183810febc8505fd0c597afa127c4f40076be4574e0"}, - {file = "pyzmq-25.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:65c19a63b4a83ae45d62178b70223adeee5f12f3032726b897431b6553aa25af"}, - {file = "pyzmq-25.0.2-cp39-cp39-win32.whl", hash = "sha256:83d822e8687621bed87404afc1c03d83fa2ce39733d54c2fd52d8829edb8a7ff"}, - {file = "pyzmq-25.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:24683285cc6b7bf18ad37d75b9db0e0fefe58404e7001f1d82bf9e721806daa7"}, - {file = "pyzmq-25.0.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4a4b4261eb8f9ed71f63b9eb0198dd7c934aa3b3972dac586d0ef502ba9ab08b"}, - {file = "pyzmq-25.0.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:62ec8d979f56c0053a92b2b6a10ff54b9ec8a4f187db2b6ec31ee3dd6d3ca6e2"}, - {file = "pyzmq-25.0.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:affec1470351178e892121b3414c8ef7803269f207bf9bef85f9a6dd11cde264"}, - {file = "pyzmq-25.0.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffc71111433bd6ec8607a37b9211f4ef42e3d3b271c6d76c813669834764b248"}, - {file = "pyzmq-25.0.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:6fadc60970714d86eff27821f8fb01f8328dd36bebd496b0564a500fe4a9e354"}, - {file = "pyzmq-25.0.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:269968f2a76c0513490aeb3ba0dc3c77b7c7a11daa894f9d1da88d4a0db09835"}, - {file = "pyzmq-25.0.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f7c8b8368e84381ae7c57f1f5283b029c888504aaf4949c32e6e6fb256ec9bf0"}, - {file = "pyzmq-25.0.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:25e6873a70ad5aa31e4a7c41e5e8c709296edef4a92313e1cd5fc87bbd1874e2"}, - {file = "pyzmq-25.0.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b733076ff46e7db5504c5e7284f04a9852c63214c74688bdb6135808531755a3"}, - {file = "pyzmq-25.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:a6f6ae12478fdc26a6d5fdb21f806b08fa5403cd02fd312e4cb5f72df078f96f"}, - {file = "pyzmq-25.0.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:67da1c213fbd208906ab3470cfff1ee0048838365135a9bddc7b40b11e6d6c89"}, - {file = "pyzmq-25.0.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:531e36d9fcd66f18de27434a25b51d137eb546931033f392e85674c7a7cea853"}, - {file = "pyzmq-25.0.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34a6fddd159ff38aa9497b2e342a559f142ab365576284bc8f77cb3ead1f79c5"}, - {file = "pyzmq-25.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b491998ef886662c1f3d49ea2198055a9a536ddf7430b051b21054f2a5831800"}, - {file = "pyzmq-25.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5d496815074e3e3d183fe2c7fcea2109ad67b74084c254481f87b64e04e9a471"}, - {file = "pyzmq-25.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:56a94ab1d12af982b55ca96c6853db6ac85505e820d9458ac76364c1998972f4"}, - {file = "pyzmq-25.0.2.tar.gz", hash = "sha256:6b8c1bbb70e868dc88801aa532cae6bd4e3b5233784692b786f17ad2962e5149"}, + {file = "pyzmq-25.1.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:1a6169e69034eaa06823da6a93a7739ff38716142b3596c180363dee729d713d"}, + {file = "pyzmq-25.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:19d0383b1f18411d137d891cab567de9afa609b214de68b86e20173dc624c101"}, + {file = "pyzmq-25.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1e931d9a92f628858a50f5bdffdfcf839aebe388b82f9d2ccd5d22a38a789dc"}, + {file = "pyzmq-25.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:97d984b1b2f574bc1bb58296d3c0b64b10e95e7026f8716ed6c0b86d4679843f"}, + {file = "pyzmq-25.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:154bddda2a351161474b36dba03bf1463377ec226a13458725183e508840df89"}, + {file = "pyzmq-25.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:cb6d161ae94fb35bb518b74bb06b7293299c15ba3bc099dccd6a5b7ae589aee3"}, + {file = "pyzmq-25.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:90146ab578931e0e2826ee39d0c948d0ea72734378f1898939d18bc9c823fcf9"}, + {file = "pyzmq-25.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:831ba20b660b39e39e5ac8603e8193f8fce1ee03a42c84ade89c36a251449d80"}, + {file = "pyzmq-25.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3a522510e3434e12aff80187144c6df556bb06fe6b9d01b2ecfbd2b5bfa5c60c"}, + {file = "pyzmq-25.1.0-cp310-cp310-win32.whl", hash = "sha256:be24a5867b8e3b9dd5c241de359a9a5217698ff616ac2daa47713ba2ebe30ad1"}, + {file = "pyzmq-25.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:5693dcc4f163481cf79e98cf2d7995c60e43809e325b77a7748d8024b1b7bcba"}, + {file = "pyzmq-25.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:13bbe36da3f8aaf2b7ec12696253c0bf6ffe05f4507985a8844a1081db6ec22d"}, + {file = "pyzmq-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:69511d604368f3dc58d4be1b0bad99b61ee92b44afe1cd9b7bd8c5e34ea8248a"}, + {file = "pyzmq-25.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a983c8694667fd76d793ada77fd36c8317e76aa66eec75be2653cef2ea72883"}, + {file = "pyzmq-25.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:332616f95eb400492103ab9d542b69d5f0ff628b23129a4bc0a2fd48da6e4e0b"}, + {file = "pyzmq-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58416db767787aedbfd57116714aad6c9ce57215ffa1c3758a52403f7c68cff5"}, + {file = "pyzmq-25.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:cad9545f5801a125f162d09ec9b724b7ad9b6440151b89645241d0120e119dcc"}, + {file = "pyzmq-25.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d6128d431b8dfa888bf51c22a04d48bcb3d64431caf02b3cb943269f17fd2994"}, + {file = "pyzmq-25.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:2b15247c49d8cbea695b321ae5478d47cffd496a2ec5ef47131a9e79ddd7e46c"}, + {file = "pyzmq-25.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:442d3efc77ca4d35bee3547a8e08e8d4bb88dadb54a8377014938ba98d2e074a"}, + {file = "pyzmq-25.1.0-cp311-cp311-win32.whl", hash = "sha256:65346f507a815a731092421d0d7d60ed551a80d9b75e8b684307d435a5597425"}, + {file = "pyzmq-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8b45d722046fea5a5694cba5d86f21f78f0052b40a4bbbbf60128ac55bfcc7b6"}, + {file = "pyzmq-25.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f45808eda8b1d71308c5416ef3abe958f033fdbb356984fabbfc7887bed76b3f"}, + {file = "pyzmq-25.1.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b697774ea8273e3c0460cf0bba16cd85ca6c46dfe8b303211816d68c492e132"}, + {file = "pyzmq-25.1.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b324fa769577fc2c8f5efcd429cef5acbc17d63fe15ed16d6dcbac2c5eb00849"}, + {file = "pyzmq-25.1.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:5873d6a60b778848ce23b6c0ac26c39e48969823882f607516b91fb323ce80e5"}, + {file = "pyzmq-25.1.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:f0d9e7ba6a815a12c8575ba7887da4b72483e4cfc57179af10c9b937f3f9308f"}, + {file = "pyzmq-25.1.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:414b8beec76521358b49170db7b9967d6974bdfc3297f47f7d23edec37329b00"}, + {file = "pyzmq-25.1.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:01f06f33e12497dca86353c354461f75275a5ad9eaea181ac0dc1662da8074fa"}, + {file = "pyzmq-25.1.0-cp36-cp36m-win32.whl", hash = "sha256:b5a07c4f29bf7cb0164664ef87e4aa25435dcc1f818d29842118b0ac1eb8e2b5"}, + {file = "pyzmq-25.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:968b0c737797c1809ec602e082cb63e9824ff2329275336bb88bd71591e94a90"}, + {file = "pyzmq-25.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:47b915ba666c51391836d7ed9a745926b22c434efa76c119f77bcffa64d2c50c"}, + {file = "pyzmq-25.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5af31493663cf76dd36b00dafbc839e83bbca8a0662931e11816d75f36155897"}, + {file = "pyzmq-25.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5489738a692bc7ee9a0a7765979c8a572520d616d12d949eaffc6e061b82b4d1"}, + {file = "pyzmq-25.1.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1fc56a0221bdf67cfa94ef2d6ce5513a3d209c3dfd21fed4d4e87eca1822e3a3"}, + {file = "pyzmq-25.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:75217e83faea9edbc29516fc90c817bc40c6b21a5771ecb53e868e45594826b0"}, + {file = "pyzmq-25.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3830be8826639d801de9053cf86350ed6742c4321ba4236e4b5568528d7bfed7"}, + {file = "pyzmq-25.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3575699d7fd7c9b2108bc1c6128641a9a825a58577775ada26c02eb29e09c517"}, + {file = "pyzmq-25.1.0-cp37-cp37m-win32.whl", hash = "sha256:95bd3a998d8c68b76679f6b18f520904af5204f089beebb7b0301d97704634dd"}, + {file = "pyzmq-25.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:dbc466744a2db4b7ca05589f21ae1a35066afada2f803f92369f5877c100ef62"}, + {file = "pyzmq-25.1.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:3bed53f7218490c68f0e82a29c92335daa9606216e51c64f37b48eb78f1281f4"}, + {file = "pyzmq-25.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eb52e826d16c09ef87132c6e360e1879c984f19a4f62d8a935345deac43f3c12"}, + {file = "pyzmq-25.1.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ddbef8b53cd16467fdbfa92a712eae46dd066aa19780681a2ce266e88fbc7165"}, + {file = "pyzmq-25.1.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9301cf1d7fc1ddf668d0abbe3e227fc9ab15bc036a31c247276012abb921b5ff"}, + {file = "pyzmq-25.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e23a8c3b6c06de40bdb9e06288180d630b562db8ac199e8cc535af81f90e64b"}, + {file = "pyzmq-25.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4a82faae00d1eed4809c2f18b37f15ce39a10a1c58fe48b60ad02875d6e13d80"}, + {file = "pyzmq-25.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c8398a1b1951aaa330269c35335ae69744be166e67e0ebd9869bdc09426f3871"}, + {file = "pyzmq-25.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d40682ac60b2a613d36d8d3a0cd14fbdf8e7e0618fbb40aa9fa7b796c9081584"}, + {file = "pyzmq-25.1.0-cp38-cp38-win32.whl", hash = "sha256:33d5c8391a34d56224bccf74f458d82fc6e24b3213fc68165c98b708c7a69325"}, + {file = "pyzmq-25.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:c66b7ff2527e18554030319b1376d81560ca0742c6e0b17ff1ee96624a5f1afd"}, + {file = "pyzmq-25.1.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:af56229ea6527a849ac9fb154a059d7e32e77a8cba27e3e62a1e38d8808cb1a5"}, + {file = "pyzmq-25.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bdca18b94c404af6ae5533cd1bc310c4931f7ac97c148bbfd2cd4bdd62b96253"}, + {file = "pyzmq-25.1.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0b6b42f7055bbc562f63f3df3b63e3dd1ebe9727ff0f124c3aa7bcea7b3a00f9"}, + {file = "pyzmq-25.1.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c2fc7aad520a97d64ffc98190fce6b64152bde57a10c704b337082679e74f67"}, + {file = "pyzmq-25.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be86a26415a8b6af02cd8d782e3a9ae3872140a057f1cadf0133de685185c02b"}, + {file = "pyzmq-25.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:851fb2fe14036cfc1960d806628b80276af5424db09fe5c91c726890c8e6d943"}, + {file = "pyzmq-25.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2a21fec5c3cea45421a19ccbe6250c82f97af4175bc09de4d6dd78fb0cb4c200"}, + {file = "pyzmq-25.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bad172aba822444b32eae54c2d5ab18cd7dee9814fd5c7ed026603b8cae2d05f"}, + {file = "pyzmq-25.1.0-cp39-cp39-win32.whl", hash = "sha256:4d67609b37204acad3d566bb7391e0ecc25ef8bae22ff72ebe2ad7ffb7847158"}, + {file = "pyzmq-25.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:71c7b5896e40720d30cd77a81e62b433b981005bbff0cb2f739e0f8d059b5d99"}, + {file = "pyzmq-25.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4cb27ef9d3bdc0c195b2dc54fcb8720e18b741624686a81942e14c8b67cc61a6"}, + {file = "pyzmq-25.1.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0c4fc2741e0513b5d5a12fe200d6785bbcc621f6f2278893a9ca7bed7f2efb7d"}, + {file = "pyzmq-25.1.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fc34fdd458ff77a2a00e3c86f899911f6f269d393ca5675842a6e92eea565bae"}, + {file = "pyzmq-25.1.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8751f9c1442624da391bbd92bd4b072def6d7702a9390e4479f45c182392ff78"}, + {file = "pyzmq-25.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:6581e886aec3135964a302a0f5eb68f964869b9efd1dbafdebceaaf2934f8a68"}, + {file = "pyzmq-25.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5482f08d2c3c42b920e8771ae8932fbaa0a67dff925fc476996ddd8155a170f3"}, + {file = "pyzmq-25.1.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5e7fbcafa3ea16d1de1f213c226005fea21ee16ed56134b75b2dede5a2129e62"}, + {file = "pyzmq-25.1.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:adecf6d02b1beab8d7c04bc36f22bb0e4c65a35eb0b4750b91693631d4081c70"}, + {file = "pyzmq-25.1.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d39e42a0aa888122d1beb8ec0d4ddfb6c6b45aecb5ba4013c27e2f28657765"}, + {file = "pyzmq-25.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7018289b402ebf2b2c06992813523de61d4ce17bd514c4339d8f27a6f6809492"}, + {file = "pyzmq-25.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9e68ae9864d260b18f311b68d29134d8776d82e7f5d75ce898b40a88df9db30f"}, + {file = "pyzmq-25.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e21cc00e4debe8f54c3ed7b9fcca540f46eee12762a9fa56feb8512fd9057161"}, + {file = "pyzmq-25.1.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f666ae327a6899ff560d741681fdcdf4506f990595201ed39b44278c471ad98"}, + {file = "pyzmq-25.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f5efcc29056dfe95e9c9db0dfbb12b62db9c4ad302f812931b6d21dd04a9119"}, + {file = "pyzmq-25.1.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:48e5e59e77c1a83162ab3c163fc01cd2eebc5b34560341a67421b09be0891287"}, + {file = "pyzmq-25.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:108c96ebbd573d929740d66e4c3d1bdf31d5cde003b8dc7811a3c8c5b0fc173b"}, + {file = "pyzmq-25.1.0.tar.gz", hash = "sha256:80c41023465d36280e801564a69cbfce8ae85ff79b080e1913f6e90481fb8957"}, ] [package.dependencies] @@ -2386,24 +2416,46 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "qcs-sdk-python" -version = "0.6.0rc4" +version = "0.10.3rc1" description = "Python interface for the QCS Rust SDK" category = "main" optional = false python-versions = "*" files = [ - {file = "qcs_sdk_python-0.6.0rc4-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:ec3fb5ffd041cd789b1d25ae37db45e48cb18acc863cd7f67f64c7dd66d099e6"}, - {file = "qcs_sdk_python-0.6.0rc4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf43ec485aefd414802c852c0a184861e20dad212c0791aa7e365dd13f244e72"}, - {file = "qcs_sdk_python-0.6.0rc4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2edbf8520f5d50c5ba65c6c5c0a627a5721347468b133b402755621563200bf7"}, - {file = "qcs_sdk_python-0.6.0rc4-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:e390cd4aeefd5ad08f02999196dd7c0f9c93d5f2d6c41018e778bff8f636deb8"}, - {file = "qcs_sdk_python-0.6.0rc4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f9602c2a8567e5b20a8158c14406b4c3a05069f7fa288cc61b9d0dd4f79a1aa"}, - {file = "qcs_sdk_python-0.6.0rc4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0e51be5ebcbf62cbf3fa756cc7996b4f744fe7a688996980c7d2928f6d1d31c"}, - {file = "qcs_sdk_python-0.6.0rc4-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:c6d8f2d5202b9b6668961889c240b3f2842d78fe73bb6764e0a8909c7eaa281d"}, - {file = "qcs_sdk_python-0.6.0rc4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d357701a18391f3c8e34c75a7c4e99cedbd120a1cb4d4819213c92f0bcb67ed8"}, - {file = "qcs_sdk_python-0.6.0rc4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f25eacdfa91f3cbda745f7c5449c1b5187be22a8d1e9b9afa2a0a278002dc5ea"}, - {file = "qcs_sdk_python-0.6.0rc4-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:c1a068929bc1e4fec948d7b00818180bee512acef9ac9d205168e6d0f97cd77e"}, - {file = "qcs_sdk_python-0.6.0rc4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28a594c18adb2836d28ecec25766e7f7b8552dbd53b209e7423749f491c98202"}, - {file = "qcs_sdk_python-0.6.0rc4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc932c2f44e11ca1adc063e94d8f126b1d86bf5b519b82b2297ef86b7604c320"}, + {file = "qcs_sdk_python-0.10.3rc1-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:d672792c809a247bc6f919a266a477b6b624c81f228b0341e88ea3fe93ff6b99"}, + {file = "qcs_sdk_python-0.10.3rc1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a8a54ed0e2bcf312d0c7f2cad91f7c4fd356e5c95a746514c43b5fd676695bc"}, + {file = "qcs_sdk_python-0.10.3rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:389285c409990327fb5df243238b91774f6e1bcee514e23b774b96172060132b"}, + {file = "qcs_sdk_python-0.10.3rc1-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:2e5f34f8e3240f5a60f180e048de2125872e942f287404e79c2f8b8c83affa2a"}, + {file = "qcs_sdk_python-0.10.3rc1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69499ccc77c4fdfd632bee344d1fad8f4192eac775cb39b028e06398e77477d7"}, + {file = "qcs_sdk_python-0.10.3rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b203a75172e91a043edd76fa34c879b91821da164548a4533fec2f2bde80e772"}, + {file = "qcs_sdk_python-0.10.3rc1-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:ca9c492f6dd7259e0bb12f8a8be78332941e3ef4cec35e3dd5b86b40f9ace94e"}, + {file = "qcs_sdk_python-0.10.3rc1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8eeb1e46a25a9daea7f2a5213f1da4fa63af3dbdcc48f1432a09ff6d2bd0b64"}, + {file = "qcs_sdk_python-0.10.3rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:834159e779ba82212fc644052280faa8a98e603b1a0f142350688e7405584bd6"}, + {file = "qcs_sdk_python-0.10.3rc1-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:c21b71489ed33d9f68392253bb308d4a9337542a1c6c2e6f96157978265275b1"}, + {file = "qcs_sdk_python-0.10.3rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15c25c2745ce39eaca351ebf8ce1cf8c6d6075d0e85d22bda5704c7bac7dd1a2"}, + {file = "qcs_sdk_python-0.10.3rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9bc60c31503458ecf5fee2203a7099eee0205748cff7024a362fdd62db2911e3"}, +] + +[[package]] +name = "quil" +version = "0.1.1" +description = "A Python package for building and parsing Quil programs." +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "quil-0.1.1-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:526163b1fea7328caff0df11c8c3b9d2257a6fcc78c1db2283b049bd150677bd"}, + {file = "quil-0.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df7741aa2a7a876a3e4f99c1c96724e4995d54a61b770d4cd112030ea0db9e98"}, + {file = "quil-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa0de6d29013cf9d931c3e6392e6db282f416bd1440bf933e4031b012c41d63f"}, + {file = "quil-0.1.1-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:01caf59e5c5ff2a5780484ba077d9127d449403ad87dc1002e8456f7c3fbb6ab"}, + {file = "quil-0.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca7e1732db27f01ae634ad847c96052039e07bce3f6269ebf3dff4ec64c32577"}, + {file = "quil-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3802b55c9af0c6f6626e4756fbd65bc89c914c018d76af4c1c2551aa2ee30e26"}, + {file = "quil-0.1.1-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:187cb4d84a5ca4558ff60a6a73855116340095581f48d8fb9f5593be56a967fa"}, + {file = "quil-0.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee05b2bdb9627e457d147d7dc331e11a38409b6e04b670c8c679f9476cd73b0c"}, + {file = "quil-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56f565ce48f6b3294567a8efb1c56d7f2ee22c5ec939db4ae057b2800931a628"}, + {file = "quil-0.1.1-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:1d8261377bf3f4104e2cde58059f8968377eca217031171e977a88cd7dbea422"}, + {file = "quil-0.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4da5a3016af1cc23cb139891fceb698f1404eafd9f19c3fc70523f073966e97b"}, + {file = "quil-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e4fadf2ee94779b5a05b6ff45bcbb056a7cff54830b68efb71076353fc9cb12"}, ] [[package]] @@ -2423,6 +2475,22 @@ commonmark = ">=0.8.1" docutils = ">=0.11" sphinx = ">=1.3.1" +[[package]] +name = "referencing" +version = "0.29.1" +description = "JSON Referencing + Python" +category = "main" +optional = true +python-versions = ">=3.8" +files = [ + {file = "referencing-0.29.1-py3-none-any.whl", hash = "sha256:d3c8f323ee1480095da44d55917cfb8278d73d6b4d5f677e3e40eb21314ac67f"}, + {file = "referencing-0.29.1.tar.gz", hash = "sha256:90cb53782d550ba28d2166ef3f55731f38397def8832baac5d45235f1995e35e"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + [[package]] name = "requests" version = "2.31.0" @@ -2460,22 +2528,6 @@ files = [ [package.dependencies] httpx = ">=0.21.0" -[[package]] -name = "retry" -version = "0.9.2" -description = "Easy to use retry decorator." -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "retry-0.9.2-py2.py3-none-any.whl", hash = "sha256:ccddf89761fa2c726ab29391837d4327f819ea14d244c232a1d24c67a2f98606"}, - {file = "retry-0.9.2.tar.gz", hash = "sha256:f8bfa8b99b69c4506d6f5bd3b0aabf77f98cdb17f3c9fc3f5ca820033336fba4"}, -] - -[package.dependencies] -decorator = ">=3.4.2" -py = ">=1.4.26,<2.0.0" - [[package]] name = "rpcq" version = "3.11.0" @@ -2493,16 +2545,123 @@ python-rapidjson = "*" pyzmq = ">=17" "ruamel.yaml" = "*" +[[package]] +name = "rpds-py" +version = "0.8.10" +description = "Python bindings to Rust's persistent data structures (rpds)" +category = "main" +optional = true +python-versions = ">=3.8" +files = [ + {file = "rpds_py-0.8.10-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:93d06cccae15b3836247319eee7b6f1fdcd6c10dabb4e6d350d27bd0bdca2711"}, + {file = "rpds_py-0.8.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3816a890a6a9e9f1de250afa12ca71c9a7a62f2b715a29af6aaee3aea112c181"}, + {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7c6304b894546b5a6bdc0fe15761fa53fe87d28527a7142dae8de3c663853e1"}, + {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ad3bfb44c8840fb4be719dc58e229f435e227fbfbe133dc33f34981ff622a8f8"}, + {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:14f1c356712f66653b777ecd8819804781b23dbbac4eade4366b94944c9e78ad"}, + {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:82bb361cae4d0a627006dadd69dc2f36b7ad5dc1367af9d02e296ec565248b5b"}, + {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2e3c4f2a8e3da47f850d7ea0d7d56720f0f091d66add889056098c4b2fd576c"}, + {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15a90d0ac11b4499171067ae40a220d1ca3cb685ec0acc356d8f3800e07e4cb8"}, + {file = "rpds_py-0.8.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:70bb9c8004b97b4ef7ae56a2aa56dfaa74734a0987c78e7e85f00004ab9bf2d0"}, + {file = "rpds_py-0.8.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d64f9f88d5203274a002b54442cafc9c7a1abff2a238f3e767b70aadf919b451"}, + {file = "rpds_py-0.8.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ccbbd276642788c4376fbe8d4e6c50f0fb4972ce09ecb051509062915891cbf0"}, + {file = "rpds_py-0.8.10-cp310-none-win32.whl", hash = "sha256:fafc0049add8043ad07ab5382ee80d80ed7e3699847f26c9a5cf4d3714d96a84"}, + {file = "rpds_py-0.8.10-cp310-none-win_amd64.whl", hash = "sha256:915031002c86a5add7c6fd4beb601b2415e8a1c956590a5f91d825858e92fe6e"}, + {file = "rpds_py-0.8.10-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:84eb541a44f7a18f07a6bfc48b95240739e93defe1fdfb4f2a295f37837945d7"}, + {file = "rpds_py-0.8.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f59996d0550894affaad8743e97b9b9c98f638b221fac12909210ec3d9294786"}, + {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9adb5664b78fcfcd830000416c8cc69853ef43cb084d645b3f1f0296edd9bae"}, + {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f96f3f98fbff7af29e9edf9a6584f3c1382e7788783d07ba3721790625caa43e"}, + {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:376b8de737401050bd12810003d207e824380be58810c031f10ec563ff6aef3d"}, + {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d1c2bc319428d50b3e0fa6b673ab8cc7fa2755a92898db3a594cbc4eeb6d1f7"}, + {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73a1e48430f418f0ac3dfd87860e4cc0d33ad6c0f589099a298cb53724db1169"}, + {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:134ec8f14ca7dbc6d9ae34dac632cdd60939fe3734b5d287a69683c037c51acb"}, + {file = "rpds_py-0.8.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4b519bac7c09444dd85280fd60f28c6dde4389c88dddf4279ba9b630aca3bbbe"}, + {file = "rpds_py-0.8.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9cd57981d9fab04fc74438d82460f057a2419974d69a96b06a440822d693b3c0"}, + {file = "rpds_py-0.8.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:69d089c026f6a8b9d64a06ff67dc3be196707b699d7f6ca930c25f00cf5e30d8"}, + {file = "rpds_py-0.8.10-cp311-none-win32.whl", hash = "sha256:220bdcad2d2936f674650d304e20ac480a3ce88a40fe56cd084b5780f1d104d9"}, + {file = "rpds_py-0.8.10-cp311-none-win_amd64.whl", hash = "sha256:6c6a0225b8501d881b32ebf3f5807a08ad3685b5eb5f0a6bfffd3a6e039b2055"}, + {file = "rpds_py-0.8.10-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:e3d0cd3dff0e7638a7b5390f3a53057c4e347f4ef122ee84ed93fc2fb7ea4aa2"}, + {file = "rpds_py-0.8.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d77dff3a5aa5eedcc3da0ebd10ff8e4969bc9541aa3333a8d41715b429e99f47"}, + {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41c89a366eae49ad9e65ed443a8f94aee762931a1e3723749d72aeac80f5ef2f"}, + {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3793c21494bad1373da517001d0849eea322e9a049a0e4789e50d8d1329df8e7"}, + {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:805a5f3f05d186c5d50de2e26f765ba7896d0cc1ac5b14ffc36fae36df5d2f10"}, + {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b01b39ad5411563031ea3977bbbc7324d82b088e802339e6296f082f78f6115c"}, + {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3f1e860be21f3e83011116a65e7310486300e08d9a3028e73e8d13bb6c77292"}, + {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a13c8e56c46474cd5958d525ce6a9996727a83d9335684e41f5192c83deb6c58"}, + {file = "rpds_py-0.8.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:93d99f957a300d7a4ced41615c45aeb0343bb8f067c42b770b505de67a132346"}, + {file = "rpds_py-0.8.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:148b0b38d719c0760e31ce9285a9872972bdd7774969a4154f40c980e5beaca7"}, + {file = "rpds_py-0.8.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3cc5e5b5514796f45f03a568981971b12a3570f3de2e76114f7dc18d4b60a3c4"}, + {file = "rpds_py-0.8.10-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:e8e24b210a4deb5a7744971f8f77393005bae7f873568e37dfd9effe808be7f7"}, + {file = "rpds_py-0.8.10-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b41941583adce4242af003d2a8337b066ba6148ca435f295f31ac6d9e4ea2722"}, + {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c490204e16bca4f835dba8467869fe7295cdeaa096e4c5a7af97f3454a97991"}, + {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee45cd1d84beed6cbebc839fd85c2e70a3a1325c8cfd16b62c96e2ffb565eca"}, + {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a8ca409f1252e1220bf09c57290b76cae2f14723746215a1e0506472ebd7bdf"}, + {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96b293c0498c70162effb13100624c5863797d99df75f2f647438bd10cbf73e4"}, + {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4627520a02fccbd324b33c7a83e5d7906ec746e1083a9ac93c41ac7d15548c7"}, + {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e39d7ab0c18ac99955b36cd19f43926450baba21e3250f053e0704d6ffd76873"}, + {file = "rpds_py-0.8.10-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ba9f1d1ebe4b63801977cec7401f2d41e888128ae40b5441270d43140efcad52"}, + {file = "rpds_py-0.8.10-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:802f42200d8caf7f25bbb2a6464cbd83e69d600151b7e3b49f49a47fa56b0a38"}, + {file = "rpds_py-0.8.10-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:d19db6ba816e7f59fc806c690918da80a7d186f00247048cd833acdab9b4847b"}, + {file = "rpds_py-0.8.10-cp38-none-win32.whl", hash = "sha256:7947e6e2c2ad68b1c12ee797d15e5f8d0db36331200b0346871492784083b0c6"}, + {file = "rpds_py-0.8.10-cp38-none-win_amd64.whl", hash = "sha256:fa326b3505d5784436d9433b7980171ab2375535d93dd63fbcd20af2b5ca1bb6"}, + {file = "rpds_py-0.8.10-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:7b38a9ac96eeb6613e7f312cd0014de64c3f07000e8bf0004ad6ec153bac46f8"}, + {file = "rpds_py-0.8.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c4d42e83ddbf3445e6514f0aff96dca511421ed0392d9977d3990d9f1ba6753c"}, + {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b21575031478609db6dbd1f0465e739fe0e7f424a8e7e87610a6c7f68b4eb16"}, + {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:574868858a7ff6011192c023a5289158ed20e3f3b94b54f97210a773f2f22921"}, + {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae40f4a70a1f40939d66ecbaf8e7edc144fded190c4a45898a8cfe19d8fc85ea"}, + {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37f7ee4dc86db7af3bac6d2a2cedbecb8e57ce4ed081f6464510e537589f8b1e"}, + {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:695f642a3a5dbd4ad2ffbbacf784716ecd87f1b7a460843b9ddf965ccaeafff4"}, + {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f43ab4cb04bde6109eb2555528a64dfd8a265cc6a9920a67dcbde13ef53a46c8"}, + {file = "rpds_py-0.8.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a11ab0d97be374efd04f640c04fe5c2d3dabc6dfb998954ea946ee3aec97056d"}, + {file = "rpds_py-0.8.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:92cf5b3ee60eef41f41e1a2cabca466846fb22f37fc580ffbcb934d1bcab225a"}, + {file = "rpds_py-0.8.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ceaac0c603bf5ac2f505a78b2dcab78d3e6b706be6596c8364b64cc613d208d2"}, + {file = "rpds_py-0.8.10-cp39-none-win32.whl", hash = "sha256:dd4f16e57c12c0ae17606c53d1b57d8d1c8792efe3f065a37cb3341340599d49"}, + {file = "rpds_py-0.8.10-cp39-none-win_amd64.whl", hash = "sha256:c03a435d26c3999c2a8642cecad5d1c4d10c961817536af52035f6f4ee2f5dd0"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0da53292edafecba5e1d8c1218f99babf2ed0bf1c791d83c0ab5c29b57223068"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:7d20a8ed227683401cc508e7be58cba90cc97f784ea8b039c8cd01111e6043e0"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97cab733d303252f7c2f7052bf021a3469d764fc2b65e6dbef5af3cbf89d4892"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8c398fda6df361a30935ab4c4bccb7f7a3daef2964ca237f607c90e9f3fdf66f"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2eb4b08c45f8f8d8254cdbfacd3fc5d6b415d64487fb30d7380b0d0569837bf1"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e7dfb1cbb895810fa2b892b68153c17716c6abaa22c7dc2b2f6dcf3364932a1c"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89c92b74e8bf6f53a6f4995fd52f4bd510c12f103ee62c99e22bc9e05d45583c"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e9c0683cb35a9b5881b41bc01d5568ffc667910d9dbc632a1fba4e7d59e98773"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:0eeb2731708207d0fe2619afe6c4dc8cb9798f7de052da891de5f19c0006c315"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:7495010b658ec5b52835f21d8c8b1a7e52e194c50f095d4223c0b96c3da704b1"}, + {file = "rpds_py-0.8.10-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c72ebc22e70e04126158c46ba56b85372bc4d54d00d296be060b0db1671638a4"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:2cd3045e7f6375dda64ed7db1c5136826facb0159ea982f77d9cf6125025bd34"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:2418cf17d653d24ffb8b75e81f9f60b7ba1b009a23298a433a4720b2a0a17017"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a2edf8173ac0c7a19da21bc68818be1321998528b5e3f748d6ee90c0ba2a1fd"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f29b8c55fd3a2bc48e485e37c4e2df3317f43b5cc6c4b6631c33726f52ffbb3"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a7d20c1cf8d7b3960c5072c265ec47b3f72a0c608a9a6ee0103189b4f28d531"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:521fc8861a86ae54359edf53a15a05fabc10593cea7b3357574132f8427a5e5a"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5c191713e98e7c28800233f039a32a42c1a4f9a001a8a0f2448b07391881036"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:083df0fafe199371206111583c686c985dddaf95ab3ee8e7b24f1fda54515d09"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:ed41f3f49507936a6fe7003985ea2574daccfef999775525d79eb67344e23767"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:2614c2732bf45de5c7f9e9e54e18bc78693fa2f635ae58d2895b7965e470378c"}, + {file = "rpds_py-0.8.10-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c60528671d9d467009a6ec284582179f6b88651e83367d0ab54cb739021cd7de"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ee744fca8d1ea822480a2a4e7c5f2e1950745477143668f0b523769426060f29"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a38b9f526d0d6cbdaa37808c400e3d9f9473ac4ff64d33d9163fd05d243dbd9b"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60e0e86e870350e03b3e25f9b1dd2c6cc72d2b5f24e070249418320a6f9097b7"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f53f55a8852f0e49b0fc76f2412045d6ad9d5772251dea8f55ea45021616e7d5"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c493365d3fad241d52f096e4995475a60a80f4eba4d3ff89b713bc65c2ca9615"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:300eb606e6b94a7a26f11c8cc8ee59e295c6649bd927f91e1dbd37a4c89430b6"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a665f6f1a87614d1c3039baf44109094926dedf785e346d8b0a728e9cabd27a"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:927d784648211447201d4c6f1babddb7971abad922b32257ab74de2f2750fad0"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:c200b30dd573afa83847bed7e3041aa36a8145221bf0cfdfaa62d974d720805c"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:08166467258fd0240a1256fce272f689f2360227ee41c72aeea103e9e4f63d2b"}, + {file = "rpds_py-0.8.10-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:996cc95830de9bc22b183661d95559ec6b3cd900ad7bc9154c4cbf5be0c9b734"}, + {file = "rpds_py-0.8.10.tar.gz", hash = "sha256:13e643ce8ad502a0263397362fb887594b49cf84bf518d6038c16f235f2bcea4"}, +] + [[package]] name = "ruamel-yaml" -version = "0.17.26" +version = "0.17.32" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" category = "main" optional = false python-versions = ">=3" files = [ - {file = "ruamel.yaml-0.17.26-py3-none-any.whl", hash = "sha256:25d0ee82a0a9a6f44683dcf8c282340def4074a4562f3a24f55695bb254c1693"}, - {file = "ruamel.yaml-0.17.26.tar.gz", hash = "sha256:baa2d0a5aad2034826c439ce61c142c07082b76f4791d54145e131206e998059"}, + {file = "ruamel.yaml-0.17.32-py3-none-any.whl", hash = "sha256:23cd2ed620231677564646b0c6a89d138b6822a0d78656df7abda5879ec4f447"}, + {file = "ruamel.yaml-0.17.32.tar.gz", hash = "sha256:ec939063761914e14542972a5cba6d33c23b0859ab6342f61cf070cfc600efc2"}, ] [package.dependencies] @@ -2527,7 +2686,8 @@ files = [ {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:1a6391a7cabb7641c32517539ca42cf84b87b667bad38b78d4d42dd23e957c81"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9c7617df90c1365638916b98cdd9be833d31d337dbcd722485597b43c4a215bf"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win32.whl", hash = "sha256:f6d3d39611ac2e4f62c3128a9eed45f19a6608670c5a2f4f07f24e8de3441d38"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:da538167284de58a52109a9b89b8f6a53ff8437dd6dc26d33b57bf6699153122"}, @@ -2560,42 +2720,42 @@ files = [ [[package]] name = "scipy" -version = "1.10.1" +version = "1.9.3" description = "Fundamental algorithms for scientific computing in Python" category = "main" optional = false -python-versions = "<3.12,>=3.8" -files = [ - {file = "scipy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e7354fd7527a4b0377ce55f286805b34e8c54b91be865bac273f527e1b839019"}, - {file = "scipy-1.10.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:4b3f429188c66603a1a5c549fb414e4d3bdc2a24792e061ffbd607d3d75fd84e"}, - {file = "scipy-1.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1553b5dcddd64ba9a0d95355e63fe6c3fc303a8fd77c7bc91e77d61363f7433f"}, - {file = "scipy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c0ff64b06b10e35215abce517252b375e580a6125fd5fdf6421b98efbefb2d2"}, - {file = "scipy-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:fae8a7b898c42dffe3f7361c40d5952b6bf32d10c4569098d276b4c547905ee1"}, - {file = "scipy-1.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0f1564ea217e82c1bbe75ddf7285ba0709ecd503f048cb1236ae9995f64217bd"}, - {file = "scipy-1.10.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d925fa1c81b772882aa55bcc10bf88324dadb66ff85d548c71515f6689c6dac5"}, - {file = "scipy-1.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaea0a6be54462ec027de54fca511540980d1e9eea68b2d5c1dbfe084797be35"}, - {file = "scipy-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15a35c4242ec5f292c3dd364a7c71a61be87a3d4ddcc693372813c0b73c9af1d"}, - {file = "scipy-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:43b8e0bcb877faf0abfb613d51026cd5cc78918e9530e375727bf0625c82788f"}, - {file = "scipy-1.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5678f88c68ea866ed9ebe3a989091088553ba12c6090244fdae3e467b1139c35"}, - {file = "scipy-1.10.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:39becb03541f9e58243f4197584286e339029e8908c46f7221abeea4b749fa88"}, - {file = "scipy-1.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bce5869c8d68cf383ce240e44c1d9ae7c06078a9396df68ce88a1230f93a30c1"}, - {file = "scipy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07c3457ce0b3ad5124f98a86533106b643dd811dd61b548e78cf4c8786652f6f"}, - {file = "scipy-1.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:049a8bbf0ad95277ffba9b3b7d23e5369cc39e66406d60422c8cfef40ccc8415"}, - {file = "scipy-1.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cd9f1027ff30d90618914a64ca9b1a77a431159df0e2a195d8a9e8a04c78abf9"}, - {file = "scipy-1.10.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:79c8e5a6c6ffaf3a2262ef1be1e108a035cf4f05c14df56057b64acc5bebffb6"}, - {file = "scipy-1.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51af417a000d2dbe1ec6c372dfe688e041a7084da4fdd350aeb139bd3fb55353"}, - {file = "scipy-1.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b4735d6c28aad3cdcf52117e0e91d6b39acd4272f3f5cd9907c24ee931ad601"}, - {file = "scipy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ff7f37b1bf4417baca958d254e8e2875d0cc23aaadbe65b3d5b3077b0eb23ea"}, - {file = "scipy-1.10.1.tar.gz", hash = "sha256:2cf9dfb80a7b4589ba4c40ce7588986d6d5cebc5457cad2c2880f6bc2d42f3a5"}, +python-versions = ">=3.8" +files = [ + {file = "scipy-1.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1884b66a54887e21addf9c16fb588720a8309a57b2e258ae1c7986d4444d3bc0"}, + {file = "scipy-1.9.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:83b89e9586c62e787f5012e8475fbb12185bafb996a03257e9675cd73d3736dd"}, + {file = "scipy-1.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a72d885fa44247f92743fc20732ae55564ff2a519e8302fb7e18717c5355a8b"}, + {file = "scipy-1.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d01e1dd7b15bd2449c8bfc6b7cc67d630700ed655654f0dfcf121600bad205c9"}, + {file = "scipy-1.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:68239b6aa6f9c593da8be1509a05cb7f9efe98b80f43a5861cd24c7557e98523"}, + {file = "scipy-1.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b41bc822679ad1c9a5f023bc93f6d0543129ca0f37c1ce294dd9d386f0a21096"}, + {file = "scipy-1.9.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:90453d2b93ea82a9f434e4e1cba043e779ff67b92f7a0e85d05d286a3625df3c"}, + {file = "scipy-1.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83c06e62a390a9167da60bedd4575a14c1f58ca9dfde59830fc42e5197283dab"}, + {file = "scipy-1.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abaf921531b5aeaafced90157db505e10345e45038c39e5d9b6c7922d68085cb"}, + {file = "scipy-1.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:06d2e1b4c491dc7d8eacea139a1b0b295f74e1a1a0f704c375028f8320d16e31"}, + {file = "scipy-1.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5a04cd7d0d3eff6ea4719371cbc44df31411862b9646db617c99718ff68d4840"}, + {file = "scipy-1.9.3-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:545c83ffb518094d8c9d83cce216c0c32f8c04aaf28b92cc8283eda0685162d5"}, + {file = "scipy-1.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d54222d7a3ba6022fdf5773931b5d7c56efe41ede7f7128c7b1637700409108"}, + {file = "scipy-1.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cff3a5295234037e39500d35316a4c5794739433528310e117b8a9a0c76d20fc"}, + {file = "scipy-1.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:2318bef588acc7a574f5bfdff9c172d0b1bf2c8143d9582e05f878e580a3781e"}, + {file = "scipy-1.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d644a64e174c16cb4b2e41dfea6af722053e83d066da7343f333a54dae9bc31c"}, + {file = "scipy-1.9.3-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:da8245491d73ed0a994ed9c2e380fd058ce2fa8a18da204681f2fe1f57f98f95"}, + {file = "scipy-1.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4db5b30849606a95dcf519763dd3ab6fe9bd91df49eba517359e450a7d80ce2e"}, + {file = "scipy-1.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c68db6b290cbd4049012990d7fe71a2abd9ffbe82c0056ebe0f01df8be5436b0"}, + {file = "scipy-1.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:5b88e6d91ad9d59478fafe92a7c757d00c59e3bdc3331be8ada76a4f8d683f58"}, + {file = "scipy-1.9.3.tar.gz", hash = "sha256:fbc5c05c85c1a02be77b1ff591087c83bc44579c6d2bd9fb798bb64ea5e1a027"}, ] [package.dependencies] -numpy = ">=1.19.5,<1.27.0" +numpy = ">=1.18.5,<1.26.0" [package.extras] -dev = ["click", "doit (>=0.36.0)", "flake8", "mypy", "pycodestyle", "pydevtool", "rich-click", "typing_extensions"] -doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] -test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +dev = ["flake8", "mypy", "pycodestyle", "typing_extensions"] +doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-panels (>=0.5.2)", "sphinx-tabs"] +test = ["asv", "gmpy2", "mpmath", "pytest", "pytest-cov", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "seaborn" @@ -2621,14 +2781,14 @@ stats = ["scipy (>=1.3)", "statsmodels (>=0.10)"] [[package]] name = "setuptools" -version = "67.8.0" +version = "68.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-67.8.0-py3-none-any.whl", hash = "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f"}, - {file = "setuptools-67.8.0.tar.gz", hash = "sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102"}, + {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"}, + {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"}, ] [package.extras] @@ -2833,6 +2993,21 @@ files = [ lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] +[[package]] +name = "tenacity" +version = "8.2.2" +description = "Retry code until it succeeds" +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "tenacity-8.2.2-py3-none-any.whl", hash = "sha256:2f277afb21b851637e8f52e6a613ff08734c347dc19ade928e519d7d2d8569b0"}, + {file = "tenacity-8.2.2.tar.gz", hash = "sha256:43af037822bd0029025877f3b2d97cc4d7bb0c2991000a3d59d71517c5c969e0"}, +] + +[package.extras] +doc = ["reno", "sphinx", "tornado (>=4.5)"] + [[package]] name = "tinycss2" version = "1.2.1" @@ -2913,6 +3088,18 @@ files = [ docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] test = ["argcomplete (>=2.0)", "pre-commit", "pytest", "pytest-mock"] +[[package]] +name = "types-deprecated" +version = "1.2.9.2" +description = "Typing stubs for Deprecated" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "types-Deprecated-1.2.9.2.tar.gz", hash = "sha256:91616fd6745f8bf2d457fbbbefd14cde43838e9f00a04b5a0eae4fc1f7bbc697"}, + {file = "types_Deprecated-1.2.9.2-py3-none-any.whl", hash = "sha256:327783e137353b0ef9cf47a8cd4b1c0b8ae72f6554eb25820783c6a81a3d556f"}, +] + [[package]] name = "types-python-dateutil" version = "2.8.19.13" @@ -2939,14 +3126,14 @@ files = [ [[package]] name = "typing-extensions" -version = "4.5.0" +version = "4.7.1" description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"}, - {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"}, + {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, + {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, ] [[package]] @@ -2963,14 +3150,14 @@ files = [ [[package]] name = "urllib3" -version = "2.0.2" +version = "2.0.3" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "urllib3-2.0.2-py3-none-any.whl", hash = "sha256:d055c2f9d38dc53c808f6fdc8eab7360b6fdbbde02340ed25cfbcd817c62469e"}, - {file = "urllib3-2.0.2.tar.gz", hash = "sha256:61717a1095d7e155cdb737ac7bb2f4324a858a1e2e6466f6d03ff630ca68d3cc"}, + {file = "urllib3-2.0.3-py3-none-any.whl", hash = "sha256:48e7fafa40319d358848e1bc6809b208340fafe2096f1725d05d67443d0483d1"}, + {file = "urllib3-2.0.3.tar.gz", hash = "sha256:bee28b5e56addb8226c96f7f13ac28cb4c301dd5ea8a6ca179c0b9835e032825"}, ] [package.extras] @@ -3003,27 +3190,112 @@ files = [ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, ] +[[package]] +name = "wrapt" +version = "1.15.0" +description = "Module for decorators, wrappers and monkey patching." +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +files = [ + {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"}, + {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, + {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"}, + {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"}, + {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"}, + {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"}, + {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"}, + {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"}, + {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"}, + {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"}, + {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"}, + {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"}, + {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"}, + {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"}, + {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"}, + {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"}, + {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"}, + {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"}, + {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"}, + {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"}, + {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"}, + {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"}, + {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"}, + {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"}, + {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"}, + {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"}, + {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, +] + [[package]] name = "zipp" -version = "3.15.0" +version = "3.16.1" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, - {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, + {file = "zipp-3.16.1-py3-none-any.whl", hash = "sha256:0b37c326d826d5ca35f2b9685cd750292740774ef16190008b00a0227c256fe0"}, + {file = "zipp-3.16.1.tar.gz", hash = "sha256:857b158da2cbf427b376da1c24fd11faecbac5a4ac7523c3607f8a01f94c2ec0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] -docs = ["Sphinx", "matplotlib", "nbsphinx", "pandoc", "recommonmark", "seaborn", "sphinx-rtd-theme"] +docs = ["Sphinx", "sphinx-rtd-theme", "nbsphinx", "recommonmark", "pandoc", "matplotlib", "seaborn"] latex = ["ipython"] [metadata] lock-version = "2.0" -python-versions = "^3.8,<3.12" -content-hash = "b23dff0d6af068fb7709a903cbbbbd9e916e3be402c337dfcd65d098cc77f815" +python-versions = "^3.8,<4.0" +content-hash = "17a6452e967b1b900939b86bc8570c4f5a892ced86c30d9c70dde405e8c958c8" diff --git a/pyproject.toml b/pyproject.toml index dbc6a24f8..c6d1e82e6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "pyquil" -version = "4.0.0-rc.12" +version = "4.0.0-rc.38" description = "A Python library for creating Quantum Instruction Language (Quil) programs." authors = ["Rigetti Computing "] readme = "README.md" @@ -20,18 +20,20 @@ packages = [{ include = "pyquil" }] exclude = ["pyquil/conftest.py"] [tool.poetry.dependencies] -python = "^3.8,<3.12" +python = "^3.8,<4.0" numpy = "^1.22" scipy = "^1.7.3" lark = "^0.11.1" rpcq = "^3.10.0" pydantic = "^1.10.7" -networkx = "^2.5" +networkx = ">=2.5" importlib-metadata = { version = ">=3.7.3,<5", python = "<3.8" } -qcs-sdk-python = "0.6.0rc.4" -retry = "^0.9.2" +qcs-sdk-python = "0.10.3-rc.1" +quil = "0.1.1" +tenacity = "^8.2.2" types-python-dateutil = "^2.8.19" types-retry = "^0.9.9" +packaging = "^23.1" # latex extra ipython = { version = "^7.21.0", optional = true } @@ -44,6 +46,8 @@ recommonmark = { version = "^0.7.1", optional = true } pandoc = {version = "2.4b0", optional = true} matplotlib = {version = "^3.7.1", optional = true} seaborn = {version = "^0.12.2", optional = true} +deprecated = "^1.2.13" +types-deprecated = "^1.2.9.2" [tool.poetry.dev-dependencies] black = "^22.8.0" diff --git a/pyquil/_memory.py b/pyquil/_memory.py deleted file mode 100644 index c5b8700a0..000000000 --- a/pyquil/_memory.py +++ /dev/null @@ -1,65 +0,0 @@ -from dataclasses import dataclass, field -import dataclasses -from typing import Dict, Mapping, Sequence, Union - -from rpcq.messages import ParameterAref - -ParameterValue = Union[int, float, Sequence[int], Sequence[float]] - - -@dataclass -class Memory: - """ - Memory encapsulates the values to be sent as parameters alongside a program at time of - execution, and read back afterwards. - """ - - values: Dict[ParameterAref, Union[int, float]] = field(default_factory=dict) - - def copy(self) -> "Memory": - """ - Return a deep copy of this Memory object. - """ - return Memory(values={dataclasses.replace(k): v for k, v in self.values.items()}) - - def write(self, parameter_values: Mapping[Union[str, ParameterAref], ParameterValue]) -> "Memory": - """ - Set the given values for the given parameters. - """ - for parameter, parameter_value in parameter_values.items(): - self._write_value(parameter=parameter, value=parameter_value) - return self - - def _write_value( - self, - *, - parameter: Union[ParameterAref, str], - value: ParameterValue, - ) -> "Memory": - """ - Mutate the program to set the given parameter value. - - :param parameter: Name of the memory region, or parameter reference with offset. - :param value: the value or values to set for this parameter. If a list - is provided, parameter must be a ``str`` or ``parameter.offset == 0``. - """ - if isinstance(parameter, str): - parameter = ParameterAref(name=parameter, index=0) - - import numpy as np - - if isinstance(value, (int, float)): - self.values[parameter] = value - elif isinstance(value, (Sequence, np.ndarray)): - if parameter.index != 0: - raise ValueError("Parameter may not have a non-zero index when its value is a sequence") - - for index, v in enumerate(value): - if not isinstance(v, (int, float)): - raise TypeError(f"Parameter must be numeric, not {type(value)}") - aref = ParameterAref(name=parameter.name, index=index) - self.values[aref] = v - else: - raise TypeError(f"Parameter must be numeric or an iterable of numeric values, not {type(value)}") - - return self diff --git a/pyquil/_parser/grammar.lark b/pyquil/_parser/grammar.lark index ce76e1748..3b7235299 100644 --- a/pyquil/_parser/grammar.lark +++ b/pyquil/_parser/grammar.lark @@ -16,7 +16,7 @@ quil : (all_instr _NEWLINE?)* | shift_frequency | shift_phase | set_phase - | swap_phase + | swap_phases | set_scale | declare | capture @@ -46,7 +46,7 @@ quil : (all_instr _NEWLINE?)* COMMENT : "#" /[^\n]*/ NEWLINE def_gate : "DEFGATE" name [ variables ] ":" matrix -> def_gate_matrix - | "DEFGATE" name "AS" "MATRIX" [ variables ] ":" matrix -> def_gate_matrix + | "DEFGATE" name [ variables ] "AS" "MATRIX" ":" matrix -> def_gate_matrix | "DEFGATE" name "AS" "PERMUTATION" ":" _NEWLINE_TAB matrix_row -> def_gate_as_permutation | "DEFGATE" name [ variables ] qubit_variables "AS" "PAULI-SUM" ":" pauli_terms -> def_pauli_gate @@ -131,7 +131,8 @@ set_frequency : "SET-FREQUENCY" frame expression shift_frequency : "SHIFT-FREQUENCY" frame expression shift_phase : "SHIFT-PHASE" frame expression set_phase : "SET-PHASE" frame expression -swap_phase : "SWAP-PHASE" frame frame +swap_phases : "SWAP-PHASE" frame frame + | "SWAP-PHASES" frame frame set_scale : "SET-SCALE" frame expression declare : "DECLARE" IDENTIFIER IDENTIFIER [ "[" INT "]" ] [ "SHARING" IDENTIFIER ( offset_descriptor )* ] @@ -185,7 +186,7 @@ waveform : waveform_name ( "(" named_param ( "," named_param )* ")" )? waveform_name : name ( "/" name )? frame : qubit_designators "\"" name "\"" -!function : "SIN" | "COS" | "SQRT" | "EXP" | "CIS" +!function : "SIN"i | "COS"i | "SQRT"i | "EXP"i | "CIS"i // Numbers ?number : (int_n|float_n) "i" -> imag | int_n diff --git a/pyquil/_parser/parser.py b/pyquil/_parser/parser.py index c8c9a82c5..5f8af829f 100644 --- a/pyquil/_parser/parser.py +++ b/pyquil/_parser/parser.py @@ -3,6 +3,8 @@ import operator from typing import List +from deprecated import deprecated +from deprecated.sphinx import versionadded from lark import Lark, Transformer, v_args import numpy as np @@ -72,7 +74,7 @@ DELAY, SHIFT_PHASE, SET_PHASE, - SWAP_PHASE, + SWAP_PHASES, SET_SCALE, SET_FREQUENCY, SHIFT_FREQUENCY, @@ -142,7 +144,7 @@ def def_frame(self, frame, *specs): } options = {} - for (spec_name, spec_value) in specs: + for spec_name, spec_value in specs: name = names.get(spec_name, None) if name: options[name] = json.loads(str(spec_value)) @@ -314,9 +316,15 @@ def set_frequency(self, frame, expression): def shift_frequency(self, frame, expression): return SHIFT_FREQUENCY(frame, expression) + @deprecated(version="3.5.1", reason="The correct instruction is SWAP-PHASES, not SWAP-PHASE") @v_args(inline=True) def swap_phase(self, framea, frameb): - return SWAP_PHASE(framea, frameb) + return SWAP_PHASES(framea, frameb) + + @versionadded(version="3.5.1", reason="The correct instruction is SWAP-PHASES, not SWAP-PHASE") + @v_args(inline=True) + def swap_phases(self, framea, frameb): + return SWAP_PHASES(framea, frameb) @v_args(inline=True) def pragma(self, name, *pragma_names_and_string): @@ -517,15 +525,15 @@ def signed_number(self, sign, number): @v_args(inline=True) def apply_fun(self, fun, arg): - if fun == "SIN": + if fun.upper() == "SIN": return quil_sin(arg) if isinstance(arg, Expression) else np.sin(arg) - if fun == "COS": + if fun.upper() == "COS": return quil_cos(arg) if isinstance(arg, Expression) else np.cos(arg) - if fun == "SQRT": + if fun.upper() == "SQRT": return quil_sqrt(arg) if isinstance(arg, Expression) else np.sqrt(arg) - if fun == "EXP": + if fun.upper() == "EXP": return quil_exp(arg) if isinstance(arg, Expression) else np.exp(arg) - if fun == "CIS": + if fun.upper() == "CIS": return quil_cis(arg) if isinstance(arg, Expression) else np.cos(arg) + 1j * np.sin(arg) add = v_args(inline=True)(operator.add) diff --git a/pyquil/_version.py b/pyquil/_version.py index f81606204..ed11c6460 100644 --- a/pyquil/_version.py +++ b/pyquil/_version.py @@ -14,5 +14,12 @@ # limitations under the License. ############################################################################## from importlib.metadata import version +from packaging.version import parse pyquil_version = version(__package__) +pyquil_docs_version = parse(pyquil_version).base_version or "stable" + +DOCS_URL = f"https://pyquil-docs.rigetti.com/en/{pyquil_docs_version}" +""" +The URL of the hosted docs for this package version. +""" diff --git a/pyquil/api/__init__.py b/pyquil/api/__init__.py index 24fca6c59..d388f282a 100644 --- a/pyquil/api/__init__.py +++ b/pyquil/api/__init__.py @@ -21,15 +21,18 @@ "AbstractCompiler", "BenchmarkConnection", "EncryptedProgram", + "ExecutionOptions", "get_qc", "list_quantum_computers", "local_forest_runtime", + "MemoryMap", "QAM", "QAMExecutionResult", "QCSClient", "QCSQuantumProcessor", "QPU", "QPUCompiler", + "QPUCompilerAPIOptions", "QuantumComputer", "QuantumExecutable", "QVM", @@ -38,10 +41,18 @@ ] from qcs_sdk import QCSClient +from qcs_sdk.qpu.api import ExecutionOptions, ExecutionOptionsBuilder, ConnectionStrategy from pyquil.api._benchmark import BenchmarkConnection -from pyquil.api._compiler import QVMCompiler, QPUCompiler, QuantumExecutable, EncryptedProgram, AbstractCompiler -from pyquil.api._qam import QAM, QAMExecutionResult +from pyquil.api._compiler import ( + QVMCompiler, + QPUCompiler, + QuantumExecutable, + EncryptedProgram, + AbstractCompiler, + QPUCompilerAPIOptions, +) +from pyquil.api._qam import QAM, QAMExecutionResult, MemoryMap from pyquil.api._qpu import QPU from pyquil.api._quantum_computer import ( QuantumComputer, diff --git a/pyquil/api/_abstract_compiler.py b/pyquil/api/_abstract_compiler.py index eb6b71851..715069743 100644 --- a/pyquil/api/_abstract_compiler.py +++ b/pyquil/api/_abstract_compiler.py @@ -22,7 +22,6 @@ from qcs_sdk import QCSClient from qcs_sdk.compiler.quilc import compile_program, TargetDevice, CompilerOpts -from pyquil._memory import Memory from pyquil._version import pyquil_version from pyquil.api._compiler_client import CompilerClient from pyquil.external.rpcq import compiler_isa_to_target_quantum_processor @@ -31,7 +30,7 @@ from pyquil.quil import Program from pyquil.quilatom import MemoryReference from pyquil.quilbase import Gate -from rpcq.messages import ParameterAref, ParameterSpec +from rpcq.messages import ParameterSpec class QuilcVersionMismatch(Exception): @@ -60,24 +59,11 @@ class EncryptedProgram: recalculation_table: List[str] """A mapping from memory references to the original gate arithmetic.""" - _memory: Memory - """Memory values (parameters) to be sent with the program.""" - def copy(self) -> "EncryptedProgram": """ Return a deep copy of this EncryptedProgram. """ - return dataclasses.replace(self, _memory=self._memory.copy()) - - def write_memory( - self, - *, - region_name: str, - value: Union[int, float, Sequence[int], Sequence[float]], - offset: Optional[int] = None, - ) -> "EncryptedProgram": - self._memory._write_value(parameter=ParameterAref(name=region_name, index=(offset or 0)), value=value) - return self + return dataclasses.replace(self) QuantumExecutable = Union[EncryptedProgram, Program] @@ -103,8 +89,6 @@ def __init__( request_timeout=timeout, ) - self._connect() - def get_version_info(self) -> Dict[str, Any]: """ Return version information for this compiler and its dependencies. @@ -117,6 +101,7 @@ def quil_to_native_quil(self, program: Program, *, protoquil: Optional[bool] = N """ Convert a Quil program into native Quil, which is supported for execution on a QPU. """ + self._connect() # convert the pyquil ``TargetDevice`` to the qcs_sdk ``TargetDevice`` compiler_isa = self.quantum_processor.to_compiler_isa() @@ -134,7 +119,6 @@ def quil_to_native_quil(self, program: Program, *, protoquil: Optional[bool] = N native_program.num_shots = program.num_shots native_program._calibrations = program._calibrations native_program._waveforms = program._waveforms - native_program._memory = program._memory.copy() native_program.native_quil_metadata = result.native_quil_metadata return native_program @@ -146,11 +130,12 @@ def _connect(self) -> None: raise QuilcNotRunning( f"Request to quilc at {self._compiler_client.base_url} timed out. " "This could mean that quilc is not running, is not reachable, or is " - "responding slowly." + "responding slowly. See the Troubleshooting Guide: " + "{DOCS_URL}/troubleshooting.html" ) @abstractmethod - def native_quil_to_executable(self, nq_program: Program) -> QuantumExecutable: + def native_quil_to_executable(self, nq_program: Program, **kwargs: Any) -> QuantumExecutable: """ Compile a native quil program to a binary executable. diff --git a/pyquil/api/_compiler.py b/pyquil/api/_compiler.py index b09d5ca72..884235d7f 100644 --- a/pyquil/api/_compiler.py +++ b/pyquil/api/_compiler.py @@ -13,11 +13,15 @@ # See the License for the specific language governing permissions and # limitations under the License. ############################################################################## -from typing import Dict, Optional +from typing import Any, Dict, Optional from qcs_sdk import QCSClient from qcs_sdk.qpu.rewrite_arithmetic import rewrite_arithmetic -from qcs_sdk.qpu.translation import get_quilt_calibrations, translate +from qcs_sdk.qpu.translation import ( + get_quilt_calibrations, + translate, + TranslationOptions as QPUCompilerAPIOptions, +) from rpcq.messages import ParameterSpec from pyquil.api._abstract_compiler import AbstractCompiler, EncryptedProgram, QuantumExecutable @@ -63,6 +67,8 @@ class QPUCompiler(AbstractCompiler): Client to communicate with the compiler and translation service. """ + api_options: Optional[QPUCompilerAPIOptions] + def __init__( self, *, @@ -70,6 +76,7 @@ def __init__( quantum_processor: AbstractQuantumProcessor, timeout: float = 10.0, client_configuration: Optional[QCSClient] = None, + api_options: Optional[QPUCompilerAPIOptions] = None, ) -> None: """ Instantiate a new QPU compiler client. @@ -78,6 +85,7 @@ def __init__( :param quantum_processor: Quantum processor to use as compilation target. :param timeout: Time limit for requests, in seconds. :param client_configuration: Optional client configuration. If none is provided, a default one will be loaded. + :param api_options: Options to pass to the QPU compiler API. See ``qcs-sdk-python`` for details. """ super().__init__( quantum_processor=quantum_processor, @@ -85,12 +93,17 @@ def __init__( client_configuration=client_configuration, ) + self.api_options = api_options self.quantum_processor_id = quantum_processor_id self._calibration_program: Optional[Program] = None - def native_quil_to_executable(self, nq_program: Program) -> QuantumExecutable: + def native_quil_to_executable( + self, nq_program: Program, *, api_options: Optional[QPUCompilerAPIOptions] = None, **kwargs: Any + ) -> QuantumExecutable: """ Convert a native Quil program into an executable binary which can be executed by a QPU. + + If `api_options` is provided, it overrides the options set on `self`. """ rewrite_response = rewrite_arithmetic(nq_program.out()) @@ -98,6 +111,7 @@ def native_quil_to_executable(self, nq_program: Program) -> QuantumExecutable: native_quil=rewrite_response.program, num_shots=nq_program.num_shots, quantum_processor_id=self.quantum_processor_id, + translation_options=api_options or self.api_options, ) ro_sources = translated_program.ro_sources or {} @@ -106,8 +120,7 @@ def native_quil_to_executable(self, nq_program: Program) -> QuantumExecutable: program=translated_program.program, memory_descriptors=_collect_memory_descriptors(nq_program), ro_sources={parse_mref(mref): source for mref, source in ro_sources.items() or []}, - recalculation_table=rewrite_response.recalculation_table, - _memory=nq_program._memory.copy(), + recalculation_table=list(rewrite_response.recalculation_table), ) def _fetch_calibration_program(self) -> Program: @@ -173,5 +186,5 @@ def __init__( client_configuration=client_configuration, ) - def native_quil_to_executable(self, nq_program: Program) -> QuantumExecutable: + def native_quil_to_executable(self, nq_program: Program, **kwargs: Any) -> QuantumExecutable: return nq_program diff --git a/pyquil/api/_qam.py b/pyquil/api/_qam.py index d46f152f4..49c5b3dea 100644 --- a/pyquil/api/_qam.py +++ b/pyquil/api/_qam.py @@ -15,7 +15,7 @@ ############################################################################## from abc import ABC, abstractmethod from dataclasses import dataclass, field -from typing import Generic, Mapping, Optional, TypeVar +from typing import Any, Generic, Mapping, Optional, TypeVar, Sequence, Union import numpy as np from pyquil.api._abstract_compiler import QuantumExecutable @@ -28,6 +28,9 @@ class QAMError(RuntimeError): T = TypeVar("T") """A generic parameter describing the opaque job handle returned from QAM#execute and subclasses.""" +MemoryMap = Mapping[str, Union[Sequence[int], Sequence[float]]] +"""A mapping of memory regions to a list containing the values to be written into that memory region.""" + @dataclass class QAMExecutionResult: @@ -48,12 +51,19 @@ class QAM(ABC, Generic[T]): """ @abstractmethod - def execute(self, executable: QuantumExecutable) -> T: + def execute( + self, + executable: QuantumExecutable, + memory_map: Optional[MemoryMap] = None, + **kwargs: Any, + ) -> T: """ Run an executable on a QAM, returning a handle to be used to retrieve results. :param executable: The executable program to be executed by the QAM. + :param memory_map: A mapping of memory regions to a list containing the values to be written into that memory + region for the run. """ @abstractmethod @@ -64,8 +74,10 @@ def get_result(self, execute_response: T) -> QAMExecutionResult: :param execute_response: The return value from a call to ``execute``. """ - def run(self, executable: QuantumExecutable) -> QAMExecutionResult: + def run( + self, executable: QuantumExecutable, memory_map: Optional[MemoryMap] = None, **kwargs: Any + ) -> QAMExecutionResult: """ Run an executable to completion on the QAM. """ - return self.get_result(self.execute(executable)) + return self.get_result(self.execute(executable, memory_map, **kwargs)) diff --git a/pyquil/api/_qpu.py b/pyquil/api/_qpu.py index e35617253..d7aab078e 100644 --- a/pyquil/api/_qpu.py +++ b/pyquil/api/_qpu.py @@ -15,7 +15,7 @@ ############################################################################## from dataclasses import dataclass from collections import defaultdict -from typing import Dict, Optional, Union +from typing import Any, Dict, Optional, Union import numpy as np from numpy.typing import NDArray @@ -23,12 +23,19 @@ from pyquil.api import QuantumExecutable, EncryptedProgram -from pyquil.api._qam import QAM, QAMExecutionResult +from pyquil.api._qam import MemoryMap, QAM, QAMExecutionResult from pyquil.quilatom import ( MemoryReference, ) from qcs_sdk import QCSClient -from qcs_sdk.qpu.api import submit, retrieve_results, ExecutionResult +from qcs_sdk.qpu.api import ( + submit, + retrieve_results, + ConnectionStrategy, + ExecutionResult, + ExecutionOptions, + ExecutionOptionsBuilder, +) from qcs_sdk.qpu.rewrite_arithmetic import build_patch_values @@ -102,6 +109,7 @@ def alloc(spec: ParameterSpec) -> np.ndarray: class QPUExecuteResponse: job_id: str _executable: EncryptedProgram + execution_options: Optional[ExecutionOptions] class QPU(QAM[QPUExecuteResponse]): @@ -110,10 +118,10 @@ def __init__( *, quantum_processor_id: str, priority: int = 1, - timeout: float = 10.0, + timeout: Optional[float] = 30.0, client_configuration: Optional[QCSClient] = None, endpoint_id: Optional[str] = None, - use_gateway: bool = True, + execution_options: Optional[ExecutionOptions] = None, ) -> None: """ A connection to the QPU. @@ -124,7 +132,8 @@ def __init__( :param timeout: Time limit for requests, in seconds. :param client_configuration: Optional client configuration. If none is provided, a default one will be loaded. :param endpoint_id: Optional endpoint ID to be used for execution. - :param use_gateway: Disable to skip the Gateway server and perform direct execution. + :param execution_options: The ``ExecutionOptions`` to use when executing a program. If provided, the options + take precedence over the `timeout` and `endpoint_id` parameters. """ super().__init__() @@ -134,20 +143,36 @@ def __init__( self._last_results: Dict[str, np.ndarray] = {} self._memory_results: Dict[str, Optional[np.ndarray]] = defaultdict(lambda: None) self._quantum_processor_id = quantum_processor_id - self._endpoint_id = endpoint_id - - self._use_gateway = use_gateway + if execution_options is None: + execution_options_builder = ExecutionOptionsBuilder.default() + execution_options_builder.timeout_seconds = timeout + execution_options_builder.connection_strategy = ConnectionStrategy.default() + if endpoint_id is not None: + execution_options_builder.connection_strategy = ConnectionStrategy.endpoint_id(endpoint_id) + execution_options = execution_options_builder.build() + self.execution_options = execution_options @property def quantum_processor_id(self) -> str: """ID of quantum processor targeted.""" return self._quantum_processor_id - def execute(self, executable: QuantumExecutable) -> QPUExecuteResponse: + def execute( + self, + executable: QuantumExecutable, + memory_map: Optional[MemoryMap] = None, + execution_options: Optional[ExecutionOptions] = None, + **__: Any, + ) -> QPUExecuteResponse: """ Enqueue a job for execution on the QPU. Returns a ``QPUExecuteResponse``, a job descriptor which should be passed directly to ``QPU.get_result`` to retrieve results. + + :param: + execution_options: An optional `ExecutionOptions` enum that can be used + to configure how the job is submitted and retrieved from the QPU. If unset, + an appropriate default will be used. """ executable = executable.copy() @@ -159,23 +184,17 @@ def execute(self, executable: QuantumExecutable) -> QPUExecuteResponse: executable.ro_sources is not None ), "To run on a QPU, a program must include ``MEASURE``, ``CAPTURE``, and/or ``RAW-CAPTURE`` instructions" - # executable._memory.values is a dict of ParameterARef -> numbers, - # where ParameterARef is data class w/ name and index - # ParameterARef == Parameter on the Rust side - mem_values = defaultdict(list) - for k, v in executable._memory.values.items(): - mem_values[k.name].append(v) - patch_values = build_patch_values(executable.recalculation_table, mem_values) + patch_values = build_patch_values(executable.recalculation_table, memory_map or {}) job_id = submit( program=executable.program, patch_values=patch_values, quantum_processor_id=self.quantum_processor_id, - endpoint_id=self._endpoint_id, client=self._client_configuration, + execution_options=execution_options or self.execution_options, ) - return QPUExecuteResponse(_executable=executable, job_id=job_id) + return QPUExecuteResponse(_executable=executable, job_id=job_id, execution_options=execution_options) def get_result(self, execute_response: QPUExecuteResponse) -> QAMExecutionResult: """ @@ -186,6 +205,7 @@ def get_result(self, execute_response: QPUExecuteResponse) -> QAMExecutionResult job_id=execute_response.job_id, quantum_processor_id=self.quantum_processor_id, client=self._client_configuration, + execution_options=execute_response.execution_options, ) ro_sources = execute_response._executable.ro_sources diff --git a/pyquil/api/_quantum_computer.py b/pyquil/api/_quantum_computer.py index ed5d08e83..814759875 100644 --- a/pyquil/api/_quantum_computer.py +++ b/pyquil/api/_quantum_computer.py @@ -14,7 +14,6 @@ # limitations under the License. ############################################################################## import itertools -import logging import re import socket import subprocess @@ -25,9 +24,7 @@ Any, Tuple, Iterator, - Mapping, Optional, - Sequence, Set, Union, cast, @@ -36,16 +33,14 @@ import networkx as nx import numpy as np -from rpcq.messages import ParameterAref from qcs_sdk import QCSClient from qcs_sdk.qpu import list_quantum_processors -from qcs_sdk.qpu.client import LoadClientError from pyquil.api._abstract_compiler import AbstractCompiler, QuantumExecutable from pyquil.api._compiler import QPUCompiler, QVMCompiler -from pyquil.api._qam import QAM, QAMExecutionResult +from pyquil.api._qam import QAM, QAMExecutionResult, MemoryMap from pyquil.api._qpu import QPU from pyquil.api._qvm import QVM from pyquil.experiment._main import Experiment @@ -131,17 +126,18 @@ def to_compiler_isa(self) -> CompilerISA: return self.compiler.quantum_processor.to_compiler_isa() def run( - self, - executable: QuantumExecutable, + self, executable: QuantumExecutable, memory_map: Optional[MemoryMap] = None, **kwargs: Any ) -> QAMExecutionResult: """ Run a quil executable. All parameters in the executable must have values applied using ``Program#write_memory``. :param executable: The program to run, previously compiled as needed for its target QAM. + :param memory_map: A mapping of memory regions to a list containing the values to be written into that memory + region for the run. :return: execution result including readout data. """ - return self.qam.run(executable) + return self.qam.run(executable, memory_map, **kwargs) def calibrate(self, experiment: Experiment) -> List[ExperimentResult]: """ @@ -158,7 +154,7 @@ def calibrate(self, experiment: Experiment) -> List[ExperimentResult]: def run_experiment( self, experiment: Experiment, - memory_map: Optional[Mapping[str, Sequence[Union[int, float]]]] = None, + memory_map: Optional[MemoryMap] = None, ) -> List[ExperimentResult]: """ Run an ``Experiment`` on a QVM or QPU backend. An ``Experiment`` is composed of: @@ -230,9 +226,7 @@ def run_experiment( for merged_memory_map in merged_memory_maps: final_memory_map = {**memory_map, **merged_memory_map} executable_copy = executable.copy() - final_memory_map = cast(Mapping[Union[str, ParameterAref], Union[int, float]], final_memory_map) - executable_copy._memory.write(final_memory_map) - bitstrings = self.run(executable_copy).readout_data.get("ro") + bitstrings = self.run(executable_copy, memory_map=final_memory_map).readout_data.get("ro") assert bitstrings is not None if "symmetrization" in final_memory_map: @@ -244,6 +238,7 @@ def run_experiment( joint_expectations = [experiment.get_meas_registers(qubits)] if setting.additional_expectations: joint_expectations += setting.additional_expectations + expectations = bitstrings_to_expectations(symmetrized_bitstrings, joint_expectations=joint_expectations) means = np.mean(expectations, axis=0) @@ -798,13 +793,7 @@ def get_qc( .. _QCS API Docs: https://docs.api.qcs.rigetti.com/#tag/endpoints """ - - if client_configuration is None: - try: - client_configuration = QCSClient.load() - except LoadClientError: - logging.getLogger().info("No QCS client configuration found, only generic QVMs will be accessible.") - client_configuration = QCSClient() + client_configuration = client_configuration or QCSClient.load() # 1. Parse name, check for redundant options, canonicalize names. prefix, qvm_type, noisy = _parse_name(name, as_qvm, noisy) diff --git a/pyquil/api/_qvm.py b/pyquil/api/_qvm.py index 8faadbfc4..534bf3a0c 100644 --- a/pyquil/api/_qvm.py +++ b/pyquil/api/_qvm.py @@ -14,21 +14,17 @@ # limitations under the License. ############################################################################## from dataclasses import dataclass -from typing import Dict, Mapping, Optional, Sequence, Union, Tuple +from typing import Any, Mapping, Optional, Sequence, Tuple import numpy as np -from qcs_sdk import QCSClient +from qcs_sdk import QCSClient, qvm +from qcs_sdk.qvm import QVMOptions from pyquil._version import pyquil_version -from pyquil.api import QuantumExecutable -from pyquil.api._qam import QAM, QAMExecutionResult -from pyquil.api._qvm_client import ( - QVMClient, - RunProgramRequest, -) +from pyquil.api import QAM, QuantumExecutable, QAMExecutionResult, MemoryMap from pyquil.noise import NoiseModel, apply_noise_model -from pyquil.quil import Program, get_classical_addresses_from_program +from pyquil.quil import Program class QVMVersionMismatch(Exception): @@ -45,7 +41,7 @@ def check_qvm_version(version: str) -> None: :param version: The version of the QVM """ - major, minor, patch = map(int, version.split(".")) + major, minor = map(int, version.split(".")[:2]) if major == 1 and minor < 8: raise QVMVersionMismatch( "Must use QVM >= 1.8.0 with pyquil >= 2.8.0, but you " f"have QVM {version} and pyquil {pyquil_version}" @@ -112,8 +108,8 @@ def __init__( else: raise TypeError("random_seed should be None or a non-negative int") - client_configuration = client_configuration or QCSClient.load() - self._qvm_client = QVMClient(client_configuration=client_configuration, request_timeout=timeout) + self.timeout = timeout + self._client = client_configuration or QCSClient.load() self.connect() def connect(self) -> None: @@ -121,43 +117,41 @@ def connect(self) -> None: version = self.get_version_info() check_qvm_version(version) except ConnectionError: - raise QVMNotRunning(f"No QVM server running at {self._qvm_client.base_url}") + raise QVMNotRunning(f"No QVM server running at {self._client.qvm_url}") from ConnectionError - def execute(self, executable: QuantumExecutable) -> QVMExecuteResponse: + def execute( + self, + executable: QuantumExecutable, + memory_map: Optional[MemoryMap] = None, + **__: Any, + ) -> QVMExecuteResponse: """ Synchronously execute the input program to completion. """ - executable = executable.copy() - if not isinstance(executable, Program): raise TypeError(f"`QVM#executable` argument must be a `Program`; got {type(executable)}") - result_memory: dict = {} - - for region in executable.declarations.keys(): - result_memory[region] = np.ndarray((executable.num_shots, 0), dtype=np.int64) + # Request all memory back from the QVM. + addresses = {address: qvm.api.AddressRequest.include_all() for address in executable.declarations.keys()} trials = executable.num_shots - classical_addresses = get_classical_addresses_from_program(executable) - if self.noise_model is not None: executable = apply_noise_model(executable, self.noise_model) - executable._set_parameter_values_at_runtime() - - request = qvm_run_request( - executable, - classical_addresses, + result = qvm.run( + executable.out(calibrations=False), trials, + addresses, + memory_map or {}, self.measurement_noise, self.gate_noise, self.random_seed, + self._client, + options=QVMOptions(timeout_seconds=self.timeout), ) - response = self._qvm_client.run_program(request) - ram = {key: np.array(val) for key, val in response.results.items()} - result_memory.update(ram) - return QVMExecuteResponse(executable=executable, memory=result_memory) + memory = {name: np.asarray(data.inner()) for name, data in result.memory.items()} + return QVMExecuteResponse(executable=executable, memory=memory) def get_result(self, execute_response: QVMExecuteResponse) -> QAMExecutionResult: """ @@ -173,7 +167,7 @@ def get_version_info(self) -> str: :return: String with version information """ - return self._qvm_client.get_version() + return qvm.api.get_version_info(self._client, options=QVMOptions(timeout_seconds=self.timeout)) def validate_noise_probabilities(noise_parameter: Optional[Tuple[float, float, float]]) -> None: @@ -207,65 +201,3 @@ def validate_qubit_list(qubit_list: Sequence[int]) -> Sequence[int]: if any(not isinstance(i, int) or i < 0 for i in qubit_list): raise TypeError("'qubit_list' must contain positive integer values") return qubit_list - - -def prepare_register_list( - register_dict: Mapping[str, Union[bool, Sequence[int]]] -) -> Dict[str, Union[bool, Sequence[int]]]: - """ - Canonicalize classical addresses for the payload and ready MemoryReference instances - for serialization. - - This function will cast keys that are iterables of int-likes to a list of Python - ints. This is to support specifying the register offsets as ``range()`` or numpy - arrays. This mutates ``register_dict``. - - :param register_dict: The classical memory to retrieve. Specified as a dictionary: - the keys are the names of memory regions, and the values are either (1) a list of - integers for reading out specific entries in that memory region, or (2) True, for - reading out the entire memory region. - """ - if not isinstance(register_dict, dict): - raise TypeError("register_dict must be a dict but got " + repr(register_dict)) - - for k, v in register_dict.items(): - if isinstance(v, bool): - assert v # If boolean v must be True - continue - - indices = [int(x) for x in v] # support ranges, numpy, ... - - if not all(x >= 0 for x in indices): - raise TypeError("Negative indices into classical arrays are not allowed.") - register_dict[k] = indices - - return register_dict - - -def qvm_run_request( - quil_program: Program, - classical_addresses: Mapping[str, Union[bool, Sequence[int]]], - trials: int, - measurement_noise: Optional[Tuple[float, float, float]], - gate_noise: Optional[Tuple[float, float, float]], - random_seed: Optional[int], -) -> RunProgramRequest: - if not quil_program: - raise ValueError( - "You have attempted to run an empty program." - " Please provide gates or measure instructions to your program." - ) - if not isinstance(quil_program, Program): - raise TypeError("quil_program must be a Quil program object") - classical_addresses = prepare_register_list(classical_addresses) - if not isinstance(trials, int): - raise TypeError("trials must be an integer") - - return RunProgramRequest( - program=quil_program.out(calibrations=False), - addresses=classical_addresses, # type: ignore - trials=trials, - measurement_noise=measurement_noise, - gate_noise=gate_noise, - seed=random_seed, - ) diff --git a/pyquil/api/_qvm_client.py b/pyquil/api/_qvm_client.py deleted file mode 100644 index c33803964..000000000 --- a/pyquil/api/_qvm_client.py +++ /dev/null @@ -1,295 +0,0 @@ -############################################################################## -# Copyright 2016-2021 Rigetti Computing -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -############################################################################## -import re -from contextlib import contextmanager -from dataclasses import dataclass -from json.decoder import JSONDecodeError -from typing import Iterator, Any, Dict, Union, Tuple, Optional, List, cast - -import httpx - -from qcs_sdk import QCSClient - -from pyquil.api._errors import ApiError, UnknownApiError, TooManyQubitsError, error_mapping - - -@dataclass -class RunProgramRequest: - """ - Request to run a Quil program. - """ - - program: str - """Quil program to run.""" - - addresses: Dict[str, Union[bool, List[int]]] - """Memory addresses to be read and returned after execution. Mapped by region names to either: - - a numeric index, to return that particular value, - - `True` to return all memory in that region, or - - `False` to return no memory in that region (equivalent to missing entry) - """ - - trials: int - """Number of times to run program and collect results.""" - - measurement_noise: Optional[Tuple[float, float, float]] - """Simulated measurement noise for X, Y, and Z axes.""" - - gate_noise: Optional[Tuple[float, float, float]] - """Simulated gate noise for X, Y, and Z axes.""" - - seed: Optional[int] - """PRNG seed. Set this to guarantee repeatable results.""" - - -@dataclass -class RunProgramResponse: - """ - Program run response. - """ - - results: Dict[str, List[List[int]]] - """Run results, by memory region name. Values are multi-dimensional arrays of size -by-.""" - - -@dataclass -class RunAndMeasureProgramRequest: - """ - Request to run and measure a Quil program. - """ - - program: str - """Quil program to run.""" - - qubits: List[int] - """Qubits to measure.""" - - trials: int - """Number of times to run program and collect results.""" - - measurement_noise: Optional[Tuple[float, float, float]] - """Simulated measurement noise for X, Y, and Z axes.""" - - gate_noise: Optional[Tuple[float, float, float]] - """Simulated gate noise for X, Y, and Z axes.""" - - seed: Optional[int] - """PRNG seed. Set this to guarantee repeatable results.""" - - -@dataclass -class RunAndMeasureProgramResponse: - """ - Program run and measure response. - """ - - results: List[List[int]] - """Resulting memory region value, a multi-dimensional array of size -by-.""" - - -@dataclass -class MeasureExpectationRequest: - """ - Request to measure expectations of Pauli operators. - """ - - prep_program: str - """Quil program to place QVM into a desired state before expectation measurement.""" - - pauli_operators: List[str] - """Quil programs representing Pauli operators for which to measure expectations.""" - - seed: Optional[int] - """PRNG seed. Set this to guarantee repeatable results.""" - - -@dataclass -class MeasureExpectationResponse: - """ - Expectation measurement response. - """ - - expectations: List[float] - """Measured expectations, one for each Pauli operator in original request.""" - - -@dataclass -class GetWavefunctionRequest: - """ - Request to run a program and retrieve the resulting wavefunction. - """ - - program: str - """Quil program to run.""" - - measurement_noise: Optional[Tuple[float, float, float]] - """Simulated measurement noise for X, Y, and Z axes.""" - - gate_noise: Optional[Tuple[float, float, float]] - """Simulated gate noise for X, Y, and Z axes.""" - - seed: Optional[int] - """PRNG seed. Set this to guarantee repeatable results.""" - - -@dataclass -class GetWavefunctionResponse: - """ - Get wavefunction response. - """ - - wavefunction: bytes - """Bit-packed wavefunction string.""" - - -class QVMClient: - """ - Client for making requests to a Quantum Virtual Machine. - """ - - def __init__(self, *, client_configuration: QCSClient, request_timeout: float = 10.0) -> None: - """ - Instantiate a new compiler client. - - :param client_configuration: Configuration for client. - :param request_timeout: Timeout for requests, in seconds. - """ - self.base_url = client_configuration.qvm_url - self.timeout = request_timeout - - def get_version(self) -> str: - """ - Get version info for QVM server. - """ - return self._post_json({"type": "version"}).text.split()[0] - - def run_program(self, request: RunProgramRequest) -> RunProgramResponse: - """ - Run a Quil program and return its results. - """ - payload: Dict[str, Any] = { - "type": "multishot", - "compiled-quil": request.program, - "addresses": request.addresses, - "trials": request.trials, - } - - if request.measurement_noise is not None: - payload["measurement-noise"] = request.measurement_noise - - if request.gate_noise is not None: - payload["gate-noise"] = request.gate_noise - - if request.seed is not None: - payload["rng-seed"] = request.seed - - return RunProgramResponse(results=cast(Dict[str, List[List[int]]], self._post_json(payload).json())) - - def run_and_measure_program(self, request: RunAndMeasureProgramRequest) -> RunAndMeasureProgramResponse: - """ - Run and measure a Quil program, and return its results. - """ - payload: Dict[str, Any] = { - "type": "multishot-measure", - "compiled-quil": request.program, - "qubits": request.qubits, - "trials": request.trials, - } - - if request.measurement_noise is not None: - payload["measurement-noise"] = request.measurement_noise - - if request.gate_noise is not None: - payload["gate-noise"] = request.gate_noise - - if request.seed is not None: - payload["rng-seed"] = request.seed - - return RunAndMeasureProgramResponse(results=cast(List[List[int]], self._post_json(payload).json())) - - def measure_expectation(self, request: MeasureExpectationRequest) -> MeasureExpectationResponse: - """ - Measure expectation value of Pauli operators given a defined state. - """ - payload: Dict[str, Any] = { - "type": "expectation", - "state-preparation": request.prep_program, - "operators": request.pauli_operators, - } - - if request.seed is not None: - payload["rng-seed"] = request.seed - - return MeasureExpectationResponse(expectations=cast(List[float], self._post_json(payload).json())) - - def get_wavefunction(self, request: GetWavefunctionRequest) -> GetWavefunctionResponse: - """ - Run a program and retrieve the resulting wavefunction. - """ - payload: Dict[str, Any] = { - "type": "wavefunction", - "compiled-quil": request.program, - } - - if request.measurement_noise is not None: - payload["measurement-noise"] = request.measurement_noise - - if request.gate_noise is not None: - payload["gate-noise"] = request.gate_noise - - if request.seed is not None: - payload["rng-seed"] = request.seed - - return GetWavefunctionResponse(wavefunction=self._post_json(payload).content) - - def _post_json(self, json: Dict[str, Any]) -> httpx.Response: - with self._http_client() as http: # type: httpx.Client - response = http.post("/", json=json) - if response.status_code >= 400: - raise self._parse_error(response) - return response - - @contextmanager - def _http_client(self) -> Iterator[httpx.Client]: - with httpx.Client(base_url=self.base_url, timeout=self.timeout) as client: - yield client - - @staticmethod - def _parse_error(res: httpx.Response) -> ApiError: - """ - Errors should contain a "status" field with a human readable explanation of - what went wrong as well as a "error_type" field indicating the kind of error that can be mapped - to a Python type. - - There's a fallback error UnknownApiError for other types of exceptions (network issues, api - gateway problems, etc.) - """ - try: - body = res.json() - except JSONDecodeError: - raise UnknownApiError(res.text) - - if "error_type" not in body: - raise UnknownApiError(str(body)) - - error_type = body["error_type"] - status = body["status"] - - if re.search(r"[0-9]+ qubits were requested, but the QVM is limited to [0-9]+ qubits.", status): - return TooManyQubitsError(status) - - error_cls = error_mapping.get(error_type, UnknownApiError) - return error_cls(status) diff --git a/pyquil/api/_wavefunction_simulator.py b/pyquil/api/_wavefunction_simulator.py index f88b3f669..d86da361c 100644 --- a/pyquil/api/_wavefunction_simulator.py +++ b/pyquil/api/_wavefunction_simulator.py @@ -13,24 +13,17 @@ # See the License for the specific language governing permissions and # limitations under the License. ############################################################################## -import warnings -from typing import Dict, List, Union, Optional, Set, cast, Iterable, Sequence, Tuple +from typing import Dict, List, Union, Optional, Set, cast, Tuple import numpy as np -from qcs_sdk import QCSClient -from qcs_sdk.qpu.client import LoadClientError +from qcs_sdk import QCSClient, qvm +from qcs_sdk.qvm import QVMOptions +from pyquil.api import MemoryMap from pyquil.api._qvm import ( - validate_qubit_list, validate_noise_probabilities, ) -from pyquil.api._qvm_client import ( - MeasureExpectationRequest, - GetWavefunctionRequest, - RunAndMeasureProgramRequest, - QVMClient, -) from pyquil.gates import MOVE from pyquil.paulis import PauliSum, PauliTerm from pyquil.quil import Program, percolate_declares @@ -78,11 +71,10 @@ def __init__( client_configuration = QCSClient.load() except LoadClientError: client_configuration = QCSClient() - self._qvm_client = QVMClient(client_configuration=client_configuration, request_timeout=timeout) + self.timeout = timeout + self._client = client_configuration or QCSClient.load() - def wavefunction( - self, quil_program: Program, memory_map: Optional[Dict[str, List[Union[int, float]]]] = None - ) -> Wavefunction: + def wavefunction(self, quil_program: Program, memory_map: Optional[MemoryMap] = None) -> Wavefunction: """ Simulate a Quil program and return the wavefunction. @@ -105,9 +97,16 @@ def wavefunction( if memory_map is not None: quil_program = self.augment_program_with_memory_values(quil_program, memory_map) - request = self._wavefunction_request(quil_program=quil_program) - response = self._qvm_client.get_wavefunction(request) - return Wavefunction.from_bit_packed_string(response.wavefunction) + request = qvm.api.WavefunctionRequest( + quil_program.out(calibrations=False), + self.measurement_noise, + self.gate_noise, + self.random_seed, + ) + wavefunction = bytes( + qvm.api.get_wavefunction(request, self._client, options=QVMOptions(timeout_seconds=self.timeout)) + ) + return Wavefunction.from_bit_packed_string(wavefunction) def expectation( self, @@ -150,34 +149,22 @@ def expectation( if memory_map is not None: prep_prog = self.augment_program_with_memory_values(prep_prog, memory_map) - bare_results = self._expectation(prep_prog, progs) + request = qvm.api.ExpectationRequest(prep_prog.out(), [prog.out() for prog in progs]) + expectations = qvm.api.measure_expectation( + request, self._client, options=QVMOptions(timeout_seconds=self.timeout) + ) + bare_results = np.asarray(expectations) results = coeffs * bare_results if is_pauli_sum: return np.sum(results) # type: ignore return results # type: ignore - def _expectation(self, prep_prog: Program, operator_programs: Iterable[Program]) -> np.ndarray: - if isinstance(operator_programs, Program): - warnings.warn( - "You have provided a Program rather than a list of Programs. The results " - "from expectation will be line-wise expectation values of the " - "operator_programs.", - SyntaxWarning, - ) - - request = self._expectation_request( - prep_prog=prep_prog, - operator_programs=operator_programs, - ) - response = self._qvm_client.measure_expectation(request) - return np.asarray(response.expectations) - def run_and_measure( self, quil_program: Program, qubits: Optional[List[int]] = None, trials: int = 1, - memory_map: Optional[Dict[str, List[Union[int, float]]]] = None, + memory_map: Optional[MemoryMap] = None, ) -> np.ndarray: """ Run a Quil program once to determine the final wavefunction, and measure multiple times. @@ -215,18 +202,18 @@ def run_and_measure( if memory_map is not None: quil_program = self.augment_program_with_memory_values(quil_program, memory_map) - request = self._run_and_measure_request( - quil_program=quil_program, - qubits=qubits, - trials=trials, + request = qvm.api.MultishotMeasureRequest( + quil_program.out(), + trials, + qubits, ) - response = self._qvm_client.run_and_measure_program(request) - return np.asarray(response.results) + measured_qubits = qvm.api.run_and_measure(request, options=QVMOptions(timeout_seconds=self.timeout)) + return np.asarray(measured_qubits) @staticmethod def augment_program_with_memory_values( quil_program: Program, - memory_map: Dict[str, List[Union[int, float]]], + memory_map: MemoryMap, ) -> Program: p = Program() @@ -246,61 +233,3 @@ def augment_program_with_memory_values( p += quil_program return percolate_declares(p) - - def _run_and_measure_request( - self, - *, - quil_program: Program, - qubits: Sequence[int], - trials: int, - ) -> RunAndMeasureProgramRequest: - if not quil_program: - raise ValueError("Cannot execute an empty program") - - if not isinstance(quil_program, Program): - raise TypeError(f"quil_program must be a Program object, got type {type(quil_program)}") - qubits = validate_qubit_list(qubits) - if not isinstance(trials, int): - raise TypeError(f"trials must be an integer, got type {type(trials)}") - - return RunAndMeasureProgramRequest( - program=quil_program.out(calibrations=False), - qubits=list(qubits), - trials=trials, - measurement_noise=self.measurement_noise, - gate_noise=self.gate_noise, - seed=self.random_seed, - ) - - def _wavefunction_request( - self, - *, - quil_program: Program, - ) -> GetWavefunctionRequest: - if not isinstance(quil_program, Program): - raise TypeError(f"quil_program must be a Program object, got type {type(quil_program)}") - - return GetWavefunctionRequest( - program=quil_program.out(calibrations=False), - measurement_noise=self.measurement_noise, - gate_noise=self.gate_noise, - seed=self.random_seed, - ) - - def _expectation_request( - self, - *, - prep_prog: Program, - operator_programs: Optional[Iterable[Program]], - ) -> MeasureExpectationRequest: - if operator_programs is None: - operator_programs = [Program()] - - if not isinstance(prep_prog, Program): - raise TypeError(f"prep_prog must be a Program object, got type {type(prep_prog)}") - - return MeasureExpectationRequest( - prep_program=prep_prog.out(calibrations=False), - pauli_operators=[x.out(calibrations=False) for x in operator_programs], - seed=self.random_seed, - ) diff --git a/pyquil/compatibility/__init__.py b/pyquil/compatibility/__init__.py deleted file mode 100644 index bb3ba8b90..000000000 --- a/pyquil/compatibility/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -############################################################################## -# Copyright 2021 Rigetti Computing -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -############################################################################## -""" -Sub-package for facilitating usage of APIs similar to those of past pyQuil versions. -""" diff --git a/pyquil/gates.py b/pyquil/gates.py index 59e6c8ce9..70a9d02a3 100644 --- a/pyquil/gates.py +++ b/pyquil/gates.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. ############################################################################## +from deprecated import deprecated +from deprecated.sphinx import versionadded from numbers import Real from typing import Callable, Mapping, Optional, Tuple, Union, Iterable, no_type_check @@ -65,7 +67,7 @@ ShiftFrequency, SetPhase, ShiftPhase, - SwapPhase, + SwapPhases, SetScale, Capture, RawCapture, @@ -1056,15 +1058,24 @@ def SHIFT_PHASE(frame: Frame, phase: ParameterDesignator) -> ShiftPhase: return ShiftPhase(frame, phase) -def SWAP_PHASE(frameA: Frame, frameB: Frame) -> SwapPhase: +@versionadded(version="3.5.1", reason="The correct instruction is SWAP-PHASES, not SWAP-PHASE") +def SWAP_PHASES(frameA: Frame, frameB: Frame) -> SwapPhases: """ - Produce a SWAP-PHASE instruction. + Produce a SWAP-PHASES instruction. :param frameA: A frame. :param frameB: A frame. - :returns: A SwapPhase instance. + :returns: A SwapPhases instance. """ - return SwapPhase(frameA, frameB) + return SwapPhases(frameA, frameB) + + +@deprecated(version="3.5.1", reason="The correct instruction is SWAP-PHASES, not SWAP-PHASE") +def SWAP_PHASE(frameA: Frame, frameB: Frame) -> SwapPhases: + """ + Alias of :func:`SWAP_PHASES`. + """ + return SWAP_PHASES(frameA, frameB) def SET_SCALE(frame: Frame, scale: ParameterDesignator) -> SetScale: @@ -1210,7 +1221,8 @@ def FENCE(*qubits: Union[int, Qubit, FormalArgument]) -> Union[FenceAll, Fence]: "SHIFT-FREQUENCY": SHIFT_FREQUENCY, "SET-PHASE": SET_PHASE, "SHIFT-PHASE": SHIFT_PHASE, - "SWAP-PHASE": SWAP_PHASE, + "SWAP-PHASE": SWAP_PHASES, + "SWAP-PHASES": SWAP_PHASES, "SET-SCALE": SET_SCALE, "CAPTURE": CAPTURE, "RAW-CAPTURE": RAW_CAPTURE, diff --git a/pyquil/pyqvm.py b/pyquil/pyqvm.py index 6b631f35b..8efc6851f 100644 --- a/pyquil/pyqvm.py +++ b/pyquil/pyqvm.py @@ -15,12 +15,12 @@ ############################################################################## import logging from abc import ABC, abstractmethod -from typing import Dict, List, Optional, Sequence, Type, Union +from typing import Dict, List, Optional, Sequence, Type, Union, Any import numpy as np from numpy.random.mtrand import RandomState -from pyquil.api import QAM, QuantumExecutable, QAMExecutionResult +from pyquil.api import QAM, QuantumExecutable, QAMExecutionResult, MemoryMap from pyquil.paulis import PauliTerm, PauliSum from pyquil.quil import Program from pyquil.quilatom import Label, LabelPlaceholder, MemoryReference @@ -192,7 +192,7 @@ def __init__( quantum_simulator_type = ReferenceDensitySimulator self.n_qubits = n_qubits - self.ram: Dict[str, np.ndarray] = {} + self.ram: Dict[str, List[Union[float, int]]] = {} if post_gate_noise_probabilities is None: post_gate_noise_probabilities = {} @@ -221,12 +221,7 @@ def _extract_defined_gates(self) -> None: raise NotImplementedError("PyQVM does not support DEFGATE ... AS MATRIX | PAULI-SUM.") self.defined_gates[dg.name] = dg.matrix - def write_memory(self, *, region_name: str, offset: int = 0, value: int = 0) -> "PyQVM": - assert region_name != "ro" - self.ram[region_name][offset] = value - return self - - def execute(self, executable: QuantumExecutable) -> "PyQVM": + def execute(self, executable: QuantumExecutable, memory_map: Optional[MemoryMap] = None, **__: Any) -> "PyQVM": """ Execute a program on the PyQVM. Note that the state of the instance is reset on each call to ``execute``. @@ -240,6 +235,9 @@ def execute(self, executable: QuantumExecutable) -> "PyQVM": self._memory_results = {} self.ram = {} + if memory_map: + self.ram.update(*memory_map) + self.wf_simulator.reset() # grab the gate definitions for future use @@ -330,8 +328,8 @@ def transition(self) -> bool: if instruction.shared_region is not None: raise NotImplementedError("SHARING is not (yet) implemented.") - self.ram[instruction.name] = np.zeros( - instruction.memory_size, dtype=QUIL_TO_NUMPY_DTYPE[instruction.memory_type] + self.ram[instruction.name] = list( + np.zeros(instruction.memory_size, dtype=QUIL_TO_NUMPY_DTYPE[instruction.memory_type]) ) self.program_counter += 1 @@ -352,7 +350,7 @@ def transition(self) -> bool: jump_reg: Optional[MemoryReference] = instruction.condition assert jump_reg is not None cond = self.ram[jump_reg.name][jump_reg.offset] - if not isinstance(cond, (bool, np.bool_, np.int8)): + if not isinstance(cond, (bool, np.bool_, np.int8, int)): raise ValueError("{} requires a data type of BIT; not {}".format(instruction.op, type(cond))) dest_index = self.find_label(instruction.target) if isinstance(instruction, JumpWhen): diff --git a/pyquil/quantum_processor/transformers/qcs_isa_to_compiler_isa.py b/pyquil/quantum_processor/transformers/qcs_isa_to_compiler_isa.py index 37bf90999..d1410161e 100644 --- a/pyquil/quantum_processor/transformers/qcs_isa_to_compiler_isa.py +++ b/pyquil/quantum_processor/transformers/qcs_isa_to_compiler_isa.py @@ -1,6 +1,10 @@ +from collections import defaultdict +from typing import List, Union, cast, DefaultDict, Set, Sequence, Optional + +import numpy as np from qcs_sdk.qpu.isa import InstructionSetArchitecture, Characteristic, Operation + from pyquil.external.rpcq import CompilerISA, add_edge, add_qubit, get_qubit, get_edge -import numpy as np from pyquil.external.rpcq import ( GateInfo, MeasureInfo, @@ -8,8 +12,6 @@ Supported2QGate, make_edge_id, ) -from typing import List, Union, cast, DefaultDict, Set, Optional -from collections import defaultdict class QCSISAParseError(ValueError): @@ -114,7 +116,7 @@ def qcs_isa_to_compiler_isa(isa: InstructionSetArchitecture) -> CompilerISA: } -def _make_measure_gates(node_id: int, characteristics: List[Characteristic]) -> List[MeasureInfo]: +def _make_measure_gates(node_id: int, characteristics: Sequence[Characteristic]) -> List[MeasureInfo]: duration = _operation_names_to_compiler_duration_default[Supported1QGate.MEASURE] fidelity = _operation_names_to_compiler_fidelity_default[Supported1QGate.MEASURE] for characteristic in characteristics: @@ -140,7 +142,7 @@ def _make_measure_gates(node_id: int, characteristics: List[Characteristic]) -> ] -def _make_rx_gates(node_id: int, benchmarks: List[Operation]) -> List[GateInfo]: +def _make_rx_gates(node_id: int, benchmarks: Sequence[Operation]) -> List[GateInfo]: default_duration = _operation_names_to_compiler_duration_default[Supported1QGate.RX] default_fidelity = _operation_names_to_compiler_fidelity_default[Supported1QGate.RX] @@ -182,7 +184,7 @@ def _make_rz_gates(node_id: int) -> List[GateInfo]: ] -def _get_frb_sim_1q(node_id: int, benchmarks: List[Operation]) -> Optional[float]: +def _get_frb_sim_1q(node_id: int, benchmarks: Sequence[Operation]) -> Optional[float]: frb_sim_1q = next( (benchmark for benchmark in benchmarks if benchmark.name == "randomized_benchmark_simultaneous_1q"), None ) @@ -220,8 +222,8 @@ def _make_wildcard_1q_gates(node_id: int) -> List[GateInfo]: def _transform_qubit_operation_to_gates( operation_name: str, node_id: int, - characteristics: List[Characteristic], - benchmarks: List[Operation], + characteristics: Sequence[Characteristic], + benchmarks: Sequence[Operation], ) -> List[Union[GateInfo, MeasureInfo]]: if operation_name == Supported1QGate.RX: return cast(List[Union[GateInfo, MeasureInfo]], _make_rx_gates(node_id, benchmarks)) @@ -237,7 +239,7 @@ def _transform_qubit_operation_to_gates( raise QCSISAParseError("Unsupported qubit operation: {}".format(operation_name)) -def _make_cz_gates(characteristics: List[Characteristic]) -> List[GateInfo]: +def _make_cz_gates(characteristics: Sequence[Characteristic]) -> List[GateInfo]: default_duration = _operation_names_to_compiler_duration_default[Supported2QGate.CZ] default_fidelity = _operation_names_to_compiler_fidelity_default[Supported2QGate.CZ] @@ -258,7 +260,7 @@ def _make_cz_gates(characteristics: List[Characteristic]) -> List[GateInfo]: ] -def _make_iswap_gates(characteristics: List[Characteristic]) -> List[GateInfo]: +def _make_iswap_gates(characteristics: Sequence[Characteristic]) -> List[GateInfo]: default_duration = _operation_names_to_compiler_duration_default[Supported2QGate.ISWAP] default_fidelity = _operation_names_to_compiler_fidelity_default[Supported2QGate.ISWAP] @@ -279,7 +281,7 @@ def _make_iswap_gates(characteristics: List[Characteristic]) -> List[GateInfo]: ] -def _make_cphase_gates(characteristics: List[Characteristic]) -> List[GateInfo]: +def _make_cphase_gates(characteristics: Sequence[Characteristic]) -> List[GateInfo]: default_duration = _operation_names_to_compiler_duration_default[Supported2QGate.CPHASE] default_fidelity = _operation_names_to_compiler_fidelity_default[Supported2QGate.CPHASE] @@ -300,7 +302,7 @@ def _make_cphase_gates(characteristics: List[Characteristic]) -> List[GateInfo]: ] -def _make_xy_gates(characteristics: List[Characteristic]) -> List[GateInfo]: +def _make_xy_gates(characteristics: Sequence[Characteristic]) -> List[GateInfo]: default_duration = _operation_names_to_compiler_duration_default[Supported2QGate.XY] default_fidelity = _operation_names_to_compiler_fidelity_default[Supported2QGate.XY] @@ -335,7 +337,7 @@ def _make_wildcard_2q_gates() -> List[GateInfo]: def _transform_edge_operation_to_gates( operation_name: str, - characteristics: List[Characteristic], + characteristics: Sequence[Characteristic], ) -> List[GateInfo]: if operation_name == Supported2QGate.CZ: return _make_cz_gates(characteristics) diff --git a/pyquil/quil.py b/pyquil/quil.py index 4b79cbca7..77b6ebe85 100644 --- a/pyquil/quil.py +++ b/pyquil/quil.py @@ -39,13 +39,11 @@ from copy import deepcopy import numpy as np -from rpcq.messages import ParameterAref from qcs_sdk.compiler.quilc import NativeQuilMetadata from pyquil._parser.parser import run_parser -from pyquil._memory import Memory -from pyquil.gates import MEASURE, RESET, MOVE +from pyquil.gates import MEASURE, RESET from pyquil.noise import _check_kraus_ops, _create_kraus_pragmas, pauli_kraus_map from pyquil.quilatom import ( Label, @@ -89,7 +87,7 @@ ShiftFrequency, SetPhase, ShiftPhase, - SwapPhase, + SwapPhases, SetScale, DefPermutationGate, DefCalibration, @@ -126,9 +124,6 @@ class Program: >>> p += CNOT(0, 1) """ - _memory: Memory - """Contents of memory to be used as program parameters during execution""" - def __init__(self, *instructions: InstructionDesignator): self._defined_gates: List[DefGate] = [] @@ -157,8 +152,6 @@ def __init__(self, *instructions: InstructionDesignator): # default number of shots to loop through self.num_shots = 1 - self._memory = Memory() - # Note to developers: Have you changed this method? Have you changed the fields which # live on `Program`? Please update `Program.copy()`! @@ -190,14 +183,12 @@ def copy_everything_except_instructions(self) -> "Program": """ new_prog = Program() new_prog._calibrations = self.calibrations.copy() - new_prog._declarations = self._declarations.copy() new_prog._waveforms = self.waveforms.copy() new_prog._defined_gates = self._defined_gates.copy() new_prog._frames = self.frames.copy() if self.native_quil_metadata is not None: new_prog.native_quil_metadata = deepcopy(self.native_quil_metadata) new_prog.num_shots = self.num_shots - new_prog._memory = self._memory.copy() return new_prog def copy(self) -> "Program": @@ -209,8 +200,9 @@ def copy(self) -> "Program": :return: a new Program """ - new_prog = self.copy_everything_except_instructions() + new_prog = self.copy_everything_except_instructions() # and declarations, which is a view new_prog._instructions = self._instructions.copy() + new_prog._declarations = self._declarations.copy() return new_prog @property @@ -544,29 +536,6 @@ def measure_all(self, *qubit_reg_pairs: Tuple[QubitDesignator, Optional[MemoryRe self.inst(MEASURE(qubit_index, classical_reg)) return self - def _set_parameter_values_at_runtime(self) -> "Program": - """ - Store all parameter values directly within the Program using ``MOVE`` instructions. Mutates the receiver. - """ - move_instructions = [ - MOVE(MemoryReference(name=k.name, offset=k.index), v) for k, v in self._memory.values.items() - ] - - self.prepend_instructions(move_instructions) - self._sort_declares_to_program_start() - - return self - - def write_memory( - self, - *, - region_name: str, - value: Union[int, float, Sequence[int], Sequence[float]], - offset: Optional[int] = None, - ) -> "Program": - self._memory._write_value(parameter=ParameterAref(name=region_name, index=offset or 0), value=value) - return self - def prepend_instructions(self, instructions: Iterable[AbstractInstruction]) -> "Program": """ Prepend instructions to the beginning of the program. @@ -758,7 +727,7 @@ def get_qubits(self, indices: bool = True) -> Set[QubitDesignator]: SetFrequency, SetPhase, ShiftPhase, - SwapPhase, + SwapPhases, SetScale, ), ): @@ -948,12 +917,10 @@ def __add__(self, other: InstructionDesignator) -> "Program": p._calibrations = self.calibrations.copy() p._waveforms = self.waveforms.copy() p._frames = self.frames.copy() - p._memory = self._memory.copy() if isinstance(other, Program): p.calibrations.extend(other.calibrations) p.waveforms.update(other.waveforms) p.frames.update(other.frames) - p._memory.values.update(other._memory.values) return p def __iadd__(self, other: InstructionDesignator) -> "Program": @@ -968,7 +935,6 @@ def __iadd__(self, other: InstructionDesignator) -> "Program": self.calibrations.extend(other.calibrations) self.waveforms.update(other.waveforms) self.frames.update(other.frames) - self._memory.values.update(other._memory.copy().values) return self def __getitem__(self, index: Union[slice, int]) -> Union[AbstractInstruction, "Program"]: @@ -1364,7 +1330,7 @@ def validate_protoquil(program: Program, quilt: bool = False) -> None: SetScale, ShiftPhase, SetPhase, - SwapPhase, + SwapPhases, Pulse, Capture, RawCapture, diff --git a/pyquil/quilbase.py b/pyquil/quilbase.py index 6f675f96d..0009190c6 100644 --- a/pyquil/quilbase.py +++ b/pyquil/quilbase.py @@ -38,6 +38,8 @@ ) import numpy as np +from deprecated import deprecated +from deprecated.sphinx import versionadded from pyquil.quilatom import ( Expression, @@ -1154,18 +1156,24 @@ def get_qubits(self, indices: bool = True) -> Set[QubitDesignator]: return _get_frame_qubits(self.frame, indices) -class SwapPhase(AbstractInstruction): +@versionadded(version="3.5.1", reason="The correct instruction is SWAP-PHASES, not SWAP-PHASE") +class SwapPhases(AbstractInstruction): def __init__(self, frameA: Frame, frameB: Frame): self.frameA = frameA self.frameB = frameB def out(self) -> str: - return f"SWAP-PHASE {self.frameA} {self.frameB}" + return f"SWAP-PHASES {self.frameA} {self.frameB}" def get_qubits(self, indices: bool = True) -> Set[QubitDesignator]: return _get_frame_qubits(self.frameA, indices) | _get_frame_qubits(self.frameB, indices) +@deprecated(version="3.5.1", reason="The correct instruction is SWAP-PHASES, not SWAP-PHASE") +class SwapPhase(SwapPhases): + pass + + class SetScale(AbstractInstruction): def __init__(self, frame: Frame, scale: ParameterDesignator): self.frame = frame diff --git a/pyquil/quiltcalibrations.py b/pyquil/quiltcalibrations.py index d58e20733..6885312d0 100644 --- a/pyquil/quiltcalibrations.py +++ b/pyquil/quiltcalibrations.py @@ -34,7 +34,7 @@ SetScale, ShiftFrequency, ShiftPhase, - SwapPhase, + SwapPhases, ) @@ -101,7 +101,7 @@ def fill_placeholders(obj, placeholder_values: Dict[Union[FormalArgument, Parame ShiftFrequency: ["frame", "freq"], SetPhase: ["frame", "phase"], ShiftPhase: ["frame", "phase"], - SwapPhase: ["frameA", "frameB"], + SwapPhases: ["frameA", "frameB"], SetScale: ["frame", "scale"], Capture: ["frame", "kernel", "memory_region"], RawCapture: ["frame", "duration", "memory_region"], diff --git a/test/e2e/test_e2e.py b/test/e2e/test_e2e.py index 0e10788e7..d232b95f0 100644 --- a/test/e2e/test_e2e.py +++ b/test/e2e/test_e2e.py @@ -54,8 +54,7 @@ def test_parametric_program(qc: QuantumComputer): all_results = [] for theta in [0, np.pi, 2 * np.pi]: - compiled.write_memory(region_name="theta", value=theta) - results = qc.run(compiled).readout_data.get("ro") + results = qc.run(compiled, {"theta": [theta]}).readout_data.get("ro") all_results.append(np.mean(results)) if isinstance(qc.qam, QPU): diff --git a/test/unit/test_parser.py b/test/unit/test_parser.py index 565e45866..4b2ceb018 100644 --- a/test/unit/test_parser.py +++ b/test/unit/test_parser.py @@ -81,7 +81,7 @@ ShiftFrequency, SetPhase, ShiftPhase, - SwapPhase, + SwapPhases, SetScale, Capture, RawCapture, @@ -178,6 +178,20 @@ def test_def_gate_as_matrix(): assert not isinstance(parsed[0], DefPermutationGate) +def test_def_gate_as_matrix_parameterized(): + matrix_gate_str = """DEFGATE RZZ(%phi) AS MATRIX: + COS(%phi/2), 0, 0, -1.0i*SIN(%phi/2) + 0, COS(%phi/2), -1.0i*SIN(%phi/2), 0 + 0, -1.0i*SIN(%phi/2), COS(%phi/2), 0 + -1.0i*SIN(%phi/2), 0, 0, COS(%phi/2) + """.strip() + parsed = parse(matrix_gate_str) + + assert len(parsed) == 1 + assert isinstance(parsed[0], DefGate) + assert not isinstance(parsed[0], DefPermutationGate) + + def test_def_permutation_gate(): perm_gate = DefPermutationGate("CCNOT", [0, 1, 2, 3, 4, 5, 7, 6]) @@ -261,10 +275,15 @@ def _expr(expression, expected): # Functions _expr("SIN(0)", 0.0) + _expr("sin(0)", 0.0) _expr("COS(0)", 1.0) + _expr("cos(0)", 1.0) _expr("SQRT(4)", 2.0) + _expr("sqrt(4)", 2.0) _expr("EXP(0)", 1.0) + _expr("exp(0)", 1.0) _expr("CIS(0)", complex(1, 0)) + _expr("cis(0)", complex(1, 0)) # Unary precedence # https://github.com/rigetti/pyquil/issues/246 @@ -387,9 +406,7 @@ def test_def_circuit(): """.strip() gate_param = "parameterized(0.0, 1.0) 0" - parse_equals( - defcircuit + "\n" + gate, RawInstr(defcircuit), Gate("bell", [], [Qubit(0), Qubit(1)]) - ) + parse_equals(defcircuit + "\n" + gate, RawInstr(defcircuit), Gate("bell", [], [Qubit(0), Qubit(1)])) parse_equals( defcircuit_no_qubits + "\n" + gate_no_qubits, RawInstr(defcircuit_no_qubits), @@ -543,12 +560,13 @@ def test_parsing_frame_mutations(): parse_equals(f"{op_str} {frame_str} {val_str}", op(frame, val)) -def test_parsing_swap_phase(): - parse_equals('SWAP-PHASE 0 "rf" 1 "rf"', SwapPhase(Frame([Qubit(0)], "rf"), Frame([Qubit(1)], "rf"))) - parse_equals( - 'SWAP-PHASE 0 1 "ff" 1 0 "ff"', - SwapPhase(Frame([Qubit(0), Qubit(1)], "ff"), Frame([Qubit(1), Qubit(0)], "ff")), - ) +def test_parsing_swap_phases(): + for command in ["SWAP-PHASE", "SWAP-PHASES"]: + parse_equals(f'{command} 0 "rf" 1 "rf"', SwapPhases(Frame([Qubit(0)], "rf"), Frame([Qubit(1)], "rf"))) + parse_equals( + f'{command} 0 1 "ff" 1 0 "ff"', + SwapPhases(Frame([Qubit(0), Qubit(1)], "ff"), Frame([Qubit(1), Qubit(0)], "ff")), + ) def test_parsing_delay(): @@ -600,10 +618,10 @@ def test_parsing_defframe(): ) parse_equals( 'DEFFRAME 0 "rf":\n' - ' SAMPLE-RATE: 2.0\n' - ' INITIAL-FREQUENCY: 10\n' + " SAMPLE-RATE: 2.0\n" + " INITIAL-FREQUENCY: 10\n" ' ENABLE-RAW-CAPTURE: "true"\n' - ' CHANNEL-DELAY: 20e-9', + " CHANNEL-DELAY: 20e-9", DefFrame( Frame([Qubit(0)], "rf"), sample_rate=2.0, @@ -616,11 +634,7 @@ def test_parsing_defframe(): Frame([Qubit(0)], "rf"), enable_raw_capture="true", channel_delay=12e-9, - ).out() == ( - 'DEFFRAME 0 "rf":\n' - ' ENABLE-RAW-CAPTURE: "true"\n' - ' CHANNEL-DELAY: 1.2e-08\n' - ) + ).out() == ('DEFFRAME 0 "rf":\n' ' ENABLE-RAW-CAPTURE: "true"\n' " CHANNEL-DELAY: 1.2e-08\n") with pytest.raises(UnexpectedToken) as excp: parse('DEFFRAME 0 "rf":\n' " UNSUPPORTED: 2.0\n") @@ -698,7 +712,7 @@ def test_parse_defcal_error_on_mref(): def test_parse_defgate_as_pauli(): - """ Check that DEFGATE AS PAULI-SUM takes only qubit variables (for now). """ + """Check that DEFGATE AS PAULI-SUM takes only qubit variables (for now).""" assert parse("DEFGATE RY(%theta) q AS PAULI-SUM:\n Y(-%theta/2) q") with pytest.raises(UnexpectedToken) as excp: parse("DEFGATE RY(%theta) 0 AS PAULI-SUM:\n Y(-%theta/2) q") @@ -734,11 +748,17 @@ def test_parse_comments(program): def test_parse_strings_with_spaces(): - Program(str(Program(""" + Program( + str( + Program( + """ DEFFRAME 0 "readout_tx": DIRECTION: "tx" INITIAL-FREQUENCY: 7220000000.0 CENTER-FREQUENCY: 7125000000 HARDWARE-OBJECT: "A_string_with_one space" SAMPLE-RATE: 1000000000.0 -"""))) +""" + ) + ) + ) diff --git a/test/unit/test_qpu.py b/test/unit/test_qpu.py new file mode 100644 index 000000000..e3afaf3d7 --- /dev/null +++ b/test/unit/test_qpu.py @@ -0,0 +1,23 @@ +from pyquil.api import ConnectionStrategy, ExecutionOptions +from pyquil.api._qpu import QPU + + +def test_default_execution_options(): + qpu = QPU(quantum_processor_id="test", timeout=15.0, endpoint_id="endpoint-id") + + builder = ExecutionOptions.builder() + builder.timeout_seconds = 15.0 + builder.connection_strategy = ConnectionStrategy.endpoint_id("endpoint-id") + expected = builder.build() + + assert qpu.execution_options == expected + + +def test_provided_execution_options(): + builder = ExecutionOptions.builder() + builder.timeout_seconds = 15.0 + builder.connection_strategy = ConnectionStrategy.direct_access() + options = builder.build() + + qpu = QPU(quantum_processor_id="test", execution_options=options) + assert qpu.execution_options == options diff --git a/test/unit/test_quantum_computer.py b/test/unit/test_quantum_computer.py index 49b056efc..1d78a7a57 100644 --- a/test/unit/test_quantum_computer.py +++ b/test/unit/test_quantum_computer.py @@ -294,7 +294,7 @@ def test_run_symmetrized_readout_error(client_configuration: QCSClient): # Locally this test was run on all 8 qubits, but it was slow. qc = get_qc("8q-qvm", client_configuration=client_configuration) sym_type_vec = [-1, 0, 1, 2, 3] - prog_vec = [Program(I(x) for x in range(0, 3))[0:n] for n in range(0, 4)] + prog_vec = [Program(I(x) for x in range(0, 3))[0:n] for n in range(1, 4)] trials_vec = list(range(0, 5)) for prog, trials, sym_type in itertools.product(prog_vec, trials_vec, sym_type_vec): print(qc.run_symmetrized_readout(prog, trials, sym_type)) @@ -419,15 +419,13 @@ def test_qc(client_configuration: QCSClient): def test_qc_run(client_configuration: QCSClient): qc = get_qc("9q-square-noisy-qvm", client_configuration=client_configuration) - bs = qc.run( - qc.compile( - Program( - Declare("ro", "BIT", 1), - X(0), - MEASURE(0, ("ro", 0)), - ).wrap_in_numshots_loop(3) - ) - ).readout_data.get("ro") + program = Program( + Declare("ro", "BIT", 1), + X(0), + MEASURE(0, ("ro", 0)), + ).wrap_in_numshots_loop(3) + compiled_program = qc.compile(program) + bs = qc.run(compiled_program).readout_data.get("ro") assert bs.shape == (3, 1) @@ -461,8 +459,8 @@ def test_qc_error(client_configuration: QCSClient): get_qc("5q", as_qvm=False, client_configuration=client_configuration) -@pytest.mark.parametrize("param", [np.pi, [np.pi], np.array([np.pi])]) -def test_run_with_parameters(client_configuration: QCSClient, param): +@pytest.mark.parametrize("params", [[np.pi], np.array([np.pi])]) +def test_run_with_parameters(client_configuration: QCSClient, params): quantum_processor = NxQuantumProcessor(nx.complete_graph(3)) qc = QuantumComputer( name="testy!", @@ -476,8 +474,7 @@ def test_run_with_parameters(client_configuration: QCSClient, param): MEASURE(0, MemoryReference("ro")), ).wrap_in_numshots_loop(1000) - executable.write_memory(region_name="theta", value=param) - bitstrings = qc.run(executable).readout_data.get("ro") + bitstrings = qc.run(executable, {"theta": params}).readout_data.get("ro") assert bitstrings.shape == (1000, 1) assert all([bit == 1 for bit in bitstrings]) @@ -498,8 +495,8 @@ def test_run_with_bad_parameters(client_configuration: QCSClient, param): MEASURE(0, MemoryReference("ro")), ).wrap_in_numshots_loop(1000) - with pytest.raises(TypeError, match=r"Parameter must be"): - executable.write_memory(region_name="theta", value=param) + with pytest.raises(TypeError): + qc.run(executable, {"theta": [param]}) def test_reset(client_configuration: QCSClient): @@ -515,11 +512,8 @@ def test_reset(client_configuration: QCSClient): RX(MemoryReference("theta"), 0), MEASURE(0, MemoryReference("ro")), ).wrap_in_numshots_loop(10) - p.write_memory(region_name="theta", value=np.pi) - result = qc.qam.run(p) + result = qc.qam.run(p, {"theta": [np.pi]}) - aref = ParameterAref(name="theta", index=0) - assert p._memory.values[aref] == np.pi assert result.readout_data["ro"].shape == (10, 1) assert all([bit == 1 for bit in result.readout_data["ro"]]) @@ -838,6 +832,28 @@ def test_qc_expectation_on_qvm(client_configuration: QCSClient, dummy_compiler: assert results[2][0].total_counts == 20000 +def test_undeclared_memory_region(client_configuration: QCSClient, dummy_compiler: DummyCompiler): + """ + Test for https://github.com/rigetti/pyquil/issues/1596 + """ + program = Program( + """ +DECLARE beta REAL[1] +RZ(0.5) 0 +CPHASE(pi) 0 1 +DECLARE ro BIT[2] +MEASURE 0 ro[0] +MEASURE 1 ro[1] +""" + ) + program = program.copy_everything_except_instructions() + assert len(program.instructions) == 0 # the purpose of copy_everything_except_instructions() + assert len(program.declarations) == 0 # this is a view on the instructions member; must be consistent + qc = QuantumComputer(name="testy!", qam=QVM(client_configuration=client_configuration), compiler=dummy_compiler) + executable = qc.compiler.native_quil_to_executable(program) + qc.run(executable) + + @pytest.mark.skip # qcs_sdk client profiles do not support group accounts @respx.mock def test_get_qc_with_group_account(client_configuration: QCSClient, qcs_aspen8_isa: InstructionSetArchitecture): diff --git a/test/unit/test_quil.py b/test/unit/test_quil.py index dd7cabfda..31ee3b7c4 100644 --- a/test/unit/test_quil.py +++ b/test/unit/test_quil.py @@ -1409,3 +1409,20 @@ def test_params_pi_and_precedence(): prog = Program(f"RX({more_less_trivial_pi}) 0") exp = str(prog[0].params[0]) assert _eval_as_np_pi(more_less_trivial_pi) == _eval_as_np_pi(exp) + + +def test_copy_everything_except_instructions(): + """Test for https://github.com/rigetti/pyquil/issues/1613""" + program = Program( + """ +DECLARE beta REAL[1] +RZ(0.5) 0 +CPHASE(pi) 0 1 +DECLARE ro BIT[2] +MEASURE 0 ro[0] +MEASURE 1 ro[1] +""" + ) + program = program.copy_everything_except_instructions() + assert len(program.instructions) == 0 # the purpose of copy_everything_except_instructions() + assert len(program.declarations) == 0 # this is a view on the instructions member; must be consistent diff --git a/test/unit/test_qvm.py b/test/unit/test_qvm.py index b881ad0c2..0303fea05 100644 --- a/test/unit/test_qvm.py +++ b/test/unit/test_qvm.py @@ -1,10 +1,11 @@ import numpy as np import pytest +from qcs_sdk.qvm import QVMError + from pyquil import Program from pyquil.api import QVM -from pyquil.api._errors import QVMError -from pyquil.api._qvm import validate_noise_probabilities, validate_qubit_list, prepare_register_list +from pyquil.api._qvm import validate_noise_probabilities, validate_qubit_list from pyquil.api import QCSClient from pyquil.gates import MEASURE, X from pyquil.quilbase import Declare, MemoryReference @@ -59,7 +60,8 @@ def test_qvm_run_region_declared_not_measured(client_configuration: QCSClient): p = Program(Declare("reg", "BIT"), X(0)) result = qvm.run(p.wrap_in_numshots_loop(100)) bitstrings = result.readout_data.get("reg") - assert bitstrings.shape == (100, 0) + assert bitstrings is not None + assert bitstrings.shape == (100, 1) def test_qvm_run_region_not_declared_is_measured(client_configuration: QCSClient): @@ -113,8 +115,3 @@ def test_validate_qubit_list(): validate_qubit_list([-1, 1]) with pytest.raises(TypeError): validate_qubit_list(["a", 0], 1) - - -def test_prepare_register_list(): - with pytest.raises(TypeError): - prepare_register_list({"ro": [-1, 1]}) diff --git a/test/unit/test_qvm_client.py b/test/unit/test_qvm_client.py deleted file mode 100644 index 74410adb4..000000000 --- a/test/unit/test_qvm_client.py +++ /dev/null @@ -1,157 +0,0 @@ -############################################################################## -# Copyright 2016-2021 Rigetti Computing -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -############################################################################## -import json -from typing import Any, Dict - -import httpx -import respx -from qcs_sdk import QCSClient - -from pyquil.api._qvm_client import ( - QVMClient, - GetWavefunctionResponse, - GetWavefunctionRequest, - MeasureExpectationResponse, - MeasureExpectationRequest, - RunAndMeasureProgramResponse, - RunAndMeasureProgramRequest, - RunProgramRequest, - RunProgramResponse, -) - - -def test_init__sets_base_url_and_timeout(client_configuration: QCSClient): - qvm_client = QVMClient(client_configuration=client_configuration, request_timeout=3.14) - - assert qvm_client.base_url == client_configuration.qvm_url - assert qvm_client.timeout == 3.14 - - -@respx.mock -def test_get_version__returns_version(client_configuration: QCSClient): - qvm_client = QVMClient(client_configuration=client_configuration) - - respx.post( - url=client_configuration.qvm_url, - json={"type": "version"}, - ).respond(status_code=200, text="1.2.3 [abc123]") - - assert qvm_client.get_version() == "1.2.3" - - -@respx.mock -def test_run_program__returns_results(client_configuration: QCSClient): - qvm_client = QVMClient(client_configuration=client_configuration) - - respx.post( - url=client_configuration.qvm_url, - json={ - "type": "multishot", - "compiled-quil": "some-program", - "addresses": {"ro": True}, - "trials": 1, - "measurement-noise": (3.14, 1.61, 6.28), - "gate-noise": (1.0, 2.0, 3.0), - "rng-seed": 314, - }, - ).respond(status_code=200, json={"ro": [[1, 0, 1]]}) - - request = RunProgramRequest( - program="some-program", - addresses={"ro": True}, - trials=1, - measurement_noise=(3.14, 1.61, 6.28), - gate_noise=(1.0, 2.0, 3.0), - seed=314, - ) - assert qvm_client.run_program(request) == RunProgramResponse(results={"ro": [[1, 0, 1]]}) - - -@respx.mock -def test_run_and_measure_program__returns_results(client_configuration: QCSClient): - qvm_client = QVMClient(client_configuration=client_configuration) - - respx.post( - url=client_configuration.qvm_url, - json={ - "type": "multishot-measure", - "compiled-quil": "some-program", - "qubits": [0, 1, 2], - "trials": 1, - "measurement-noise": (3.14, 1.61, 6.28), - "gate-noise": (1.0, 2.0, 3.0), - "rng-seed": 314, - }, - ).respond(status_code=200, json=[[1, 0, 1]]) - - request = RunAndMeasureProgramRequest( - program="some-program", - qubits=[0, 1, 2], - trials=1, - measurement_noise=(3.14, 1.61, 6.28), - gate_noise=(1.0, 2.0, 3.0), - seed=314, - ) - assert qvm_client.run_and_measure_program(request) == RunAndMeasureProgramResponse(results=[[1, 0, 1]]) - - -@respx.mock -def test_measure_expectation__returns_expectation(client_configuration: QCSClient): - qvm_client = QVMClient(client_configuration=client_configuration) - - respx.post( - url=client_configuration.qvm_url, - json={ - "type": "expectation", - "state-preparation": "some-program", - "operators": ["some-op-program"], - "rng-seed": 314, - }, - ).respond( - status_code=200, - json=[0.161], - ) - - request = MeasureExpectationRequest( - prep_program="some-program", - pauli_operators=["some-op-program"], - seed=314, - ) - assert qvm_client.measure_expectation(request) == MeasureExpectationResponse(expectations=[0.161]) - - -@respx.mock -def test_get_wavefunction__returns_wavefunction(client_configuration: QCSClient): - qvm_client = QVMClient(client_configuration=client_configuration) - - respx.post( - url=client_configuration.qvm_url, - json={ - "type": "wavefunction", - "compiled-quil": "some-program", - "measurement-noise": (3.14, 1.61, 6.28), - "gate-noise": (1.0, 2.0, 3.0), - "rng-seed": 314, - }, - ).respond(status_code=200, text="some-wavefunction") - - request = GetWavefunctionRequest( - program="some-program", - measurement_noise=(3.14, 1.61, 6.28), - gate_noise=(1.0, 2.0, 3.0), - seed=314, - ) - assert qvm_client.get_wavefunction(request) == GetWavefunctionResponse(wavefunction=b"some-wavefunction") diff --git a/test/unit/test_reference_wavefunction.py b/test/unit/test_reference_wavefunction.py index 5131b1937..22dca18ef 100644 --- a/test/unit/test_reference_wavefunction.py +++ b/test/unit/test_reference_wavefunction.py @@ -711,7 +711,7 @@ def test_bell_state(): def test_occupation_basis(): prog = Program().inst([X(0), X(1), I(2), I(3)]) - state = np.zeros(2 ** 4) + state = np.zeros(2**4) state[3] = 1.0 qam = PyQVM(n_qubits=4, quantum_simulator_type=ReferenceWavefunctionSimulator)