diff --git a/.github/workflows/rustapi.yml b/.github/workflows/rustapi.yml new file mode 100644 index 000000000..ed69c5a83 --- /dev/null +++ b/.github/workflows/rustapi.yml @@ -0,0 +1,36 @@ +# Test Qibolab Rust API +name: Rust API + +on: + push: + workflow_dispatch: + +jobs: + tests: + strategy: + matrix: + os: [ubuntu-latest, macos-latest] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Prepare virtual environment + run: | + pip install . + - name: Install Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + - name: Check and lint + working-directory: crate + run: | + cargo check + cargo clippy --all-targets + - name: Build & run example + working-directory: crate + run: | + cargo run --example example diff --git a/crate/Cargo.lock b/crate/Cargo.lock new file mode 100644 index 000000000..abe0091a5 --- /dev/null +++ b/crate/Cargo.lock @@ -0,0 +1,367 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "anyhow" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "indoc" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" + +[[package]] +name = "libc" +version = "0.2.152" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "matrixmultiply" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "ndarray" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32" +dependencies = [ + "matrixmultiply", + "num-complex", + "num-integer", + "num-traits", + "rawpointer", +] + +[[package]] +name = "num-complex" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "numpy" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef41cbb417ea83b30525259e30ccef6af39b31c240bda578889494c5392d331" +dependencies = [ + "libc", + "ndarray", + "num-complex", + "num-integer", + "num-traits", + "pyo3", + "rustc-hash", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets", +] + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "pyo3" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a89dc7a5850d0e983be1ec2a463a171d20990487c3cfcd68b5363f1ee3d6fe0" +dependencies = [ + "cfg-if", + "indoc", + "libc", + "memoffset", + "parking_lot", + "pyo3-build-config", + "pyo3-ffi", + "pyo3-macros", + "unindent", +] + +[[package]] +name = "pyo3-build-config" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07426f0d8fe5a601f26293f300afd1a7b1ed5e78b2a705870c5f30893c5163be" +dependencies = [ + "once_cell", + "target-lexicon", +] + +[[package]] +name = "pyo3-ffi" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb7dec17e17766b46bca4f1a4215a85006b4c2ecde122076c562dd058da6cf1" +dependencies = [ + "libc", + "pyo3-build-config", +] + +[[package]] +name = "pyo3-macros" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f738b4e40d50b5711957f142878cfa0f28e054aa0ebdfc3fd137a843f74ed3" +dependencies = [ + "proc-macro2", + "pyo3-macros-backend", + "quote", + "syn", +] + +[[package]] +name = "pyo3-macros-backend" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc910d4851847827daf9d6cdd4a823fbdaab5b8818325c5e97a86da79e8881f" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "qibolab" +version = "0.1.0" +dependencies = [ + "anyhow", + "ndarray", + "numpy", + "pyo3", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags", +] + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "smallvec" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "target-lexicon" +version = "0.12.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unindent" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" diff --git a/crate/Cargo.toml b/crate/Cargo.toml new file mode 100644 index 000000000..f60ff4d45 --- /dev/null +++ b/crate/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "qibolab" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +ndarray = "0.15.6" +numpy = "0.20.0" +pyo3 = { version = "0.20.2", features = ["auto-initialize"] } + +[dev-dependencies] +anyhow = "1.0.79" diff --git a/crate/README.md b/crate/README.md new file mode 100644 index 000000000..65b15d3f9 --- /dev/null +++ b/crate/README.md @@ -0,0 +1,31 @@ +# Rust API + +## Install + +You just need to install Qibolab as usual (see [main README.md](../README.md)) and +specify the `qibolab` crate inside `Cargo.toml`. + +See the example below. + +## Example + +To run the example in the [`examples/`](./examples) folder just use Cargo: + +```sh +cargo run --example example +``` + +## Environment + +In order to properly locate `qibolab` in a virtual environment, on some platform (e.g. +MacOS) it is required to manually modify the `$PYTHONPATH`. + +```sh +PYTHONPATH=$(realpath ${VIRTUAL_ENV}/lib/python3.11/site-packages):$PYTHONPATH +``` + +In editable mode installation, you might also need to manually add the `src/` folder: + +```sh +PYTHONPATH=$(realpath qibolab/src/):$PYTHONPATH +``` diff --git a/crate/examples/example.rs b/crate/examples/example.rs new file mode 100644 index 000000000..80c805493 --- /dev/null +++ b/crate/examples/example.rs @@ -0,0 +1,31 @@ +use anyhow::Result; +use qibolab::execute_qasm; + +const CODE: &str = r#" +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[3]; +creg a[2]; +cx q[0],q[2]; +x q[1]; +swap q[0],q[1]; +cx q[1],q[0]; +measure q[0] -> a[0]; +measure q[2] -> a[1]; +"#; + +fn main() -> Result<()> { + let circuit = CODE.to_owned(); + let platform = "dummy".to_owned(); + let nshots = 10; + + println!( + "---\nExecuting:\n'''{}'''\n\non: {}\nwith: {} shots\n---\n", + circuit, platform, nshots + ); + + let res = execute_qasm(circuit, platform, nshots)?; + println!("\n{:?}", res); + + Ok(()) +} diff --git a/crate/src/lib.rs b/crate/src/lib.rs new file mode 100644 index 000000000..3238e6acb --- /dev/null +++ b/crate/src/lib.rs @@ -0,0 +1,22 @@ +use ndarray::Array2; +use numpy::PyArray2; +use pyo3::prelude::*; +use pyo3::types::PyDict; + +pub fn execute_qasm(circuit: String, platform: String, nshots: u32) -> PyResult> { + Python::with_gil(|py| { + let kwargs = PyDict::new(py); + kwargs.set_item("circuit", circuit)?; + kwargs.set_item("platform", platform)?; + kwargs.set_item("nshots", nshots)?; + + let qibolab = PyModule::import(py, "qibolab")?; + let pyarray: &PyArray2 = qibolab + .getattr("execute_qasm")? + .call((), Some(kwargs))? + .call_method0("samples")? + .extract()?; + + Ok(pyarray.to_owned_array()) + }) +} diff --git a/doc/source/getting-started/experiment.rst b/doc/source/getting-started/experiment.rst index 50db88446..2f283f0d8 100644 --- a/doc/source/getting-started/experiment.rst +++ b/doc/source/getting-started/experiment.rst @@ -5,7 +5,19 @@ Define the platform ------------------- To launch experiments on quantum hardware, users have first to define their platform. -A platform is composed of a python file, with instruments information, and of a runcard file, with calibration parameters. +To define a platform the user needs to provide a folder with the following structure: + +.. code-block:: bash + + my_platform/ + platform.py + parameters.json + kernels.npz # (optional) + +where ``platform.py`` contains instruments information, ``parameters.json`` +includes calibration parameters and ``kernels.npz`` is an optional +file with additional calibration parameters. + More information about defining platforms is provided in :doc:`../tutorials/lab` and several examples can be found at `TII dedicated repository `_. For a first experiment, let's define a single qubit platform at the path previously specified. @@ -13,7 +25,7 @@ For simplicity, the qubit will be controlled by a RFSoC-based system, althought .. testcode:: python - # my_platform.py + # my_platform/platform.py import pathlib @@ -24,14 +36,14 @@ For simplicity, the qubit will be controlled by a RFSoC-based system, althought from qibolab.serialize import load_qubits, load_runcard, load_settings NAME = "my_platform" # name of the platform - ADDRESS = "192.168.0.1" # ip adress of the controller + ADDRESS = "192.168.0.1" # ip address of the controller PORT = 6000 # port of the controller - # path to runcard file with calibration parameter - RUNCARD = pathlib.Path.cwd() / "my_platform.yml" + # folder containing runcard with calibration parameters + FOLDER = pathlib.Path.cwd() - def create(runcard_path=RUNCARD): + def create(folder=FOLDER): # Instantiate controller instruments controller = RFSoC(NAME, ADDRESS, PORT) @@ -42,7 +54,7 @@ For simplicity, the qubit will be controlled by a RFSoC-based system, althought channels |= Channel("drive", port=controller[0]) # create qubit objects - runcard = load_runcard(runcard_path) + runcard = load_runcard(folder) qubits, pairs = load_qubits(runcard) # assign channels to qubits qubits[0].readout = channels["L3-22_ro"] @@ -53,72 +65,103 @@ For simplicity, the qubit will be controlled by a RFSoC-based system, althought settings = load_settings(runcard) return Platform(NAME, qubits, pairs, instruments, settings, resonator_type="3D") -And the we can define the runcard: - -.. code-block:: yaml - - # my_platform.yml - - nqubits: 1 - qubits: [0] - topology: [] - settings: {nshots: 1024, relaxation_time: 70000, sampling_rate: 9830400000} - - native_gates: - single_qubit: - 0: - RX: # pi-pulse for X gate - duration: 40 - amplitude: 0.5 - frequency: 5_500_000_000 - shape: Gaussian(3) - type: qd - start: 0 - phase: 0 - - MZ: # measurement pulse - duration: 2000 - amplitude: 0.02 - frequency: 7_370_000_000 - shape: Rectangular() - type: ro - start: 0 - phase: 0 - - two_qubits: {} - characterization: - single_qubit: - 0: - readout_frequency: 7370000000 - drive_frequency: 5500000000 - anharmonicity: 0 - Ec: 0 - Ej: 0 - g: 0 - T1: 0.0 - T2: 0.0 - threshold: 0.0 - iq_angle: 0.0 - mean_gnd_states: [0.0, 0.0] - mean_exc_states: [0.0, 0.0] +.. note:: + + The ``platform.py`` file must contain a ``create_function`` with the following signature: + + .. code-block:: python + + import pathlib + from qibolab.platform import Platform + + + def create(folder: Path) -> Platform: + """Function that generates Qibolab platform.""" + +And the we can define the runcard ``my_platform/parameters.json``: + +.. code-block:: json + + { + "nqubits": 1, + "qubits": [ + 0 + ], + "topology": [], + "settings": { + "nshots": 1024, + "relaxation_time": 70000, + "sampling_rate": 9830400000 + }, + "native_gates": { + "single_qubit": { + "0": { + "RX": { + "duration": 40, + "amplitude": 0.5, + "frequency": 5500000000, + "shape": "Gaussian(3)", + "type": "qd", + "start": 0, + "phase": 0 + }, + "MZ": { + "duration": 2000, + "amplitude": 0.02, + "frequency": 7370000000, + "shape": "Rectangular()", + "type": "ro", + "start": 0, + "phase": 0 + } + } + }, + "two_qubits": {} + }, + "characterization": { + "single_qubit": { + "0": { + "readout_frequency": 7370000000, + "drive_frequency": 5500000000, + "anharmonicity": 0, + "Ec": 0, + "Ej": 0, + "g": 0, + "T1": 0.0, + "T2": 0.0, + "threshold": 0.0, + "iq_angle": 0.0, + "mean_gnd_states": [ + 0.0, + 0.0 + ], + "mean_exc_states": [ + 0.0, + 0.0 + ] + } + } + } + } Setting up the environment -------------------------- -After defining the platform, we must instruct ``qibolab`` of the location of the create file. +After defining the platform, we must instruct ``qibolab`` of the location of the platform(s). +We need to define the path that contains platform folders. This can be done using an environment variable: for Unix based systems: .. code-block:: bash - export QIBOLAB_PLATFORMS= + export QIBOLAB_PLATFORMS= for Windows: .. code-block:: bash - $env:QIBOLAB_PLATFORMS="" + $env:QIBOLAB_PLATFORMS="" To avoid having to repeat this export command for every session, this line can be added to the ``.bashrc`` file (or alternatives as ``.zshrc``). @@ -145,7 +188,7 @@ We leave to the dedicated tutorial a full explanation of the experiment, but her AcquisitionType, ) - # load the platform from ``dummy.py`` and ``dummy.yml`` + # load the platform from ``dummy.py`` and ``dummy.json`` platform = create_platform("dummy") # define the pulse sequence diff --git a/doc/source/main-documentation/qibolab.rst b/doc/source/main-documentation/qibolab.rst index 0aff30f62..c3bcec19f 100644 --- a/doc/source/main-documentation/qibolab.rst +++ b/doc/source/main-documentation/qibolab.rst @@ -213,14 +213,14 @@ Following the tutorial in :doc:`/tutorials/lab`, we can continue the initializat from pathlib import Path from qibolab.serialize import load_qubits, load_runcard - runcard_path = Path.cwd().parent / "src" / "qibolab" / "dummy.yml" + path = Path.cwd().parent / "src" / "qibolab" / "dummy" ch_map = ChannelMap() ch_map |= channel1 ch_map |= channel2 ch_map |= channel3 - runcard = load_runcard(runcard_path) + runcard = load_runcard(path) qubits, couplers, pairs = load_qubits(runcard) qubits[0].drive = channel1 diff --git a/doc/source/tutorials/lab.rst b/doc/source/tutorials/lab.rst index 9a41bc6eb..46b3b8feb 100644 --- a/doc/source/tutorials/lab.rst +++ b/doc/source/tutorials/lab.rst @@ -251,137 +251,182 @@ since ``create()`` is part of a Python module, is is possible to load parameters from an external file or database. Qibolab provides some utility functions, accessible through -:py:mod:`qibolab.serialize`, for loading calibration parameters stored in a YAML +:py:mod:`qibolab.serialize`, for loading calibration parameters stored in a JSON file with a specific format. We call such file a runcard. Here is a runcard for a two-qubit system: -.. code-block:: yaml - - nqubits: 2 - - qubits: [0, 1] - - settings: - nshots: 1024 - sampling_rate: 1000000000 - relaxation_time: 50_000 - - topology: [[0, 1]] - - native_gates: - single_qubit: - 0: # qubit number - RX: - duration: 40 - amplitude: 0.0484 - frequency: 4_855_663_000 - shape: Drag(5, -0.02) - type: qd # qubit drive - start: 0 - phase: 0 - MZ: - duration: 620 - amplitude: 0.003575 - frequency: 7_453_265_000 - shape: Rectangular() - type: ro # readout - start: 0 - phase: 0 - 1: # qubit number - RX: - duration: 40 - amplitude: 0.05682 - frequency: 5_800_563_000 - shape: Drag(5, -0.04) - type: qd # qubit drive - start: 0 - phase: 0 - MZ: - duration: 960 - amplitude: 0.00325 - frequency: 7_655_107_000 - shape: Rectangular() - type: ro # readout - start: 0 - phase: 0 - - two_qubit: - 0-1: - CZ: - - duration: 30 - amplitude: 0.055 - shape: Rectangular() - qubit: 1 - relative_start: 0 - type: qf - - type: virtual_z - phase: -1.5707963267948966 - qubit: 0 - - type: virtual_z - phase: -1.5707963267948966 - qubit: 1 - - characterization: - single_qubit: - 0: - readout_frequency: 7_453_265_000 - drive_frequency: 4_855_663_000 - T1: 0.0 - T2: 0.0 - sweetspot: -0.047 - # parameters for single shot classification - threshold: 0.00028502261712637096 - iq_angle: 1.283105298787488 - 1: - readout_frequency: 7_655_107_000 - drive_frequency: 5_800_563_000 - T1: 0.0 - T2: 0.0 - sweetspot: -0.045 - # parameters for single shot classification - threshold: 0.0002694329123116206 - iq_angle: 4.912447775569025 +.. code-block:: json + + { + "nqubits": 2, + "qubits": [ + 0, + 1 + ], + "settings": { + "nshots": 1024, + "sampling_rate": 1000000000, + "relaxation_time": 50000 + }, + "topology": [ + [ + 0, + 1 + ] + ], + "native_gates": { + "single_qubit": { + "0": { + "RX": { + "duration": 40, + "amplitude": 0.0484, + "frequency": 4855663000, + "shape": "Drag(5, -0.02)", + "type": "qd", + "start": 0, + "phase": 0 + }, + "MZ": { + "duration": 620, + "amplitude": 0.003575, + "frequency": 7453265000, + "shape": "Rectangular()", + "type": "ro", + "start": 0, + "phase": 0 + } + }, + "1": { + "RX": { + "duration": 40, + "amplitude": 0.05682, + "frequency": 5800563000, + "shape": "Drag(5, -0.04)", + "type": "qd", + "start": 0, + "phase": 0 + }, + "MZ": { + "duration": 960, + "amplitude": 0.00325, + "frequency": 7655107000, + "shape": "Rectangular()", + "type": "ro", + "start": 0, + "phase": 0 + } + } + }, + "two_qubit": { + "0-1": { + "CZ": [ + { + "duration": 30, + "amplitude": 0.055, + "shape": "Rectangular()", + "qubit": 1, + "relative_start": 0, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": -1.5707963267948966, + "qubit": 0 + }, + { + "type": "virtual_z", + "phase": -1.5707963267948966, + "qubit": 1 + } + ] + } + } + }, + "characterization": { + "single_qubit": { + "0": { + "readout_frequency": 7453265000, + "drive_frequency": 4855663000, + "T1": 0.0, + "T2": 0.0, + "sweetspot": -0.047, + "threshold": 0.00028502261712637096, + "iq_angle": 1.283105298787488 + }, + "1": { + "readout_frequency": 7655107000, + "drive_frequency": 5800563000, + "T1": 0.0, + "T2": 0.0, + "sweetspot": -0.045, + "threshold": 0.0002694329123116206, + "iq_angle": 4.912447775569025 + } + } + } + } And in the case of having a chip with coupler qubits we need the following changes to the previous runcard: -.. code-block:: yaml - - qubits: [0, 1] - couplers: [0] - - # Mapping couplers to qubit pairs - topology: {0: [0, 1]} - - native_gates: - two_qubit: - 0-1: - CZ: - - duration: 30 - amplitude: 0.6025 - shape: Rectangular() - qubit: 1 - relative_start: 0 - type: qf - - - type: virtual_z - phase: -1 - qubit: 0 - - type: virtual_z - phase: -3 - qubit: 1 - - - type: coupler - duration: 40 - amplitude: 0.1 - shape: Rectangular() - coupler: 0 - relative_start: 0 - - characterization: - coupler: - 0: - sweetspot: 0.0 +.. code-block:: json + + { + "qubits": [ + 0, + 1 + ], + "couplers": [ + 0 + ], + "topology": { + "0": [ + 0, + 1 + ] + }, + "native_gates": { + "two_qubit": { + "0-1": { + "CZ": [ + { + "duration": 30, + "amplitude": 0.6025, + "shape": "Rectangular()", + "qubit": 1, + "relative_start": 0, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": -1, + "qubit": 0 + }, + { + "type": "virtual_z", + "phase": -3, + "qubit": 1 + }, + { + "type": "coupler", + "duration": 40, + "amplitude": 0.1, + "shape": "Rectangular()", + "coupler": 0, + "relative_start": 0 + } + ] + } + } + }, + "characterization": { + "coupler": { + "0": { + "sweetspot": 0.0 + } + } + } + } This file contains different sections: ``qubits`` is a list with the qubit names, ``couplers`` one with the coupler names , ``settings`` defines default execution parameters, ``topology`` defines @@ -408,7 +453,7 @@ the above runcard: from qibolab.instruments.dummy import DummyInstrument - def create(): + def create(folder: Path): # Create a controller instrument instrument = DummyInstrument("my_instrument", "0.0.0.0:0") @@ -422,7 +467,7 @@ the above runcard: channels |= Channel("chf2", port=instrument["o5"]) # create ``Qubit`` and ``QubitPair`` objects by loading the runcard - runcard = load_runcard(Path(__file__).parent / "my_platform.yml") + runcard = load_runcard(folder) qubits, couplers, pairs = load_qubits(runcard) # assign channels to the qubit @@ -444,7 +489,7 @@ With the following additions for coupler architectures: .. testcode:: python - def create(): + def create(folder): # Create a controller instrument instrument = DummyInstrument("my_instrument", "0.0.0.0:0") @@ -459,7 +504,7 @@ With the following additions for coupler architectures: channels |= Channel("chfc0", port=instrument["o6"]) # create ``Qubit`` and ``QubitPair`` objects by loading the runcard - runcard = load_runcard(Path(__file__).parent / "my_platform.yml") + runcard = load_runcard(folder) qubits, couplers, pairs = load_qubits(runcard) # assign channels to the qubit @@ -486,8 +531,8 @@ With the following additions for coupler architectures: couplers=couplers, ) -Note that this assumes that the runcard is saved as ``my_platform.yml`` in the -same directory with the Python file that contains ``create()``. +Note that this assumes that the runcard is saved as ``/parameters.yml`` where ```` +is the directory containing ``platform.py``. Instrument settings @@ -500,97 +545,122 @@ such as the one used to pump a traveling wave parametric amplifier (TWPA). The runcard can contain an ``instruments`` section that provides these parameters -.. code-block:: yaml - - nqubits: 2 - - qubits: [0, 1] - - settings: - nshots: 1024 - sampling_rate: 1000000000 - relaxation_time: 50_000 - - topology: [[0, 1]] - - instruments: - twpa_pump: - frequency: 4_600_000_000 - power: 5 - - native_gates: - single_qubit: - 0: # qubit number - RX: - duration: 40 - amplitude: 0.0484 - frequency: 4_855_663_000 - shape: Drag(5, -0.02) - type: qd # qubit drive - start: 0 - phase: 0 - MZ: - duration: 620 - amplitude: 0.003575 - frequency: 7_453_265_000 - shape: Rectangular() - type: ro # readout - start: 0 - phase: 0 - 1: # qubit number - RX: - duration: 40 - amplitude: 0.05682 - frequency: 5_800_563_000 - shape: Drag(5, -0.04) - type: qd # qubit drive - start: 0 - phase: 0 - MZ: - duration: 960 - amplitude: 0.00325 - frequency: 7_655_107_000 - shape: Rectangular() - type: ro # readout - start: 0 - phase: 0 - - two_qubit: - 0-1: - CZ: - - duration: 30 - amplitude: 0.055 - shape: Rectangular() - qubit: 1 - relative_start: 0 - type: qf - - type: virtual_z - phase: -1.5707963267948966 - qubit: 0 - - type: virtual_z - phase: -1.5707963267948966 - qubit: 1 - - characterization: - single_qubit: - 0: - readout_frequency: 7_453_265_000 - drive_frequency: 4_855_663_000 - T1: 0.0 - T2: 0.0 - sweetspot: -0.047 - # parameters for single shot classification - threshold: 0.00028502261712637096 - iq_angle: 1.283105298787488 - 1: - readout_frequency: 7_655_107_000 - drive_frequency: 5_800_563_000 - T1: 0.0 - T2: 0.0 - sweetspot: -0.045 - # parameters for single shot classification - threshold: 0.0002694329123116206 - iq_angle: 4.912447775569025 +.. code-block:: json + + { + "nqubits": 2, + "qubits": [ + 0, + 1 + ], + "settings": { + "nshots": 1024, + "sampling_rate": 1000000000, + "relaxation_time": 50000 + }, + "topology": [ + [ + 0, + 1 + ] + ], + "instruments": { + "twpa_pump": { + "frequency": 4600000000, + "power": 5 + } + }, + "native_gates": { + "single_qubit": { + "0": { + "RX": { + "duration": 40, + "amplitude": 0.0484, + "frequency": 4855663000, + "shape": "Drag(5, -0.02)", + "type": "qd", + "start": 0, + "phase": 0 + }, + "MZ": { + "duration": 620, + "amplitude": 0.003575, + "frequency": 7453265000, + "shape": "Rectangular()", + "type": "ro", + "start": 0, + "phase": 0 + } + }, + "1": { + "RX": { + "duration": 40, + "amplitude": 0.05682, + "frequency": 5800563000, + "shape": "Drag(5, -0.04)", + "type": "qd", + "start": 0, + "phase": 0 + }, + "MZ": { + "duration": 960, + "amplitude": 0.00325, + "frequency": 7655107000, + "shape": "Rectangular()", + "type": "ro", + "start": 0, + "phase": 0 + } + } + }, + "two_qubit": { + "0-1": { + "CZ": [ + { + "duration": 30, + "amplitude": 0.055, + "shape": "Rectangular()", + "qubit": 1, + "relative_start": 0, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": -1.5707963267948966, + "qubit": 0 + }, + { + "type": "virtual_z", + "phase": -1.5707963267948966, + "qubit": 1 + } + ] + } + } + }, + "characterization": { + "single_qubit": { + "0": { + "readout_frequency": 7453265000, + "drive_frequency": 4855663000, + "T1": 0.0, + "T2": 0.0, + "sweetspot": -0.047, + "threshold": 0.00028502261712637096, + "iq_angle": 1.283105298787488 + }, + "1": { + "readout_frequency": 7655107000, + "drive_frequency": 5800563000, + "T1": 0.0, + "T2": 0.0, + "sweetspot": -0.045, + "threshold": 0.0002694329123116206, + "iq_angle": 4.912447775569025 + } + } + } + } These settings are loaded when creating the platform using :meth:`qibolab.serialize.load_instrument_settings`. @@ -612,7 +682,7 @@ in this case ``"twpa_pump"``. from qibolab.instruments.oscillator import LocalOscillator - def create(): + def create(folder: Path): # Create a controller instrument instrument = DummyInstrument("my_instrument", "0.0.0.0:0") twpa = LocalOscillator("twpa_pump", "0.0.0.1") @@ -625,7 +695,7 @@ in this case ``"twpa_pump"``. channels |= Channel("ch1in", port=instrument["i1"]) # create ``Qubit`` and ``QubitPair`` objects by loading the runcard - runcard = load_runcard(Path(__file__).parent / "my_platform.yml") + runcard = load_runcard(folder) qubits, pairs = load_qubits(runcard) # assign channels to the qubit diff --git a/flake.lock b/flake.lock index b4abd66bf..07ae0529b 100644 --- a/flake.lock +++ b/flake.lock @@ -21,6 +21,27 @@ "type": "github" } }, + "fenix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1705904706, + "narHash": "sha256-0aJfyNYWy6pS4GfOA+pmGOE+PgJZLG78T+sPh8zRJx8=", + "owner": "nix-community", + "repo": "fenix", + "rev": "8e7851239acf6bfb06637f4d3e180302f53ec542", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -267,11 +288,29 @@ "root": { "inputs": { "devenv": "devenv", + "fenix": "fenix", "nixpkgs": "nixpkgs_2", "nixpkgs-python": "nixpkgs-python", "systems": "systems_3" } }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1705864945, + "narHash": "sha256-ZATChFWHToTZQFLlzrzDUX8fjEbMHHBIyPaZU1JGmjI=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "d410d4a2baf9e99b37b03dd42f06238b14374bf7", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, diff --git a/flake.nix b/flake.nix index a0a8860eb..4cacbf960 100644 --- a/flake.nix +++ b/flake.nix @@ -7,6 +7,10 @@ url = "github:cachix/nixpkgs-python"; inputs.nixpkgs.follows = "nixpkgs"; }; + fenix = { + url = "github:nix-community/fenix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = { @@ -57,6 +61,11 @@ }; version = "3.11"; }; + + languages.rust = { + enable = true; + channel = "stable"; + }; } ]; }; diff --git a/poetry.lock b/poetry.lock index 6608cf4d0..8f9824d38 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "alabaster" -version = "0.7.13" -description = "A configurable sidebar-enabled Sphinx theme" +version = "0.7.16" +description = "A light, configurable Sphinx theme" optional = false -python-versions = ">=3.6" +python-versions = ">=3.9" files = [ - {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, - {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, + {file = "alabaster-0.7.16-py3-none-any.whl", hash = "sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92"}, + {file = "alabaster-0.7.16.tar.gz", hash = "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65"}, ] [[package]] @@ -24,17 +24,17 @@ files = [ [[package]] name = "ansi2html" -version = "1.8.0" -description = "" +version = "1.9.1" +description = "Convert text with ANSI color codes to HTML or to LaTeX" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "ansi2html-1.8.0-py3-none-any.whl", hash = "sha256:ef9cc9682539dbe524fbf8edad9c9462a308e04bce1170c32daa8fdfd0001785"}, - {file = "ansi2html-1.8.0.tar.gz", hash = "sha256:38b82a298482a1fa2613f0f9c9beb3db72a8f832eeac58eb2e47bf32cd37f6d5"}, + {file = "ansi2html-1.9.1-py3-none-any.whl", hash = "sha256:29ccdb1e83520d648ebdc9c9544059ea4d424ecc33d3ef723657f7f5a9ae5225"}, + {file = "ansi2html-1.9.1.tar.gz", hash = "sha256:5c6837a13ecc1903aab7a545353312049dfedfe5105362ad3a8d9d207871ec71"}, ] [package.extras] -docs = ["Sphinx", "setuptools-scm", "sphinx-rtd-theme"] +docs = ["mkdocs", "mkdocs-material", "mkdocs-material-extensions", "mkdocstrings", "mkdocstrings-python", "pymdown-extensions"] test = ["pytest", "pytest-cov"] [[package]] @@ -72,13 +72,13 @@ trio = ["trio (>=0.23)"] [[package]] name = "astroid" -version = "3.0.1" +version = "3.0.2" description = "An abstract syntax tree for Python with inference support." optional = false python-versions = ">=3.8.0" files = [ - {file = "astroid-3.0.1-py3-none-any.whl", hash = "sha256:7d5895c9825e18079c5aeac0572bc2e4c83205c95d416e0b4fee8bc361d2d9ca"}, - {file = "astroid-3.0.1.tar.gz", hash = "sha256:86b0bb7d7da0be1a7c4aedb7974e391b32d4ed89e33de6ed6902b4b15c97577e"}, + {file = "astroid-3.0.2-py3-none-any.whl", hash = "sha256:d6e62862355f60e716164082d6b4b041d38e2a8cf1c7cd953ded5108bac8ff5c"}, + {file = "astroid-3.0.2.tar.gz", hash = "sha256:4a61cf0a59097c7bb52689b0fd63717cd2a8a14dc9f1eee97b82d814881c8c91"}, ] [package.dependencies] @@ -104,35 +104,36 @@ test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] [[package]] name = "attrs" -version = "23.1.0" +version = "23.2.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, - {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, ] [package.extras] cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]", "pre-commit"] +dev = ["attrs[tests]", "pre-commit"] docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] [[package]] name = "azure-core" -version = "1.29.5" +version = "1.29.7" description = "Microsoft Azure Core Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "azure-core-1.29.5.tar.gz", hash = "sha256:52983c89d394c6f881a121e5101c5fa67278ca3b1f339c8fb2ef39230c70e9ac"}, - {file = "azure_core-1.29.5-py3-none-any.whl", hash = "sha256:0fa04b7b1f7d44a4fb8468c4093deb2ea01fdf4faddbf802ed9205615f99d68c"}, + {file = "azure-core-1.29.7.tar.gz", hash = "sha256:2944faf1a7ff1558b1f457cabf60f279869cabaeef86b353bed8eb032c7d8c5e"}, + {file = "azure_core-1.29.7-py3-none-any.whl", hash = "sha256:95a7b41b4af102e5fcdfac9500fcc82ff86e936c7145a099b7848b9ac0501250"}, ] [package.dependencies] -requests = ">=2.18.4" +requests = ">=2.21.0" six = ">=1.11.0" typing-extensions = ">=4.6.0" @@ -158,13 +159,13 @@ msal-extensions = ">=0.3.0,<2.0.0" [[package]] name = "babel" -version = "2.13.1" +version = "2.14.0" description = "Internationalization utilities" optional = false python-versions = ">=3.7" files = [ - {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"}, - {file = "Babel-2.13.1.tar.gz", hash = "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900"}, + {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, + {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, ] [package.extras] @@ -172,19 +173,22 @@ dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] [[package]] name = "beautifulsoup4" -version = "4.12.2" +version = "4.12.3" description = "Screen-scraping library" optional = false python-versions = ">=3.6.0" files = [ - {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, - {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, + {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, + {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, ] [package.dependencies] soupsieve = ">1.2" [package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] @@ -255,13 +259,13 @@ files = [ [[package]] name = "broadbean" -version = "0.11.0" -description = "Package for easily generating and manipulating signal" +version = "0.12.0" +description = "Package for easily generating and manipulating signal pulses." optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "broadbean-0.11.0-py3-none-any.whl", hash = "sha256:9785d5ee23a35c7dfbc17fa0b8f793bb36123e4c2e53572e16ef0b2a6e1aa5ae"}, - {file = "broadbean-0.11.0.tar.gz", hash = "sha256:7be2c07265b14fe4a4696b53a0f820fb1dd046ee5f0929bec3874b09cc99af0f"}, + {file = "broadbean-0.12.0-py3-none-any.whl", hash = "sha256:fecc94e232279de3ba3d4bd01c53c184f818a4ca102aaded8383aa7765688420"}, + {file = "broadbean-0.12.0.tar.gz", hash = "sha256:7e828b88c4f96c1e3cfa6fbb97be236bee942b672c9f0b812aedd1e105f403a9"}, ] [package.dependencies] @@ -271,6 +275,7 @@ schema = "*" versioningit = ">=2.0.1" [package.extras] +docs = ["nbsphinx", "sphinx", "sphinx-jsonschema", "sphinx-rtd-theme"] test = ["black (>=22.3.0)", "coverage[toml] (>=6.2)", "hypothesis (>=5.49.0)", "jupyter (>=1.0.0)", "mypy (>=0.960)", "pytest (>=6.2.2)", "pytest-cov (>=3.0.0)", "types-pytz (>=2021.3.0)"] [[package]] @@ -514,13 +519,13 @@ files = [ [[package]] name = "comm" -version = "0.2.0" +version = "0.2.1" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." optional = false python-versions = ">=3.8" files = [ - {file = "comm-0.2.0-py3-none-any.whl", hash = "sha256:2da8d9ebb8dd7bfc247adaff99f24dce705638a8042b85cb995066793e391001"}, - {file = "comm-0.2.0.tar.gz", hash = "sha256:a517ea2ca28931c7007a7a99c562a0fa5883cfb48963140cf642c41c948498be"}, + {file = "comm-0.2.1-py3-none-any.whl", hash = "sha256:87928485c0dfc0e7976fd89fc1e187023cf587e7c353e4a9b417555b44adf021"}, + {file = "comm-0.2.1.tar.gz", hash = "sha256:0bc91edae1344d39d3661dcbc36937181fdaddb304790458f8b044dbc064b89a"}, ] [package.dependencies] @@ -619,63 +624,63 @@ test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] [[package]] name = "coverage" -version = "7.3.2" +version = "7.4.1" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf"}, - {file = "coverage-7.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9"}, - {file = "coverage-7.3.2-cp310-cp310-win32.whl", hash = "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f"}, - {file = "coverage-7.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611"}, - {file = "coverage-7.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c"}, - {file = "coverage-7.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312"}, - {file = "coverage-7.3.2-cp311-cp311-win32.whl", hash = "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640"}, - {file = "coverage-7.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2"}, - {file = "coverage-7.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836"}, - {file = "coverage-7.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a"}, - {file = "coverage-7.3.2-cp312-cp312-win32.whl", hash = "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb"}, - {file = "coverage-7.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed"}, - {file = "coverage-7.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738"}, - {file = "coverage-7.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76"}, - {file = "coverage-7.3.2-cp38-cp38-win32.whl", hash = "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92"}, - {file = "coverage-7.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a"}, - {file = "coverage-7.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce"}, - {file = "coverage-7.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083"}, - {file = "coverage-7.3.2-cp39-cp39-win32.whl", hash = "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce"}, - {file = "coverage-7.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f"}, - {file = "coverage-7.3.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637"}, - {file = "coverage-7.3.2.tar.gz", hash = "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef"}, + {file = "coverage-7.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7"}, + {file = "coverage-7.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d17bbc946f52ca67adf72a5ee783cd7cd3477f8f8796f59b4974a9b59cacc9ee"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3277f5fa7483c927fe3a7b017b39351610265308f5267ac6d4c2b64cc1d8d25"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dceb61d40cbfcf45f51e59933c784a50846dc03211054bd76b421a713dcdf19"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6008adeca04a445ea6ef31b2cbaf1d01d02986047606f7da266629afee982630"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c61f66d93d712f6e03369b6a7769233bfda880b12f417eefdd4f16d1deb2fc4c"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9bb62fac84d5f2ff523304e59e5c439955fb3b7f44e3d7b2085184db74d733b"}, + {file = "coverage-7.4.1-cp310-cp310-win32.whl", hash = "sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016"}, + {file = "coverage-7.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:869b5046d41abfea3e381dd143407b0d29b8282a904a19cb908fa24d090cc018"}, + {file = "coverage-7.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b8ffb498a83d7e0305968289441914154fb0ef5d8b3157df02a90c6695978295"}, + {file = "coverage-7.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3cacfaefe6089d477264001f90f55b7881ba615953414999c46cc9713ff93c8c"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d6850e6e36e332d5511a48a251790ddc545e16e8beaf046c03985c69ccb2676"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18e961aa13b6d47f758cc5879383d27b5b3f3dcd9ce8cdbfdc2571fe86feb4dd"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfd1e1b9f0898817babf840b77ce9fe655ecbe8b1b327983df485b30df8cc011"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6b00e21f86598b6330f0019b40fb397e705135040dbedc2ca9a93c7441178e74"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:536d609c6963c50055bab766d9951b6c394759190d03311f3e9fcf194ca909e1"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7ac8f8eb153724f84885a1374999b7e45734bf93a87d8df1e7ce2146860edef6"}, + {file = "coverage-7.4.1-cp311-cp311-win32.whl", hash = "sha256:f3771b23bb3675a06f5d885c3630b1d01ea6cac9e84a01aaf5508706dba546c5"}, + {file = "coverage-7.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:9d2f9d4cc2a53b38cabc2d6d80f7f9b7e3da26b2f53d48f05876fef7956b6968"}, + {file = "coverage-7.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f68ef3660677e6624c8cace943e4765545f8191313a07288a53d3da188bd8581"}, + {file = "coverage-7.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23b27b8a698e749b61809fb637eb98ebf0e505710ec46a8aa6f1be7dc0dc43a6"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3424c554391dc9ef4a92ad28665756566a28fecf47308f91841f6c49288e66"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0860a348bf7004c812c8368d1fc7f77fe8e4c095d661a579196a9533778e156"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3468cc8720402af37b6c6e7e2a9cdb9f6c16c728638a2ebc768ba1ef6f26c3a1"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ca6e61dc52f601d1d224526360cdeab0d0712ec104a2ce6cc5ccef6ed9a233bc"}, + {file = "coverage-7.4.1-cp312-cp312-win32.whl", hash = "sha256:ca7b26a5e456a843b9b6683eada193fc1f65c761b3a473941efe5a291f604c74"}, + {file = "coverage-7.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:85ccc5fa54c2ed64bd91ed3b4a627b9cce04646a659512a051fa82a92c04a448"}, + {file = "coverage-7.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8bdb0285a0202888d19ec6b6d23d5990410decb932b709f2b0dfe216d031d218"}, + {file = "coverage-7.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:918440dea04521f499721c039863ef95433314b1db00ff826a02580c1f503e45"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:379d4c7abad5afbe9d88cc31ea8ca262296480a86af945b08214eb1a556a3e4d"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b094116f0b6155e36a304ff912f89bbb5067157aff5f94060ff20bbabdc8da06"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2f5968608b1fe2a1d00d01ad1017ee27efd99b3437e08b83ded9b7af3f6f766"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:10e88e7f41e6197ea0429ae18f21ff521d4f4490aa33048f6c6f94c6045a6a75"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a4a3907011d39dbc3e37bdc5df0a8c93853c369039b59efa33a7b6669de04c60"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d224f0c4c9c98290a6990259073f496fcec1b5cc613eecbd22786d398ded3ad"}, + {file = "coverage-7.4.1-cp38-cp38-win32.whl", hash = "sha256:23f5881362dcb0e1a92b84b3c2809bdc90db892332daab81ad8f642d8ed55042"}, + {file = "coverage-7.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:a07f61fc452c43cd5328b392e52555f7d1952400a1ad09086c4a8addccbd138d"}, + {file = "coverage-7.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8e738a492b6221f8dcf281b67129510835461132b03024830ac0e554311a5c54"}, + {file = "coverage-7.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46342fed0fff72efcda77040b14728049200cbba1279e0bf1188f1f2078c1d70"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9641e21670c68c7e57d2053ddf6c443e4f0a6e18e547e86af3fad0795414a628"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aeb2c2688ed93b027eb0d26aa188ada34acb22dceea256d76390eea135083950"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d12c923757de24e4e2110cf8832d83a886a4cf215c6e61ed506006872b43a6d1"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8dfc5e195bbef80aabd81596ef52a1277ee7143fe419efc3c4d8ba2754671756"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1a78b656a4d12b0490ca72651fe4d9f5e07e3c6461063a9b6265ee45eb2bdd35"}, + {file = "coverage-7.4.1-cp39-cp39-win32.whl", hash = "sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c"}, + {file = "coverage-7.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:64e723ca82a84053dd7bfcc986bdb34af8d9da83c521c19d6b472bc6880e191a"}, + {file = "coverage-7.4.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:32a8d985462e37cfdab611a6f95b09d7c091d07668fdc26e47a725ee575fe166"}, + {file = "coverage-7.4.1.tar.gz", hash = "sha256:1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04"}, ] [package.dependencies] @@ -686,47 +691,56 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "41.0.7" +version = "42.0.1" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf"}, - {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1"}, - {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157"}, - {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406"}, - {file = "cryptography-41.0.7-cp37-abi3-win32.whl", hash = "sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d"}, - {file = "cryptography-41.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309"}, - {file = "cryptography-41.0.7.tar.gz", hash = "sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc"}, -] - -[package.dependencies] -cffi = ">=1.12" + {file = "cryptography-42.0.1-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77"}, + {file = "cryptography-42.0.1-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e"}, + {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c"}, + {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0"}, + {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009"}, + {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404"}, + {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8"}, + {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035"}, + {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407"}, + {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa"}, + {file = "cryptography-42.0.1-cp37-abi3-win32.whl", hash = "sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453"}, + {file = "cryptography-42.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302"}, + {file = "cryptography-42.0.1-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411"}, + {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14"}, + {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824"}, + {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca"}, + {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc"}, + {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77"}, + {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7"}, + {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323"}, + {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49"}, + {file = "cryptography-42.0.1-cp39-abi3-win32.whl", hash = "sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881"}, + {file = "cryptography-42.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986"}, + {file = "cryptography-42.0.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2"}, + {file = "cryptography-42.0.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11"}, + {file = "cryptography-42.0.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6"}, + {file = "cryptography-42.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa"}, + {file = "cryptography-42.0.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4"}, + {file = "cryptography-42.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60"}, + {file = "cryptography-42.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f"}, + {file = "cryptography-42.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04"}, + {file = "cryptography-42.0.1.tar.gz", hash = "sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7"}, +] + +[package.dependencies] +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} [package.extras] docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] +docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] nox = ["nox"] -pep8test = ["black", "check-sdist", "mypy", "ruff"] +pep8test = ["check-sdist", "click", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] [[package]] @@ -854,13 +868,13 @@ files = [ [[package]] name = "datadog-api-client" -version = "2.19.0" +version = "2.21.0" description = "Collection of all Datadog Public endpoints" optional = false python-versions = ">=3.7" files = [ - {file = "datadog-api-client-2.19.0.tar.gz", hash = "sha256:f7a7d9d3a8a061a029b711e6afa0657612f939f79ea0597e8b55a30ccab3d371"}, - {file = "datadog_api_client-2.19.0-py3-none-any.whl", hash = "sha256:0291c5c337f8d310f304723197e6ed1c268d2d3cb55694a48edc77c3f76a2c92"}, + {file = "datadog-api-client-2.21.0.tar.gz", hash = "sha256:168eb9f2d9d11cc23e52e7ab12a11454f87ff1039943534de5d6b84eb6093027"}, + {file = "datadog_api_client-2.21.0-py3-none-any.whl", hash = "sha256:cb0e104ab4ac7d7b3fc769a62a7854afd49f8ea373928b1cf25cc8c7f2f8941f"}, ] [package.dependencies] @@ -1001,17 +1015,18 @@ packaging = "*" [[package]] name = "dill" -version = "0.3.7" +version = "0.3.8" description = "serialize all of Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "dill-0.3.7-py3-none-any.whl", hash = "sha256:76b122c08ef4ce2eedcd4d1abd8e641114bfc6c2867f49f3c41facf65bf19f5e"}, - {file = "dill-0.3.7.tar.gz", hash = "sha256:cc1c8b182eb3013e24bd475ff2e9295af86c1a38eb1aff128dac8962a9ce3c03"}, + {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, + {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, ] [package.extras] graph = ["objgraph (>=1.7.2)"] +profile = ["gprof2dot (>=2022.7.29)"] [[package]] name = "docutils" @@ -1079,13 +1094,13 @@ pyrepl = ">=0.8.2" [[package]] name = "fastjsonschema" -version = "2.19.0" +version = "2.19.1" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" files = [ - {file = "fastjsonschema-2.19.0-py3-none-any.whl", hash = "sha256:b9fd1a2dd6971dbc7fee280a95bd199ae0dd9ce22beb91cc75e9c1c528a5170e"}, - {file = "fastjsonschema-2.19.0.tar.gz", hash = "sha256:e25df6647e1bc4a26070b700897b07b542ec898dd4f1f6ea013e7f6a88417225"}, + {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"}, + {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"}, ] [package.extras] @@ -1093,13 +1108,13 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc [[package]] name = "flask" -version = "3.0.0" +version = "3.0.1" description = "A simple framework for building complex web applications." optional = false python-versions = ">=3.8" files = [ - {file = "flask-3.0.0-py3-none-any.whl", hash = "sha256:21128f47e4e3b9d597a3e8521a329bf56909b690fcc3fa3e477725aa81367638"}, - {file = "flask-3.0.0.tar.gz", hash = "sha256:cfadcdb638b609361d29ec22360d6070a77d7463dcb3ab08d2c2f2f168845f58"}, + {file = "flask-3.0.1-py3-none-any.whl", hash = "sha256:ca631a507f6dfe6c278ae20112cea3ff54ff2216390bf8880f6b035a5354af13"}, + {file = "flask-3.0.1.tar.gz", hash = "sha256:6489f51bb3666def6f314e15f19d50a1869a19ae0e8c9a3641ffe66c77d42403"}, ] [package.dependencies] @@ -1116,59 +1131,59 @@ dotenv = ["python-dotenv"] [[package]] name = "fonttools" -version = "4.46.0" +version = "4.47.2" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.46.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d4e69e2c7f93b695d2e6f18f709d501d945f65c1d237dafaabdd23cd935a5276"}, - {file = "fonttools-4.46.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:25852f0c63df0af022f698464a4a80f7d1d5bd974bcd22f995f6b4ad198e32dd"}, - {file = "fonttools-4.46.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:adab73618d0a328b203a0e242b3eba60a2b5662d9cb2bd16ed9c52af8a7d86af"}, - {file = "fonttools-4.46.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2cf923a4a556ab4cc4c52f69a4a2db624cf5a2cf360394368b40c5152fe3321e"}, - {file = "fonttools-4.46.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:87c214197712cc14fd2a4621efce2a9c501a77041232b789568149a8a3161517"}, - {file = "fonttools-4.46.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:156ae342a1ed1fe38e180de471e98fbf5b2b6ae280fa3323138569c4ca215844"}, - {file = "fonttools-4.46.0-cp310-cp310-win32.whl", hash = "sha256:c506e3d3a9e898caee4dc094f34b49c5566870d5a2d1ca2125f0a9f35ecc2205"}, - {file = "fonttools-4.46.0-cp310-cp310-win_amd64.whl", hash = "sha256:f8bc3973ed58893c4107993e0a7ae34901cb572b5e798249cbef35d30801ffd4"}, - {file = "fonttools-4.46.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:982f69855ac258260f51048d9e0c53c5f19881138cc7ca06deb38dc4b97404b6"}, - {file = "fonttools-4.46.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c23c59d321d62588620f2255cf951270bf637d88070f38ed8b5e5558775b86c"}, - {file = "fonttools-4.46.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0e94244ec24a940ecfbe5b31c975c8a575d5ed2d80f9a280ce3b21fa5dc9c34"}, - {file = "fonttools-4.46.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a9f9cdd7ef63d1b8ac90db335762451452426b3207abd79f60da510cea62da5"}, - {file = "fonttools-4.46.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ca9eceebe70035b057ce549e2054cad73e95cac3fe91a9d827253d1c14618204"}, - {file = "fonttools-4.46.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8be6adfa4e15977075278dd0a0bae74dec59be7b969b5ceed93fb86af52aa5be"}, - {file = "fonttools-4.46.0-cp311-cp311-win32.whl", hash = "sha256:7b5636f5706d49f13b6d610fe54ee662336cdf56b5a6f6683c0b803e23d826d2"}, - {file = "fonttools-4.46.0-cp311-cp311-win_amd64.whl", hash = "sha256:49ea0983e55fd7586a809787cd4644a7ae471e53ab8ddc016f9093b400e32646"}, - {file = "fonttools-4.46.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7b460720ce81773da1a3e7cc964c48e1e11942b280619582a897fa0117b56a62"}, - {file = "fonttools-4.46.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8bee9f4fc8c99824a424ae45c789ee8c67cb84f8e747afa7f83b7d3cef439c3b"}, - {file = "fonttools-4.46.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3d7b96aba96e05e8c911ce2dfc5acc6a178b8f44f6aa69371ab91aa587563da"}, - {file = "fonttools-4.46.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e6aeb5c340416d11a3209d75c48d13e72deea9e1517837dd1522c1fd1f17c11"}, - {file = "fonttools-4.46.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c779f8701deedf41908f287aeb775b8a6f59875ad1002b98ac6034ae4ddc1b7b"}, - {file = "fonttools-4.46.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ce199227ce7921eaafdd4f96536f16b232d6b580ce74ce337de544bf06cb2752"}, - {file = "fonttools-4.46.0-cp312-cp312-win32.whl", hash = "sha256:1c9937c4dd1061afd22643389445fabda858af5e805860ec3082a4bc07c7a720"}, - {file = "fonttools-4.46.0-cp312-cp312-win_amd64.whl", hash = "sha256:a9fa52ef8fd14d7eb3d813e1451e7ace3e1eebfa9b7237d3f81fee8f3de6a114"}, - {file = "fonttools-4.46.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c94564b1f3b5dd87e73577610d85115b1936edcc596deaf84a31bbe70e17456b"}, - {file = "fonttools-4.46.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4a50a1dfad7f7ba5ca3f99cc73bf5cdac67ceade8e4b355a877521f20ad1b63"}, - {file = "fonttools-4.46.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89c2c520f9492844ecd6316d20c6c7a157b5c0cb73a1411b3db28ee304f30122"}, - {file = "fonttools-4.46.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5b7905fd68eacb7cc56a13139da5c312c45baae6950dd00b02563c54508a041"}, - {file = "fonttools-4.46.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8485cc468288e213f31afdaf1fdda3c79010f542559fbba936a54f4644df2570"}, - {file = "fonttools-4.46.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:87c3299da7da55394fb324349db0ede38114a46aafd0e7dfcabfecd28cdd94c3"}, - {file = "fonttools-4.46.0-cp38-cp38-win32.whl", hash = "sha256:f5f1423a504ccc329efb5aa79738de83d38c072be5308788dde6bd419969d7f5"}, - {file = "fonttools-4.46.0-cp38-cp38-win_amd64.whl", hash = "sha256:6d4a4ebcc76e30898ff3296ea786491c70e183f738319ae2629e0d44f17ece42"}, - {file = "fonttools-4.46.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c9a0e422ab79e5cb2b47913be6a4b5fd20c4c7ac34a24f3691a4e099e965e0b8"}, - {file = "fonttools-4.46.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:13ac0cba2fc63fa4b232f2a7971f35f35c6eaf10bd1271fa96d4ce6253a8acfd"}, - {file = "fonttools-4.46.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:795150d5edc595e1a2cfb3d65e8f4f3d027704fc2579f8990d381bef6b188eb6"}, - {file = "fonttools-4.46.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d00fc63131dcac6b25f50a5a129758438317e54e3ce5587163f7058de4b0e933"}, - {file = "fonttools-4.46.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3033b55f401a622de2630b3982234d97219d89b058607b87927eccb0f922313c"}, - {file = "fonttools-4.46.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e26e7fb908ae4f622813e7cb32cd2db6c24e3122bb3b98f25e832a2fe0e7e228"}, - {file = "fonttools-4.46.0-cp39-cp39-win32.whl", hash = "sha256:2d0eba685938c603f2f648dfc0aadbf8c6a4fe1c7ca608c2970a6ef39e00f254"}, - {file = "fonttools-4.46.0-cp39-cp39-win_amd64.whl", hash = "sha256:5200b01f463d97cc2b7ff8a1e3584151f4413e98cb8419da5f17d1dbb84cc214"}, - {file = "fonttools-4.46.0-py3-none-any.whl", hash = "sha256:5b627ed142398ea9202bd752c04311592558964d1a765fb2f78dc441a05633f4"}, - {file = "fonttools-4.46.0.tar.gz", hash = "sha256:2ae45716c27a41807d58a9f3f59983bdc8c0a46cb259e4450ab7e196253a9853"}, + {file = "fonttools-4.47.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3b629108351d25512d4ea1a8393a2dba325b7b7d7308116b605ea3f8e1be88df"}, + {file = "fonttools-4.47.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c19044256c44fe299d9a73456aabee4b4d06c6b930287be93b533b4737d70aa1"}, + {file = "fonttools-4.47.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8be28c036b9f186e8c7eaf8a11b42373e7e4949f9e9f370202b9da4c4c3f56c"}, + {file = "fonttools-4.47.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f83a4daef6d2a202acb9bf572958f91cfde5b10c8ee7fb1d09a4c81e5d851fd8"}, + {file = "fonttools-4.47.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4a5a5318ba5365d992666ac4fe35365f93004109d18858a3e18ae46f67907670"}, + {file = "fonttools-4.47.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8f57ecd742545362a0f7186774b2d1c53423ed9ece67689c93a1055b236f638c"}, + {file = "fonttools-4.47.2-cp310-cp310-win32.whl", hash = "sha256:a1c154bb85dc9a4cf145250c88d112d88eb414bad81d4cb524d06258dea1bdc0"}, + {file = "fonttools-4.47.2-cp310-cp310-win_amd64.whl", hash = "sha256:3e2b95dce2ead58fb12524d0ca7d63a63459dd489e7e5838c3cd53557f8933e1"}, + {file = "fonttools-4.47.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:29495d6d109cdbabe73cfb6f419ce67080c3ef9ea1e08d5750240fd4b0c4763b"}, + {file = "fonttools-4.47.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0a1d313a415eaaba2b35d6cd33536560deeebd2ed758b9bfb89ab5d97dc5deac"}, + {file = "fonttools-4.47.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90f898cdd67f52f18049250a6474185ef6544c91f27a7bee70d87d77a8daf89c"}, + {file = "fonttools-4.47.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3480eeb52770ff75140fe7d9a2ec33fb67b07efea0ab5129c7e0c6a639c40c70"}, + {file = "fonttools-4.47.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0255dbc128fee75fb9be364806b940ed450dd6838672a150d501ee86523ac61e"}, + {file = "fonttools-4.47.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f791446ff297fd5f1e2247c188de53c1bfb9dd7f0549eba55b73a3c2087a2703"}, + {file = "fonttools-4.47.2-cp311-cp311-win32.whl", hash = "sha256:740947906590a878a4bde7dd748e85fefa4d470a268b964748403b3ab2aeed6c"}, + {file = "fonttools-4.47.2-cp311-cp311-win_amd64.whl", hash = "sha256:63fbed184979f09a65aa9c88b395ca539c94287ba3a364517698462e13e457c9"}, + {file = "fonttools-4.47.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4ec558c543609e71b2275c4894e93493f65d2f41c15fe1d089080c1d0bb4d635"}, + {file = "fonttools-4.47.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e040f905d542362e07e72e03612a6270c33d38281fd573160e1003e43718d68d"}, + {file = "fonttools-4.47.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6dd58cc03016b281bd2c74c84cdaa6bd3ce54c5a7f47478b7657b930ac3ed8eb"}, + {file = "fonttools-4.47.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32ab2e9702dff0dd4510c7bb958f265a8d3dd5c0e2547e7b5f7a3df4979abb07"}, + {file = "fonttools-4.47.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a808f3c1d1df1f5bf39be869b6e0c263570cdafb5bdb2df66087733f566ea71"}, + {file = "fonttools-4.47.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ac71e2e201df041a2891067dc36256755b1229ae167edbdc419b16da78732c2f"}, + {file = "fonttools-4.47.2-cp312-cp312-win32.whl", hash = "sha256:69731e8bea0578b3c28fdb43dbf95b9386e2d49a399e9a4ad736b8e479b08085"}, + {file = "fonttools-4.47.2-cp312-cp312-win_amd64.whl", hash = "sha256:b3e1304e5f19ca861d86a72218ecce68f391646d85c851742d265787f55457a4"}, + {file = "fonttools-4.47.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:254d9a6f7be00212bf0c3159e0a420eb19c63793b2c05e049eb337f3023c5ecc"}, + {file = "fonttools-4.47.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eabae77a07c41ae0b35184894202305c3ad211a93b2eb53837c2a1143c8bc952"}, + {file = "fonttools-4.47.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a86a5ab2873ed2575d0fcdf1828143cfc6b977ac448e3dc616bb1e3d20efbafa"}, + {file = "fonttools-4.47.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13819db8445a0cec8c3ff5f243af6418ab19175072a9a92f6cc8ca7d1452754b"}, + {file = "fonttools-4.47.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4e743935139aa485fe3253fc33fe467eab6ea42583fa681223ea3f1a93dd01e6"}, + {file = "fonttools-4.47.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d49ce3ea7b7173faebc5664872243b40cf88814ca3eb135c4a3cdff66af71946"}, + {file = "fonttools-4.47.2-cp38-cp38-win32.whl", hash = "sha256:94208ea750e3f96e267f394d5588579bb64cc628e321dbb1d4243ffbc291b18b"}, + {file = "fonttools-4.47.2-cp38-cp38-win_amd64.whl", hash = "sha256:0f750037e02beb8b3569fbff701a572e62a685d2a0e840d75816592280e5feae"}, + {file = "fonttools-4.47.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3d71606c9321f6701642bd4746f99b6089e53d7e9817fc6b964e90d9c5f0ecc6"}, + {file = "fonttools-4.47.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:86e0427864c6c91cf77f16d1fb9bf1bbf7453e824589e8fb8461b6ee1144f506"}, + {file = "fonttools-4.47.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a00bd0e68e88987dcc047ea31c26d40a3c61185153b03457956a87e39d43c37"}, + {file = "fonttools-4.47.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5d77479fb885ef38a16a253a2f4096bc3d14e63a56d6246bfdb56365a12b20c"}, + {file = "fonttools-4.47.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5465df494f20a7d01712b072ae3ee9ad2887004701b95cb2cc6dcb9c2c97a899"}, + {file = "fonttools-4.47.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4c811d3c73b6abac275babb8aa439206288f56fdb2c6f8835e3d7b70de8937a7"}, + {file = "fonttools-4.47.2-cp39-cp39-win32.whl", hash = "sha256:5b60e3afa9635e3dfd3ace2757039593e3bd3cf128be0ddb7a1ff4ac45fa5a50"}, + {file = "fonttools-4.47.2-cp39-cp39-win_amd64.whl", hash = "sha256:7ee48bd9d6b7e8f66866c9090807e3a4a56cf43ffad48962725a190e0dd774c8"}, + {file = "fonttools-4.47.2-py3-none-any.whl", hash = "sha256:7eb7ad665258fba68fd22228a09f347469d95a97fb88198e133595947a20a184"}, + {file = "fonttools-4.47.2.tar.gz", hash = "sha256:7df26dd3650e98ca45f1e29883c96a0b9f5bb6af8d632a6a108bc744fa0bd9b3"}, ] [package.extras] -all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] graphite = ["lz4 (>=1.7.4.2)"] -interpolatable = ["munkres", "scipy"] +interpolatable = ["munkres", "pycairo", "scipy"] lxml = ["lxml (>=4.0,<5)"] pathops = ["skia-pathops (>=0.5.0)"] plot = ["matplotlib"] @@ -1208,13 +1223,13 @@ files = [ [[package]] name = "google-api-core" -version = "2.14.0" +version = "2.16.0" description = "Google API client core library" optional = false python-versions = ">=3.7" files = [ - {file = "google-api-core-2.14.0.tar.gz", hash = "sha256:5368a4502b793d9bbf812a5912e13e4e69f9bd87f6efb508460c43f5bbd1ce41"}, - {file = "google_api_core-2.14.0-py3-none-any.whl", hash = "sha256:de2fb50ed34d47ddbb2bd2dcf680ee8fead46279f4ed6b16de362aca23a18952"}, + {file = "google-api-core-2.16.0.tar.gz", hash = "sha256:d1fc42e52aa4042ad812827b7aad858394e2bf73da8329af95ad8efa30bc886b"}, + {file = "google_api_core-2.16.0-py3-none-any.whl", hash = "sha256:c424f9f271c7f55366254708e0d0383963a72376286018af0a04f322be843400"}, ] [package.dependencies] @@ -1230,13 +1245,13 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] [[package]] name = "google-auth" -version = "2.24.0" +version = "2.27.0" description = "Google Authentication Library" optional = false python-versions = ">=3.7" files = [ - {file = "google-auth-2.24.0.tar.gz", hash = "sha256:2ec7b2a506989d7dbfdbe81cb8d0ead8876caaed14f86d29d34483cbe99c57af"}, - {file = "google_auth-2.24.0-py2.py3-none-any.whl", hash = "sha256:9b82d5c8d3479a5391ea0a46d81cca698d328459da31d4a459d4e901a5d927e0"}, + {file = "google-auth-2.27.0.tar.gz", hash = "sha256:e863a56ccc2d8efa83df7a80272601e43487fa9a728a376205c86c26aaefa821"}, + {file = "google_auth-2.27.0-py2.py3-none-any.whl", hash = "sha256:8e4bad367015430ff253fe49d500fdc3396c1a434db5740828c728e45bcce245"}, ] [package.dependencies] @@ -1253,13 +1268,13 @@ requests = ["requests (>=2.20.0,<3.0.0.dev0)"] [[package]] name = "googleapis-common-protos" -version = "1.61.0" +version = "1.62.0" description = "Common protobufs used in Google APIs" optional = false python-versions = ">=3.7" files = [ - {file = "googleapis-common-protos-1.61.0.tar.gz", hash = "sha256:8a64866a97f6304a7179873a465d6eee97b7a24ec6cfd78e0f575e96b821240b"}, - {file = "googleapis_common_protos-1.61.0-py2.py3-none-any.whl", hash = "sha256:22f1915393bb3245343f6efe87f6fe868532efc12aa26b391b15132e1279f1c0"}, + {file = "googleapis-common-protos-1.62.0.tar.gz", hash = "sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277"}, + {file = "googleapis_common_protos-1.62.0-py2.py3-none-any.whl", hash = "sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07"}, ] [package.dependencies] @@ -1270,78 +1285,78 @@ grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] [[package]] name = "grpcio" -version = "1.59.3" +version = "1.60.0" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.7" files = [ - {file = "grpcio-1.59.3-cp310-cp310-linux_armv7l.whl", hash = "sha256:aca028a6c7806e5b61e5f9f4232432c52856f7fcb98e330b20b6bc95d657bdcc"}, - {file = "grpcio-1.59.3-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:19ad26a7967f7999c8960d2b9fe382dae74c55b0c508c613a6c2ba21cddf2354"}, - {file = "grpcio-1.59.3-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:72b71dad2a3d1650e69ad42a5c4edbc59ee017f08c32c95694172bc501def23c"}, - {file = "grpcio-1.59.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c0f0a11d82d0253656cc42e04b6a149521e02e755fe2e4edd21123de610fd1d4"}, - {file = "grpcio-1.59.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60cddafb70f9a2c81ba251b53b4007e07cca7389e704f86266e22c4bffd8bf1d"}, - {file = "grpcio-1.59.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6c75a1fa0e677c1d2b6d4196ad395a5c381dfb8385f07ed034ef667cdcdbcc25"}, - {file = "grpcio-1.59.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e1d8e01438d5964a11167eec1edb5f85ed8e475648f36c834ed5db4ffba24ac8"}, - {file = "grpcio-1.59.3-cp310-cp310-win32.whl", hash = "sha256:c4b0076f0bf29ee62335b055a9599f52000b7941f577daa001c7ef961a1fbeab"}, - {file = "grpcio-1.59.3-cp310-cp310-win_amd64.whl", hash = "sha256:b1f00a3e6e0c3dccccffb5579fc76ebfe4eb40405ba308505b41ef92f747746a"}, - {file = "grpcio-1.59.3-cp311-cp311-linux_armv7l.whl", hash = "sha256:3996aaa21231451161dc29df6a43fcaa8b332042b6150482c119a678d007dd86"}, - {file = "grpcio-1.59.3-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:cb4e9cbd9b7388fcb06412da9f188c7803742d06d6f626304eb838d1707ec7e3"}, - {file = "grpcio-1.59.3-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:8022ca303d6c694a0d7acfb2b472add920217618d3a99eb4b14edc7c6a7e8fcf"}, - {file = "grpcio-1.59.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b36683fad5664283755a7f4e2e804e243633634e93cd798a46247b8e54e3cb0d"}, - {file = "grpcio-1.59.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8239b853226e4824e769517e1b5232e7c4dda3815b200534500338960fcc6118"}, - {file = "grpcio-1.59.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:0511af8653fbda489ff11d542a08505d56023e63cafbda60e6e00d4e0bae86ea"}, - {file = "grpcio-1.59.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e78dc982bda74cef2ddfce1c91d29b96864c4c680c634e279ed204d51e227473"}, - {file = "grpcio-1.59.3-cp311-cp311-win32.whl", hash = "sha256:6a5c3a96405966c023e139c3bcccb2c7c776a6f256ac6d70f8558c9041bdccc3"}, - {file = "grpcio-1.59.3-cp311-cp311-win_amd64.whl", hash = "sha256:ed26826ee423b11477297b187371cdf4fa1eca874eb1156422ef3c9a60590dd9"}, - {file = "grpcio-1.59.3-cp312-cp312-linux_armv7l.whl", hash = "sha256:45dddc5cb5227d30fa43652d8872dc87f086d81ab4b500be99413bad0ae198d7"}, - {file = "grpcio-1.59.3-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:1736496d74682e53dd0907fd515f2694d8e6a96c9a359b4080b2504bf2b2d91b"}, - {file = "grpcio-1.59.3-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:ddbd1a16138e52e66229047624de364f88a948a4d92ba20e4e25ad7d22eef025"}, - {file = "grpcio-1.59.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcfa56f8d031ffda902c258c84c4b88707f3a4be4827b4e3ab8ec7c24676320d"}, - {file = "grpcio-1.59.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2eb8f0c7c0c62f7a547ad7a91ba627a5aa32a5ae8d930783f7ee61680d7eb8d"}, - {file = "grpcio-1.59.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8d993399cc65e3a34f8fd48dd9ad7a376734564b822e0160dd18b3d00c1a33f9"}, - {file = "grpcio-1.59.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c0bd141f4f41907eb90bda74d969c3cb21c1c62779419782a5b3f5e4b5835718"}, - {file = "grpcio-1.59.3-cp312-cp312-win32.whl", hash = "sha256:33b8fd65d4e97efa62baec6171ce51f9cf68f3a8ba9f866f4abc9d62b5c97b79"}, - {file = "grpcio-1.59.3-cp312-cp312-win_amd64.whl", hash = "sha256:0e735ed002f50d4f3cb9ecfe8ac82403f5d842d274c92d99db64cfc998515e07"}, - {file = "grpcio-1.59.3-cp37-cp37m-linux_armv7l.whl", hash = "sha256:ea40ce4404e7cca0724c91a7404da410f0144148fdd58402a5942971e3469b94"}, - {file = "grpcio-1.59.3-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:83113bcc393477b6f7342b9f48e8a054330c895205517edc66789ceea0796b53"}, - {file = "grpcio-1.59.3-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:73afbac602b8f1212a50088193601f869b5073efa9855b3e51aaaec97848fc8a"}, - {file = "grpcio-1.59.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:575d61de1950b0b0699917b686b1ca108690702fcc2df127b8c9c9320f93e069"}, - {file = "grpcio-1.59.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cd76057b5c9a4d68814610ef9226925f94c1231bbe533fdf96f6181f7d2ff9e"}, - {file = "grpcio-1.59.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:95d6fd804c81efe4879e38bfd84d2b26e339a0a9b797e7615e884ef4686eb47b"}, - {file = "grpcio-1.59.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0d42048b8a3286ea4134faddf1f9a59cf98192b94aaa10d910a25613c5eb5bfb"}, - {file = "grpcio-1.59.3-cp37-cp37m-win_amd64.whl", hash = "sha256:4619fea15c64bcdd9d447cdbdde40e3d5f1da3a2e8ae84103d94a9c1df210d7e"}, - {file = "grpcio-1.59.3-cp38-cp38-linux_armv7l.whl", hash = "sha256:95b5506e70284ac03b2005dd9ffcb6708c9ae660669376f0192a710687a22556"}, - {file = "grpcio-1.59.3-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:9e17660947660ccfce56c7869032910c179a5328a77b73b37305cd1ee9301c2e"}, - {file = "grpcio-1.59.3-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:00912ce19914d038851be5cd380d94a03f9d195643c28e3ad03d355cc02ce7e8"}, - {file = "grpcio-1.59.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e58b3cadaa3c90f1efca26ba33e0d408b35b497307027d3d707e4bcd8de862a6"}, - {file = "grpcio-1.59.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d787ecadea865bdf78f6679f6f5bf4b984f18f659257ba612979df97a298b3c3"}, - {file = "grpcio-1.59.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0814942ba1bba269db4e760a34388640c601dece525c6a01f3b4ff030cc0db69"}, - {file = "grpcio-1.59.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fb111aa99d3180c361a35b5ae1e2c63750220c584a1344229abc139d5c891881"}, - {file = "grpcio-1.59.3-cp38-cp38-win32.whl", hash = "sha256:eb8ba504c726befe40a356ecbe63c6c3c64c9a439b3164f5a718ec53c9874da0"}, - {file = "grpcio-1.59.3-cp38-cp38-win_amd64.whl", hash = "sha256:cdbc6b32fadab9bebc6f49d3e7ec4c70983c71e965497adab7f87de218e84391"}, - {file = "grpcio-1.59.3-cp39-cp39-linux_armv7l.whl", hash = "sha256:c82ca1e4be24a98a253d6dbaa216542e4163f33f38163fc77964b0f0d255b552"}, - {file = "grpcio-1.59.3-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:36636babfda14f9e9687f28d5b66d349cf88c1301154dc71c6513de2b6c88c59"}, - {file = "grpcio-1.59.3-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:5f9b2e591da751ac7fdd316cc25afafb7a626dededa9b414f90faad7f3ccebdb"}, - {file = "grpcio-1.59.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a93a82876a4926bf451db82ceb725bd87f42292bacc94586045261f501a86994"}, - {file = "grpcio-1.59.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce31fa0bfdd1f2bb15b657c16105c8652186eab304eb512e6ae3b99b2fdd7d13"}, - {file = "grpcio-1.59.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:16da0e40573962dab6cba16bec31f25a4f468e6d05b658e589090fe103b03e3d"}, - {file = "grpcio-1.59.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1d1a17372fd425addd5812049fa7374008ffe689585f27f802d0935522cf4b7"}, - {file = "grpcio-1.59.3-cp39-cp39-win32.whl", hash = "sha256:52cc38a7241b5f7b4a91aaf9000fdd38e26bb00d5e8a71665ce40cfcee716281"}, - {file = "grpcio-1.59.3-cp39-cp39-win_amd64.whl", hash = "sha256:b491e5bbcad3020a96842040421e508780cade35baba30f402df9d321d1c423e"}, - {file = "grpcio-1.59.3.tar.gz", hash = "sha256:7800f99568a74a06ebdccd419dd1b6e639b477dcaf6da77ea702f8fb14ce5f80"}, + {file = "grpcio-1.60.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:d020cfa595d1f8f5c6b343530cd3ca16ae5aefdd1e832b777f9f0eb105f5b139"}, + {file = "grpcio-1.60.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:b98f43fcdb16172dec5f4b49f2fece4b16a99fd284d81c6bbac1b3b69fcbe0ff"}, + {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:20e7a4f7ded59097c84059d28230907cd97130fa74f4a8bfd1d8e5ba18c81491"}, + {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452ca5b4afed30e7274445dd9b441a35ece656ec1600b77fff8c216fdf07df43"}, + {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43e636dc2ce9ece583b3e2ca41df5c983f4302eabc6d5f9cd04f0562ee8ec1ae"}, + {file = "grpcio-1.60.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e306b97966369b889985a562ede9d99180def39ad42c8014628dd3cc343f508"}, + {file = "grpcio-1.60.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b"}, + {file = "grpcio-1.60.0-cp310-cp310-win32.whl", hash = "sha256:b87efe4a380887425bb15f220079aa8336276398dc33fce38c64d278164f963d"}, + {file = "grpcio-1.60.0-cp310-cp310-win_amd64.whl", hash = "sha256:a9c7b71211f066908e518a2ef7a5e211670761651039f0d6a80d8d40054047df"}, + {file = "grpcio-1.60.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd"}, + {file = "grpcio-1.60.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4b44d7e39964e808b071714666a812049765b26b3ea48c4434a3b317bac82f14"}, + {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:90bdd76b3f04bdb21de5398b8a7c629676c81dfac290f5f19883857e9371d28c"}, + {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91229d7203f1ef0ab420c9b53fe2ca5c1fbeb34f69b3bc1b5089466237a4a134"}, + {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b36a2c6d4920ba88fa98075fdd58ff94ebeb8acc1215ae07d01a418af4c0253"}, + {file = "grpcio-1.60.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:297eef542156d6b15174a1231c2493ea9ea54af8d016b8ca7d5d9cc65cfcc444"}, + {file = "grpcio-1.60.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:87c9224acba0ad8bacddf427a1c2772e17ce50b3042a789547af27099c5f751d"}, + {file = "grpcio-1.60.0-cp311-cp311-win32.whl", hash = "sha256:95ae3e8e2c1b9bf671817f86f155c5da7d49a2289c5cf27a319458c3e025c320"}, + {file = "grpcio-1.60.0-cp311-cp311-win_amd64.whl", hash = "sha256:467a7d31554892eed2aa6c2d47ded1079fc40ea0b9601d9f79204afa8902274b"}, + {file = "grpcio-1.60.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:a7152fa6e597c20cb97923407cf0934e14224af42c2b8d915f48bc3ad2d9ac18"}, + {file = "grpcio-1.60.0-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:7db16dd4ea1b05ada504f08d0dca1cd9b926bed3770f50e715d087c6f00ad748"}, + {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:b0571a5aef36ba9177e262dc88a9240c866d903a62799e44fd4aae3f9a2ec17e"}, + {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fd9584bf1bccdfff1512719316efa77be235469e1e3295dce64538c4773840b"}, + {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6a478581b1a1a8fdf3318ecb5f4d0cda41cacdffe2b527c23707c9c1b8fdb55"}, + {file = "grpcio-1.60.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:77c8a317f0fd5a0a2be8ed5cbe5341537d5c00bb79b3bb27ba7c5378ba77dbca"}, + {file = "grpcio-1.60.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1c30bb23a41df95109db130a6cc1b974844300ae2e5d68dd4947aacba5985aa5"}, + {file = "grpcio-1.60.0-cp312-cp312-win32.whl", hash = "sha256:2aef56e85901c2397bd557c5ba514f84de1f0ae5dd132f5d5fed042858115951"}, + {file = "grpcio-1.60.0-cp312-cp312-win_amd64.whl", hash = "sha256:e381fe0c2aa6c03b056ad8f52f8efca7be29fb4d9ae2f8873520843b6039612a"}, + {file = "grpcio-1.60.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:92f88ca1b956eb8427a11bb8b4a0c0b2b03377235fc5102cb05e533b8693a415"}, + {file = "grpcio-1.60.0-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:e278eafb406f7e1b1b637c2cf51d3ad45883bb5bd1ca56bc05e4fc135dfdaa65"}, + {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:a48edde788b99214613e440fce495bbe2b1e142a7f214cce9e0832146c41e324"}, + {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de2ad69c9a094bf37c1102b5744c9aec6cf74d2b635558b779085d0263166454"}, + {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6"}, + {file = "grpcio-1.60.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c826f93050c73e7769806f92e601e0efdb83ec8d7c76ddf45d514fee54e8e619"}, + {file = "grpcio-1.60.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9e30be89a75ee66aec7f9e60086fadb37ff8c0ba49a022887c28c134341f7179"}, + {file = "grpcio-1.60.0-cp37-cp37m-win_amd64.whl", hash = "sha256:b0fb2d4801546598ac5cd18e3ec79c1a9af8b8f2a86283c55a5337c5aeca4b1b"}, + {file = "grpcio-1.60.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:9073513ec380434eb8d21970e1ab3161041de121f4018bbed3146839451a6d8e"}, + {file = "grpcio-1.60.0-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:74d7d9fa97809c5b892449b28a65ec2bfa458a4735ddad46074f9f7d9550ad13"}, + {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead"}, + {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19"}, + {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675997222f2e2f22928fbba640824aebd43791116034f62006e19730715166c0"}, + {file = "grpcio-1.60.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5208a57eae445ae84a219dfd8b56e04313445d146873117b5fa75f3245bc1390"}, + {file = "grpcio-1.60.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:428d699c8553c27e98f4d29fdc0f0edc50e9a8a7590bfd294d2edb0da7be3629"}, + {file = "grpcio-1.60.0-cp38-cp38-win32.whl", hash = "sha256:83f2292ae292ed5a47cdcb9821039ca8e88902923198f2193f13959360c01860"}, + {file = "grpcio-1.60.0-cp38-cp38-win_amd64.whl", hash = "sha256:705a68a973c4c76db5d369ed573fec3367d7d196673fa86614b33d8c8e9ebb08"}, + {file = "grpcio-1.60.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:c193109ca4070cdcaa6eff00fdb5a56233dc7610216d58fb81638f89f02e4968"}, + {file = "grpcio-1.60.0-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:676e4a44e740deaba0f4d95ba1d8c5c89a2fcc43d02c39f69450b1fa19d39590"}, + {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:5ff21e000ff2f658430bde5288cb1ac440ff15c0d7d18b5fb222f941b46cb0d2"}, + {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c86343cf9ff7b2514dd229bdd88ebba760bd8973dac192ae687ff75e39ebfab"}, + {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328"}, + {file = "grpcio-1.60.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:30943b9530fe3620e3b195c03130396cd0ee3a0d10a66c1bee715d1819001eaf"}, + {file = "grpcio-1.60.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b10241250cb77657ab315270b064a6c7f1add58af94befa20687e7c8d8603ae6"}, + {file = "grpcio-1.60.0-cp39-cp39-win32.whl", hash = "sha256:79a050889eb8d57a93ed21d9585bb63fca881666fc709f5d9f7f9372f5e7fd03"}, + {file = "grpcio-1.60.0-cp39-cp39-win_amd64.whl", hash = "sha256:8a97a681e82bc11a42d4372fe57898d270a2707f36c45c6676e49ce0d5c41353"}, + {file = "grpcio-1.60.0.tar.gz", hash = "sha256:2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.59.3)"] +protobuf = ["grpcio-tools (>=1.60.0)"] [[package]] name = "grpclib" -version = "0.4.6" +version = "0.4.7" description = "Pure-Python gRPC implementation for asyncio" optional = false python-versions = ">=3.7" files = [ - {file = "grpclib-0.4.6.tar.gz", hash = "sha256:595d05236ca8b8f8e433f5bf6095e6354c1d8777d003ddaf5288efa9611e3fd6"}, + {file = "grpclib-0.4.7.tar.gz", hash = "sha256:2988ef57c02b22b7a2e8e961792c41ccf97efc2ace91ae7a5b0de03c363823c3"}, ] [package.dependencies] @@ -1561,13 +1576,13 @@ files = [ [[package]] name = "importlib-metadata" -version = "7.0.0" +version = "7.0.1" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.0.0-py3-none-any.whl", hash = "sha256:d97503976bb81f40a193d41ee6570868479c69d5068651eb039c40d850c59d67"}, - {file = "importlib_metadata-7.0.0.tar.gz", hash = "sha256:7fc841f8b8332803464e5dc1c63a2e59121f46ca186c0e2e182e80bf8c1319f7"}, + {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"}, + {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"}, ] [package.dependencies] @@ -1680,20 +1695,17 @@ test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] [[package]] name = "isort" -version = "5.12.0" +version = "5.13.2" description = "A Python utility / library to sort Python imports." optional = false python-versions = ">=3.8.0" files = [ - {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, - {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, ] [package.extras] -colors = ["colorama (>=0.4.3)"] -pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] -plugins = ["setuptools"] -requirements-deprecated-finder = ["pip-api", "pipreqs"] +colors = ["colorama (>=0.4.6)"] [[package]] name = "itsdangerous" @@ -1727,13 +1739,13 @@ testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] [[package]] name = "jinja2" -version = "3.1.2" +version = "3.1.3" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, + {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, + {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, ] [package.dependencies] @@ -1766,13 +1778,13 @@ files = [ [[package]] name = "jsonschema" -version = "4.20.0" +version = "4.21.1" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.20.0-py3-none-any.whl", hash = "sha256:ed6231f0429ecf966f5bc8dfef245998220549cbbcf140f913b7464c52c3b6b3"}, - {file = "jsonschema-4.20.0.tar.gz", hash = "sha256:4f614fd46d8d61258610998997743ec5492a648b33cf478c1ddc23ed4598a5fa"}, + {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, + {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, ] [package.dependencies] @@ -1787,13 +1799,13 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jsonschema-specifications" -version = "2023.11.2" +version = "2023.12.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema_specifications-2023.11.2-py3-none-any.whl", hash = "sha256:e74ba7c0a65e8cb49dc26837d6cfe576557084a8b423ed16a420984228104f93"}, - {file = "jsonschema_specifications-2023.11.2.tar.gz", hash = "sha256:9472fc4fea474cd74bea4a2b190daeccb5a9e4db2ea80efcf7a1b582fc9a81b8"}, + {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, + {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, ] [package.dependencies] @@ -1824,13 +1836,13 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt [[package]] name = "jupyter-core" -version = "5.5.0" +version = "5.7.1" description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.5.0-py3-none-any.whl", hash = "sha256:e11e02cd8ae0a9de5c6c44abf5727df9f2581055afe00b22183f621ba3585805"}, - {file = "jupyter_core-5.5.0.tar.gz", hash = "sha256:880b86053bf298a8724994f95e99b99130659022a4f7f45f563084b6223861d3"}, + {file = "jupyter_core-5.7.1-py3-none-any.whl", hash = "sha256:c65c82126453a723a2804aa52409930434598fd9d35091d63dfb919d2b765bb7"}, + {file = "jupyter_core-5.7.1.tar.gz", hash = "sha256:de61a9d7fc71240f688b2fb5ab659fbb56979458dc66a71decd098e03c79e218"}, ] [package.dependencies] @@ -2078,13 +2090,13 @@ test = ["pytest (>=7.4)", "pytest-cov (>=4.1)"] [[package]] name = "markdown" -version = "3.5.1" +version = "3.5.2" description = "Python implementation of John Gruber's Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "Markdown-3.5.1-py3-none-any.whl", hash = "sha256:5874b47d4ee3f0b14d764324d2c94c03ea66bee56f2d929da9f2508d65e722dc"}, - {file = "Markdown-3.5.1.tar.gz", hash = "sha256:b65d7beb248dc22f2e8a31fb706d93798093c308dc1aba295aedeb9d41a813bd"}, + {file = "Markdown-3.5.2-py3-none-any.whl", hash = "sha256:d43323865d89fc0cb9b20c75fc8ad313af307cc087e84b657d9eec768eddeadd"}, + {file = "Markdown-3.5.2.tar.gz", hash = "sha256:e1ac7b3dc550ee80e602e71c1d168002f062e49f1b11e26a36264dafd4df2ef8"}, ] [package.dependencies] @@ -2120,71 +2132,71 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "2.1.3" +version = "2.1.4" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {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-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, - {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"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-win32.whl", hash = "sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-win32.whl", hash = "sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-win32.whl", hash = "sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-win32.whl", hash = "sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-win32.whl", hash = "sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-win32.whl", hash = "sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"}, + {file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"}, ] [[package]] @@ -2343,13 +2355,13 @@ tests = ["pytest (>=4.6)"] [[package]] name = "msal" -version = "1.25.0" -description = "The Microsoft Authentication Library (MSAL) for Python library" +version = "1.26.0" +description = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect." optional = false python-versions = ">=2.7" files = [ - {file = "msal-1.25.0-py2.py3-none-any.whl", hash = "sha256:386df621becb506bc315a713ec3d4d5b5d6163116955c7dde23622f156b81af6"}, - {file = "msal-1.25.0.tar.gz", hash = "sha256:f44329fdb59f4f044c779164a34474b8a44ad9e4940afbc4c3a3a2bbe90324d9"}, + {file = "msal-1.26.0-py2.py3-none-any.whl", hash = "sha256:be77ba6a8f49c9ff598bbcdc5dfcf1c9842f3044300109af738e8c3e371065b5"}, + {file = "msal-1.26.0.tar.gz", hash = "sha256:224756079fe338be838737682b49f8ebc20a87c1c5eeaf590daae4532b83de15"}, ] [package.dependencies] @@ -2362,20 +2374,21 @@ broker = ["pymsalruntime (>=0.13.2,<0.14)"] [[package]] name = "msal-extensions" -version = "1.0.0" +version = "1.1.0" description = "Microsoft Authentication Library extensions (MSAL EX) provides a persistence API that can save your data on disk, encrypted on Windows, macOS and Linux. Concurrent data access will be coordinated by a file lock mechanism." optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "msal-extensions-1.0.0.tar.gz", hash = "sha256:c676aba56b0cce3783de1b5c5ecfe828db998167875126ca4b47dc6436451354"}, - {file = "msal_extensions-1.0.0-py2.py3-none-any.whl", hash = "sha256:91e3db9620b822d0ed2b4d1850056a0f133cba04455e62f11612e40f5502f2ee"}, + {file = "msal-extensions-1.1.0.tar.gz", hash = "sha256:6ab357867062db7b253d0bd2df6d411c7891a0ee7308d54d1e4317c1d1c54252"}, + {file = "msal_extensions-1.1.0-py3-none-any.whl", hash = "sha256:01be9711b4c0b1a151450068eeb2c4f0997df3bba085ac299de3a66f585e382f"}, ] [package.dependencies] msal = ">=0.4.1,<2.0.0" +packaging = "*" portalocker = [ - {version = ">=1.0,<3", markers = "python_version >= \"3.5\" and platform_system != \"Windows\""}, - {version = ">=1.6,<3", markers = "python_version >= \"3.5\" and platform_system == \"Windows\""}, + {version = ">=1.0,<3", markers = "platform_system != \"Windows\""}, + {version = ">=1.6,<3", markers = "platform_system == \"Windows\""}, ] [[package]] @@ -2485,13 +2498,13 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= [[package]] name = "nbconvert" -version = "7.11.0" +version = "7.14.2" description = "Converting Jupyter Notebooks" optional = false python-versions = ">=3.8" files = [ - {file = "nbconvert-7.11.0-py3-none-any.whl", hash = "sha256:d1d417b7f34a4e38887f8da5bdfd12372adf3b80f995d57556cb0972c68909fe"}, - {file = "nbconvert-7.11.0.tar.gz", hash = "sha256:abedc01cf543177ffde0bfc2a69726d5a478f6af10a332fc1bf29fcb4f0cf000"}, + {file = "nbconvert-7.14.2-py3-none-any.whl", hash = "sha256:db28590cef90f7faf2ebbc71acd402cbecf13d29176df728c0a9025a49345ea1"}, + {file = "nbconvert-7.14.2.tar.gz", hash = "sha256:a7f8808fd4e082431673ac538400218dd45efd076fbeb07cc6e5aa5a3a4e949e"}, ] [package.dependencies] @@ -2518,7 +2531,7 @@ docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sp qtpdf = ["nbconvert[qtpng]"] qtpng = ["pyqtwebengine (>=5.15)"] serve = ["tornado (>=6.1)"] -test = ["flaky", "ipykernel", "ipywidgets (>=7)", "pytest"] +test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest"] webpdf = ["playwright"] [[package]] @@ -2563,13 +2576,13 @@ traitlets = ">=5" [[package]] name = "nest-asyncio" -version = "1.5.8" +version = "1.6.0" description = "Patch asyncio to allow nested event loops" optional = false python-versions = ">=3.5" files = [ - {file = "nest_asyncio-1.5.8-py3-none-any.whl", hash = "sha256:accda7a339a70599cb08f9dd09a67e0c2ef8d8d6f4c07f96ab203f2ae254e48d"}, - {file = "nest_asyncio-1.5.8.tar.gz", hash = "sha256:25aa2ca0d2a5b5531956b9e273b45cf664cae2b145101d73b86b199978d48fdb"}, + {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, + {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, ] [[package]] @@ -2629,18 +2642,19 @@ files = [ [[package]] name = "opencensus" -version = "0.11.3" +version = "0.11.4" description = "A stats collection and distributed tracing framework" optional = false python-versions = "*" files = [ - {file = "opencensus-0.11.3-py2.py3-none-any.whl", hash = "sha256:9c33d572059f0f0e874fc34c697a39a4193aa9cf3203f7e777df42e9edeea56a"}, - {file = "opencensus-0.11.3.tar.gz", hash = "sha256:af7a98bd51e63968144d772f346d696ed498a32dbdc4be267cd6011c4ce05da8"}, + {file = "opencensus-0.11.4-py2.py3-none-any.whl", hash = "sha256:a18487ce68bc19900336e0ff4655c5a116daf10c1b3685ece8d971bddad6a864"}, + {file = "opencensus-0.11.4.tar.gz", hash = "sha256:cbef87d8b8773064ab60e5c2a1ced58bbaa38a6d052c41aec224958ce544eff2"}, ] [package.dependencies] google-api-core = {version = ">=1.0.0,<3.0.0", markers = "python_version >= \"3.6\""} opencensus-context = ">=0.1.3" +six = ">=1.16,<2.0" [[package]] name = "opencensus-context" @@ -2655,19 +2669,19 @@ files = [ [[package]] name = "opencensus-ext-azure" -version = "1.1.12" +version = "1.1.13" description = "OpenCensus Azure Monitor Exporter" optional = false python-versions = "*" files = [ - {file = "opencensus-ext-azure-1.1.12.tar.gz", hash = "sha256:86bb1e47ce1d20acad96ad3c11f8efb2fa7ab5e9ec4896f3063d85f899490462"}, - {file = "opencensus_ext_azure-1.1.12-py2.py3-none-any.whl", hash = "sha256:183164e3717ea7d61ca151a4aa09be82eb1959ce81baf08b06a5c75fb797b70c"}, + {file = "opencensus-ext-azure-1.1.13.tar.gz", hash = "sha256:aec30472177005379ba56a702a097d618c5f57558e1bb6676ec75f948130692a"}, + {file = "opencensus_ext_azure-1.1.13-py2.py3-none-any.whl", hash = "sha256:06001fac6f8588ba00726a3a7c6c7f2fc88bc8ad12a65afdca657923085393dd"}, ] [package.dependencies] azure-core = ">=1.12.0,<2.0.0" azure-identity = ">=1.5.0,<2.0.0" -opencensus = ">=0.11.3,<1.0.0" +opencensus = ">=0.11.4,<1.0.0" psutil = ">=5.6.3" requests = ">=2.19.0" @@ -2713,61 +2727,61 @@ tests = ["pytest (>=6.0)", "pyyaml"] [[package]] name = "orjson" -version = "3.9.10" +version = "3.9.12" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.9.10-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c18a4da2f50050a03d1da5317388ef84a16013302a5281d6f64e4a3f406aabc4"}, - {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5148bab4d71f58948c7c39d12b14a9005b6ab35a0bdf317a8ade9a9e4d9d0bd5"}, - {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4cf7837c3b11a2dfb589f8530b3cff2bd0307ace4c301e8997e95c7468c1378e"}, - {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c62b6fa2961a1dcc51ebe88771be5319a93fd89bd247c9ddf732bc250507bc2b"}, - {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:deeb3922a7a804755bbe6b5be9b312e746137a03600f488290318936c1a2d4dc"}, - {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1234dc92d011d3554d929b6cf058ac4a24d188d97be5e04355f1b9223e98bbe9"}, - {file = "orjson-3.9.10-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:06ad5543217e0e46fd7ab7ea45d506c76f878b87b1b4e369006bdb01acc05a83"}, - {file = "orjson-3.9.10-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4fd72fab7bddce46c6826994ce1e7de145ae1e9e106ebb8eb9ce1393ca01444d"}, - {file = "orjson-3.9.10-cp310-none-win32.whl", hash = "sha256:b5b7d4a44cc0e6ff98da5d56cde794385bdd212a86563ac321ca64d7f80c80d1"}, - {file = "orjson-3.9.10-cp310-none-win_amd64.whl", hash = "sha256:61804231099214e2f84998316f3238c4c2c4aaec302df12b21a64d72e2a135c7"}, - {file = "orjson-3.9.10-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:cff7570d492bcf4b64cc862a6e2fb77edd5e5748ad715f487628f102815165e9"}, - {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed8bc367f725dfc5cabeed1ae079d00369900231fbb5a5280cf0736c30e2adf7"}, - {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c812312847867b6335cfb264772f2a7e85b3b502d3a6b0586aa35e1858528ab1"}, - {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9edd2856611e5050004f4722922b7b1cd6268da34102667bd49d2a2b18bafb81"}, - {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:674eb520f02422546c40401f4efaf8207b5e29e420c17051cddf6c02783ff5ca"}, - {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d0dc4310da8b5f6415949bd5ef937e60aeb0eb6b16f95041b5e43e6200821fb"}, - {file = "orjson-3.9.10-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e99c625b8c95d7741fe057585176b1b8783d46ed4b8932cf98ee145c4facf499"}, - {file = "orjson-3.9.10-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ec6f18f96b47299c11203edfbdc34e1b69085070d9a3d1f302810cc23ad36bf3"}, - {file = "orjson-3.9.10-cp311-none-win32.whl", hash = "sha256:ce0a29c28dfb8eccd0f16219360530bc3cfdf6bf70ca384dacd36e6c650ef8e8"}, - {file = "orjson-3.9.10-cp311-none-win_amd64.whl", hash = "sha256:cf80b550092cc480a0cbd0750e8189247ff45457e5a023305f7ef1bcec811616"}, - {file = "orjson-3.9.10-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:602a8001bdf60e1a7d544be29c82560a7b49319a0b31d62586548835bbe2c862"}, - {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f295efcd47b6124b01255d1491f9e46f17ef40d3d7eabf7364099e463fb45f0f"}, - {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:92af0d00091e744587221e79f68d617b432425a7e59328ca4c496f774a356071"}, - {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5a02360e73e7208a872bf65a7554c9f15df5fe063dc047f79738998b0506a14"}, - {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:858379cbb08d84fe7583231077d9a36a1a20eb72f8c9076a45df8b083724ad1d"}, - {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666c6fdcaac1f13eb982b649e1c311c08d7097cbda24f32612dae43648d8db8d"}, - {file = "orjson-3.9.10-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3fb205ab52a2e30354640780ce4587157a9563a68c9beaf52153e1cea9aa0921"}, - {file = "orjson-3.9.10-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7ec960b1b942ee3c69323b8721df2a3ce28ff40e7ca47873ae35bfafeb4555ca"}, - {file = "orjson-3.9.10-cp312-none-win_amd64.whl", hash = "sha256:3e892621434392199efb54e69edfff9f699f6cc36dd9553c5bf796058b14b20d"}, - {file = "orjson-3.9.10-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:8b9ba0ccd5a7f4219e67fbbe25e6b4a46ceef783c42af7dbc1da548eb28b6531"}, - {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e2ecd1d349e62e3960695214f40939bbfdcaeaaa62ccc638f8e651cf0970e5f"}, - {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f433be3b3f4c66016d5a20e5b4444ef833a1f802ced13a2d852c637f69729c1"}, - {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4689270c35d4bb3102e103ac43c3f0b76b169760aff8bcf2d401a3e0e58cdb7f"}, - {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bd176f528a8151a6efc5359b853ba3cc0e82d4cd1fab9c1300c5d957dc8f48c"}, - {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a2ce5ea4f71681623f04e2b7dadede3c7435dfb5e5e2d1d0ec25b35530e277b"}, - {file = "orjson-3.9.10-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:49f8ad582da6e8d2cf663c4ba5bf9f83cc052570a3a767487fec6af839b0e777"}, - {file = "orjson-3.9.10-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2a11b4b1a8415f105d989876a19b173f6cdc89ca13855ccc67c18efbd7cbd1f8"}, - {file = "orjson-3.9.10-cp38-none-win32.whl", hash = "sha256:a353bf1f565ed27ba71a419b2cd3db9d6151da426b61b289b6ba1422a702e643"}, - {file = "orjson-3.9.10-cp38-none-win_amd64.whl", hash = "sha256:e28a50b5be854e18d54f75ef1bb13e1abf4bc650ab9d635e4258c58e71eb6ad5"}, - {file = "orjson-3.9.10-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ee5926746232f627a3be1cc175b2cfad24d0170d520361f4ce3fa2fd83f09e1d"}, - {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a73160e823151f33cdc05fe2cea557c5ef12fdf276ce29bb4f1c571c8368a60"}, - {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c338ed69ad0b8f8f8920c13f529889fe0771abbb46550013e3c3d01e5174deef"}, - {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5869e8e130e99687d9e4be835116c4ebd83ca92e52e55810962446d841aba8de"}, - {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2c1e559d96a7f94a4f581e2a32d6d610df5840881a8cba8f25e446f4d792df3"}, - {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a3a3a72c9811b56adf8bcc829b010163bb2fc308877e50e9910c9357e78521"}, - {file = "orjson-3.9.10-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7f8fb7f5ecf4f6355683ac6881fd64b5bb2b8a60e3ccde6ff799e48791d8f864"}, - {file = "orjson-3.9.10-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c943b35ecdf7123b2d81d225397efddf0bce2e81db2f3ae633ead38e85cd5ade"}, - {file = "orjson-3.9.10-cp39-none-win32.whl", hash = "sha256:fb0b361d73f6b8eeceba47cd37070b5e6c9de5beaeaa63a1cb35c7e1a73ef088"}, - {file = "orjson-3.9.10-cp39-none-win_amd64.whl", hash = "sha256:b90f340cb6397ec7a854157fac03f0c82b744abdd1c0941a024c3c29d1340aff"}, - {file = "orjson-3.9.10.tar.gz", hash = "sha256:9ebbdbd6a046c304b1845e96fbcc5559cd296b4dfd3ad2509e33c4d9ce07d6a1"}, + {file = "orjson-3.9.12-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6b4e2bed7d00753c438e83b613923afdd067564ff7ed696bfe3a7b073a236e07"}, + {file = "orjson-3.9.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd1b8ec63f0bf54a50b498eedeccdca23bd7b658f81c524d18e410c203189365"}, + {file = "orjson-3.9.12-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ab8add018a53665042a5ae68200f1ad14c7953fa12110d12d41166f111724656"}, + {file = "orjson-3.9.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12756a108875526b76e505afe6d6ba34960ac6b8c5ec2f35faf73ef161e97e07"}, + {file = "orjson-3.9.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:890e7519c0c70296253660455f77e3a194554a3c45e42aa193cdebc76a02d82b"}, + {file = "orjson-3.9.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d664880d7f016efbae97c725b243b33c2cbb4851ddc77f683fd1eec4a7894146"}, + {file = "orjson-3.9.12-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cfdaede0fa5b500314ec7b1249c7e30e871504a57004acd116be6acdda3b8ab3"}, + {file = "orjson-3.9.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6492ff5953011e1ba9ed1bf086835fd574bd0a3cbe252db8e15ed72a30479081"}, + {file = "orjson-3.9.12-cp310-none-win32.whl", hash = "sha256:29bf08e2eadb2c480fdc2e2daae58f2f013dff5d3b506edd1e02963b9ce9f8a9"}, + {file = "orjson-3.9.12-cp310-none-win_amd64.whl", hash = "sha256:0fc156fba60d6b50743337ba09f052d8afc8b64595112996d22f5fce01ab57da"}, + {file = "orjson-3.9.12-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2849f88a0a12b8d94579b67486cbd8f3a49e36a4cb3d3f0ab352c596078c730c"}, + {file = "orjson-3.9.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3186b18754befa660b31c649a108a915493ea69b4fc33f624ed854ad3563ac65"}, + {file = "orjson-3.9.12-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cbbf313c9fb9d4f6cf9c22ced4b6682230457741daeb3d7060c5d06c2e73884a"}, + {file = "orjson-3.9.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99e8cd005b3926c3db9b63d264bd05e1bf4451787cc79a048f27f5190a9a0311"}, + {file = "orjson-3.9.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59feb148392d9155f3bfed0a2a3209268e000c2c3c834fb8fe1a6af9392efcbf"}, + {file = "orjson-3.9.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4ae815a172a1f073b05b9e04273e3b23e608a0858c4e76f606d2d75fcabde0c"}, + {file = "orjson-3.9.12-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ed398f9a9d5a1bf55b6e362ffc80ac846af2122d14a8243a1e6510a4eabcb71e"}, + {file = "orjson-3.9.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d3cfb76600c5a1e6be91326b8f3b83035a370e727854a96d801c1ea08b708073"}, + {file = "orjson-3.9.12-cp311-none-win32.whl", hash = "sha256:a2b6f5252c92bcab3b742ddb3ac195c0fa74bed4319acd74f5d54d79ef4715dc"}, + {file = "orjson-3.9.12-cp311-none-win_amd64.whl", hash = "sha256:c95488e4aa1d078ff5776b58f66bd29d628fa59adcb2047f4efd3ecb2bd41a71"}, + {file = "orjson-3.9.12-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:d6ce2062c4af43b92b0221ed4f445632c6bf4213f8a7da5396a122931377acd9"}, + {file = "orjson-3.9.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:950951799967558c214cd6cceb7ceceed6f81d2c3c4135ee4a2c9c69f58aa225"}, + {file = "orjson-3.9.12-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2dfaf71499d6fd4153f5c86eebb68e3ec1bf95851b030a4b55c7637a37bbdee4"}, + {file = "orjson-3.9.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:659a8d7279e46c97661839035a1a218b61957316bf0202674e944ac5cfe7ed83"}, + {file = "orjson-3.9.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af17fa87bccad0b7f6fd8ac8f9cbc9ee656b4552783b10b97a071337616db3e4"}, + {file = "orjson-3.9.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd52dec9eddf4c8c74392f3fd52fa137b5f2e2bed1d9ae958d879de5f7d7cded"}, + {file = "orjson-3.9.12-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:640e2b5d8e36b970202cfd0799d11a9a4ab46cf9212332cd642101ec952df7c8"}, + {file = "orjson-3.9.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:daa438bd8024e03bcea2c5a92cd719a663a58e223fba967296b6ab9992259dbf"}, + {file = "orjson-3.9.12-cp312-none-win_amd64.whl", hash = "sha256:1bb8f657c39ecdb924d02e809f992c9aafeb1ad70127d53fb573a6a6ab59d549"}, + {file = "orjson-3.9.12-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:f4098c7674901402c86ba6045a551a2ee345f9f7ed54eeffc7d86d155c8427e5"}, + {file = "orjson-3.9.12-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5586a533998267458fad3a457d6f3cdbddbcce696c916599fa8e2a10a89b24d3"}, + {file = "orjson-3.9.12-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:54071b7398cd3f90e4bb61df46705ee96cb5e33e53fc0b2f47dbd9b000e238e1"}, + {file = "orjson-3.9.12-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:67426651faa671b40443ea6f03065f9c8e22272b62fa23238b3efdacd301df31"}, + {file = "orjson-3.9.12-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4a0cd56e8ee56b203abae7d482ac0d233dbfb436bb2e2d5cbcb539fe1200a312"}, + {file = "orjson-3.9.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a84a0c3d4841a42e2571b1c1ead20a83e2792644c5827a606c50fc8af7ca4bee"}, + {file = "orjson-3.9.12-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:09d60450cda3fa6c8ed17770c3a88473a16460cd0ff2ba74ef0df663b6fd3bb8"}, + {file = "orjson-3.9.12-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bc82a4db9934a78ade211cf2e07161e4f068a461c1796465d10069cb50b32a80"}, + {file = "orjson-3.9.12-cp38-none-win32.whl", hash = "sha256:61563d5d3b0019804d782137a4f32c72dc44c84e7d078b89d2d2a1adbaa47b52"}, + {file = "orjson-3.9.12-cp38-none-win_amd64.whl", hash = "sha256:410f24309fbbaa2fab776e3212a81b96a1ec6037259359a32ea79fbccfcf76aa"}, + {file = "orjson-3.9.12-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e773f251258dd82795fd5daeac081d00b97bacf1548e44e71245543374874bcf"}, + {file = "orjson-3.9.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b159baecfda51c840a619948c25817d37733a4d9877fea96590ef8606468b362"}, + {file = "orjson-3.9.12-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:975e72e81a249174840d5a8df977d067b0183ef1560a32998be340f7e195c730"}, + {file = "orjson-3.9.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:06e42e899dde61eb1851a9fad7f1a21b8e4be063438399b63c07839b57668f6c"}, + {file = "orjson-3.9.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c157e999e5694475a5515942aebeed6e43f7a1ed52267c1c93dcfde7d78d421"}, + {file = "orjson-3.9.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dde1bc7c035f2d03aa49dc8642d9c6c9b1a81f2470e02055e76ed8853cfae0c3"}, + {file = "orjson-3.9.12-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b0e9d73cdbdad76a53a48f563447e0e1ce34bcecef4614eb4b146383e6e7d8c9"}, + {file = "orjson-3.9.12-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:96e44b21fe407b8ed48afbb3721f3c8c8ce17e345fbe232bd4651ace7317782d"}, + {file = "orjson-3.9.12-cp39-none-win32.whl", hash = "sha256:cbd0f3555205bf2a60f8812133f2452d498dbefa14423ba90fe89f32276f7abf"}, + {file = "orjson-3.9.12-cp39-none-win_amd64.whl", hash = "sha256:03ea7ee7e992532c2f4a06edd7ee1553f0644790553a118e003e3c405add41fa"}, + {file = "orjson-3.9.12.tar.gz", hash = "sha256:da908d23a3b3243632b523344403b128722a5f45e278a8343c2bb67538dff0e4"}, ] [[package]] @@ -2783,61 +2797,84 @@ files = [ [[package]] name = "pandas" -version = "1.5.3" +version = "2.2.0" description = "Powerful data structures for data analysis, time series, and statistics" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3749077d86e3a2f0ed51367f30bf5b82e131cc0f14260c4d3e499186fccc4406"}, - {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:972d8a45395f2a2d26733eb8d0f629b2f90bebe8e8eddbb8829b180c09639572"}, - {file = "pandas-1.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:50869a35cbb0f2e0cd5ec04b191e7b12ed688874bd05dd777c19b28cbea90996"}, - {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3ac844a0fe00bfaeb2c9b51ab1424e5c8744f89860b138434a363b1f620f354"}, - {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a0a56cef15fd1586726dace5616db75ebcfec9179a3a55e78f72c5639fa2a23"}, - {file = "pandas-1.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:478ff646ca42b20376e4ed3fa2e8d7341e8a63105586efe54fa2508ee087f328"}, - {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6973549c01ca91ec96199e940495219c887ea815b2083722821f1d7abfa2b4dc"}, - {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c39a8da13cede5adcd3be1182883aea1c925476f4e84b2807a46e2775306305d"}, - {file = "pandas-1.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f76d097d12c82a535fda9dfe5e8dd4127952b45fea9b0276cb30cca5ea313fbc"}, - {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e474390e60ed609cec869b0da796ad94f420bb057d86784191eefc62b65819ae"}, - {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f2b952406a1588ad4cad5b3f55f520e82e902388a6d5a4a91baa8d38d23c7f6"}, - {file = "pandas-1.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:bc4c368f42b551bf72fac35c5128963a171b40dce866fb066540eeaf46faa003"}, - {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:14e45300521902689a81f3f41386dc86f19b8ba8dd5ac5a3c7010ef8d2932813"}, - {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9842b6f4b8479e41968eced654487258ed81df7d1c9b7b870ceea24ed9459b31"}, - {file = "pandas-1.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26d9c71772c7afb9d5046e6e9cf42d83dd147b5cf5bcb9d97252077118543792"}, - {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fbcb19d6fceb9e946b3e23258757c7b225ba450990d9ed63ccceeb8cae609f7"}, - {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:565fa34a5434d38e9d250af3c12ff931abaf88050551d9fbcdfafca50d62babf"}, - {file = "pandas-1.5.3-cp38-cp38-win32.whl", hash = "sha256:87bd9c03da1ac870a6d2c8902a0e1fd4267ca00f13bc494c9e5a9020920e1d51"}, - {file = "pandas-1.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:41179ce559943d83a9b4bbacb736b04c928b095b5f25dd2b7389eda08f46f373"}, - {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c74a62747864ed568f5a82a49a23a8d7fe171d0c69038b38cedf0976831296fa"}, - {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c4c00e0b0597c8e4f59e8d461f797e5d70b4d025880516a8261b2817c47759ee"}, - {file = "pandas-1.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a50d9a4336a9621cab7b8eb3fb11adb82de58f9b91d84c2cd526576b881a0c5a"}, - {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd05f7783b3274aa206a1af06f0ceed3f9b412cf665b7247eacd83be41cf7bf0"}, - {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f69c4029613de47816b1bb30ff5ac778686688751a5e9c99ad8c7031f6508e5"}, - {file = "pandas-1.5.3-cp39-cp39-win32.whl", hash = "sha256:7cec0bee9f294e5de5bbfc14d0573f65526071029d036b753ee6507d2a21480a"}, - {file = "pandas-1.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:dfd681c5dc216037e0b0a2c821f5ed99ba9f03ebcf119c7dac0e9a7b960b9ec9"}, - {file = "pandas-1.5.3.tar.gz", hash = "sha256:74a3fd7e5a7ec052f183273dc7b0acd3a863edf7520f5d3a1765c04ffdb3b0b1"}, + {file = "pandas-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670"}, + {file = "pandas-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a"}, + {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18"}, + {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e"}, + {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5"}, + {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1"}, + {file = "pandas-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430"}, + {file = "pandas-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5"}, + {file = "pandas-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b"}, + {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f"}, + {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88"}, + {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3"}, + {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71"}, + {file = "pandas-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9"}, + {file = "pandas-2.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc"}, + {file = "pandas-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1"}, + {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440"}, + {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106"}, + {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e"}, + {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042"}, + {file = "pandas-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30"}, + {file = "pandas-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f66419d4a41132eb7e9a73dcec9486cf5019f52d90dd35547af11bc58f8637d"}, + {file = "pandas-2.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:57abcaeda83fb80d447f28ab0cc7b32b13978f6f733875ebd1ed14f8fbc0f4ab"}, + {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60f1f7dba3c2d5ca159e18c46a34e7ca7247a73b5dd1a22b6d59707ed6b899a"}, + {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb61dc8567b798b969bcc1fc964788f5a68214d333cade8319c7ab33e2b5d88a"}, + {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:52826b5f4ed658fa2b729264d63f6732b8b29949c7fd234510d57c61dbeadfcd"}, + {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bde2bc699dbd80d7bc7f9cab1e23a95c4375de615860ca089f34e7c64f4a8de7"}, + {file = "pandas-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:3de918a754bbf2da2381e8a3dcc45eede8cd7775b047b923f9006d5f876802ae"}, + {file = "pandas-2.2.0.tar.gz", hash = "sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2"}, ] [package.dependencies] numpy = [ - {version = ">=1.20.3", markers = "python_version < \"3.10\""}, - {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, - {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, + {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, ] -python-dateutil = ">=2.8.1" +python-dateutil = ">=2.8.2" pytz = ">=2020.1" +tzdata = ">=2022.7" [package.extras] -test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] +aws = ["s3fs (>=2022.11.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] +compression = ["zstandard (>=0.19.0)"] +computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] +feather = ["pyarrow (>=10.0.1)"] +fss = ["fsspec (>=2022.11.0)"] +gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] +hdf5 = ["tables (>=3.8.0)"] +html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] +mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=10.0.1)"] +performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] +plot = ["matplotlib (>=3.6.3)"] +postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +spss = ["pyreadstat (>=1.2.0)"] +sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.9.2)"] [[package]] name = "pandocfilters" -version = "1.5.0" +version = "1.5.1" description = "Utilities for writing pandoc filters in python" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ - {file = "pandocfilters-1.5.0-py2.py3-none-any.whl", hash = "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"}, - {file = "pandocfilters-1.5.0.tar.gz", hash = "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38"}, + {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, + {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, ] [[package]] @@ -2891,80 +2928,98 @@ ptyprocess = ">=0.5" [[package]] name = "pillow" -version = "10.1.0" +version = "10.2.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" files = [ - {file = "Pillow-10.1.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106"}, - {file = "Pillow-10.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db"}, - {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f"}, - {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818"}, - {file = "Pillow-10.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57"}, - {file = "Pillow-10.1.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7"}, - {file = "Pillow-10.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061"}, - {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262"}, - {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992"}, - {file = "Pillow-10.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a"}, - {file = "Pillow-10.1.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b"}, - {file = "Pillow-10.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651"}, - {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b"}, - {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f"}, - {file = "Pillow-10.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996"}, - {file = "Pillow-10.1.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793"}, - {file = "Pillow-10.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d"}, - {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80"}, - {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212"}, - {file = "Pillow-10.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14"}, - {file = "Pillow-10.1.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099"}, - {file = "Pillow-10.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd"}, - {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28"}, - {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2"}, - {file = "Pillow-10.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f"}, - {file = "Pillow-10.1.0.tar.gz", hash = "sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, + {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, + {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, + {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, + {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, + {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, + {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, + {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, + {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, + {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, + {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, + {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, + {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, + {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, + {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, + {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, + {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, ] [package.extras] docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "4.0.0" +version = "4.1.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "platformdirs-4.0.0-py3-none-any.whl", hash = "sha256:118c954d7e949b35437270383a3f2531e99dd93cf7ce4dc8340d3356d30f173b"}, - {file = "platformdirs-4.0.0.tar.gz", hash = "sha256:cb633b2bcf10c51af60beb0ab06d2f1d69064b43abf4c185ca6b28865f3f9731"}, + {file = "platformdirs-4.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"}, + {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"}, ] [package.extras] @@ -2988,13 +3043,13 @@ tenacity = ">=6.2.0" [[package]] name = "pluggy" -version = "1.3.0" +version = "1.4.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, - {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, ] [package.extras] @@ -3022,13 +3077,13 @@ tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "p [[package]] name = "prompt-toolkit" -version = "3.0.41" +version = "3.0.43" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.41-py3-none-any.whl", hash = "sha256:f36fe301fafb7470e86aaf90f036eef600a3210be4decf461a5b1ca8403d3cb2"}, - {file = "prompt_toolkit-3.0.41.tar.gz", hash = "sha256:941367d97fc815548822aa26c2a269fdc4eb21e9ec05fc5d447cf09bad5d75f0"}, + {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"}, + {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"}, ] [package.dependencies] @@ -3067,47 +3122,47 @@ files = [ [[package]] name = "protobuf" -version = "4.25.1" +version = "4.25.2" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.1-cp310-abi3-win32.whl", hash = "sha256:193f50a6ab78a970c9b4f148e7c750cfde64f59815e86f686c22e26b4fe01ce7"}, - {file = "protobuf-4.25.1-cp310-abi3-win_amd64.whl", hash = "sha256:3497c1af9f2526962f09329fd61a36566305e6c72da2590ae0d7d1322818843b"}, - {file = "protobuf-4.25.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:0bf384e75b92c42830c0a679b0cd4d6e2b36ae0cf3dbb1e1dfdda48a244f4bcd"}, - {file = "protobuf-4.25.1-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:0f881b589ff449bf0b931a711926e9ddaad3b35089cc039ce1af50b21a4ae8cb"}, - {file = "protobuf-4.25.1-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:ca37bf6a6d0046272c152eea90d2e4ef34593aaa32e8873fc14c16440f22d4b7"}, - {file = "protobuf-4.25.1-cp38-cp38-win32.whl", hash = "sha256:abc0525ae2689a8000837729eef7883b9391cd6aa7950249dcf5a4ede230d5dd"}, - {file = "protobuf-4.25.1-cp38-cp38-win_amd64.whl", hash = "sha256:1484f9e692091450e7edf418c939e15bfc8fc68856e36ce399aed6889dae8bb0"}, - {file = "protobuf-4.25.1-cp39-cp39-win32.whl", hash = "sha256:8bdbeaddaac52d15c6dce38c71b03038ef7772b977847eb6d374fc86636fa510"}, - {file = "protobuf-4.25.1-cp39-cp39-win_amd64.whl", hash = "sha256:becc576b7e6b553d22cbdf418686ee4daa443d7217999125c045ad56322dda10"}, - {file = "protobuf-4.25.1-py3-none-any.whl", hash = "sha256:a19731d5e83ae4737bb2a089605e636077ac001d18781b3cf489b9546c7c80d6"}, - {file = "protobuf-4.25.1.tar.gz", hash = "sha256:57d65074b4f5baa4ab5da1605c02be90ac20c8b40fb137d6a8df9f416b0d0ce2"}, + {file = "protobuf-4.25.2-cp310-abi3-win32.whl", hash = "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6"}, + {file = "protobuf-4.25.2-cp310-abi3-win_amd64.whl", hash = "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9"}, + {file = "protobuf-4.25.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d"}, + {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62"}, + {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020"}, + {file = "protobuf-4.25.2-cp38-cp38-win32.whl", hash = "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61"}, + {file = "protobuf-4.25.2-cp38-cp38-win_amd64.whl", hash = "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62"}, + {file = "protobuf-4.25.2-cp39-cp39-win32.whl", hash = "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3"}, + {file = "protobuf-4.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0"}, + {file = "protobuf-4.25.2-py3-none-any.whl", hash = "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830"}, + {file = "protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e"}, ] [[package]] name = "psutil" -version = "5.9.6" +version = "5.9.8" description = "Cross-platform lib for process and system monitoring in Python." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "psutil-5.9.6-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:fb8a697f11b0f5994550555fcfe3e69799e5b060c8ecf9e2f75c69302cc35c0d"}, - {file = "psutil-5.9.6-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:91ecd2d9c00db9817a4b4192107cf6954addb5d9d67a969a4f436dbc9200f88c"}, - {file = "psutil-5.9.6-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:10e8c17b4f898d64b121149afb136c53ea8b68c7531155147867b7b1ac9e7e28"}, - {file = "psutil-5.9.6-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:18cd22c5db486f33998f37e2bb054cc62fd06646995285e02a51b1e08da97017"}, - {file = "psutil-5.9.6-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:ca2780f5e038379e520281e4c032dddd086906ddff9ef0d1b9dcf00710e5071c"}, - {file = "psutil-5.9.6-cp27-none-win32.whl", hash = "sha256:70cb3beb98bc3fd5ac9ac617a327af7e7f826373ee64c80efd4eb2856e5051e9"}, - {file = "psutil-5.9.6-cp27-none-win_amd64.whl", hash = "sha256:51dc3d54607c73148f63732c727856f5febec1c7c336f8f41fcbd6315cce76ac"}, - {file = "psutil-5.9.6-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c69596f9fc2f8acd574a12d5f8b7b1ba3765a641ea5d60fb4736bf3c08a8214a"}, - {file = "psutil-5.9.6-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92e0cc43c524834af53e9d3369245e6cc3b130e78e26100d1f63cdb0abeb3d3c"}, - {file = "psutil-5.9.6-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:748c9dd2583ed86347ed65d0035f45fa8c851e8d90354c122ab72319b5f366f4"}, - {file = "psutil-5.9.6-cp36-cp36m-win32.whl", hash = "sha256:3ebf2158c16cc69db777e3c7decb3c0f43a7af94a60d72e87b2823aebac3d602"}, - {file = "psutil-5.9.6-cp36-cp36m-win_amd64.whl", hash = "sha256:ff18b8d1a784b810df0b0fff3bcb50ab941c3b8e2c8de5726f9c71c601c611aa"}, - {file = "psutil-5.9.6-cp37-abi3-win32.whl", hash = "sha256:a6f01f03bf1843280f4ad16f4bde26b817847b4c1a0db59bf6419807bc5ce05c"}, - {file = "psutil-5.9.6-cp37-abi3-win_amd64.whl", hash = "sha256:6e5fb8dc711a514da83098bc5234264e551ad980cec5f85dabf4d38ed6f15e9a"}, - {file = "psutil-5.9.6-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:daecbcbd29b289aac14ece28eca6a3e60aa361754cf6da3dfb20d4d32b6c7f57"}, - {file = "psutil-5.9.6.tar.gz", hash = "sha256:e4b92ddcd7dd4cdd3f900180ea1e104932c7bce234fb88976e2a3b296441225a"}, + {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"}, + {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"}, + {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"}, + {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"}, + {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"}, + {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"}, + {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"}, + {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"}, + {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"}, + {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"}, ] [package.extras] @@ -3176,132 +3231,132 @@ pyasn1 = ">=0.4.6,<0.6.0" [[package]] name = "pybase64" -version = "1.3.1" +version = "1.3.2" description = "Fast Base64 encoding/decoding" optional = false python-versions = ">=3.6" files = [ - {file = "pybase64-1.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f7dad84a283eea9826a71ddcb81c8477703ddd2962e430fc7da9a67f4f70d1b2"}, - {file = "pybase64-1.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:965398b45de93b566d180b41219bb5f981fb623c5022f3748b60ca5cc0349dd4"}, - {file = "pybase64-1.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9abb2b02b358435f9afbfe79727b161bebd06c0615fc08e29a857cda411acd47"}, - {file = "pybase64-1.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41bb2e0c995194859a6a6484a35b17ca43a950360b04f426c7890dcabbfb5739"}, - {file = "pybase64-1.3.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a3ca9f998a762a48ef1f81756ac0b55287484276753e3fe8821d1cc450933699"}, - {file = "pybase64-1.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a10db76f6f6bb8c0b2539ba5b12ce38014971df921e486916ed59e80fe198f62"}, - {file = "pybase64-1.3.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee3caf971656121b2bd23968e2fec422ebffc5f123a5b78a694df29cc57cc6cd"}, - {file = "pybase64-1.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7cd04fdc90ceb46541db403278c91537aec6c7291cd45c215966b6dbed9aaa1"}, - {file = "pybase64-1.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7d955d9fe1401412dc995fcb5eea6a64b166accdd9f35a5a52d9c4b8cc36426a"}, - {file = "pybase64-1.3.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:75acbbbaef535710eb68ce8378e87c8d32810ee15eeccda676736bc7f838a289"}, - {file = "pybase64-1.3.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:1910c41f05ce100e70dcbb54b95f56e9d9ad262772ff2919df08e73c34241d61"}, - {file = "pybase64-1.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:790dc40f672d426abb33f64217fdb210a7ab9407893313210d1789560cbafc2f"}, - {file = "pybase64-1.3.1-cp310-cp310-win32.whl", hash = "sha256:8971afcb06cc8e67361f765aa1a9ab8d537612a06cdbe225cddcb523ae834a9a"}, - {file = "pybase64-1.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:7888e49a8329267fbc79d04850dd8989e6f6ab98f0db82bc9d481205926a64d2"}, - {file = "pybase64-1.3.1-cp310-cp310-win_arm64.whl", hash = "sha256:d0d023b211762fc83f08749689e77734984e11cf8862088170ccb71f8d156fdb"}, - {file = "pybase64-1.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8071b4ba8b47906caa5588e6580f7ce1058055f5052bc6a9e4674c4fff0ad655"}, - {file = "pybase64-1.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c7cd840dd4d7b16067c51e5caca913266970d07a233a88240d2635d82f319e4e"}, - {file = "pybase64-1.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19d5229918060645986645cbf35293752e686b08eb1ef044367ce1e20cbdefa6"}, - {file = "pybase64-1.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fe6ad88616d6e8e582551ceb1c0f0a92187236bda62cf602881f61fece35425e"}, - {file = "pybase64-1.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:83c3b57e939c8c92b591f82f8892bb5a288179f03b40c64e52cbb30661efcd32"}, - {file = "pybase64-1.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:efa355db483f427ab085a30d9f18f5946d0a451de81ab682ca39731f2c0933e0"}, - {file = "pybase64-1.3.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0b24e7e98967861f10df23d8e87818bd6c73c568588781f6c45233fea8da631"}, - {file = "pybase64-1.3.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ce931ae2089a88ddcda7621c5f4e8c14282f29983e5674d98a5377ec7c5bc95f"}, - {file = "pybase64-1.3.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3097c5d91c801274c01b7c7aa4553a22daaca65d4644dbd1562de2640a873f19"}, - {file = "pybase64-1.3.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c7f6d4e3a768d2657a79a8efb3dbfdbe97567a89382c92d676eddf238c894210"}, - {file = "pybase64-1.3.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:1da93ae948ce164df7c3d672936c22321837ac9e738165717a62477dcb614f9d"}, - {file = "pybase64-1.3.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30567166e437bc28bb0df93ddcf0b571fb892d244d5513776a33c4278b327ef4"}, - {file = "pybase64-1.3.1-cp311-cp311-win32.whl", hash = "sha256:b8c6f7fbe943b6c8609e8ba1630162f6a15baff5f3169c7da7b410d73e2a3836"}, - {file = "pybase64-1.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:cbc7e95036712ed04bc7d8bdcb0503a641ae31e20d66e6c6b95a9cd67ec6e4a2"}, - {file = "pybase64-1.3.1-cp311-cp311-win_arm64.whl", hash = "sha256:cb909e1c7fb096e11ebac19ae85a0b79fc87932a337296857aa907bd1e94f41e"}, - {file = "pybase64-1.3.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:86602ae937d6ddc60691b5de9421f124ed3802b735758a10389f0657eb548402"}, - {file = "pybase64-1.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:faabd0d20f2a1930531f5c643891d1730ae5ea7a0e8938d89705eb63e99f732f"}, - {file = "pybase64-1.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ffb56065891aff6e8d6b1885812e571413ba041d6e40c1b777865f2a9924dd2"}, - {file = "pybase64-1.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:714a1f78631266c943ab265bd94c968cd13f0bded8d003d9a56542e11e0eddc6"}, - {file = "pybase64-1.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0eaf2172dc005b71bb3eee263bda45758c1c0df11c9da3386ec9343acc406c6f"}, - {file = "pybase64-1.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:223470158b1893c08467d2902f873b3e2ff6ac61f1aaa228c00f5e07ec683030"}, - {file = "pybase64-1.3.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:824796bcfc70644acc7931f974a786072f7ff52984b87678c31b82b038636c5c"}, - {file = "pybase64-1.3.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ca342663a62460599e0cc39d75b1c749bad648f6a35723ad1657e29bf7032a95"}, - {file = "pybase64-1.3.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4cde555f81d07a6747a185ff74043d27ea332b7a626a6ea28feb58c182b19c21"}, - {file = "pybase64-1.3.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:c4cc9b053709c75087c8a07b38778e4e74365950dd78050292505e3174d6dff8"}, - {file = "pybase64-1.3.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:19918d60dc670bc49c30d00c9e0ad6a1e59d42daf6e2c39fdadff16fecf7587e"}, - {file = "pybase64-1.3.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:67a3c1523739fdb80537e9ee76f76dc999cd287177b692c28d95613bdab4c88a"}, - {file = "pybase64-1.3.1-cp312-cp312-win32.whl", hash = "sha256:a985629a5425d97ef0fd0698e5220d2b6a954fda843fb969842da8ee40ff8679"}, - {file = "pybase64-1.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:91d3bf4d238ba30f54c292b48823ea072dd11f49929695ea8c3e732799622ce7"}, - {file = "pybase64-1.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:61597a485fd15718ec66a67908ffee1d8c133bbc183d3c6e8c676e9f9409c895"}, - {file = "pybase64-1.3.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:127acf0ef14877e30dd34cbd6dd66d9585e7def9032956701d6250d68d20915f"}, - {file = "pybase64-1.3.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480d994f1299d93e9e8ae4dfcb5747d20d2fc2a518c268a39d17dd3b6c20b1d7"}, - {file = "pybase64-1.3.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a833ca3756b47f1c9143fdfd24f2c9bc4a578793c6687fa62c849f72fde528c7"}, - {file = "pybase64-1.3.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ca7345bcfbe84390ee3e41ab73bfd51900170d06d47f8d0eb5432e39a5ddb7d"}, - {file = "pybase64-1.3.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8da2cd4a792af02ca5e2d85b26184eeff1c244e2decdbb5adea93e454c617f53"}, - {file = "pybase64-1.3.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9afe5f604a56dd959f3d7906469740bbcde0ee5892097a9f6c3ec44e67b8c1a0"}, - {file = "pybase64-1.3.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:7e05147eee74ef908e3246ce461fa0808bd753c0dfab03fcac22622ceb2ef4ba"}, - {file = "pybase64-1.3.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:dd452232a12a683413ff0e672e884312d9ef7b001b970644f3e1bd01eb91780c"}, - {file = "pybase64-1.3.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:72b15fffd91d8a2fb742a8e12d3b8850ac02bbe08afc6269effe11c6e4eebbab"}, - {file = "pybase64-1.3.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:d19bd8d063a2c9fbae1186fc9942b78f663c02fa7c7cf3957a9b54c833c9e315"}, - {file = "pybase64-1.3.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:fb60d4459afc1d5624c0485e6b71ce0d1042504d0498b6adfbc2fb8464834f5d"}, - {file = "pybase64-1.3.1-cp36-cp36m-win32.whl", hash = "sha256:1b2495fa47fb1727c6dd070ac9805190d86d382b103eb7a4eb834d89be919303"}, - {file = "pybase64-1.3.1-cp36-cp36m-win_amd64.whl", hash = "sha256:75def5ee833c1d4ae07d6301addfe8597c970b221b8a070d1c42e755b410ea4d"}, - {file = "pybase64-1.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f8f87a1ab47b6721a69dd6e061a000a9dafd8b57108127bf2e03da7b2214fb60"}, - {file = "pybase64-1.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42a0921bc45c051fb9154c8d1347a990c4cc8ea2b6ce65293f219e8e50ff61b8"}, - {file = "pybase64-1.3.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0632b6040d4a017640fc6a66c580bcd09ea18ea38e893c1b2da955c198fd57c2"}, - {file = "pybase64-1.3.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:60df55795b26c23e4091745338f775142ebc85da184f22fddf2f807a38dc0233"}, - {file = "pybase64-1.3.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59d050c51c2d1e74fb9333ab6f504d8e06cbb1c4d775a3e9ed4e8448db741baf"}, - {file = "pybase64-1.3.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d05e6cc769867ca96c99368e1d262e38c12d7cfc58ba2ceeaa7645a492fa2a4e"}, - {file = "pybase64-1.3.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3e1b1f7591e6543ec9693b341488acd560720d02142dc6ef10a12ae91e044a53"}, - {file = "pybase64-1.3.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a0a83f9156ba06d9f0764499fb082a90b37090451052064f90d8ca18a077d706"}, - {file = "pybase64-1.3.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:57108c5fa63f29bcce163308f649ff39eaa0303122cfae5d288675e715af5544"}, - {file = "pybase64-1.3.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:4ac1c1909885f666ea546092ded717cac7a12a5c9173389946c8cc506a10cd3d"}, - {file = "pybase64-1.3.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:f25444a404d8902f5fad52c335f43f5a227453e34db513571318414947e5ef53"}, - {file = "pybase64-1.3.1-cp37-cp37m-win32.whl", hash = "sha256:47949e7316d05da436b7cb7044e170a59af4e9e6ea05c88163ec39f1ec16f2ac"}, - {file = "pybase64-1.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:3235c2f4862d18499cbec7f1aa9f9fccffd7b85c7447e6bb023df8f085720b7f"}, - {file = "pybase64-1.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:203400251319b03d5d36ace8d791b7d6f3ee9fe9de0e7278efc3872fd7ccd7cb"}, - {file = "pybase64-1.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8f75a1ac9bd6c72b921a5aec332b318982c213eeb35ee999f6dae3c1812e1ec0"}, - {file = "pybase64-1.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f4006c7cf10ab27beb152d8a3173823a5b0a411923dd4963a816fb07c1216bc"}, - {file = "pybase64-1.3.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4763831506dfcb8b4a4d49f5b7ed427583abd3cb24b1afe7088bdd0310007531"}, - {file = "pybase64-1.3.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:358359ad000b3608fe0ce284a33988c0dbfca8c7e7446f90904391a4082ec90a"}, - {file = "pybase64-1.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb95de91df14bfb89f826c2296cd516a78d9efcf89b2aeffb07722c39bd558b0"}, - {file = "pybase64-1.3.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57fd8f5f016d708885e8c734827ec612932f58db255b91a5a0ab47d4528b945b"}, - {file = "pybase64-1.3.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:fa279476780df12b922514b0dbe71f0bcb687044f2af13c1fe4622ce04d06561"}, - {file = "pybase64-1.3.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dc2fe37eb22e59ddbb10dbec2a4002bfddfedf3dcd7f2651086fefa7c10948c2"}, - {file = "pybase64-1.3.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:0d3b49efa70c524bd7591e872eb293c3370d94600f41594bbc5a5ba0801aa2ac"}, - {file = "pybase64-1.3.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4834ab0d8c760ead9802fef474e9e6f3f7aea12d0fdf658ecc7577fc0e5ef0e6"}, - {file = "pybase64-1.3.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4467f786e9aba6cc640fdea30a362edd1525402de89616bd615a3880c347c5eb"}, - {file = "pybase64-1.3.1-cp38-cp38-win32.whl", hash = "sha256:8b73cfc6bc97f9d8a6a30fbc2e66549718bcf1a45a25464977a7cff56da0913a"}, - {file = "pybase64-1.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:6fde3f7a3ae2f0022a25e8bcc94ac0eec3ef141b8c12bf5541ea75d76a720b81"}, - {file = "pybase64-1.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1edb44fe5ebe3a36dd68ca712ed49b097fcc8df46eb2e92bda1fd0c2c1d9343"}, - {file = "pybase64-1.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bd5242ebd97f6f24e47be5a14759fa0617b956e7d600f7e5f3199602c90ee82b"}, - {file = "pybase64-1.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd72faf7acc0671409354f9c2d0f10ebba0ed2e3cd6302c42ade160810c6e1f1"}, - {file = "pybase64-1.3.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ed3d54bd676ee74a0ce2d2e47fe655340aeded96ac53da8a660eacec454afa6"}, - {file = "pybase64-1.3.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f13dab9d76b3bf3d85db6df91cc8a94f8e7687fc7dff4dabbe172fb46b86b823"}, - {file = "pybase64-1.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aec2142335f9051830088850abc65fb26c19375511ce2097163f92859cd87e55"}, - {file = "pybase64-1.3.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03b97731bb180960df67b69f5ec7541ed69ba94732454ae6d6767db62716efe4"}, - {file = "pybase64-1.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:af746ad785d014f9636ada89952dd50f22c261cfee1bf388cd364aeb00e6a7f6"}, - {file = "pybase64-1.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e2d8682863e0079b47009b1dde96c6c0789eca340abfda4446079d0ffbd11312"}, - {file = "pybase64-1.3.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:8108c192fe02566e763d733889b6f171873e067d3ef32d6181ccd789814d7006"}, - {file = "pybase64-1.3.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:21d482ce6ae24f06292c1aa0512b31e0f73efed10920bfae9620174958ebb178"}, - {file = "pybase64-1.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5db16b16589799a452e7d1a27a0c1738f04c45ddfbaac96ffee6b037d00b85a0"}, - {file = "pybase64-1.3.1-cp39-cp39-win32.whl", hash = "sha256:d3da8bf74c79f4bac6cc707fd1218ce91c0dfc7e2ef8194aaa3dfd22991d7408"}, - {file = "pybase64-1.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:6f19332a33b39f6ec6a87012c7a08e2b723d0985a6a61ac5298249a5b16625f6"}, - {file = "pybase64-1.3.1-cp39-cp39-win_arm64.whl", hash = "sha256:c1788b93e59fa17201af90ae5491bcecd8df303ffb86e79a1e73b9e2eadc1e16"}, - {file = "pybase64-1.3.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fd4989a35791293efd11592389d53acedf314fb6f562884ea4ad53897db632f9"}, - {file = "pybase64-1.3.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f9a9959bc66e5705f5c635085fd8a18aad09f332c7730dbf115499571e0bf46"}, - {file = "pybase64-1.3.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a65e6b13a516ca6476f764991f18777bc4c52243138d3a5e392bd417e5c63eb"}, - {file = "pybase64-1.3.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ab59e5f38c6a2e64854cafea05a52dc0a0173e61f00da492c284432b4bcf543"}, - {file = "pybase64-1.3.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6ef16a36961737ae455eae7becbf7855f83c97132dd07390cd55f0bf925523b0"}, - {file = "pybase64-1.3.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:002a1f657373ac16d2a61f57b4ccf7ad4a6ccef1d5c10213f8cda5eb7741c78c"}, - {file = "pybase64-1.3.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:212f7dce86c32262a54afce490ce358499510a7028e4b91bd1e3fe728d094f6d"}, - {file = "pybase64-1.3.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bb2bc5e84d2162e93e82e9c49a519de56a92bfeaf58f07a2a275f57dad1cda34"}, - {file = "pybase64-1.3.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d8fad3f0cdf102896b1b5edffa1202674f4235a82f4226e14da46f946b62a4"}, - {file = "pybase64-1.3.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:473792d6c27df2dd02532ce2f4d246cef921c4512372693150224ece91ccac75"}, - {file = "pybase64-1.3.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:32d6979f0c17a43993dcf0be5cda34eaea2d5b16f13a553322f63c87315e82b8"}, - {file = "pybase64-1.3.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7389e07898c94c2619ff461956acc035818d2d1aa1b83f46a37a60165ab0f12e"}, - {file = "pybase64-1.3.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:666510c02c391b7303cfa126da006507a4d3bca63251cbf1d6bd737a78754acd"}, - {file = "pybase64-1.3.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca31f6d5329b5d941dc7c1ac17f0a468e5cd8b369107e9fe5f9b496256b92054"}, - {file = "pybase64-1.3.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:560f8ba9e0a1aa6f869a9ec44d1c6cc29de7c78f908e5e00857ac4a08fd010d3"}, - {file = "pybase64-1.3.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a564652e27add63a6756f766cf31018995e5ebf39ec6816f02cb626cf2ca9aab"}, - {file = "pybase64-1.3.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e0f34ae7bf586d18cc6f0d6822e849a9dbd2fd24f301adf9d6e57248f1e811e"}, - {file = "pybase64-1.3.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1eade1a143721bd9b9aa144483e44ce0c61c458bad719d5603dec8ba73763dac"}, - {file = "pybase64-1.3.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:076c9571922a45a5e59e3a67130f7cb359749eb9aa513be401b28d600925d61f"}, - {file = "pybase64-1.3.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1aac162ab378e89aa97be7dc88906fe4b1866937b0d3e87de56689222815d97b"}, - {file = "pybase64-1.3.1.tar.gz", hash = "sha256:234082fdd7039cb750c644e2d37fc293e7345ea3a5f279abac2f4fc962d9b996"}, + {file = "pybase64-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3f89501c77883568612d9133be6684e36d60c098f30f4d5d6844d3130757c961"}, + {file = "pybase64-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1da5c376605397e1ff862ec414151eac183af7bd4843527022739144b302b8a9"}, + {file = "pybase64-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc61af2d33b2103af8507c549932fecb41b25e6d5c2916e0da92532378e3d639"}, + {file = "pybase64-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2fecde2c7d2bec98f585b57d33a48a54deaeb7dfc01df11e67926d44ddbdb235"}, + {file = "pybase64-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c4436edcff0cad586fd265d469696d1058ae4ec6b56cc96b180e2a8bcb3eab44"}, + {file = "pybase64-1.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9c919d38e70b7047f92210de8571422d7ba9df7fb74e35ae43be6e08c6842c9"}, + {file = "pybase64-1.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9af3f1700b4bdac7a3dfd3242af14d30b87e21e5940d95430c7ad576c79be101"}, + {file = "pybase64-1.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:812f2f8264a7f5e6bbb7605e0df9a2f827cfe2af994b92353bd4183480338104"}, + {file = "pybase64-1.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fdfbe910e666c6d8b05356668ee6fee8848bfa09fc5d326e58466c30ef8db6c1"}, + {file = "pybase64-1.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c99ae0e46bd7bec2c66bd1b5a9115911f15935202c55f71d64cd58dede018c52"}, + {file = "pybase64-1.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:1e52cd080d22960491688b0512d11108da58e8a3e0a28756afef4d201399f932"}, + {file = "pybase64-1.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4ae3659c92447d229fd272a90d215b0b3defe88c16ce5be784c8ecff77b4e2b4"}, + {file = "pybase64-1.3.2-cp310-cp310-win32.whl", hash = "sha256:ca3278ea46f026400bad43bf2780bb69d851b4931c99996f6d3172d30e224694"}, + {file = "pybase64-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:06fc379c0bbb03ce12afbcb11c1dd89943dc297d2eb7f38f17da86567c1e2da9"}, + {file = "pybase64-1.3.2-cp310-cp310-win_arm64.whl", hash = "sha256:db8bdddb2aaa57a1dfbb7133d431bd2f5c2f67b3638f0fe28f6c63a5ce52a03d"}, + {file = "pybase64-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1aef411095a3e53ecb232da05cce23518230bbf40b3b4b633b11b98d0f0c5621"}, + {file = "pybase64-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:951a32cb5d280a0ffd50d9dfd74af2d66e9ba6a052200f7b42ab57efd3da4230"}, + {file = "pybase64-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21ddd131cf0bbf0ff18138089268fa9e658b205ac9b31cb9fabae6b16b31e2ff"}, + {file = "pybase64-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31b796e74d691ee75903e38cc6008bfa9163c80814c148b71efb43473ee406ed"}, + {file = "pybase64-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bf72833e16eae9e44ae46409b9a32a030bb5e26bc5cf4413dc74241cf2e845a"}, + {file = "pybase64-1.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:227e1b6c31d5306ba2820680b61ba7739fbc92a46ba1c6335d4e9abeff2338da"}, + {file = "pybase64-1.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19f3a2ade62217ee42e36b43d781589b9e265556191c30b72cf05f3f64aa9f2f"}, + {file = "pybase64-1.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1d67fdb1ef66f154d2d116a1e74fb4f60a3812cc43fd0907dd9fc05526fae763"}, + {file = "pybase64-1.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bbfa7795782ff5079ddf183ffed6a67ec149a543cb0edf4902f875c31857a8ee"}, + {file = "pybase64-1.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:9ca4bb2efce3de2179adf57dafe2a7f7cf5dcc5361d04f9a2e8c58e93cca6741"}, + {file = "pybase64-1.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:d5ee9f5e7dabc4921abd8b5408fc6f9f330e9383d62fe69b142c403f3632ecd1"}, + {file = "pybase64-1.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f0ab56e017acaa59de96aa0a8e5f3aab88d3831d873426e003e11d39a91e7a84"}, + {file = "pybase64-1.3.2-cp311-cp311-win32.whl", hash = "sha256:7b6358d0cc13f3d1764cccdce0af563ec6abc79835fa7f25d1b7aa45da6393e4"}, + {file = "pybase64-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:98b186d0f3cad2ac164970e3a68a6a46c6b9c5c3f3c4d925f6181883d2a62470"}, + {file = "pybase64-1.3.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f3153652bf4da3f7e634f13d44c4bb48b780551a6abd8f98d54745d3a83404"}, + {file = "pybase64-1.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:dc7f4628dafb04aa338bf14535e9db3579796f49bdebb03f9250d0a12b1f36cc"}, + {file = "pybase64-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e47bc67434a7e76fac34170f8d6091086acc1807fdad8fdf2069b516d73e9e38"}, + {file = "pybase64-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:349c3b6705ab7fd1f94c042d03482c66ff819274d3642ee6f7ec6978553da7b3"}, + {file = "pybase64-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9d45188090f5af2948baab32624f8da87d569fa27f769b05264554c54be1f49"}, + {file = "pybase64-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fb2d1526fa41631673aa92290195b38015e4dea8fb265a7f9a7bb4d17eb98a8f"}, + {file = "pybase64-1.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f038d3da111399a4246bc3f9c588956bc666e48192281759b9d310c423fcbcb"}, + {file = "pybase64-1.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6f34260036cd94b83c450dadb0d9316cdd468dfddd0aadb20837cb7f3e4b3d4"}, + {file = "pybase64-1.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8c1dabbcfbc09d2cd41b02f0c9caaa5afc9282855b4b32451cb03af3fc5ff6ff"}, + {file = "pybase64-1.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:2c07669c87f66a164aba142cd812f1efb84b8bbb616c2cc35a28bd5c66d6414b"}, + {file = "pybase64-1.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:609b5c1fe84251b519e5f7e5c73c25635f4b722243b36f9aefe98a27d8b96938"}, + {file = "pybase64-1.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:736b0163926b2eb4e592dee7b41f89a29c2d3d0bcf93cb34fa9b84cfff948258"}, + {file = "pybase64-1.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f6a6b9dbb8257de1aac18c7b25e0d8849f3016a067743124e18de436e930f00"}, + {file = "pybase64-1.3.2-cp312-cp312-win32.whl", hash = "sha256:fbacb2f79e4dabf3abe25c247bea8000360fd0babb5b87579427310d852c8325"}, + {file = "pybase64-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:e8aec2d73a622ddf3c532ea860de6aebfaab646a6a6bb6ffeca295de106235e9"}, + {file = "pybase64-1.3.2-cp312-cp312-win_arm64.whl", hash = "sha256:9cd58fc35b81ccf647ae2d570fc957182b3a3b3f9b48b1f1d6d97e8cebd4c8d6"}, + {file = "pybase64-1.3.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7a919d5129a543033a40cce7c4d26760953bb0108c1550b99961d7497131c60f"}, + {file = "pybase64-1.3.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ca827cc2fca05b22e61bfebbe5ba85e9fb5d4ce5c376ad630a52b30bf20456"}, + {file = "pybase64-1.3.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:28e3ec4f74042352a85efb3c19ed9b115ff968bd16cc916a7fd70e6ae99cf67d"}, + {file = "pybase64-1.3.2-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76662aa43a7a3d8ae2d51779c5a223fbaa4fa07925dead4c234316fc938084c2"}, + {file = "pybase64-1.3.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b95141be248c37a055deac1730d41f2a1715d41355a330b44738b2e4d3de28b8"}, + {file = "pybase64-1.3.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48f778c3bf3080d4a6230cd65eb06f0c0d3e05bb587fa7910db60e99815958a4"}, + {file = "pybase64-1.3.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:fde83acf303fe3a73f6ef4841866211c4ec7b4dc94b7439e1079089896efe8e0"}, + {file = "pybase64-1.3.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:4f8c20fb576bc9b54b547da8b3ce26e43e2447983d67197e13bc21e6874ed8ef"}, + {file = "pybase64-1.3.2-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:c0c8be6e23c28f98ec5d8f35a638676f983129651a37dc08c676e8edd7f2cf20"}, + {file = "pybase64-1.3.2-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:e0f65f6d682d72316d877c86b677793abaa65b391a3692767a077faced4b7802"}, + {file = "pybase64-1.3.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:4876c26f59c1ed4e1d63f947cefd5536a3511f74bc3c85afeaf81f75bcd21ff3"}, + {file = "pybase64-1.3.2-cp36-cp36m-win32.whl", hash = "sha256:a52a28b1f7b1f8a28c960637ec5c6e7fd90dadd5958b6c52632db704b6fa01a3"}, + {file = "pybase64-1.3.2-cp36-cp36m-win_amd64.whl", hash = "sha256:9ef6f22fc4223c8fd92cce2bf2d5fb4e26940319dec28ed5ac0e525076df2068"}, + {file = "pybase64-1.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e19c6fe8ce448402137e8906bb4b4ec193a3152bd492e9bb2889b2ac705e8a17"}, + {file = "pybase64-1.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f07fb1f4884acc86272d7fe93f0475c85632d38806e03c69a03188b4367edec"}, + {file = "pybase64-1.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc6a436a0cb2e8e78c92d1a98b2cb37bccb05bdf62225c0a1cda482ffa33a71a"}, + {file = "pybase64-1.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bb7420858e1c0608b895910495c664ac586dadef22cec5a2194e71a8917ec92e"}, + {file = "pybase64-1.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:085f0d8b7e593f5374f32483e5dcf543715a9a9fc1ea310f8d2ed664dabf7cdb"}, + {file = "pybase64-1.3.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:894415376efe88f9a22d45b6bfc06d9d594daac76c2acab3655afe3225987d37"}, + {file = "pybase64-1.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0784181bf9368842ae9ff12c68c452e9ed6aeadb459b8e675201f4e4ba2444ff"}, + {file = "pybase64-1.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:755377cf87e76d7b48d7ff8d5814e114e9f153f22ae2636b5a875189824cf4ff"}, + {file = "pybase64-1.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:1f65c78b257beda1579d01836b27a89bc2f526b047998d328f010ecd078b73ee"}, + {file = "pybase64-1.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:0a0dcd173c7d4d1e971c94e15a246a4445955b0686e1488e78d18c05d3b71d9a"}, + {file = "pybase64-1.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:059d326412e5dbd786065dc525dbc53fc24656b3327de7ab70af41d432561a2f"}, + {file = "pybase64-1.3.2-cp37-cp37m-win32.whl", hash = "sha256:0b5f570f0d52a4d21c1adc762552a4aa0f9e8bc92f9ecd6b6b69c833eedfe8b9"}, + {file = "pybase64-1.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:025b613650939d618a4aef5473137bacc3346a71ed82e947551816e2bb06987f"}, + {file = "pybase64-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1e427957de7428446820a227bf483a3bca0351473e9ff3bbd831fca95f814a35"}, + {file = "pybase64-1.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:28591a028683dec543b5e9573ecad97ff72aa74c94b0ec62d0ee9c82cda8fa38"}, + {file = "pybase64-1.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06d919d1279825e757a53b80396306c54c2512cf3169567746c7768fb68b7cee"}, + {file = "pybase64-1.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:879a41a64713068bfad2d6bc7c522b8f697527446658df97d061e79e5bb3c45c"}, + {file = "pybase64-1.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c7f7b2f072c8c7ab63c61e7a35f0685fb460600df820b950f2b690b1d4647ee6"}, + {file = "pybase64-1.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5126e7f0d53ce17e004439e928b3a4212a11f31d91b03c56408d2b385570eada"}, + {file = "pybase64-1.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f906b295210d5f6bc8cfe87445e92bc1a290d2b89bff1a74069e3a412eb7602a"}, + {file = "pybase64-1.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cdd036423e0cd121eee3b5b7ea9e52413409c64537bd5f94bdfa615583229ea3"}, + {file = "pybase64-1.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:af4688d8554b7b0f20e3cd4cb167eab62d2b8886683f26b634301ac259b6c1f4"}, + {file = "pybase64-1.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:7bc5fc155935fd0d204bed726507aa04f7ef49885a79b93c347037c437fa45a3"}, + {file = "pybase64-1.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:9bc5f4866a6b9940bd10a5a1f8be139bb46728b40c48c5af8dd590eb170e8fb1"}, + {file = "pybase64-1.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c1ec8154e6e867b2c2a6de9abbe50115d7c2d426d69e7791e1f4337270304497"}, + {file = "pybase64-1.3.2-cp38-cp38-win32.whl", hash = "sha256:651c4e07c507f7756179aa75de3b1b802346a195fa40991c75ced57da45ba761"}, + {file = "pybase64-1.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:11b4971af5aa3926115cdacc7e837d018c6cc9b6cfe0b93c839c29a0af5be2b2"}, + {file = "pybase64-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0bf75f63bc16b68152ac31b552a09313dc54c2dca171a7a8c27f4505a8e91104"}, + {file = "pybase64-1.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81cd93debccda870834adadca7c7923bd5c276e1ef544cf62ee9a5d1c4045f68"}, + {file = "pybase64-1.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2758adcbebd18fefb325a2c2caa6698a9ede6dee3dd97439cc17e9354bceb8bb"}, + {file = "pybase64-1.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f9d3f645c7c74321273a5851504fab90fbee9e013b1069d066c8aec2613ce4f6"}, + {file = "pybase64-1.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc0fe1a2a54958ff268d04582b0b942208c7ce020e81f581625b5a0281a0da29"}, + {file = "pybase64-1.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9622442f217bd2ec12d4188eb942a3210b0a5bdb9e295e252cca099a703001ce"}, + {file = "pybase64-1.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11114b6b3c7f4d6668b20b473fae88a92214389a86bda3c98914c8a2fa376556"}, + {file = "pybase64-1.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a19312ced969d8f7b712ed3201fcf803eefdf882891977037596391ab11da26b"}, + {file = "pybase64-1.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e0a8518e6b01aa89a274b7a833cde079ace40c16cdd9573a7dfa6166f904a3fb"}, + {file = "pybase64-1.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:47afc5ae22fef448142db84f0cf631fe9f86160055f018f9002f816a3b63ef15"}, + {file = "pybase64-1.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:41a177b58e3b2dbb93fe03c6aa14798142e1cd16ae0257cb844c44e42cd25144"}, + {file = "pybase64-1.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6f3188bfa49e4bd27a7bf120d17da891ad4d190be44e45aca0abb95c4b7ab656"}, + {file = "pybase64-1.3.2-cp39-cp39-win32.whl", hash = "sha256:f0190a9b9e30aa448221fb6ca6c9a4359b28ffe769c4a8c08c1d2457e04093c8"}, + {file = "pybase64-1.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:9499f665dcc86713332e5759b1552d141b6d4770da4206094b869eb7c001337c"}, + {file = "pybase64-1.3.2-cp39-cp39-win_arm64.whl", hash = "sha256:15b844e29b6bb08949ffb07021383e3182e6651436708130d1d528e42aeacab5"}, + {file = "pybase64-1.3.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b9f7e26e2c5c4c73755a6cd13979cba0fcfa8efcefa68d5baf6766cd86de200f"}, + {file = "pybase64-1.3.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2be5ec28edf2ba01fd12b1d04ff4c06208bf2a0eb81812db4966eef83bb2d68"}, + {file = "pybase64-1.3.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbd9419835e8723691c536ca17c5b4f928837a709ca8abb8a25ab5667ae7f081"}, + {file = "pybase64-1.3.2-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d23b6ccbb5244bd853a33428dd9b1e37e187c51ccc98e5a54b202c8ecd9a0780"}, + {file = "pybase64-1.3.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7f5c52598f4cb2c45f15cba9c823f3af469408837dea2cb105b53a0cce862b0b"}, + {file = "pybase64-1.3.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:72d7044ea0137a9f8936b65f40817490fc2dab34fa7715f60034f8fca556748d"}, + {file = "pybase64-1.3.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fea73a50e8f236aa60cb87ccb5a85778e64db8bc7446c3f89226dd79ed23894f"}, + {file = "pybase64-1.3.2-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ba5ab04d84db9963610bcada4a46bf654b12ea7934795c2781667c1694ae60d"}, + {file = "pybase64-1.3.2-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4f5974ada99be1f0222e0e17f5584df07a8ccd8b025b739ae66006127718bb1"}, + {file = "pybase64-1.3.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:48292d202b134ec320e6ec2212199f8a5ea3b58ae83cba2b30201040e7733904"}, + {file = "pybase64-1.3.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:03b1d733116cf6f77ad7c3b286b793ed0fbb8363d2e4a031bd3d120dcbdbe9c7"}, + {file = "pybase64-1.3.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f109a6aba9c235406f994d80083f5680a81b52358102751c23b8f2e1da57b231"}, + {file = "pybase64-1.3.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:915c4eb35bc339f100749856eac74a145639ea7c2bb7b83e5a14d4ef70c6af7a"}, + {file = "pybase64-1.3.2-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71b65b78197ed6bc009cb84418a484ecc568dafc9329d4bac90b8eff21ca8cb4"}, + {file = "pybase64-1.3.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:33f11c42ce14fbb2eeb41b76b6f4f7acfdd970c16a609ae0a26fa283761f06f3"}, + {file = "pybase64-1.3.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:91da83c784f86254eb05c1aa134b91952f90c82e336bbbc54d59d15af8023f1f"}, + {file = "pybase64-1.3.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b54d33adca9e96408dc8ecabf7f880bb86ce15c7e2e00e3919e8b45e6e0ec07"}, + {file = "pybase64-1.3.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bac1442c9c4de1c4d977adaa67a2410838fa8c3150149f32b0596731e0b7babb"}, + {file = "pybase64-1.3.2-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:266466931e324706eee0c3a12d032ae8b80d1b3895e17686c41176755c7c3684"}, + {file = "pybase64-1.3.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1b722174c06c204dff14852f3a968ee448698cf9af0c0c31a5d15343ccb19ef3"}, + {file = "pybase64-1.3.2.tar.gz", hash = "sha256:32ef993c55821dac9abd767ee4656a5013b2ed8bf1125cabbae7e84d2b991038"}, ] [[package]] @@ -3351,18 +3406,18 @@ files = [ [[package]] name = "pydantic" -version = "2.5.2" +version = "2.6.0" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-2.5.2-py3-none-any.whl", hash = "sha256:80c50fb8e3dcecfddae1adbcc00ec5822918490c99ab31f6cf6140ca1c1429f0"}, - {file = "pydantic-2.5.2.tar.gz", hash = "sha256:ff177ba64c6faf73d7afa2e8cad38fd456c0dbe01c9954e71038001cd15a6edd"}, + {file = "pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae"}, + {file = "pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.14.5" +pydantic-core = "2.16.1" typing-extensions = ">=4.6.1" [package.extras] @@ -3370,116 +3425,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.14.5" +version = "2.16.1" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.14.5-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:7e88f5696153dc516ba6e79f82cc4747e87027205f0e02390c21f7cb3bd8abfd"}, - {file = "pydantic_core-2.14.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4641e8ad4efb697f38a9b64ca0523b557c7931c5f84e0fd377a9a3b05121f0de"}, - {file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:774de879d212db5ce02dfbf5b0da9a0ea386aeba12b0b95674a4ce0593df3d07"}, - {file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ebb4e035e28f49b6f1a7032920bb9a0c064aedbbabe52c543343d39341a5b2a3"}, - {file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b53e9ad053cd064f7e473a5f29b37fc4cc9dc6d35f341e6afc0155ea257fc911"}, - {file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aa1768c151cf562a9992462239dfc356b3d1037cc5a3ac829bb7f3bda7cc1f9"}, - {file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eac5c82fc632c599f4639a5886f96867ffced74458c7db61bc9a66ccb8ee3113"}, - {file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2ae91f50ccc5810b2f1b6b858257c9ad2e08da70bf890dee02de1775a387c66"}, - {file = "pydantic_core-2.14.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6b9ff467ffbab9110e80e8c8de3bcfce8e8b0fd5661ac44a09ae5901668ba997"}, - {file = "pydantic_core-2.14.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:61ea96a78378e3bd5a0be99b0e5ed00057b71f66115f5404d0dae4819f495093"}, - {file = "pydantic_core-2.14.5-cp310-none-win32.whl", hash = "sha256:bb4c2eda937a5e74c38a41b33d8c77220380a388d689bcdb9b187cf6224c9720"}, - {file = "pydantic_core-2.14.5-cp310-none-win_amd64.whl", hash = "sha256:b7851992faf25eac90bfcb7bfd19e1f5ffa00afd57daec8a0042e63c74a4551b"}, - {file = "pydantic_core-2.14.5-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:4e40f2bd0d57dac3feb3a3aed50f17d83436c9e6b09b16af271b6230a2915459"}, - {file = "pydantic_core-2.14.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ab1cdb0f14dc161ebc268c09db04d2c9e6f70027f3b42446fa11c153521c0e88"}, - {file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aae7ea3a1c5bb40c93cad361b3e869b180ac174656120c42b9fadebf685d121b"}, - {file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:60b7607753ba62cf0739177913b858140f11b8af72f22860c28eabb2f0a61937"}, - {file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2248485b0322c75aee7565d95ad0e16f1c67403a470d02f94da7344184be770f"}, - {file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:823fcc638f67035137a5cd3f1584a4542d35a951c3cc68c6ead1df7dac825c26"}, - {file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96581cfefa9123accc465a5fd0cc833ac4d75d55cc30b633b402e00e7ced00a6"}, - {file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a33324437018bf6ba1bb0f921788788641439e0ed654b233285b9c69704c27b4"}, - {file = "pydantic_core-2.14.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9bd18fee0923ca10f9a3ff67d4851c9d3e22b7bc63d1eddc12f439f436f2aada"}, - {file = "pydantic_core-2.14.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:853a2295c00f1d4429db4c0fb9475958543ee80cfd310814b5c0ef502de24dda"}, - {file = "pydantic_core-2.14.5-cp311-none-win32.whl", hash = "sha256:cb774298da62aea5c80a89bd58c40205ab4c2abf4834453b5de207d59d2e1651"}, - {file = "pydantic_core-2.14.5-cp311-none-win_amd64.whl", hash = "sha256:e87fc540c6cac7f29ede02e0f989d4233f88ad439c5cdee56f693cc9c1c78077"}, - {file = "pydantic_core-2.14.5-cp311-none-win_arm64.whl", hash = "sha256:57d52fa717ff445cb0a5ab5237db502e6be50809b43a596fb569630c665abddf"}, - {file = "pydantic_core-2.14.5-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:e60f112ac88db9261ad3a52032ea46388378034f3279c643499edb982536a093"}, - {file = "pydantic_core-2.14.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6e227c40c02fd873c2a73a98c1280c10315cbebe26734c196ef4514776120aeb"}, - {file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0cbc7fff06a90bbd875cc201f94ef0ee3929dfbd5c55a06674b60857b8b85ed"}, - {file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:103ef8d5b58596a731b690112819501ba1db7a36f4ee99f7892c40da02c3e189"}, - {file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c949f04ecad823f81b1ba94e7d189d9dfb81edbb94ed3f8acfce41e682e48cef"}, - {file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1452a1acdf914d194159439eb21e56b89aa903f2e1c65c60b9d874f9b950e5d"}, - {file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb4679d4c2b089e5ef89756bc73e1926745e995d76e11925e3e96a76d5fa51fc"}, - {file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cf9d3fe53b1ee360e2421be95e62ca9b3296bf3f2fb2d3b83ca49ad3f925835e"}, - {file = "pydantic_core-2.14.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:70f4b4851dbb500129681d04cc955be2a90b2248d69273a787dda120d5cf1f69"}, - {file = "pydantic_core-2.14.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:59986de5710ad9613ff61dd9b02bdd2f615f1a7052304b79cc8fa2eb4e336d2d"}, - {file = "pydantic_core-2.14.5-cp312-none-win32.whl", hash = "sha256:699156034181e2ce106c89ddb4b6504c30db8caa86e0c30de47b3e0654543260"}, - {file = "pydantic_core-2.14.5-cp312-none-win_amd64.whl", hash = "sha256:5baab5455c7a538ac7e8bf1feec4278a66436197592a9bed538160a2e7d11e36"}, - {file = "pydantic_core-2.14.5-cp312-none-win_arm64.whl", hash = "sha256:e47e9a08bcc04d20975b6434cc50bf82665fbc751bcce739d04a3120428f3e27"}, - {file = "pydantic_core-2.14.5-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:af36f36538418f3806048f3b242a1777e2540ff9efaa667c27da63d2749dbce0"}, - {file = "pydantic_core-2.14.5-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:45e95333b8418ded64745f14574aa9bfc212cb4fbeed7a687b0c6e53b5e188cd"}, - {file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e47a76848f92529879ecfc417ff88a2806438f57be4a6a8bf2961e8f9ca9ec7"}, - {file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d81e6987b27bc7d101c8597e1cd2bcaa2fee5e8e0f356735c7ed34368c471550"}, - {file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34708cc82c330e303f4ce87758828ef6e457681b58ce0e921b6e97937dd1e2a3"}, - {file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:652c1988019752138b974c28f43751528116bcceadad85f33a258869e641d753"}, - {file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e4d090e73e0725b2904fdbdd8d73b8802ddd691ef9254577b708d413bf3006e"}, - {file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5c7d5b5005f177764e96bd584d7bf28d6e26e96f2a541fdddb934c486e36fd59"}, - {file = "pydantic_core-2.14.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a71891847f0a73b1b9eb86d089baee301477abef45f7eaf303495cd1473613e4"}, - {file = "pydantic_core-2.14.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a717aef6971208f0851a2420b075338e33083111d92041157bbe0e2713b37325"}, - {file = "pydantic_core-2.14.5-cp37-none-win32.whl", hash = "sha256:de790a3b5aa2124b8b78ae5faa033937a72da8efe74b9231698b5a1dd9be3405"}, - {file = "pydantic_core-2.14.5-cp37-none-win_amd64.whl", hash = "sha256:6c327e9cd849b564b234da821236e6bcbe4f359a42ee05050dc79d8ed2a91588"}, - {file = "pydantic_core-2.14.5-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:ef98ca7d5995a82f43ec0ab39c4caf6a9b994cb0b53648ff61716370eadc43cf"}, - {file = "pydantic_core-2.14.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6eae413494a1c3f89055da7a5515f32e05ebc1a234c27674a6956755fb2236f"}, - {file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcf4e6d85614f7a4956c2de5a56531f44efb973d2fe4a444d7251df5d5c4dcfd"}, - {file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6637560562134b0e17de333d18e69e312e0458ee4455bdad12c37100b7cad706"}, - {file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77fa384d8e118b3077cccfcaf91bf83c31fe4dc850b5e6ee3dc14dc3d61bdba1"}, - {file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16e29bad40bcf97aac682a58861249ca9dcc57c3f6be22f506501833ddb8939c"}, - {file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531f4b4252fac6ca476fbe0e6f60f16f5b65d3e6b583bc4d87645e4e5ddde331"}, - {file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:074f3d86f081ce61414d2dc44901f4f83617329c6f3ab49d2bc6c96948b2c26b"}, - {file = "pydantic_core-2.14.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c2adbe22ab4babbca99c75c5d07aaf74f43c3195384ec07ccbd2f9e3bddaecec"}, - {file = "pydantic_core-2.14.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0f6116a558fd06d1b7c2902d1c4cf64a5bd49d67c3540e61eccca93f41418124"}, - {file = "pydantic_core-2.14.5-cp38-none-win32.whl", hash = "sha256:fe0a5a1025eb797752136ac8b4fa21aa891e3d74fd340f864ff982d649691867"}, - {file = "pydantic_core-2.14.5-cp38-none-win_amd64.whl", hash = "sha256:079206491c435b60778cf2b0ee5fd645e61ffd6e70c47806c9ed51fc75af078d"}, - {file = "pydantic_core-2.14.5-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:a6a16f4a527aae4f49c875da3cdc9508ac7eef26e7977952608610104244e1b7"}, - {file = "pydantic_core-2.14.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:abf058be9517dc877227ec3223f0300034bd0e9f53aebd63cf4456c8cb1e0863"}, - {file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49b08aae5013640a3bfa25a8eebbd95638ec3f4b2eaf6ed82cf0c7047133f03b"}, - {file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c2d97e906b4ff36eb464d52a3bc7d720bd6261f64bc4bcdbcd2c557c02081ed2"}, - {file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3128e0bbc8c091ec4375a1828d6118bc20404883169ac95ffa8d983b293611e6"}, - {file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88e74ab0cdd84ad0614e2750f903bb0d610cc8af2cc17f72c28163acfcf372a4"}, - {file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c339dabd8ee15f8259ee0f202679b6324926e5bc9e9a40bf981ce77c038553db"}, - {file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3387277f1bf659caf1724e1afe8ee7dbc9952a82d90f858ebb931880216ea955"}, - {file = "pydantic_core-2.14.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ba6b6b3846cfc10fdb4c971980a954e49d447cd215ed5a77ec8190bc93dd7bc5"}, - {file = "pydantic_core-2.14.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ca61d858e4107ce5e1330a74724fe757fc7135190eb5ce5c9d0191729f033209"}, - {file = "pydantic_core-2.14.5-cp39-none-win32.whl", hash = "sha256:ec1e72d6412f7126eb7b2e3bfca42b15e6e389e1bc88ea0069d0cc1742f477c6"}, - {file = "pydantic_core-2.14.5-cp39-none-win_amd64.whl", hash = "sha256:c0b97ec434041827935044bbbe52b03d6018c2897349670ff8fe11ed24d1d4ab"}, - {file = "pydantic_core-2.14.5-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:79e0a2cdbdc7af3f4aee3210b1172ab53d7ddb6a2d8c24119b5706e622b346d0"}, - {file = "pydantic_core-2.14.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:678265f7b14e138d9a541ddabbe033012a2953315739f8cfa6d754cc8063e8ca"}, - {file = "pydantic_core-2.14.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b15e855ae44f0c6341ceb74df61b606e11f1087e87dcb7482377374aac6abe"}, - {file = "pydantic_core-2.14.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09b0e985fbaf13e6b06a56d21694d12ebca6ce5414b9211edf6f17738d82b0f8"}, - {file = "pydantic_core-2.14.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ad873900297bb36e4b6b3f7029d88ff9829ecdc15d5cf20161775ce12306f8a"}, - {file = "pydantic_core-2.14.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:2d0ae0d8670164e10accbeb31d5ad45adb71292032d0fdb9079912907f0085f4"}, - {file = "pydantic_core-2.14.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d37f8ec982ead9ba0a22a996129594938138a1503237b87318392a48882d50b7"}, - {file = "pydantic_core-2.14.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:35613015f0ba7e14c29ac6c2483a657ec740e5ac5758d993fdd5870b07a61d8b"}, - {file = "pydantic_core-2.14.5-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ab4ea451082e684198636565224bbb179575efc1658c48281b2c866bfd4ddf04"}, - {file = "pydantic_core-2.14.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ce601907e99ea5b4adb807ded3570ea62186b17f88e271569144e8cca4409c7"}, - {file = "pydantic_core-2.14.5-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb2ed8b3fe4bf4506d6dab3b93b83bbc22237e230cba03866d561c3577517d18"}, - {file = "pydantic_core-2.14.5-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70f947628e074bb2526ba1b151cee10e4c3b9670af4dbb4d73bc8a89445916b5"}, - {file = "pydantic_core-2.14.5-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4bc536201426451f06f044dfbf341c09f540b4ebdb9fd8d2c6164d733de5e634"}, - {file = "pydantic_core-2.14.5-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f4791cf0f8c3104ac668797d8c514afb3431bc3305f5638add0ba1a5a37e0d88"}, - {file = "pydantic_core-2.14.5-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:038c9f763e650712b899f983076ce783175397c848da04985658e7628cbe873b"}, - {file = "pydantic_core-2.14.5-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:27548e16c79702f1e03f5628589c6057c9ae17c95b4c449de3c66b589ead0520"}, - {file = "pydantic_core-2.14.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c97bee68898f3f4344eb02fec316db93d9700fb1e6a5b760ffa20d71d9a46ce3"}, - {file = "pydantic_core-2.14.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9b759b77f5337b4ea024f03abc6464c9f35d9718de01cfe6bae9f2e139c397e"}, - {file = "pydantic_core-2.14.5-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:439c9afe34638ace43a49bf72d201e0ffc1a800295bed8420c2a9ca8d5e3dbb3"}, - {file = "pydantic_core-2.14.5-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ba39688799094c75ea8a16a6b544eb57b5b0f3328697084f3f2790892510d144"}, - {file = "pydantic_core-2.14.5-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ccd4d5702bb90b84df13bd491be8d900b92016c5a455b7e14630ad7449eb03f8"}, - {file = "pydantic_core-2.14.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:81982d78a45d1e5396819bbb4ece1fadfe5f079335dd28c4ab3427cd95389944"}, - {file = "pydantic_core-2.14.5-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:7f8210297b04e53bc3da35db08b7302a6a1f4889c79173af69b72ec9754796b8"}, - {file = "pydantic_core-2.14.5-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:8c8a8812fe6f43a3a5b054af6ac2d7b8605c7bcab2804a8a7d68b53f3cd86e00"}, - {file = "pydantic_core-2.14.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:206ed23aecd67c71daf5c02c3cd19c0501b01ef3cbf7782db9e4e051426b3d0d"}, - {file = "pydantic_core-2.14.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2027d05c8aebe61d898d4cffd774840a9cb82ed356ba47a90d99ad768f39789"}, - {file = "pydantic_core-2.14.5-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40180930807ce806aa71eda5a5a5447abb6b6a3c0b4b3b1b1962651906484d68"}, - {file = "pydantic_core-2.14.5-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:615a0a4bff11c45eb3c1996ceed5bdaa2f7b432425253a7c2eed33bb86d80abc"}, - {file = "pydantic_core-2.14.5-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5e412d717366e0677ef767eac93566582518fe8be923361a5c204c1a62eaafe"}, - {file = "pydantic_core-2.14.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:513b07e99c0a267b1d954243845d8a833758a6726a3b5d8948306e3fe14675e3"}, - {file = "pydantic_core-2.14.5.tar.gz", hash = "sha256:6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7"}, + {file = "pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4"}, + {file = "pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae"}, + {file = "pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1"}, + {file = "pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c"}, + {file = "pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f"}, + {file = "pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212"}, + {file = "pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f"}, + {file = "pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca"}, + {file = "pydantic_core-2.16.1-cp38-none-win32.whl", hash = "sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610"}, + {file = "pydantic_core-2.16.1-cp38-none-win_amd64.whl", hash = "sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640"}, + {file = "pydantic_core-2.16.1-cp39-none-win32.whl", hash = "sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f"}, + {file = "pydantic_core-2.16.1-cp39-none-win_amd64.whl", hash = "sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76"}, + {file = "pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34"}, ] [package.dependencies] @@ -3533,13 +3562,13 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pylint" -version = "3.0.2" +version = "3.0.3" description = "python code static checker" optional = false python-versions = ">=3.8.0" files = [ - {file = "pylint-3.0.2-py3-none-any.whl", hash = "sha256:60ed5f3a9ff8b61839ff0348b3624ceeb9e6c2a92c514d81c9cc273da3b6bcda"}, - {file = "pylint-3.0.2.tar.gz", hash = "sha256:0d4c286ef6d2f66c8bfb527a7f8a629009e42c99707dec821a03e1b51a4c1496"}, + {file = "pylint-3.0.3-py3-none-any.whl", hash = "sha256:7a1585285aefc5165db81083c3e06363a27448f6b467b3b0f30dbd0ac1f73810"}, + {file = "pylint-3.0.3.tar.gz", hash = "sha256:58c2398b0301e049609a8429789ec6edf3aabe9b6c5fec916acd18639c16de8b"}, ] [package.dependencies] @@ -3549,7 +3578,7 @@ dill = [ {version = ">=0.2", markers = "python_version < \"3.11\""}, {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, ] -isort = ">=4.2.5,<6" +isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} @@ -3660,13 +3689,13 @@ cp2110 = ["hidapi"] [[package]] name = "pytest" -version = "7.4.3" +version = "8.0.0" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-7.4.3-py3-none-any.whl", hash = "sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac"}, - {file = "pytest-7.4.3.tar.gz", hash = "sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5"}, + {file = "pytest-8.0.0-py3-none-any.whl", hash = "sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6"}, + {file = "pytest-8.0.0.tar.gz", hash = "sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c"}, ] [package.dependencies] @@ -3674,7 +3703,7 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=0.12,<2.0" +pluggy = ">=1.3.0,<2.0" tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] @@ -3792,13 +3821,13 @@ files = [ [[package]] name = "pytz" -version = "2023.3.post1" +version = "2023.4" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, - {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, + {file = "pytz-2023.4-py2.py3-none-any.whl", hash = "sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a"}, + {file = "pytz-2023.4.tar.gz", hash = "sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40"}, ] [[package]] @@ -3870,7 +3899,6 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -3878,15 +3906,8 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -3903,7 +3924,6 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -3911,7 +3931,6 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -3919,104 +3938,104 @@ files = [ [[package]] name = "pyzmq" -version = "25.1.1" +version = "25.1.2" description = "Python bindings for 0MQ" optional = false python-versions = ">=3.6" files = [ - {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:381469297409c5adf9a0e884c5eb5186ed33137badcbbb0560b86e910a2f1e76"}, - {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:955215ed0604dac5b01907424dfa28b40f2b2292d6493445dd34d0dfa72586a8"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:985bbb1316192b98f32e25e7b9958088431d853ac63aca1d2c236f40afb17c83"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:afea96f64efa98df4da6958bae37f1cbea7932c35878b185e5982821bc883369"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76705c9325d72a81155bb6ab48d4312e0032bf045fb0754889133200f7a0d849"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:77a41c26205d2353a4c94d02be51d6cbdf63c06fbc1295ea57dad7e2d3381b71"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:12720a53e61c3b99d87262294e2b375c915fea93c31fc2336898c26d7aed34cd"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:57459b68e5cd85b0be8184382cefd91959cafe79ae019e6b1ae6e2ba8a12cda7"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:292fe3fc5ad4a75bc8df0dfaee7d0babe8b1f4ceb596437213821f761b4589f9"}, - {file = "pyzmq-25.1.1-cp310-cp310-win32.whl", hash = "sha256:35b5ab8c28978fbbb86ea54958cd89f5176ce747c1fb3d87356cf698048a7790"}, - {file = "pyzmq-25.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:11baebdd5fc5b475d484195e49bae2dc64b94a5208f7c89954e9e354fc609d8f"}, - {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:d20a0ddb3e989e8807d83225a27e5c2eb2260eaa851532086e9e0fa0d5287d83"}, - {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e1c1be77bc5fb77d923850f82e55a928f8638f64a61f00ff18a67c7404faf008"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d89528b4943d27029a2818f847c10c2cecc79fa9590f3cb1860459a5be7933eb"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:90f26dc6d5f241ba358bef79be9ce06de58d477ca8485e3291675436d3827cf8"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2b92812bd214018e50b6380ea3ac0c8bb01ac07fcc14c5f86a5bb25e74026e9"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f957ce63d13c28730f7fd6b72333814221c84ca2421298f66e5143f81c9f91f"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:047a640f5c9c6ade7b1cc6680a0e28c9dd5a0825135acbd3569cc96ea00b2505"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7f7e58effd14b641c5e4dec8c7dab02fb67a13df90329e61c869b9cc607ef752"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c2910967e6ab16bf6fbeb1f771c89a7050947221ae12a5b0b60f3bca2ee19bca"}, - {file = "pyzmq-25.1.1-cp311-cp311-win32.whl", hash = "sha256:76c1c8efb3ca3a1818b837aea423ff8a07bbf7aafe9f2f6582b61a0458b1a329"}, - {file = "pyzmq-25.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:44e58a0554b21fc662f2712814a746635ed668d0fbc98b7cb9d74cb798d202e6"}, - {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:e1ffa1c924e8c72778b9ccd386a7067cddf626884fd8277f503c48bb5f51c762"}, - {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1af379b33ef33757224da93e9da62e6471cf4a66d10078cf32bae8127d3d0d4a"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cff084c6933680d1f8b2f3b4ff5bbb88538a4aac00d199ac13f49d0698727ecb"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2400a94f7dd9cb20cd012951a0cbf8249e3d554c63a9c0cdfd5cbb6c01d2dec"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d81f1ddae3858b8299d1da72dd7d19dd36aab654c19671aa8a7e7fb02f6638a"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:255ca2b219f9e5a3a9ef3081512e1358bd4760ce77828e1028b818ff5610b87b"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a882ac0a351288dd18ecae3326b8a49d10c61a68b01419f3a0b9a306190baf69"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:724c292bb26365659fc434e9567b3f1adbdb5e8d640c936ed901f49e03e5d32e"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ca1ed0bb2d850aa8471387882247c68f1e62a4af0ce9c8a1dbe0d2bf69e41fb"}, - {file = "pyzmq-25.1.1-cp312-cp312-win32.whl", hash = "sha256:b3451108ab861040754fa5208bca4a5496c65875710f76789a9ad27c801a0075"}, - {file = "pyzmq-25.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:eadbefd5e92ef8a345f0525b5cfd01cf4e4cc651a2cffb8f23c0dd184975d787"}, - {file = "pyzmq-25.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:db0b2af416ba735c6304c47f75d348f498b92952f5e3e8bff449336d2728795d"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c133e93b405eb0d36fa430c94185bdd13c36204a8635470cccc200723c13bb"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:273bc3959bcbff3f48606b28229b4721716598d76b5aaea2b4a9d0ab454ec062"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cbc8df5c6a88ba5ae385d8930da02201165408dde8d8322072e3e5ddd4f68e22"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:18d43df3f2302d836f2a56f17e5663e398416e9dd74b205b179065e61f1a6edf"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:73461eed88a88c866656e08f89299720a38cb4e9d34ae6bf5df6f71102570f2e"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:34c850ce7976d19ebe7b9d4b9bb8c9dfc7aac336c0958e2651b88cbd46682123"}, - {file = "pyzmq-25.1.1-cp36-cp36m-win32.whl", hash = "sha256:d2045d6d9439a0078f2a34b57c7b18c4a6aef0bee37f22e4ec9f32456c852c71"}, - {file = "pyzmq-25.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:458dea649f2f02a0b244ae6aef8dc29325a2810aa26b07af8374dc2a9faf57e3"}, - {file = "pyzmq-25.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7cff25c5b315e63b07a36f0c2bab32c58eafbe57d0dce61b614ef4c76058c115"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1579413ae492b05de5a6174574f8c44c2b9b122a42015c5292afa4be2507f28"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3d0a409d3b28607cc427aa5c30a6f1e4452cc44e311f843e05edb28ab5e36da0"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:21eb4e609a154a57c520e3d5bfa0d97e49b6872ea057b7c85257b11e78068222"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:034239843541ef7a1aee0c7b2cb7f6aafffb005ede965ae9cbd49d5ff4ff73cf"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f8115e303280ba09f3898194791a153862cbf9eef722ad8f7f741987ee2a97c7"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1a5d26fe8f32f137e784f768143728438877d69a586ddeaad898558dc971a5ae"}, - {file = "pyzmq-25.1.1-cp37-cp37m-win32.whl", hash = "sha256:f32260e556a983bc5c7ed588d04c942c9a8f9c2e99213fec11a031e316874c7e"}, - {file = "pyzmq-25.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:abf34e43c531bbb510ae7e8f5b2b1f2a8ab93219510e2b287a944432fad135f3"}, - {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:87e34f31ca8f168c56d6fbf99692cc8d3b445abb5bfd08c229ae992d7547a92a"}, - {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c9c6c9b2c2f80747a98f34ef491c4d7b1a8d4853937bb1492774992a120f475d"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5619f3f5a4db5dbb572b095ea3cb5cc035335159d9da950830c9c4db2fbb6995"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5a34d2395073ef862b4032343cf0c32a712f3ab49d7ec4f42c9661e0294d106f"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f0e6b78220aba09815cd1f3a32b9c7cb3e02cb846d1cfc526b6595f6046618"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3669cf8ee3520c2f13b2e0351c41fea919852b220988d2049249db10046a7afb"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2d163a18819277e49911f7461567bda923461c50b19d169a062536fffe7cd9d2"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:df27ffddff4190667d40de7beba4a950b5ce78fe28a7dcc41d6f8a700a80a3c0"}, - {file = "pyzmq-25.1.1-cp38-cp38-win32.whl", hash = "sha256:a382372898a07479bd34bda781008e4a954ed8750f17891e794521c3e21c2e1c"}, - {file = "pyzmq-25.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:52533489f28d62eb1258a965f2aba28a82aa747202c8fa5a1c7a43b5db0e85c1"}, - {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:03b3f49b57264909aacd0741892f2aecf2f51fb053e7d8ac6767f6c700832f45"}, - {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:330f9e188d0d89080cde66dc7470f57d1926ff2fb5576227f14d5be7ab30b9fa"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2ca57a5be0389f2a65e6d3bb2962a971688cbdd30b4c0bd188c99e39c234f414"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d457aed310f2670f59cc5b57dcfced452aeeed77f9da2b9763616bd57e4dbaae"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c56d748ea50215abef7030c72b60dd723ed5b5c7e65e7bc2504e77843631c1a6"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8f03d3f0d01cb5a018debeb412441996a517b11c5c17ab2001aa0597c6d6882c"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:820c4a08195a681252f46926de10e29b6bbf3e17b30037bd4250d72dd3ddaab8"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17ef5f01d25b67ca8f98120d5fa1d21efe9611604e8eb03a5147360f517dd1e2"}, - {file = "pyzmq-25.1.1-cp39-cp39-win32.whl", hash = "sha256:04ccbed567171579ec2cebb9c8a3e30801723c575601f9a990ab25bcac6b51e2"}, - {file = "pyzmq-25.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:e61f091c3ba0c3578411ef505992d356a812fb200643eab27f4f70eed34a29ef"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ade6d25bb29c4555d718ac6d1443a7386595528c33d6b133b258f65f963bb0f6"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0c95ddd4f6e9fca4e9e3afaa4f9df8552f0ba5d1004e89ef0a68e1f1f9807c7"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48e466162a24daf86f6b5ca72444d2bf39a5e58da5f96370078be67c67adc978"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abc719161780932c4e11aaebb203be3d6acc6b38d2f26c0f523b5b59d2fc1996"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ccf825981640b8c34ae54231b7ed00271822ea1c6d8ba1090ebd4943759abf5"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c2f20ce161ebdb0091a10c9ca0372e023ce24980d0e1f810f519da6f79c60800"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:deee9ca4727f53464daf089536e68b13e6104e84a37820a88b0a057b97bba2d2"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aa8d6cdc8b8aa19ceb319aaa2b660cdaccc533ec477eeb1309e2a291eaacc43a"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:019e59ef5c5256a2c7378f2fb8560fc2a9ff1d315755204295b2eab96b254d0a"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:b9af3757495c1ee3b5c4e945c1df7be95562277c6e5bccc20a39aec50f826cd0"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:548d6482dc8aadbe7e79d1b5806585c8120bafa1ef841167bc9090522b610fa6"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:057e824b2aae50accc0f9a0570998adc021b372478a921506fddd6c02e60308e"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2243700cc5548cff20963f0ca92d3e5e436394375ab8a354bbea2b12911b20b0"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79986f3b4af059777111409ee517da24a529bdbd46da578b33f25580adcff728"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:11d58723d44d6ed4dd677c5615b2ffb19d5c426636345567d6af82be4dff8a55"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:49d238cf4b69652257db66d0c623cd3e09b5d2e9576b56bc067a396133a00d4a"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fedbdc753827cf014c01dbbee9c3be17e5a208dcd1bf8641ce2cd29580d1f0d4"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc16ac425cc927d0a57d242589f87ee093884ea4804c05a13834d07c20db203c"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11c1d2aed9079c6b0c9550a7257a836b4a637feb334904610f06d70eb44c56d2"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e8a701123029cc240cea61dd2d16ad57cab4691804143ce80ecd9286b464d180"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:61706a6b6c24bdece85ff177fec393545a3191eeda35b07aaa1458a027ad1304"}, - {file = "pyzmq-25.1.1.tar.gz", hash = "sha256:259c22485b71abacdfa8bf79720cd7bcf4b9d128b30ea554f01ae71fdbfdaa23"}, + {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"}, + {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"}, + {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"}, + {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"}, + {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"}, + {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"}, + {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"}, + {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"}, + {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"}, + {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"}, + {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"}, + {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"}, + {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"}, + {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"}, + {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"}, + {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"}, + {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"}, + {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"}, + {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"}, + {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"}, + {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"}, + {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"}, + {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"}, + {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"}, + {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"}, + {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"}, + {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"}, ] [package.dependencies] @@ -4110,48 +4129,46 @@ test = ["coverage[toml] (>=6.2)", "mypy (>=0.940)", "pytest (>=6.2.2)", "pytest- [[package]] name = "qibo" -version = "0.2.3" +version = "0.2.4" description = "A framework for quantum computing with hardware acceleration." optional = false python-versions = ">=3.9,<3.12" files = [ - {file = "qibo-0.2.3-py3-none-any.whl", hash = "sha256:53e649c57bf17c75ccafff804633d99aab595a4cbf42b3c42d625764c3dbb5b6"}, - {file = "qibo-0.2.3.tar.gz", hash = "sha256:ad375d47499781c9a0c942fcbd3747c84346e4c671e40fca34797929a2f509b3"}, + {file = "qibo-0.2.4-py3-none-any.whl", hash = "sha256:5aaf7693004d8106eff3cc614e20ff03e7016742ab129e7ece76c84b3deb7366"}, + {file = "qibo-0.2.4.tar.gz", hash = "sha256:8ab8519b107fdfa57a7aa19d9243403437ceb4a776454816ce3071a00bdc15ff"}, ] [package.dependencies] cma = ">=3.3.0,<4.0.0" hyperopt = ">=0.2.7,<0.3.0" joblib = ">=1.2.0,<2.0.0" -matplotlib = ">=3.7.0,<4.0.0" -psutil = ">=5.9.4,<6.0.0" scipy = ">=1.10.1,<2.0.0" sympy = ">=1.11.1,<2.0.0" tabulate = ">=0.9.0,<0.10.0" [[package]] name = "qibosoq" -version = "0.1.0" +version = "0.1.1" description = "QIBO Server On Qick (qibosoq) is the server component of qibolab to be run on RFSoC boards" optional = false python-versions = ">=3.8,<3.12" files = [ - {file = "qibosoq-0.1.0-py3-none-any.whl", hash = "sha256:d54b81fce77116a5732b98dd81dd2e8e3d57026bca70ed3cd6cb2a48c11b4efd"}, - {file = "qibosoq-0.1.0.tar.gz", hash = "sha256:61171d08ad22c1797e4a2bdb054351ac193257695c5090f78f9c366b66fbd7ab"}, + {file = "qibosoq-0.1.1-py3-none-any.whl", hash = "sha256:8443daea9efd771056cdb36ef4090bc29ae87515d94daac18e8fe53fe7154d27"}, + {file = "qibosoq-0.1.1.tar.gz", hash = "sha256:94a4d53870660738c3b10c183c69ddfed602e967b331e73b4227ccb077f49bb7"}, ] [package.dependencies] -qick = "0.2.135" +qick = ">=0.2.165,<=0.2.181" [[package]] name = "qick" -version = "0.2.135" +version = "0.2.181" description = "Quantum Instrumentation Controller Kit software library" optional = false python-versions = ">=3.6, <4" files = [ - {file = "qick-0.2.135-py3-none-any.whl", hash = "sha256:e1bbefef86aae3aa014e93d05fffe6b6d7457ca4a735aef4dabdf73600039cff"}, - {file = "qick-0.2.135.tar.gz", hash = "sha256:dd3055dc7de51c2e34e4e992d15901a662693b3612d82c9a6deb4dc4aff3e098"}, + {file = "qick-0.2.181-py3-none-any.whl", hash = "sha256:12a9c5a4347b692143ec137d22a05aa3e8fc7bf825f71e1db2332b87d831380b"}, + {file = "qick-0.2.181.tar.gz", hash = "sha256:c6f6ca83ac4995fbd86cbec4d1f2ce578b8abe16aaacc65044b2929548820ce0"}, ] [package.dependencies] @@ -4159,6 +4176,9 @@ numpy = "*" pynq = {version = ">=2.6", markers = "platform_machine == \"aarch64\" or platform_machine == \"armv7l\""} tqdm = "*" +[package.extras] +full = ["pyro4"] + [[package]] name = "qm-octave" version = "2.0.1" @@ -4274,13 +4294,13 @@ sphinx = ">=1.3.1" [[package]] name = "referencing" -version = "0.31.1" +version = "0.33.0" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.31.1-py3-none-any.whl", hash = "sha256:c19c4d006f1757e3dd75c4f784d38f8698d87b649c54f9ace14e5e8c9667c01d"}, - {file = "referencing-0.31.1.tar.gz", hash = "sha256:81a1471c68c9d5e3831c30ad1dd9815c45b558e596653db751a2bfdd17b3b9ec"}, + {file = "referencing-0.33.0-py3-none-any.whl", hash = "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5"}, + {file = "referencing-0.33.0.tar.gz", hash = "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"}, ] [package.dependencies] @@ -4359,110 +4379,110 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "rpds-py" -version = "0.13.2" +version = "0.17.1" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.13.2-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:1ceebd0ae4f3e9b2b6b553b51971921853ae4eebf3f54086be0565d59291e53d"}, - {file = "rpds_py-0.13.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:46e1ed994a0920f350a4547a38471217eb86f57377e9314fbaaa329b71b7dfe3"}, - {file = "rpds_py-0.13.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee353bb51f648924926ed05e0122b6a0b1ae709396a80eb583449d5d477fcdf7"}, - {file = "rpds_py-0.13.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:530190eb0cd778363bbb7596612ded0bb9fef662daa98e9d92a0419ab27ae914"}, - {file = "rpds_py-0.13.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d311e44dd16d2434d5506d57ef4d7036544fc3c25c14b6992ef41f541b10fb"}, - {file = "rpds_py-0.13.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e72f750048b32d39e87fc85c225c50b2a6715034848dbb196bf3348aa761fa1"}, - {file = "rpds_py-0.13.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db09b98c7540df69d4b47218da3fbd7cb466db0fb932e971c321f1c76f155266"}, - {file = "rpds_py-0.13.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2ac26f50736324beb0282c819668328d53fc38543fa61eeea2c32ea8ea6eab8d"}, - {file = "rpds_py-0.13.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:12ecf89bd54734c3c2c79898ae2021dca42750c7bcfb67f8fb3315453738ac8f"}, - {file = "rpds_py-0.13.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a44c8440183b43167fd1a0819e8356692bf5db1ad14ce140dbd40a1485f2dea"}, - {file = "rpds_py-0.13.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bcef4f2d3dc603150421de85c916da19471f24d838c3c62a4f04c1eb511642c1"}, - {file = "rpds_py-0.13.2-cp310-none-win32.whl", hash = "sha256:ee6faebb265e28920a6f23a7d4c362414b3f4bb30607141d718b991669e49ddc"}, - {file = "rpds_py-0.13.2-cp310-none-win_amd64.whl", hash = "sha256:ac96d67b37f28e4b6ecf507c3405f52a40658c0a806dffde624a8fcb0314d5fd"}, - {file = "rpds_py-0.13.2-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:b5f6328e8e2ae8238fc767703ab7b95785521c42bb2b8790984e3477d7fa71ad"}, - {file = "rpds_py-0.13.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:729408136ef8d45a28ee9a7411917c9e3459cf266c7e23c2f7d4bb8ef9e0da42"}, - {file = "rpds_py-0.13.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65cfed9c807c27dee76407e8bb29e6f4e391e436774bcc769a037ff25ad8646e"}, - {file = "rpds_py-0.13.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aefbdc934115d2f9278f153952003ac52cd2650e7313750390b334518c589568"}, - {file = "rpds_py-0.13.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d48db29bd47814671afdd76c7652aefacc25cf96aad6daefa82d738ee87461e2"}, - {file = "rpds_py-0.13.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c55d7f2d817183d43220738270efd3ce4e7a7b7cbdaefa6d551ed3d6ed89190"}, - {file = "rpds_py-0.13.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6aadae3042f8e6db3376d9e91f194c606c9a45273c170621d46128f35aef7cd0"}, - {file = "rpds_py-0.13.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5feae2f9aa7270e2c071f488fab256d768e88e01b958f123a690f1cc3061a09c"}, - {file = "rpds_py-0.13.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:51967a67ea0d7b9b5cd86036878e2d82c0b6183616961c26d825b8c994d4f2c8"}, - {file = "rpds_py-0.13.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d0c10d803549427f427085ed7aebc39832f6e818a011dcd8785e9c6a1ba9b3e"}, - {file = "rpds_py-0.13.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:603d5868f7419081d616dab7ac3cfa285296735e7350f7b1e4f548f6f953ee7d"}, - {file = "rpds_py-0.13.2-cp311-none-win32.whl", hash = "sha256:b8996ffb60c69f677245f5abdbcc623e9442bcc91ed81b6cd6187129ad1fa3e7"}, - {file = "rpds_py-0.13.2-cp311-none-win_amd64.whl", hash = "sha256:5379e49d7e80dca9811b36894493d1c1ecb4c57de05c36f5d0dd09982af20211"}, - {file = "rpds_py-0.13.2-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:8a776a29b77fe0cc28fedfd87277b0d0f7aa930174b7e504d764e0b43a05f381"}, - {file = "rpds_py-0.13.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a1472956c5bcc49fb0252b965239bffe801acc9394f8b7c1014ae9258e4572b"}, - {file = "rpds_py-0.13.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f252dfb4852a527987a9156cbcae3022a30f86c9d26f4f17b8c967d7580d65d2"}, - {file = "rpds_py-0.13.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f0d320e70b6b2300ff6029e234e79fe44e9dbbfc7b98597ba28e054bd6606a57"}, - {file = "rpds_py-0.13.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ade2ccb937060c299ab0dfb2dea3d2ddf7e098ed63ee3d651ebfc2c8d1e8632a"}, - {file = "rpds_py-0.13.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9d121be0217787a7d59a5c6195b0842d3f701007333426e5154bf72346aa658"}, - {file = "rpds_py-0.13.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fa6bd071ec6d90f6e7baa66ae25820d57a8ab1b0a3c6d3edf1834d4b26fafa2"}, - {file = "rpds_py-0.13.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c918621ee0a3d1fe61c313f2489464f2ae3d13633e60f520a8002a5e910982ee"}, - {file = "rpds_py-0.13.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:25b28b3d33ec0a78e944aaaed7e5e2a94ac811bcd68b557ca48a0c30f87497d2"}, - {file = "rpds_py-0.13.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:31e220a040b89a01505128c2f8a59ee74732f666439a03e65ccbf3824cdddae7"}, - {file = "rpds_py-0.13.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:15253fff410873ebf3cfba1cc686a37711efcd9b8cb30ea21bb14a973e393f60"}, - {file = "rpds_py-0.13.2-cp312-none-win32.whl", hash = "sha256:b981a370f8f41c4024c170b42fbe9e691ae2dbc19d1d99151a69e2c84a0d194d"}, - {file = "rpds_py-0.13.2-cp312-none-win_amd64.whl", hash = "sha256:4c4e314d36d4f31236a545696a480aa04ea170a0b021e9a59ab1ed94d4c3ef27"}, - {file = "rpds_py-0.13.2-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:80e5acb81cb49fd9f2d5c08f8b74ffff14ee73b10ca88297ab4619e946bcb1e1"}, - {file = "rpds_py-0.13.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:efe093acc43e869348f6f2224df7f452eab63a2c60a6c6cd6b50fd35c4e075ba"}, - {file = "rpds_py-0.13.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c2a61c0e4811012b0ba9f6cdcb4437865df5d29eab5d6018ba13cee1c3064a0"}, - {file = "rpds_py-0.13.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:751758d9dd04d548ec679224cc00e3591f5ebf1ff159ed0d4aba6a0746352452"}, - {file = "rpds_py-0.13.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6ba8858933f0c1a979781272a5f65646fca8c18c93c99c6ddb5513ad96fa54b1"}, - {file = "rpds_py-0.13.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bfdfbe6a36bc3059fff845d64c42f2644cf875c65f5005db54f90cdfdf1df815"}, - {file = "rpds_py-0.13.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa0379c1935c44053c98826bc99ac95f3a5355675a297ac9ce0dfad0ce2d50ca"}, - {file = "rpds_py-0.13.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5593855b5b2b73dd8413c3fdfa5d95b99d657658f947ba2c4318591e745d083"}, - {file = "rpds_py-0.13.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2a7bef6977043673750a88da064fd513f89505111014b4e00fbdd13329cd4e9a"}, - {file = "rpds_py-0.13.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:3ab96754d23372009638a402a1ed12a27711598dd49d8316a22597141962fe66"}, - {file = "rpds_py-0.13.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:e06cfea0ece444571d24c18ed465bc93afb8c8d8d74422eb7026662f3d3f779b"}, - {file = "rpds_py-0.13.2-cp38-none-win32.whl", hash = "sha256:5493569f861fb7b05af6d048d00d773c6162415ae521b7010197c98810a14cab"}, - {file = "rpds_py-0.13.2-cp38-none-win_amd64.whl", hash = "sha256:b07501b720cf060c5856f7b5626e75b8e353b5f98b9b354a21eb4bfa47e421b1"}, - {file = "rpds_py-0.13.2-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:881df98f0a8404d32b6de0fd33e91c1b90ed1516a80d4d6dc69d414b8850474c"}, - {file = "rpds_py-0.13.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d79c159adea0f1f4617f54aa156568ac69968f9ef4d1e5fefffc0a180830308e"}, - {file = "rpds_py-0.13.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38d4f822ee2f338febcc85aaa2547eb5ba31ba6ff68d10b8ec988929d23bb6b4"}, - {file = "rpds_py-0.13.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5d75d6d220d55cdced2f32cc22f599475dbe881229aeddba6c79c2e9df35a2b3"}, - {file = "rpds_py-0.13.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d97e9ae94fb96df1ee3cb09ca376c34e8a122f36927230f4c8a97f469994bff"}, - {file = "rpds_py-0.13.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67a429520e97621a763cf9b3ba27574779c4e96e49a27ff8a1aa99ee70beb28a"}, - {file = "rpds_py-0.13.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:188435794405c7f0573311747c85a96b63c954a5f2111b1df8018979eca0f2f0"}, - {file = "rpds_py-0.13.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:38f9bf2ad754b4a45b8210a6c732fe876b8a14e14d5992a8c4b7c1ef78740f53"}, - {file = "rpds_py-0.13.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a6ba2cb7d676e9415b9e9ac7e2aae401dc1b1e666943d1f7bc66223d3d73467b"}, - {file = "rpds_py-0.13.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:eaffbd8814bb1b5dc3ea156a4c5928081ba50419f9175f4fc95269e040eff8f0"}, - {file = "rpds_py-0.13.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a4c1058cdae6237d97af272b326e5f78ee7ee3bbffa6b24b09db4d828810468"}, - {file = "rpds_py-0.13.2-cp39-none-win32.whl", hash = "sha256:b5267feb19070bef34b8dea27e2b504ebd9d31748e3ecacb3a4101da6fcb255c"}, - {file = "rpds_py-0.13.2-cp39-none-win_amd64.whl", hash = "sha256:ddf23960cb42b69bce13045d5bc66f18c7d53774c66c13f24cf1b9c144ba3141"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:97163a1ab265a1073a6372eca9f4eeb9f8c6327457a0b22ddfc4a17dcd613e74"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:25ea41635d22b2eb6326f58e608550e55d01df51b8a580ea7e75396bafbb28e9"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76d59d4d451ba77f08cb4cd9268dec07be5bc65f73666302dbb5061989b17198"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7c564c58cf8f248fe859a4f0fe501b050663f3d7fbc342172f259124fb59933"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61dbc1e01dc0c5875da2f7ae36d6e918dc1b8d2ce04e871793976594aad8a57a"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdb82eb60d31b0c033a8e8ee9f3fc7dfbaa042211131c29da29aea8531b4f18f"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d204957169f0b3511fb95395a9da7d4490fb361763a9f8b32b345a7fe119cb45"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c45008ca79bad237cbc03c72bc5205e8c6f66403773929b1b50f7d84ef9e4d07"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:79bf58c08f0756adba691d480b5a20e4ad23f33e1ae121584cf3a21717c36dfa"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e86593bf8637659e6a6ed58854b6c87ec4e9e45ee8a4adfd936831cef55c2d21"}, - {file = "rpds_py-0.13.2-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:d329896c40d9e1e5c7715c98529e4a188a1f2df51212fd65102b32465612b5dc"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4a5375c5fff13f209527cd886dc75394f040c7d1ecad0a2cb0627f13ebe78a12"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:06d218e4464d31301e943b65b2c6919318ea6f69703a351961e1baaf60347276"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1f41d32a2ddc5a94df4b829b395916a4b7f103350fa76ba6de625fcb9e773ac"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6bc568b05e02cd612be53900c88aaa55012e744930ba2eeb56279db4c6676eb3"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d94d78418203904730585efa71002286ac4c8ac0689d0eb61e3c465f9e608ff"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bed0252c85e21cf73d2d033643c945b460d6a02fc4a7d644e3b2d6f5f2956c64"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:244e173bb6d8f3b2f0c4d7370a1aa341f35da3e57ffd1798e5b2917b91731fd3"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7f55cd9cf1564b7b03f238e4c017ca4794c05b01a783e9291065cb2858d86ce4"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:f03a1b3a4c03e3e0161642ac5367f08479ab29972ea0ffcd4fa18f729cd2be0a"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:f5f4424cb87a20b016bfdc157ff48757b89d2cc426256961643d443c6c277007"}, - {file = "rpds_py-0.13.2-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c82bbf7e03748417c3a88c1b0b291288ce3e4887a795a3addaa7a1cfd9e7153e"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:c0095b8aa3e432e32d372e9a7737e65b58d5ed23b9620fea7cb81f17672f1fa1"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:4c2d26aa03d877c9730bf005621c92da263523a1e99247590abbbe252ccb7824"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96f2975fb14f39c5fe75203f33dd3010fe37d1c4e33177feef1107b5ced750e3"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4dcc5ee1d0275cb78d443fdebd0241e58772a354a6d518b1d7af1580bbd2c4e8"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61d42d2b08430854485135504f672c14d4fc644dd243a9c17e7c4e0faf5ed07e"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d3a61e928feddc458a55110f42f626a2a20bea942ccedb6fb4cee70b4830ed41"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7de12b69d95072394998c622cfd7e8cea8f560db5fca6a62a148f902a1029f8b"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:87a90f5545fd61f6964e65eebde4dc3fa8660bb7d87adb01d4cf17e0a2b484ad"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:9c95a1a290f9acf7a8f2ebbdd183e99215d491beea52d61aa2a7a7d2c618ddc6"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:35f53c76a712e323c779ca39b9a81b13f219a8e3bc15f106ed1e1462d56fcfe9"}, - {file = "rpds_py-0.13.2-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:96fb0899bb2ab353f42e5374c8f0789f54e0a94ef2f02b9ac7149c56622eaf31"}, - {file = "rpds_py-0.13.2.tar.gz", hash = "sha256:f8eae66a1304de7368932b42d801c67969fd090ddb1a7a24f27b435ed4bed68f"}, + {file = "rpds_py-0.17.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d"}, + {file = "rpds_py-0.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453"}, + {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc"}, + {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394"}, + {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59"}, + {file = "rpds_py-0.17.1-cp310-none-win32.whl", hash = "sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d"}, + {file = "rpds_py-0.17.1-cp310-none-win_amd64.whl", hash = "sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6"}, + {file = "rpds_py-0.17.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b"}, + {file = "rpds_py-0.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a"}, + {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383"}, + {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd"}, + {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea"}, + {file = "rpds_py-0.17.1-cp311-none-win32.whl", hash = "sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518"}, + {file = "rpds_py-0.17.1-cp311-none-win_amd64.whl", hash = "sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf"}, + {file = "rpds_py-0.17.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf"}, + {file = "rpds_py-0.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140"}, + {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2"}, + {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253"}, + {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23"}, + {file = "rpds_py-0.17.1-cp312-none-win32.whl", hash = "sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1"}, + {file = "rpds_py-0.17.1-cp312-none-win_amd64.whl", hash = "sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3"}, + {file = "rpds_py-0.17.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d"}, + {file = "rpds_py-0.17.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4"}, + {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896"}, + {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde"}, + {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6"}, + {file = "rpds_py-0.17.1-cp38-none-win32.whl", hash = "sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a"}, + {file = "rpds_py-0.17.1-cp38-none-win_amd64.whl", hash = "sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb"}, + {file = "rpds_py-0.17.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a"}, + {file = "rpds_py-0.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74"}, + {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4"}, + {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772"}, + {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b"}, + {file = "rpds_py-0.17.1-cp39-none-win32.whl", hash = "sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f"}, + {file = "rpds_py-0.17.1-cp39-none-win_amd64.whl", hash = "sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68"}, + {file = "rpds_py-0.17.1.tar.gz", hash = "sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7"}, ] [[package]] @@ -4506,24 +4526,24 @@ python-versions = ">=3.6" files = [ {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d92f81886165cb14d7b067ef37e142256f1c6a90a65cd156b063a43da1708cfd"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:aa2267c6a303eb483de8d02db2871afb5c5fc15618d894300b88958f729ad74f"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:b5edda50e5e9e15e54a6a8a0070302b00c518a9d32accc2346ad6c984aacd279"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:1707814f0d9791df063f8c19bb51b0d1278b8e9a2353abbb676c2f685dee6afe"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:7048c338b6c86627afb27faecf418768acb6331fc24cfa56c93e8c9780f815fa"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:1dc67314e7e1086c9fdf2680b7b6c2be1c0d8e3a8279f2e993ca2a7545fecf62"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"}, @@ -4531,7 +4551,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:77159f5d5b5c14f7c34073862a6b7d34944075d9f93e681638f6d753606c6ce6"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3fcc54cb0c8b811ff66082de1680b4b14cf8a81dce0d4fbf665c2265a81e07a1"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"}, @@ -4539,7 +4559,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:665f58bfd29b167039f714c6998178d27ccd83984084c286110ef26b230f259f"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"}, @@ -4547,7 +4567,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:a1a45e0bb052edf6a1d3a93baef85319733a888363938e1fc9924cb00c8df24c"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:9eb5dee2772b0f704ca2e45b1713e4e5198c18f515b52743576d196348f374d3"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"}, @@ -4572,102 +4592,117 @@ contextlib2 = ">=0.5.5" [[package]] name = "scikit-learn" -version = "1.3.2" +version = "1.4.0" description = "A set of python modules for machine learning and data mining" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "scikit-learn-1.3.2.tar.gz", hash = "sha256:a2f54c76accc15a34bfb9066e6c7a56c1e7235dda5762b990792330b52ccfb05"}, - {file = "scikit_learn-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e326c0eb5cf4d6ba40f93776a20e9a7a69524c4db0757e7ce24ba222471ee8a1"}, - {file = "scikit_learn-1.3.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:535805c2a01ccb40ca4ab7d081d771aea67e535153e35a1fd99418fcedd1648a"}, - {file = "scikit_learn-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1215e5e58e9880b554b01187b8c9390bf4dc4692eedeaf542d3273f4785e342c"}, - {file = "scikit_learn-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ee107923a623b9f517754ea2f69ea3b62fc898a3641766cb7deb2f2ce450161"}, - {file = "scikit_learn-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:35a22e8015048c628ad099da9df5ab3004cdbf81edc75b396fd0cff8699ac58c"}, - {file = "scikit_learn-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6fb6bc98f234fda43163ddbe36df8bcde1d13ee176c6dc9b92bb7d3fc842eb66"}, - {file = "scikit_learn-1.3.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:18424efee518a1cde7b0b53a422cde2f6625197de6af36da0b57ec502f126157"}, - {file = "scikit_learn-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3271552a5eb16f208a6f7f617b8cc6d1f137b52c8a1ef8edf547db0259b2c9fb"}, - {file = "scikit_learn-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4144a5004a676d5022b798d9e573b05139e77f271253a4703eed295bde0433"}, - {file = "scikit_learn-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:67f37d708f042a9b8d59551cf94d30431e01374e00dc2645fa186059c6c5d78b"}, - {file = "scikit_learn-1.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8db94cd8a2e038b37a80a04df8783e09caac77cbe052146432e67800e430c028"}, - {file = "scikit_learn-1.3.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:61a6efd384258789aa89415a410dcdb39a50e19d3d8410bd29be365bcdd512d5"}, - {file = "scikit_learn-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb06f8dce3f5ddc5dee1715a9b9f19f20d295bed8e3cd4fa51e1d050347de525"}, - {file = "scikit_learn-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b2de18d86f630d68fe1f87af690d451388bb186480afc719e5f770590c2ef6c"}, - {file = "scikit_learn-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:0402638c9a7c219ee52c94cbebc8fcb5eb9fe9c773717965c1f4185588ad3107"}, - {file = "scikit_learn-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a19f90f95ba93c1a7f7924906d0576a84da7f3b2282ac3bfb7a08a32801add93"}, - {file = "scikit_learn-1.3.2-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b8692e395a03a60cd927125eef3a8e3424d86dde9b2370d544f0ea35f78a8073"}, - {file = "scikit_learn-1.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15e1e94cc23d04d39da797ee34236ce2375ddea158b10bee3c343647d615581d"}, - {file = "scikit_learn-1.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:785a2213086b7b1abf037aeadbbd6d67159feb3e30263434139c98425e3dcfcf"}, - {file = "scikit_learn-1.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:64381066f8aa63c2710e6b56edc9f0894cc7bf59bd71b8ce5613a4559b6145e0"}, - {file = "scikit_learn-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6c43290337f7a4b969d207e620658372ba3c1ffb611f8bc2b6f031dc5c6d1d03"}, - {file = "scikit_learn-1.3.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:dc9002fc200bed597d5d34e90c752b74df516d592db162f756cc52836b38fe0e"}, - {file = "scikit_learn-1.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d08ada33e955c54355d909b9c06a4789a729977f165b8bae6f225ff0a60ec4a"}, - {file = "scikit_learn-1.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:763f0ae4b79b0ff9cca0bf3716bcc9915bdacff3cebea15ec79652d1cc4fa5c9"}, - {file = "scikit_learn-1.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:ed932ea780517b00dae7431e031faae6b49b20eb6950918eb83bd043237950e0"}, -] - -[package.dependencies] -joblib = ">=1.1.1" -numpy = ">=1.17.3,<2.0" -scipy = ">=1.5.0" + {file = "scikit-learn-1.4.0.tar.gz", hash = "sha256:d4373c984eba20e393216edd51a3e3eede56cbe93d4247516d205643c3b93121"}, + {file = "scikit_learn-1.4.0-1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fce93a7473e2f4ee4cc280210968288d6a7d7ad8dc6fa7bb7892145e407085f9"}, + {file = "scikit_learn-1.4.0-1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d77df3d1e15fc37a9329999979fa7868ba8655dbab21fe97fc7ddabac9e08cc7"}, + {file = "scikit_learn-1.4.0-1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2404659fedec40eeafa310cd14d613e564d13dbf8f3c752d31c095195ec05de6"}, + {file = "scikit_learn-1.4.0-1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e98632da8f6410e6fb6bf66937712c949b4010600ccd3f22a5388a83e610cc3c"}, + {file = "scikit_learn-1.4.0-1-cp310-cp310-win_amd64.whl", hash = "sha256:11b3b140f70fbc9f6a08884631ae8dd60a4bb2d7d6d1de92738ea42b740d8992"}, + {file = "scikit_learn-1.4.0-1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a8341eabdc754d5ab91641a7763243845e96b6d68e03e472531e88a4f1b09f21"}, + {file = "scikit_learn-1.4.0-1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d1f6bce875ac2bb6b52514f67c185c564ccd299a05b65b7bab091a4c13dde12d"}, + {file = "scikit_learn-1.4.0-1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c408b46b2fd61952d519ea1af2f8f0a7a703e1433923ab1704c4131520b2083b"}, + {file = "scikit_learn-1.4.0-1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b465dd1dcd237b7b1dcd1a9048ccbf70a98c659474324fa708464c3a2533fad"}, + {file = "scikit_learn-1.4.0-1-cp311-cp311-win_amd64.whl", hash = "sha256:0db8e22c42f7980fe5eb22069b1f84c48966f3e0d23a01afde5999e3987a2501"}, + {file = "scikit_learn-1.4.0-1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e7eef6ea2ed289af40e88c0be9f7704ca8b5de18508a06897c3fe21e0905efdf"}, + {file = "scikit_learn-1.4.0-1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:349669b01435bc4dbf25c6410b0892073befdaec52637d1a1d1ff53865dc8db3"}, + {file = "scikit_learn-1.4.0-1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d439c584e58434d0350701bd33f6c10b309e851fccaf41c121aed55f6851d8cf"}, + {file = "scikit_learn-1.4.0-1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0e2427d9ef46477625ab9b55c1882844fe6fc500f418c3f8e650200182457bc"}, + {file = "scikit_learn-1.4.0-1-cp312-cp312-win_amd64.whl", hash = "sha256:d3d75343940e7bf9b85c830c93d34039fa015eeb341c5c0b4cd7a90dadfe00d4"}, + {file = "scikit_learn-1.4.0-1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:76986d22e884ab062b1beecdd92379656e9d3789ecc1f9870923c178de55f9fe"}, + {file = "scikit_learn-1.4.0-1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:e22446ad89f1cb7657f0d849dcdc345b48e2d10afa3daf2925fdb740f85b714c"}, + {file = "scikit_learn-1.4.0-1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74812c9eabb265be69d738a8ea8d4884917a59637fcbf88a5f0e9020498bc6b3"}, + {file = "scikit_learn-1.4.0-1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aad2a63e0dd386b92da3270887a29b308af4d7c750d8c4995dfd9a4798691bcc"}, + {file = "scikit_learn-1.4.0-1-cp39-cp39-win_amd64.whl", hash = "sha256:53b9e29177897c37e2ff9d4ba6ca12fdb156e22523e463db05def303f5c72b5c"}, + {file = "scikit_learn-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cb8f044a8f5962613ce1feb4351d66f8d784bd072d36393582f351859b065f7d"}, + {file = "scikit_learn-1.4.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:a6372c90bbf302387792108379f1ec77719c1618d88496d0df30cb8e370b4661"}, + {file = "scikit_learn-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:785ce3c352bf697adfda357c3922c94517a9376002971bc5ea50896144bc8916"}, + {file = "scikit_learn-1.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0aba2a20d89936d6e72d95d05e3bf1db55bca5c5920926ad7b92c34f5e7d3bbe"}, + {file = "scikit_learn-1.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:2bac5d56b992f8f06816f2cd321eb86071c6f6d44bb4b1cb3d626525820d754b"}, + {file = "scikit_learn-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:27ae4b0f1b2c77107c096a7e05b33458354107b47775428d1f11b23e30a73e8a"}, + {file = "scikit_learn-1.4.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5c5c62ffb52c3ffb755eb21fa74cc2cbf2c521bd53f5c04eaa10011dbecf5f80"}, + {file = "scikit_learn-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f0d2018ac6fa055dab65fe8a485967990d33c672d55bc254c56c35287b02fab"}, + {file = "scikit_learn-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91a8918c415c4b4bf1d60c38d32958849a9191c2428ab35d30b78354085c7c7a"}, + {file = "scikit_learn-1.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:80a21de63275f8bcd7877b3e781679d2ff1eddfed515a599f95b2502a3283d42"}, + {file = "scikit_learn-1.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0f33bbafb310c26b81c4d41ecaebdbc1f63498a3f13461d50ed9a2e8f24d28e4"}, + {file = "scikit_learn-1.4.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:8b6ac1442ec714b4911e5aef8afd82c691b5c88b525ea58299d455acc4e8dcec"}, + {file = "scikit_learn-1.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05fc5915b716c6cc60a438c250108e9a9445b522975ed37e416d5ea4f9a63381"}, + {file = "scikit_learn-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:842b7d6989f3c574685e18da6f91223eb32301d0f93903dd399894250835a6f7"}, + {file = "scikit_learn-1.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:88bcb586fdff865372df1bc6be88bb7e6f9e0aa080dab9f54f5cac7eca8e2b6b"}, + {file = "scikit_learn-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f77674647dd31f56cb12ed13ed25b6ed43a056fffef051715022d2ebffd7a7d1"}, + {file = "scikit_learn-1.4.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:833999872e2920ce00f3a50839946bdac7539454e200eb6db54898a41f4bfd43"}, + {file = "scikit_learn-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:970ec697accaef10fb4f51763f3a7b1250f9f0553cf05514d0e94905322a0172"}, + {file = "scikit_learn-1.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:923d778f378ebacca2c672ab1740e5a413e437fb45ab45ab02578f8b689e5d43"}, + {file = "scikit_learn-1.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:1d041bc95006b545b59e458399e3175ab11ca7a03dc9a74a573ac891f5df1489"}, +] + +[package.dependencies] +joblib = ">=1.2.0" +numpy = ">=1.19.5" +scipy = ">=1.6.0" threadpoolctl = ">=2.0.0" [package.extras] -benchmark = ["matplotlib (>=3.1.3)", "memory-profiler (>=0.57.0)", "pandas (>=1.0.5)"] -docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.1.3)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.10.1)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] -examples = ["matplotlib (>=3.1.3)", "pandas (>=1.0.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)"] -tests = ["black (>=23.3.0)", "matplotlib (>=3.1.3)", "mypy (>=1.3)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.0.272)", "scikit-image (>=0.16.2)"] +benchmark = ["matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "pandas (>=1.1.5)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.15.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +examples = ["matplotlib (>=3.3.4)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)"] +tests = ["black (>=23.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.3)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.19.12)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.0.272)", "scikit-image (>=0.17.2)"] [[package]] name = "scipy" -version = "1.11.4" +version = "1.12.0" description = "Fundamental algorithms for scientific computing in Python" optional = false python-versions = ">=3.9" files = [ - {file = "scipy-1.11.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc9a714581f561af0848e6b69947fda0614915f072dfd14142ed1bfe1b806710"}, - {file = "scipy-1.11.4-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:cf00bd2b1b0211888d4dc75656c0412213a8b25e80d73898083f402b50f47e41"}, - {file = "scipy-1.11.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9999c008ccf00e8fbcce1236f85ade5c569d13144f77a1946bef8863e8f6eb4"}, - {file = "scipy-1.11.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:933baf588daa8dc9a92c20a0be32f56d43faf3d1a60ab11b3f08c356430f6e56"}, - {file = "scipy-1.11.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8fce70f39076a5aa62e92e69a7f62349f9574d8405c0a5de6ed3ef72de07f446"}, - {file = "scipy-1.11.4-cp310-cp310-win_amd64.whl", hash = "sha256:6550466fbeec7453d7465e74d4f4b19f905642c89a7525571ee91dd7adabb5a3"}, - {file = "scipy-1.11.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f313b39a7e94f296025e3cffc2c567618174c0b1dde173960cf23808f9fae4be"}, - {file = "scipy-1.11.4-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1b7c3dca977f30a739e0409fb001056484661cb2541a01aba0bb0029f7b68db8"}, - {file = "scipy-1.11.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00150c5eae7b610c32589dda259eacc7c4f1665aedf25d921907f4d08a951b1c"}, - {file = "scipy-1.11.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:530f9ad26440e85766509dbf78edcfe13ffd0ab7fec2560ee5c36ff74d6269ff"}, - {file = "scipy-1.11.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5e347b14fe01003d3b78e196e84bd3f48ffe4c8a7b8a1afbcb8f5505cb710993"}, - {file = "scipy-1.11.4-cp311-cp311-win_amd64.whl", hash = "sha256:acf8ed278cc03f5aff035e69cb511741e0418681d25fbbb86ca65429c4f4d9cd"}, - {file = "scipy-1.11.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:028eccd22e654b3ea01ee63705681ee79933652b2d8f873e7949898dda6d11b6"}, - {file = "scipy-1.11.4-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2c6ff6ef9cc27f9b3db93a6f8b38f97387e6e0591600369a297a50a8e96e835d"}, - {file = "scipy-1.11.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b030c6674b9230d37c5c60ab456e2cf12f6784596d15ce8da9365e70896effc4"}, - {file = "scipy-1.11.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad669df80528aeca5f557712102538f4f37e503f0c5b9541655016dd0932ca79"}, - {file = "scipy-1.11.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ce7fff2e23ab2cc81ff452a9444c215c28e6305f396b2ba88343a567feec9660"}, - {file = "scipy-1.11.4-cp312-cp312-win_amd64.whl", hash = "sha256:36750b7733d960d7994888f0d148d31ea3017ac15eef664194b4ef68d36a4a97"}, - {file = "scipy-1.11.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6e619aba2df228a9b34718efb023966da781e89dd3d21637b27f2e54db0410d7"}, - {file = "scipy-1.11.4-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:f3cd9e7b3c2c1ec26364856f9fbe78695fe631150f94cd1c22228456404cf1ec"}, - {file = "scipy-1.11.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d10e45a6c50211fe256da61a11c34927c68f277e03138777bdebedd933712fea"}, - {file = "scipy-1.11.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91af76a68eeae0064887a48e25c4e616fa519fa0d38602eda7e0f97d65d57937"}, - {file = "scipy-1.11.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6df1468153a31cf55ed5ed39647279beb9cfb5d3f84369453b49e4b8502394fd"}, - {file = "scipy-1.11.4-cp39-cp39-win_amd64.whl", hash = "sha256:ee410e6de8f88fd5cf6eadd73c135020bfbbbdfcd0f6162c36a7638a1ea8cc65"}, - {file = "scipy-1.11.4.tar.gz", hash = "sha256:90a2b78e7f5733b9de748f589f09225013685f9b218275257f8a8168ededaeaa"}, -] - -[package.dependencies] -numpy = ">=1.21.6,<1.28.0" + {file = "scipy-1.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78e4402e140879387187f7f25d91cc592b3501a2e51dfb320f48dfb73565f10b"}, + {file = "scipy-1.12.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5f00ebaf8de24d14b8449981a2842d404152774c1a1d880c901bf454cb8e2a1"}, + {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e53958531a7c695ff66c2e7bb7b79560ffdc562e2051644c5576c39ff8efb563"}, + {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e32847e08da8d895ce09d108a494d9eb78974cf6de23063f93306a3e419960c"}, + {file = "scipy-1.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c1020cad92772bf44b8e4cdabc1df5d87376cb219742549ef69fc9fd86282dd"}, + {file = "scipy-1.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:75ea2a144096b5e39402e2ff53a36fecfd3b960d786b7efd3c180e29c39e53f2"}, + {file = "scipy-1.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:408c68423f9de16cb9e602528be4ce0d6312b05001f3de61fe9ec8b1263cad08"}, + {file = "scipy-1.12.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5adfad5dbf0163397beb4aca679187d24aec085343755fcdbdeb32b3679f254c"}, + {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3003652496f6e7c387b1cf63f4bb720951cfa18907e998ea551e6de51a04467"}, + {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b8066bce124ee5531d12a74b617d9ac0ea59245246410e19bca549656d9a40a"}, + {file = "scipy-1.12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8bee4993817e204d761dba10dbab0774ba5a8612e57e81319ea04d84945375ba"}, + {file = "scipy-1.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:a24024d45ce9a675c1fb8494e8e5244efea1c7a09c60beb1eeb80373d0fecc70"}, + {file = "scipy-1.12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e7e76cc48638228212c747ada851ef355c2bb5e7f939e10952bc504c11f4e372"}, + {file = "scipy-1.12.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:f7ce148dffcd64ade37b2df9315541f9adad6efcaa86866ee7dd5db0c8f041c3"}, + {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c39f92041f490422924dfdb782527a4abddf4707616e07b021de33467f917bc"}, + {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7ebda398f86e56178c2fa94cad15bf457a218a54a35c2a7b4490b9f9cb2676c"}, + {file = "scipy-1.12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:95e5c750d55cf518c398a8240571b0e0782c2d5a703250872f36eaf737751338"}, + {file = "scipy-1.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:e646d8571804a304e1da01040d21577685ce8e2db08ac58e543eaca063453e1c"}, + {file = "scipy-1.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:913d6e7956c3a671de3b05ccb66b11bc293f56bfdef040583a7221d9e22a2e35"}, + {file = "scipy-1.12.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba1b0c7256ad75401c73e4b3cf09d1f176e9bd4248f0d3112170fb2ec4db067"}, + {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:730badef9b827b368f351eacae2e82da414e13cf8bd5051b4bdfd720271a5371"}, + {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6546dc2c11a9df6926afcbdd8a3edec28566e4e785b915e849348c6dd9f3f490"}, + {file = "scipy-1.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:196ebad3a4882081f62a5bf4aeb7326aa34b110e533aab23e4374fcccb0890dc"}, + {file = "scipy-1.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:b360f1b6b2f742781299514e99ff560d1fe9bd1bff2712894b52abe528d1fd1e"}, + {file = "scipy-1.12.0.tar.gz", hash = "sha256:4bf5abab8a36d20193c698b0f1fc282c1d083c94723902c447e5d2f1780936a3"}, +] + +[package.dependencies] +numpy = ">=1.22.4,<1.29.0" [package.extras] dev = ["click", "cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] doc = ["jupytext", "matplotlib (>2)", "myst-nb", "numpydoc", "pooch", "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"] +test = ["asv", "gmpy2", "hypothesis", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "setuptools" -version = "69.0.2" +version = "69.0.3" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.2-py3-none-any.whl", hash = "sha256:1e8fdff6797d3865f37397be788a4e3cba233608e9b509382a2777d25ebde7f2"}, - {file = "setuptools-69.0.2.tar.gz", hash = "sha256:735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6"}, + {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, + {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, ] [package.extras] @@ -4830,20 +4865,18 @@ markdown = ">=3.4" [[package]] name = "sphinxcontrib-applehelp" -version = "1.0.7" +version = "1.0.8" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_applehelp-1.0.7-py3-none-any.whl", hash = "sha256:094c4d56209d1734e7d252f6e0b3ccc090bd52ee56807a5d9315b19c122ab15d"}, - {file = "sphinxcontrib_applehelp-1.0.7.tar.gz", hash = "sha256:39fdc8d762d33b01a7d8f026a3b7d71563ea3b72787d5f00ad8465bd9d6dfbfa"}, + {file = "sphinxcontrib_applehelp-1.0.8-py3-none-any.whl", hash = "sha256:cb61eb0ec1b61f349e5cc36b2028e9e7ca765be05e49641c97241274753067b4"}, + {file = "sphinxcontrib_applehelp-1.0.8.tar.gz", hash = "sha256:c40a4f96f3776c4393d933412053962fac2b84f4c99a7982ba42e09576a70619"}, ] -[package.dependencies] -Sphinx = ">=5" - [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] @@ -4866,38 +4899,34 @@ Sphinx = ">=2.1" [[package]] name = "sphinxcontrib-devhelp" -version = "1.0.5" +version = "1.0.6" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_devhelp-1.0.5-py3-none-any.whl", hash = "sha256:fe8009aed765188f08fcaadbb3ea0d90ce8ae2d76710b7e29ea7d047177dae2f"}, - {file = "sphinxcontrib_devhelp-1.0.5.tar.gz", hash = "sha256:63b41e0d38207ca40ebbeabcf4d8e51f76c03e78cd61abe118cf4435c73d4212"}, + {file = "sphinxcontrib_devhelp-1.0.6-py3-none-any.whl", hash = "sha256:6485d09629944511c893fa11355bda18b742b83a2b181f9a009f7e500595c90f"}, + {file = "sphinxcontrib_devhelp-1.0.6.tar.gz", hash = "sha256:9893fd3f90506bc4b97bdb977ceb8fbd823989f4316b28c3841ec128544372d3"}, ] -[package.dependencies] -Sphinx = ">=5" - [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] name = "sphinxcontrib-htmlhelp" -version = "2.0.4" +version = "2.0.5" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_htmlhelp-2.0.4-py3-none-any.whl", hash = "sha256:8001661c077a73c29beaf4a79968d0726103c5605e27db92b9ebed8bab1359e9"}, - {file = "sphinxcontrib_htmlhelp-2.0.4.tar.gz", hash = "sha256:6c26a118a05b76000738429b724a0568dbde5b72391a688577da08f11891092a"}, + {file = "sphinxcontrib_htmlhelp-2.0.5-py3-none-any.whl", hash = "sha256:393f04f112b4d2f53d93448d4bce35842f62b307ccdc549ec1585e950bc35e04"}, + {file = "sphinxcontrib_htmlhelp-2.0.5.tar.gz", hash = "sha256:0dc87637d5de53dd5eec3a6a01753b1ccf99494bd756aafecd74b4fa9e729015"}, ] -[package.dependencies] -Sphinx = ">=5" - [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] test = ["html5lib", "pytest"] [[package]] @@ -4916,38 +4945,34 @@ test = ["flake8", "mypy", "pytest"] [[package]] name = "sphinxcontrib-qthelp" -version = "1.0.6" +version = "1.0.7" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_qthelp-1.0.6-py3-none-any.whl", hash = "sha256:bf76886ee7470b934e363da7a954ea2825650013d367728588732c7350f49ea4"}, - {file = "sphinxcontrib_qthelp-1.0.6.tar.gz", hash = "sha256:62b9d1a186ab7f5ee3356d906f648cacb7a6bdb94d201ee7adf26db55092982d"}, + {file = "sphinxcontrib_qthelp-1.0.7-py3-none-any.whl", hash = "sha256:e2ae3b5c492d58fcbd73281fbd27e34b8393ec34a073c792642cd8e529288182"}, + {file = "sphinxcontrib_qthelp-1.0.7.tar.gz", hash = "sha256:053dedc38823a80a7209a80860b16b722e9e0209e32fea98c90e4e6624588ed6"}, ] -[package.dependencies] -Sphinx = ">=5" - [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] name = "sphinxcontrib-serializinghtml" -version = "1.1.9" +version = "1.1.10" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_serializinghtml-1.1.9-py3-none-any.whl", hash = "sha256:9b36e503703ff04f20e9675771df105e58aa029cfcbc23b8ed716019b7416ae1"}, - {file = "sphinxcontrib_serializinghtml-1.1.9.tar.gz", hash = "sha256:0c64ff898339e1fac29abd2bf5f11078f3ec413cfe9c046d3120d7ca65530b54"}, + {file = "sphinxcontrib_serializinghtml-1.1.10-py3-none-any.whl", hash = "sha256:326369b8df80a7d2d8d7f99aa5ac577f51ea51556ed974e7716cfd4fca3f6cb7"}, + {file = "sphinxcontrib_serializinghtml-1.1.10.tar.gz", hash = "sha256:93f3f5dc458b91b192fe10c397e324f262cf163d79f3282c158e8436a2c4511f"}, ] -[package.dependencies] -Sphinx = ">=5" - [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] @@ -5140,13 +5165,13 @@ telegram = ["requests"] [[package]] name = "traitlets" -version = "5.14.0" +version = "5.14.1" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" files = [ - {file = "traitlets-5.14.0-py3-none-any.whl", hash = "sha256:f14949d23829023013c47df20b4a76ccd1a85effb786dc060f34de7948361b33"}, - {file = "traitlets-5.14.0.tar.gz", hash = "sha256:fcdaa8ac49c04dfa0ed3ee3384ef6dfdb5d6f3741502be247279407679296772"}, + {file = "traitlets-5.14.1-py3-none-any.whl", hash = "sha256:2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74"}, + {file = "traitlets-5.14.1.tar.gz", hash = "sha256:8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"}, ] [package.extras] @@ -5155,13 +5180,24 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, [[package]] name = "typing-extensions" -version = "4.8.0" +version = "4.9.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, - {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, + {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, + {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, +] + +[[package]] +name = "tzdata" +version = "2023.4" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2023.4-py2.py3-none-any.whl", hash = "sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3"}, + {file = "tzdata-2023.4.tar.gz", hash = "sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9"}, ] [[package]] @@ -5212,13 +5248,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "versioningit" -version = "2.3.0" +version = "3.0.0" description = "Versioning It with your Version In Git" optional = false python-versions = ">=3.7" files = [ - {file = "versioningit-2.3.0-py3-none-any.whl", hash = "sha256:2401d957c587904d481a9a2e87bb64fbad0f40f76c54d42f1c92ed176c751f84"}, - {file = "versioningit-2.3.0.tar.gz", hash = "sha256:1d0d71cfa3c2bc4f8dfb3d4a15c144eb8aa6a09d9da98923d410994a2ef826ea"}, + {file = "versioningit-3.0.0-py3-none-any.whl", hash = "sha256:7cf99a78bf16e67c21a29d520184937835045c191b8105a07897aeff5e9d0f52"}, + {file = "versioningit-3.0.0.tar.gz", hash = "sha256:4e3ce47a6424d850ae9e55e1b134a020e9fcbcb895338f107f2b5c51d34c9c1b"}, ] [package.dependencies] @@ -5243,13 +5279,13 @@ testing = ["coverage (>=5.0)", "pytest", "pytest-cover"] [[package]] name = "wcwidth" -version = "0.2.12" +version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.12-py2.py3-none-any.whl", hash = "sha256:f26ec43d96c8cbfed76a5075dac87680124fa84e0855195a6184da9c187f133c"}, - {file = "wcwidth-0.2.12.tar.gz", hash = "sha256:f01c104efdf57971bcb756f054dd58ddec5204dd15fa31d6503ea57947d97c02"}, + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] [[package]] @@ -5470,19 +5506,19 @@ files = [ [[package]] name = "xarray" -version = "2023.11.0" +version = "2024.1.1" description = "N-D labeled arrays and datasets in Python" optional = false python-versions = ">=3.9" files = [ - {file = "xarray-2023.11.0-py3-none-any.whl", hash = "sha256:933b5101e965120ed58e29525667ab34aafcea1886c236ade72a34d7bb465d9c"}, - {file = "xarray-2023.11.0.tar.gz", hash = "sha256:9a45e10741844b5f948d8e1e768b460df7e90696d18e2eff2c1d47f5d9d50252"}, + {file = "xarray-2024.1.1-py3-none-any.whl", hash = "sha256:0bec81303b088c8df4f075e1579c00cfd7e5069688e4434007f0b8d7df17fc1c"}, + {file = "xarray-2024.1.1.tar.gz", hash = "sha256:a1ba2d87a74892e213c9c83f4a462dbcdf68212320a4e31b34bd789ba7a64e35"}, ] [package.dependencies] -numpy = ">=1.22" -packaging = ">=21.3" -pandas = ">=1.4" +numpy = ">=1.23" +packaging = ">=22" +pandas = ">=1.5" [package.extras] accel = ["bottleneck", "flox", "numbagg", "opt-einsum", "scipy"] @@ -5493,38 +5529,38 @@ viz = ["matplotlib", "nc-time-axis", "seaborn"] [[package]] name = "zhinst-core" -version = "23.10.51605" +version = "23.10.52579" description = "Python API for Zurich Instruments Devices" optional = false python-versions = "*" files = [ - {file = "zhinst_core-23.10.51605-cp310-cp310-macosx_10_11_x86_64.whl", hash = "sha256:13780f35ffd57f81318e1e934171f6386272ac7517ee8880d49d6064e0ceb2db"}, - {file = "zhinst_core-23.10.51605-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d2a1246ec568a757548b41f836d518dbe14d9b77e231f848863d555ca243949e"}, - {file = "zhinst_core-23.10.51605-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:509594b17cc7523be2905a4ec7a6ff5877fbe3b22573b409df9477a244fe41c4"}, - {file = "zhinst_core-23.10.51605-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:fb4168f87163afb725686681552ddd8ae35592336484f8a44e66c4fe924eb939"}, - {file = "zhinst_core-23.10.51605-cp310-cp310-win_amd64.whl", hash = "sha256:635c0b14d136b30a4adf9993c11478d72c53c6dbe403057842d0e2ced4e0f6ed"}, - {file = "zhinst_core-23.10.51605-cp311-cp311-macosx_10_11_x86_64.whl", hash = "sha256:aea35ff7b4013b826470dec1bd72ad55eee6339d5c460e54cbf8e1bdb0f323d5"}, - {file = "zhinst_core-23.10.51605-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3d9edca3dc06229769ec32b9eb4e4784c3b1e8378530b91f3b5661b6d8ff6b1"}, - {file = "zhinst_core-23.10.51605-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:a4c7991f66b92d2c931a625f1442924323d5bb8460be24ef9aa0208ea8f810c7"}, - {file = "zhinst_core-23.10.51605-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:ededd0c8e2e3758fa897374b717df80e670e82687639dc2c1aca886b65c19467"}, - {file = "zhinst_core-23.10.51605-cp311-cp311-win_amd64.whl", hash = "sha256:63ea7e81b8be0ddcecd0e8ee8c4fa374cfb2b7036a0a8bf799a6cd28856ed96c"}, - {file = "zhinst_core-23.10.51605-cp312-cp312-macosx_10_11_x86_64.whl", hash = "sha256:76107c0578e939cf5fe20ac6c71ce306f2ca0ce72157a395a32120ecf004678b"}, - {file = "zhinst_core-23.10.51605-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bc6b9e4b52059c1be8eb7fc58b5d2917d1d45b0eac330299e0ed64d89818784f"}, - {file = "zhinst_core-23.10.51605-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:805c424828cbd90130a0d4624fa95af535ff1b8c5844f1ce89c03aa792778732"}, - {file = "zhinst_core-23.10.51605-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:d6c905db7062d661e92402d54417c593a619aa1f57a6634f97a00931c717c10e"}, - {file = "zhinst_core-23.10.51605-cp312-cp312-win_amd64.whl", hash = "sha256:d128a346853369e13888d7d983a52279cb47271d5e775264f86d86b177e9a17a"}, - {file = "zhinst_core-23.10.51605-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:be65db0380cbba67f85861911385b11f2dfa85fa93df679e355e7e187e94a80d"}, - {file = "zhinst_core-23.10.51605-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:d1f63c08f00e91659c5f644aa3cfef596eecb24a48c1669560c96e7afaaedef5"}, - {file = "zhinst_core-23.10.51605-cp37-cp37m-win_amd64.whl", hash = "sha256:11310840e01b3cdb3f6a2fc9df9d254eb0b171c362510bd3f50d87e2a66197c9"}, - {file = "zhinst_core-23.10.51605-cp38-cp38-macosx_10_11_x86_64.whl", hash = "sha256:e73b210b4e1067a0f36ed926fa58e520419c96a126877e4d6b211da1c8c61199"}, - {file = "zhinst_core-23.10.51605-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:c6e64c0a223fee776e6e139059b8da9bdde2c40eaecf8932fe08abb6fa5de311"}, - {file = "zhinst_core-23.10.51605-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:0ab44131e3e12ed48616f1f00e33c516e9b247eb338f8c5545a15c5e55254dc7"}, - {file = "zhinst_core-23.10.51605-cp38-cp38-win_amd64.whl", hash = "sha256:e49ad0093eb43b583f448ad7eefba6c4a7e0900b56b535d188d14f6fcb11e1dd"}, - {file = "zhinst_core-23.10.51605-cp39-cp39-macosx_10_11_x86_64.whl", hash = "sha256:81270491ae969848b5ac6c9f7ec105f9c7fe5b83d275048a8b343607b171b3a9"}, - {file = "zhinst_core-23.10.51605-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6ee6d8af5f059f933d748408c949d2e94e388abc33a76f39aa7214698bde1e07"}, - {file = "zhinst_core-23.10.51605-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:031da42a0e82b9de43b2af3bdc4563a6f40a8ff469c9c12518479759f6fb4cf3"}, - {file = "zhinst_core-23.10.51605-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:2bc8727c2bda6e2a5f47b040357f9b1a2d56095d5e6afaf847c3c6afbc150850"}, - {file = "zhinst_core-23.10.51605-cp39-cp39-win_amd64.whl", hash = "sha256:a75be4f848036a1ae0cd4cf82156d81aad99f9c2fb2b6eac861a02d6dac78c76"}, + {file = "zhinst_core-23.10.52579-cp310-cp310-macosx_10_11_x86_64.whl", hash = "sha256:b00000f7c0a6a5434dcbf2a60176541fe90e5aedc0e1b2a63c3deb48c6f4d489"}, + {file = "zhinst_core-23.10.52579-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:388ddd41b53b4bb8b0e0a4aaca848bcfcda27aca65f43d0d71a40fa9c73fd27e"}, + {file = "zhinst_core-23.10.52579-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:aeb5bc69ce3dc0d357e10ca3c74a380e1406f251f73b47dd48dfeb55517992ec"}, + {file = "zhinst_core-23.10.52579-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:3f23598bd40ffb2a6b8c87bd1d1c8e83c17376e2c02b3662541f6b5678349d8d"}, + {file = "zhinst_core-23.10.52579-cp310-cp310-win_amd64.whl", hash = "sha256:f65aba7aac69266eb0552285f8cca6ad0156fa4b9b0ce3bd3bafe00b336517ff"}, + {file = "zhinst_core-23.10.52579-cp311-cp311-macosx_10_11_x86_64.whl", hash = "sha256:43d6e9ec5a28488e12dff5bb7580899a6d4149386138709ea750592d0d134da8"}, + {file = "zhinst_core-23.10.52579-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9f962f098cc28b76d6211016f55d1331c8099917844b900fe14cad33fbbb810"}, + {file = "zhinst_core-23.10.52579-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:6fec28e15fe3212a1686b2153d05e4c6c1d977301dde863804136f59b4756857"}, + {file = "zhinst_core-23.10.52579-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:b084b202c06811fc67af38114b6ad59e89a24aa19242b0b3a33126439ad75228"}, + {file = "zhinst_core-23.10.52579-cp311-cp311-win_amd64.whl", hash = "sha256:f8ef7041200859b0017f0ed241843fd30e311ea7cfd427c462028f4b7b3db463"}, + {file = "zhinst_core-23.10.52579-cp312-cp312-macosx_10_11_x86_64.whl", hash = "sha256:ac5cd1c8731676a9d70acd1afdae5d7621af7736c9b39c5910da705cb74dc7f1"}, + {file = "zhinst_core-23.10.52579-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5731096d7ead7e53c82f10477281835d352f92fdb4738d41380a670fb01f0946"}, + {file = "zhinst_core-23.10.52579-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:c19b4f873cba5ce49608579595b527f8007dde3dba092633032613a9fdfba2c0"}, + {file = "zhinst_core-23.10.52579-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:e25155cbc57f60e41460fb130190580f266cb220fdc58a2da631c27ce2e42e7d"}, + {file = "zhinst_core-23.10.52579-cp312-cp312-win_amd64.whl", hash = "sha256:a25bf7eac0b3ce346a44bd2fbe5fe35010b59e07383aded2f1581e806e981568"}, + {file = "zhinst_core-23.10.52579-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5700dd2fe0c0ae384971cc0fb3a4936622deeefeeae78d6caac3ab612b45e49f"}, + {file = "zhinst_core-23.10.52579-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:03a1cf310baa43c005163e04c6c21e59841fa0ee2315b64861f9ca7b5d83d15b"}, + {file = "zhinst_core-23.10.52579-cp37-cp37m-win_amd64.whl", hash = "sha256:d751747319a2d1c40790d10b34be097d0ade9eee596b1aa40b8a49879d4052a6"}, + {file = "zhinst_core-23.10.52579-cp38-cp38-macosx_10_11_x86_64.whl", hash = "sha256:dc20253fc1c6c98671819d7b777152e6375a15eacaf0ae1b872957945931f52e"}, + {file = "zhinst_core-23.10.52579-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0b83a3005c28240cd79aaae759b001d6569b2b1da5d5e9fd25c5e031da9c45f7"}, + {file = "zhinst_core-23.10.52579-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:6eafbac03d7bc616596a6aa35f97a44eebef03c6a71baf4727b2c259d0c3b0c1"}, + {file = "zhinst_core-23.10.52579-cp38-cp38-win_amd64.whl", hash = "sha256:1687f30f3e62e9fd9960e17b361759f68455fbb8459e77f5a4845ac9085ec86d"}, + {file = "zhinst_core-23.10.52579-cp39-cp39-macosx_10_11_x86_64.whl", hash = "sha256:371cb0b82f1d455064b3ca274dfe853c95807fb2ed801e28548d5cc935d1df1d"}, + {file = "zhinst_core-23.10.52579-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:159ca186fd9b8d06251253eca2fd452b4953cd955b7ec6380eaa2378d3f256be"}, + {file = "zhinst_core-23.10.52579-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:4e0f98393b1c113ad49e12bb4e0f8db689e987a93c7018c0dbedcbf95b0216b7"}, + {file = "zhinst_core-23.10.52579-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:3cbbdeee0ec09e14bdd65c03f52dcd1502d8da5a29069d7e1918bad765578f12"}, + {file = "zhinst_core-23.10.52579-cp39-cp39-win_amd64.whl", hash = "sha256:a99b8fbc40bf0e11e6f46527f37df8dfd34652383172b20919f24c48ce65de43"}, ] [package.dependencies] @@ -5590,4 +5626,4 @@ zh = ["laboneq"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.12" -content-hash = "952e2f183cb97eb7b50db8874833ce9f0e9926ec22a43c8ba061a3282b0483f7" +content-hash = "4ff5ea95e5b4130029b60a5142f65d6d2ebe56ce7839691bb07517648c620032" diff --git a/pyproject.toml b/pyproject.toml index 47be6f5e4..a916d591b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "qibolab" -version = "0.1.5" +version = "0.1.6" description = "Quantum hardware module and drivers for Qibo" authors = ["The Qibo team"] license = "Apache License 2.0" @@ -26,7 +26,6 @@ qibo = ">=0.2.3" networkx = "^3.0" numpy = "==1.24.4" more-itertools = "^9.1.0" -pyyaml = "^6.0" qblox-instruments = { version = "0.11.0", optional = true } qcodes = { version = "^0.37.0", optional = true } qcodes_contrib_drivers = { version = "0.18.0", optional = true } diff --git a/src/qibolab/__init__.py b/src/qibolab/__init__.py index 885318857..9afb03f12 100644 --- a/src/qibolab/__init__.py +++ b/src/qibolab/__init__.py @@ -12,6 +12,7 @@ ExecutionParameters, ) from qibolab.platform import Platform +from qibolab.serialize import PLATFORM __version__ = im.version(__package__) @@ -29,13 +30,14 @@ def get_platforms_path(): return Path(profiles) -def create_platform(name, runcard=None): +def create_platform(name, path: Path = None) -> Platform: """A platform for executing quantum algorithms. It consists of a quantum processor QPU and a set of controlling instruments. Args: name (str): name of the platform. Options are 'tiiq', 'qili' and 'icarusq'. + path (pathlib.Path): path with platform serialization Returns: The plaform class. """ @@ -44,17 +46,17 @@ def create_platform(name, runcard=None): return create_dummy(with_couplers=name == "dummy_couplers") - platform = get_platforms_path() / f"{name}.py" + platform = get_platforms_path() / f"{name}" if not platform.exists(): raise_error(ValueError, f"Platform {name} does not exist.") - spec = importlib.util.spec_from_file_location("platform", platform) + spec = importlib.util.spec_from_file_location("platform", platform / PLATFORM) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) - if runcard is None: + if path is None: return module.create() - return module.create(runcard) + return module.create(path) def execute_qasm(circuit: str, platform, runcard=None, initial_state=None, nshots=1000): diff --git a/src/qibolab/dummy.yml b/src/qibolab/dummy.yml deleted file mode 100644 index 909725669..000000000 --- a/src/qibolab/dummy.yml +++ /dev/null @@ -1,272 +0,0 @@ -nqubits: 5 - -settings: {nshots: 1024, relaxation_time: 0} - -qubits: [0, 1, 2, 3, 4] - -couplers: [0, 1, 3, 4] - -topology: - 0: [0, 2] - 1: [1, 2] - 3: [2, 3] - 4: [2, 4] - -instruments: - twpa_pump: {power: 10, frequency: 1000000000.0} - -native_gates: - single_qubit: - 0: - RX: {duration: 40, amplitude: 0.1, shape: Gaussian(5), frequency: 4000000000.0, - relative_start: 0, phase: 0, type: qd} - RX12: {duration: 40, amplitude: 0.005, shape: Gaussian(5), frequency: 4700000000, - relative_start: 0, phase: 0, type: qd} - MZ: {duration: 2000, amplitude: 0.1, shape: 'GaussianSquare(5, 0.75)', frequency: 5200000000.0, - relative_start: 0, phase: 0, type: ro} - 1: - RX: {duration: 40, amplitude: 0.3, shape: 'Drag(5, -0.02)', frequency: 4200000000.0, - relative_start: 0, phase: 0, type: qd} - RX12: {duration: 40, amplitude: 0.0484, shape: 'Drag(5, -0.02)', frequency: 4855663000, - relative_start: 0, phase: 0, type: qd} - MZ: {duration: 2000, amplitude: 0.1, shape: 'GaussianSquare(5, 0.75)', frequency: 4900000000.0, - relative_start: 0, phase: 0, type: ro} - 2: - RX: {duration: 40, amplitude: 0.3, shape: 'Drag(5, -0.02)', frequency: 4500000000.0, - relative_start: 0, phase: 0, type: qd} - RX12: {duration: 40, amplitude: 0.005, shape: Gaussian(5), frequency: 2700000000, - relative_start: 0, phase: 0, type: qd} - MZ: {duration: 2000, amplitude: 0.1, shape: 'GaussianSquare(5, 0.75)', frequency: 6100000000.0, - relative_start: 0, phase: 0, type: ro} - 3: - RX: {duration: 40, amplitude: 0.3, shape: 'Drag(5, -0.02)', frequency: 4150000000.0, - relative_start: 0, phase: 0, type: qd} - RX12: {duration: 40, amplitude: 0.0484, shape: 'Drag(5, -0.02)', frequency: 5855663000, - relative_start: 0, phase: 0, type: qd} - MZ: {duration: 2000, amplitude: 0.1, shape: 'GaussianSquare(5, 0.75)', frequency: 5800000000.0, - relative_start: 0, phase: 0, type: ro} - 4: - RX: {duration: 40, amplitude: 0.3, shape: 'Drag(5, -0.02)', frequency: 4155663000, - relative_start: 0, phase: 0, type: qd} - RX12: {duration: 40, amplitude: 0.0484, shape: 'Drag(5, -0.02)', frequency: 5855663000, - relative_start: 0, phase: 0, type: qd} - MZ: {duration: 2000, amplitude: 0.1, shape: 'GaussianSquare(5, 0.75)', frequency: 5500000000.0, - relative_start: 0, phase: 0, type: ro} - coupler: - 0: - CP: {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', relative_start: 0, type: coupler, coupler: 0} - 1: - CP: {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', relative_start: 0, type: coupler, coupler: 1} - 3: - CP: {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', relative_start: 0, type: coupler, coupler: 3} - 4: - CP: {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', relative_start: 0, type: coupler, coupler: 4} - two_qubit: - 0-2: - CZ: - - {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', qubit: 2, relative_start: 0, - type: qf} - - {type: virtual_z, phase: 0.0, qubit: 0} - - {type: virtual_z, phase: 0.0, qubit: 2} - - {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', coupler: 0, relative_start: 0, - type: coupler} - iSWAP: - - {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', qubit: 2, relative_start: 0, - type: qf} - - {type: virtual_z, phase: 0.0, qubit: 1} - - {type: virtual_z, phase: 0.0, qubit: 2} - - {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', coupler: 0, relative_start: 0, - type: coupler} - 1-2: - CZ: - - {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', qubit: 2, relative_start: 0, - type: qf} - - {type: virtual_z, phase: 0.0, qubit: 1} - - {type: virtual_z, phase: 0.0, qubit: 2} - - {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', coupler: 1, relative_start: 0, - type: coupler} - iSWAP: - - {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', qubit: 2, relative_start: 0, - type: qf} - - {type: virtual_z, phase: 0.0, qubit: 1} - - {type: virtual_z, phase: 0.0, qubit: 2} - - {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', coupler: 1, relative_start: 0, - type: coupler} - 2-3: - CZ: - - {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', qubit: 2, relative_start: 0, - type: qf} - - {type: virtual_z, phase: 0.0, qubit: 3} - - {type: virtual_z, phase: 0.0, qubit: 2} - - {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', coupler: 3, relative_start: 0, - type: coupler} - iSWAP: - - {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', qubit: 2, relative_start: 0, - type: qf} - - {type: virtual_z, phase: 0.0, qubit: 1} - - {type: virtual_z, phase: 0.0, qubit: 2} - - {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', coupler: 3, relative_start: 0, - type: coupler} - CNOT: - - {duration: 40, amplitude: 0.3, shape: 'Drag(5, -0.02)', frequency: 4150000000.0, - relative_start: 0, phase: 0, type: qd, qubit: 2} - - {type: virtual_z, phase: 0.0, qubit: 1} - - {type: virtual_z, phase: 0.0, qubit: 2} - 2-4: - CZ: - - {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', qubit: 2, relative_start: 0, - type: qf} - - {type: virtual_z, phase: 0.0, qubit: 4} - - {type: virtual_z, phase: 0.0, qubit: 2} - - {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', coupler: 4, relative_start: 0, - type: coupler} - iSWAP: - - {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', qubit: 2, relative_start: 0, - type: qf} - - {type: virtual_z, phase: 0.0, qubit: 1} - - {type: virtual_z, phase: 0.0, qubit: 2} - - {duration: 30, amplitude: 0.05, shape: 'GaussianSquare(5, 0.75)', coupler: 4, relative_start: 0, - type: coupler} - -characterization: - single_qubit: - 0: - bare_resonator_frequency: 0 - readout_frequency: 5200000000.0 - drive_frequency: 4000000000.0 - anharmonicity: 0 - sweetspot: 0.0 - asymmetry: 0.0 - crosstalk_matrix: {0: 1} - Ec: 0.0 - Ej: 0.0 - g: 0.0 - assignment_fidelity: 0.0 - peak_voltage: 0 - pi_pulse_amplitude: 0 - T1: 0.0 - T2: 0.0 - T2_spin_echo: 0 - state0_voltage: 0 - state1_voltage: 0 - mean_gnd_states: [0, 1] - mean_exc_states: [1, 0] - threshold: 0.0 - iq_angle: 0.0 - mixer_drive_g: 0.0 - mixer_drive_phi: 0.0 - mixer_readout_g: 0.0 - mixer_readout_phi: 0.0 - 1: - bare_resonator_frequency: 0 - readout_frequency: 4900000000.0 - drive_frequency: 4200000000.0 - anharmonicity: 0 - sweetspot: 0.0 - asymmetry: 0.0 - crosstalk_matrix: {1: 1} - Ec: 0.0 - Ej: 0.0 - g: 0.0 - assignment_fidelity: 0.0 - peak_voltage: 0 - pi_pulse_amplitude: 0 - T1: 0.0 - T2: 0.0 - T2_spin_echo: 0 - state0_voltage: 0 - state1_voltage: 0 - mean_gnd_states: [0.25, 0] - mean_exc_states: [0, 0.25] - threshold: 0.0 - iq_angle: 0.0 - mixer_drive_g: 0.0 - mixer_drive_phi: 0.0 - mixer_readout_g: 0.0 - mixer_readout_phi: 0.0 - 2: - bare_resonator_frequency: 0 - readout_frequency: 6100000000.0 - drive_frequency: 4500000000.0 - anharmonicity: 0 - sweetspot: 0.0 - asymmetry: 0.0 - crosstalk_matrix: {2: 1} - Ec: 0.0 - Ej: 0.0 - g: 0.0 - assignment_fidelity: 0.0 - peak_voltage: 0 - pi_pulse_amplitude: 0 - T1: 0.0 - T2: 0.0 - T2_spin_echo: 0 - state0_voltage: 0 - state1_voltage: 0 - mean_gnd_states: [0.5, 0] - mean_exc_states: [0, 0.5] - threshold: 0.0 - iq_angle: 0.0 - mixer_drive_g: 0.0 - mixer_drive_phi: 0.0 - mixer_readout_g: 0.0 - mixer_readout_phi: 0.0 - 3: - bare_resonator_frequency: 0 - readout_frequency: 5800000000.0 - drive_frequency: 4150000000.0 - anharmonicity: 0 - sweetspot: 0.0 - asymmetry: 0.0 - crosstalk_matrix: {3: 1} - Ec: 0.0 - Ej: 0.0 - g: 0.0 - assignment_fidelity: 0.0 - peak_voltage: 0 - pi_pulse_amplitude: 0 - T1: 0.0 - T2: 0.0 - T2_spin_echo: 0 - state0_voltage: 0 - state1_voltage: 0 - mean_gnd_states: [0.75, 0] - mean_exc_states: [0, 0.75] - threshold: 0.0 - iq_angle: 0.0 - mixer_drive_g: 0.0 - mixer_drive_phi: 0.0 - mixer_readout_g: 0.0 - mixer_readout_phi: 0.0 - 4: - bare_resonator_frequency: 0 - readout_frequency: 5500000000.0 - drive_frequency: 4100000000.0 - anharmonicity: 0 - sweetspot: 0.0 - asymmetry: 0.0 - crosstalk_matrix: {4: 1} - Ec: 0.0 - Ej: 0.0 - g: 0.0 - assignment_fidelity: 0.0 - peak_voltage: 0 - pi_pulse_amplitude: 0 - T1: 0.0 - T2: 0.0 - T2_spin_echo: 0 - state0_voltage: 0 - state1_voltage: 0 - mean_gnd_states: [1, 0] - mean_exc_states: [0, 1] - threshold: 0.0 - iq_angle: 0.0 - mixer_drive_g: 0.0 - mixer_drive_phi: 0.0 - mixer_readout_g: 0.0 - mixer_readout_phi: 0.0 - coupler: - 0: {sweetspot: 0.0} - 1: {sweetspot: 0.0} - 3: {sweetspot: 0.0} - 4: {sweetspot: 0.0} diff --git a/src/qibolab/dummy/__init__.py b/src/qibolab/dummy/__init__.py new file mode 100644 index 000000000..137e075db --- /dev/null +++ b/src/qibolab/dummy/__init__.py @@ -0,0 +1 @@ +from .platform import create_dummy diff --git a/src/qibolab/dummy/kernels.npz b/src/qibolab/dummy/kernels.npz new file mode 100644 index 000000000..15cb0ecb3 Binary files /dev/null and b/src/qibolab/dummy/kernels.npz differ diff --git a/src/qibolab/dummy/parameters.json b/src/qibolab/dummy/parameters.json new file mode 100644 index 000000000..4da772817 --- /dev/null +++ b/src/qibolab/dummy/parameters.json @@ -0,0 +1,689 @@ +{ + "nqubits": 5, + "settings": { + "nshots": 1024, + "relaxation_time": 0 + }, + "qubits": [ + 0, + 1, + 2, + 3, + 4 + ], + "couplers": [ + 0, + 1, + 3, + 4 + ], + "topology": { + "0": [ + 0, + 2 + ], + "1": [ + 1, + 2 + ], + "3": [ + 2, + 3 + ], + "4": [ + 2, + 4 + ] + }, + "instruments": { + "twpa_pump": { + "power": 10, + "frequency": 1000000000.0 + } + }, + "native_gates": { + "single_qubit": { + "0": { + "RX": { + "duration": 40, + "amplitude": 0.1, + "shape": "Gaussian(5)", + "frequency": 4000000000.0, + "relative_start": 0, + "phase": 0, + "type": "qd" + }, + "RX12": { + "duration": 40, + "amplitude": 0.005, + "shape": "Gaussian(5)", + "frequency": 4700000000, + "relative_start": 0, + "phase": 0, + "type": "qd" + }, + "MZ": { + "duration": 2000, + "amplitude": 0.1, + "shape": "GaussianSquare(5, 0.75)", + "frequency": 5200000000.0, + "relative_start": 0, + "phase": 0, + "type": "ro" + } + }, + "1": { + "RX": { + "duration": 40, + "amplitude": 0.3, + "shape": "Drag(5, -0.02)", + "frequency": 4200000000.0, + "relative_start": 0, + "phase": 0, + "type": "qd" + }, + "RX12": { + "duration": 40, + "amplitude": 0.0484, + "shape": "Drag(5, -0.02)", + "frequency": 4855663000, + "relative_start": 0, + "phase": 0, + "type": "qd" + }, + "MZ": { + "duration": 2000, + "amplitude": 0.1, + "shape": "GaussianSquare(5, 0.75)", + "frequency": 4900000000.0, + "relative_start": 0, + "phase": 0, + "type": "ro" + } + }, + "2": { + "RX": { + "duration": 40, + "amplitude": 0.3, + "shape": "Drag(5, -0.02)", + "frequency": 4500000000.0, + "relative_start": 0, + "phase": 0, + "type": "qd" + }, + "RX12": { + "duration": 40, + "amplitude": 0.005, + "shape": "Gaussian(5)", + "frequency": 2700000000, + "relative_start": 0, + "phase": 0, + "type": "qd" + }, + "MZ": { + "duration": 2000, + "amplitude": 0.1, + "shape": "GaussianSquare(5, 0.75)", + "frequency": 6100000000.0, + "relative_start": 0, + "phase": 0, + "type": "ro" + } + }, + "3": { + "RX": { + "duration": 40, + "amplitude": 0.3, + "shape": "Drag(5, -0.02)", + "frequency": 4150000000.0, + "relative_start": 0, + "phase": 0, + "type": "qd" + }, + "RX12": { + "duration": 40, + "amplitude": 0.0484, + "shape": "Drag(5, -0.02)", + "frequency": 5855663000, + "relative_start": 0, + "phase": 0, + "type": "qd" + }, + "MZ": { + "duration": 2000, + "amplitude": 0.1, + "shape": "GaussianSquare(5, 0.75)", + "frequency": 5800000000.0, + "relative_start": 0, + "phase": 0, + "type": "ro" + } + }, + "4": { + "RX": { + "duration": 40, + "amplitude": 0.3, + "shape": "Drag(5, -0.02)", + "frequency": 4155663000, + "relative_start": 0, + "phase": 0, + "type": "qd" + }, + "RX12": { + "duration": 40, + "amplitude": 0.0484, + "shape": "Drag(5, -0.02)", + "frequency": 5855663000, + "relative_start": 0, + "phase": 0, + "type": "qd" + }, + "MZ": { + "duration": 2000, + "amplitude": 0.1, + "shape": "GaussianSquare(5, 0.75)", + "frequency": 5500000000.0, + "relative_start": 0, + "phase": 0, + "type": "ro" + } + } + }, + "coupler": { + "0": { + "CP": { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "relative_start": 0, + "type": "coupler", + "coupler": 0 + } + }, + "1": { + "CP": { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "relative_start": 0, + "type": "coupler", + "coupler": 1 + } + }, + "3": { + "CP": { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "relative_start": 0, + "type": "coupler", + "coupler": 3 + } + }, + "4": { + "CP": { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "relative_start": 0, + "type": "coupler", + "coupler": 4 + } + } + }, + "two_qubit": { + "0-2": { + "CZ": [ + { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "qubit": 2, + "relative_start": 0, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 0 + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 2 + }, + { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "coupler": 0, + "relative_start": 0, + "type": "coupler" + } + ], + "iSWAP": [ + { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "qubit": 2, + "relative_start": 0, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 1 + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 2 + }, + { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "coupler": 0, + "relative_start": 0, + "type": "coupler" + } + ] + }, + "1-2": { + "CZ": [ + { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "qubit": 2, + "relative_start": 0, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 1 + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 2 + }, + { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "coupler": 1, + "relative_start": 0, + "type": "coupler" + } + ], + "iSWAP": [ + { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "qubit": 2, + "relative_start": 0, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 1 + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 2 + }, + { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "coupler": 1, + "relative_start": 0, + "type": "coupler" + } + ] + }, + "2-3": { + "CZ": [ + { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "qubit": 2, + "relative_start": 0, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 3 + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 2 + }, + { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "coupler": 3, + "relative_start": 0, + "type": "coupler" + } + ], + "iSWAP": [ + { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "qubit": 2, + "relative_start": 0, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 1 + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 2 + }, + { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "coupler": 3, + "relative_start": 0, + "type": "coupler" + } + ], + "CNOT": [ + { + "duration": 40, + "amplitude": 0.3, + "shape": "Drag(5, -0.02)", + "frequency": 4150000000.0, + "relative_start": 0, + "phase": 0, + "type": "qd", + "qubit": 2 + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 1 + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 2 + } + ] + }, + "2-4": { + "CZ": [ + { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "qubit": 2, + "relative_start": 0, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 4 + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 2 + }, + { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "coupler": 4, + "relative_start": 0, + "type": "coupler" + } + ], + "iSWAP": [ + { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "qubit": 2, + "relative_start": 0, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 1 + }, + { + "type": "virtual_z", + "phase": 0.0, + "qubit": 2 + }, + { + "duration": 30, + "amplitude": 0.05, + "shape": "GaussianSquare(5, 0.75)", + "coupler": 4, + "relative_start": 0, + "type": "coupler" + } + ] + } + } + }, + "characterization": { + "single_qubit": { + "0": { + "bare_resonator_frequency": 0, + "readout_frequency": 5200000000.0, + "drive_frequency": 4000000000.0, + "anharmonicity": 0, + "sweetspot": 0.0, + "asymmetry": 0.0, + "crosstalk_matrix": { + "0": 1 + }, + "Ec": 0.0, + "Ej": 0.0, + "g": 0.0, + "assignment_fidelity": 0.0, + "peak_voltage": 0, + "pi_pulse_amplitude": 0, + "T1": 0.0, + "T2": 0.0, + "T2_spin_echo": 0, + "state0_voltage": 0, + "state1_voltage": 0, + "mean_gnd_states": [ + 0, + 1 + ], + "mean_exc_states": [ + 1, + 0 + ], + "threshold": 0.0, + "iq_angle": 0.0, + "mixer_drive_g": 0.0, + "mixer_drive_phi": 0.0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0.0 + }, + "1": { + "bare_resonator_frequency": 0, + "readout_frequency": 4900000000.0, + "drive_frequency": 4200000000.0, + "anharmonicity": 0, + "sweetspot": 0.0, + "asymmetry": 0.0, + "crosstalk_matrix": { + "1": 1 + }, + "Ec": 0.0, + "Ej": 0.0, + "g": 0.0, + "assignment_fidelity": 0.0, + "peak_voltage": 0, + "pi_pulse_amplitude": 0, + "T1": 0.0, + "T2": 0.0, + "T2_spin_echo": 0, + "state0_voltage": 0, + "state1_voltage": 0, + "mean_gnd_states": [ + 0.25, + 0 + ], + "mean_exc_states": [ + 0, + 0.25 + ], + "threshold": 0.0, + "iq_angle": 0.0, + "mixer_drive_g": 0.0, + "mixer_drive_phi": 0.0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0.0 + }, + "2": { + "bare_resonator_frequency": 0, + "readout_frequency": 6100000000.0, + "drive_frequency": 4500000000.0, + "anharmonicity": 0, + "sweetspot": 0.0, + "asymmetry": 0.0, + "crosstalk_matrix": { + "2": 1 + }, + "Ec": 0.0, + "Ej": 0.0, + "g": 0.0, + "assignment_fidelity": 0.0, + "peak_voltage": 0, + "pi_pulse_amplitude": 0, + "T1": 0.0, + "T2": 0.0, + "T2_spin_echo": 0, + "state0_voltage": 0, + "state1_voltage": 0, + "mean_gnd_states": [ + 0.5, + 0 + ], + "mean_exc_states": [ + 0, + 0.5 + ], + "threshold": 0.0, + "iq_angle": 0.0, + "mixer_drive_g": 0.0, + "mixer_drive_phi": 0.0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0.0 + }, + "3": { + "bare_resonator_frequency": 0, + "readout_frequency": 5800000000.0, + "drive_frequency": 4150000000.0, + "anharmonicity": 0, + "sweetspot": 0.0, + "asymmetry": 0.0, + "crosstalk_matrix": { + "3": 1 + }, + "Ec": 0.0, + "Ej": 0.0, + "g": 0.0, + "assignment_fidelity": 0.0, + "peak_voltage": 0, + "pi_pulse_amplitude": 0, + "T1": 0.0, + "T2": 0.0, + "T2_spin_echo": 0, + "state0_voltage": 0, + "state1_voltage": 0, + "mean_gnd_states": [ + 0.75, + 0 + ], + "mean_exc_states": [ + 0, + 0.75 + ], + "threshold": 0.0, + "iq_angle": 0.0, + "mixer_drive_g": 0.0, + "mixer_drive_phi": 0.0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0.0 + }, + "4": { + "bare_resonator_frequency": 0, + "readout_frequency": 5500000000.0, + "drive_frequency": 4100000000.0, + "anharmonicity": 0, + "sweetspot": 0.0, + "asymmetry": 0.0, + "crosstalk_matrix": { + "4": 1 + }, + "Ec": 0.0, + "Ej": 0.0, + "g": 0.0, + "assignment_fidelity": 0.0, + "peak_voltage": 0, + "pi_pulse_amplitude": 0, + "T1": 0.0, + "T2": 0.0, + "T2_spin_echo": 0, + "state0_voltage": 0, + "state1_voltage": 0, + "mean_gnd_states": [ + 1, + 0 + ], + "mean_exc_states": [ + 0, + 1 + ], + "threshold": 0.0, + "iq_angle": 0.0, + "mixer_drive_g": 0.0, + "mixer_drive_phi": 0.0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0.0 + } + }, + "coupler": { + "0": { + "sweetspot": 0.0 + }, + "1": { + "sweetspot": 0.0 + }, + "3": { + "sweetspot": 0.0 + }, + "4": { + "sweetspot": 0.0 + } + } + } +} diff --git a/src/qibolab/dummy.py b/src/qibolab/dummy/platform.py similarity index 92% rename from src/qibolab/dummy.py rename to src/qibolab/dummy/platform.py index fef0b6b10..05e91fcd0 100644 --- a/src/qibolab/dummy.py +++ b/src/qibolab/dummy/platform.py @@ -3,9 +3,12 @@ from qibolab.channels import Channel, ChannelMap from qibolab.instruments.dummy import DummyInstrument, DummyLocalOscillator +from qibolab.kernels import Kernels from qibolab.platform import Platform from qibolab.serialize import load_qubits, load_runcard, load_settings +FOLDER = pathlib.Path(__file__).parent + def remove_couplers(runcard): """Remove coupler sections from runcard to create a dummy platform without @@ -21,11 +24,6 @@ def remove_couplers(runcard): return runcard -def load_dummy_runcard(): - """Loads the runcard YAML of the dummy platform.""" - return load_runcard(pathlib.Path(__file__).parent / "dummy.yml") - - def create_dummy(with_couplers: bool = True): """Create a dummy platform using the dummy instrument. @@ -40,7 +38,9 @@ def create_dummy(with_couplers: bool = True): twpa_pump.frequency = 1e9 twpa_pump.power = 10 - runcard = load_dummy_runcard() + runcard = load_runcard(FOLDER) + kernels = Kernels.load(FOLDER) + if not with_couplers: runcard = remove_couplers(runcard) @@ -64,7 +64,7 @@ def create_dummy(with_couplers: bool = True): channels["readout"].attenuation = 0 channels["twpa"].local_oscillator = twpa_pump - qubits, couplers, pairs = load_qubits(runcard) + qubits, couplers, pairs = load_qubits(runcard, kernels) settings = load_settings(runcard) # map channels to qubits diff --git a/src/qibolab/instruments/abstract.py b/src/qibolab/instruments/abstract.py index 05e1811bc..a181a3ca2 100644 --- a/src/qibolab/instruments/abstract.py +++ b/src/qibolab/instruments/abstract.py @@ -9,12 +9,12 @@ @dataclass class InstrumentSettings: - """Container of settings that are dumped in the platform runcard yaml.""" + """Container of settings that are dumped in the platform runcard json.""" def dump(self): """Dictionary containing the settings. - Useful when dumping the instruments to the runcard YAML. + Useful when dumping the instruments to the runcard JSON. """ return asdict(self) diff --git a/src/qibolab/instruments/icarusq.py b/src/qibolab/instruments/icarusq.py index bde1de050..ac4e68176 100644 --- a/src/qibolab/instruments/icarusq.py +++ b/src/qibolab/instruments/icarusq.py @@ -1,174 +1,8 @@ -from bisect import bisect -from typing import List +import urllib3 +from icarusq_rfsoc_driver.quicsyn import QuicSyn as LO_QuicSyn # pylint: disable=E0401 -import numpy as np -from qibo.config import raise_error - -from qibolab.instruments.abstract import Instrument, InstrumentException -from qibolab.pulses import Pulse - - -class TektronixAWG5204(Instrument): - def __init__(self, name, address): - super().__init__(name, address) - # Phase offset for each channel for IQ sideband optimziation - self.channel_phase: "list[float]" = [] - # Time buffer at the start and end of the pulse sequence to ensure that the minimum samples of the instrument are reached - self.pulse_buffer: float = 1e-6 - self.device = None - self.sample_rate = None - - rw_property_wrapper = lambda parameter: property( - lambda self: self.device.get(parameter), - lambda self, x: self.device.set(parameter, x), - ) - rw_property_wrapper("sample_rate") - - def connect(self): - if not self.is_connected: - from qcodes.instrument_drivers.tektronix.AWG70000A import AWG70000A - - try: - self.device = AWG70000A(self.name, self.address, num_channels=4) - except Exception as exc: - raise InstrumentException(self, str(exc)) - self.is_connected = True - else: - raise_error( - Exception, "There is an open connection to the instrument already" - ) - - def setup(self, **kwargs): - if self.is_connected: - # Set AWG to external reference, 10 MHz - self.device.write("CLOC:SOUR EFIX") - # Set external trigger to 1V - self.device.write("TRIG:LEV 1") - self.sample_rate = kwargs.pop("sample_rate") - - resolution = kwargs.pop("resolution") - amplitude = kwargs.pop("amplitude") - offset = kwargs.pop("offset") - - for idx, channel in enumerate(range(1, self.device.num_channels + 1)): - awg_ch = getattr(self.device, f"ch{channel}") - awg_ch.awg_amplitude(amplitude[idx]) - awg_ch.resolution(resolution) - self.device.write( - f"SOURCE{channel}:VOLTAGE:LEVEL:IMMEDIATE:OFFSET {offset[idx]}" - ) - - self.__dict__.update(kwargs) - else: - raise_error(Exception, "There is no connection to the instrument") - - def generate_waveforms_from_pulse(self, pulse: Pulse, time_array: np.ndarray): - """Generates a numpy array based on the pulse parameters. - - Arguments: - pulse (qibolab.pulses.Pulse | qibolab.pulses.ReadoutPulse): Pulse to be compiled - time_array (numpy.ndarray): Array corresponding to the global time - """ - i_ch, q_ch = pulse.channel - - i = pulse.envelope_i * np.cos( - 2 * np.pi * pulse.frequency * time_array - + pulse.phase - + self.channel_phase[i_ch] - ) - q = ( - -1 - * pulse.envelope_i - * np.sin( - 2 * np.pi * pulse.frequency * time_array - + pulse.phase - + self.channel_phase[q_ch] - ) - ) - return i, q - - def translate(self, sequence: List[Pulse], nshots=None): - """Translates the pulse sequence into a numpy array. - - Arguments: - sequence (qibolab.pulses.Pulse[]): Array containing pulses to be fired on this instrument. - nshots (int): Number of repetitions. - """ - - # First create np arrays for each channel - start = min(pulse.start for pulse in sequence) - end = max(pulse.start + pulse.duration for pulse in sequence) - time_array = np.arange( - start * 1e-9 - self.pulse_buffer, - end * 1e-9 + self.pulse_buffer, - 1 / self.sample_rate, - ) - waveform_arrays = np.zeros((self.device.num_channels, len(time_array))) - - for pulse in sequence: - start_index = bisect(time_array, pulse.start * 1e-9) - end_index = bisect(time_array, (pulse.start + pulse.duration) * 1e-9) - i_ch, q_ch = pulse.channel - i, q = self.generate_waveforms_from_pulse( - pulse, time_array[start_index:end_index] - ) - waveform_arrays[i_ch, start_index:end_index] += i - waveform_arrays[q_ch, start_index:end_index] += q - - return waveform_arrays - - def upload(self, waveform: np.ndarray): - """Uploads a nchannels X nsamples array to the AWG, load it into memory - and assign it to the channels for playback.""" - - # TODO: Add additional check to ensure all waveforms are of the same size? Should be caught by qcodes driver anyway. - if len(waveform) != self.device.num_channels: - raise_error(Exception, "Invalid waveform given") - - # Clear existing waveforms in memory - self.device.write("WLIS:WAV:DEL ALL") - - # Upload waveform, load into memory and assign to each channel - for idx, channel in enumerate(range(1, self.device.num_channels + 1)): - awg_ch = getattr(self.device, f"ch{channel}") - wfmx = self.device.makeWFMXFile(waveform[idx], awg_ch.awg_amplitude()) - self.device.sendWFMXFile(wfmx, f"ch{channel}.wfmx") - self.device.loadWFMXFile(f"ch{channel}.wfmx") - self.device.write(f'SOURce{channel}:CASSet:WAVeform "ch{channel}"') - - def start(self): - pass - - def play_sequence(self): - for channel in range(1, self.device.num_channels + 1): - awg_ch = getattr(self.device, f"ch{channel}") - awg_ch.state(1) - self.device.write(f"SOURce{channel}:RMODe TRIGgered") - self.device.write(f"SOURce{channel}:TINPut ATR") - self.device.play() - self.device.wait_for_operation_to_complete() - - def stop(self): - self.device.stop() - for channel in range(1, self.device.num_channels + 1): - awg_ch = getattr(self.device, f"ch{channel}") - awg_ch.state(0) - self.device.wait_for_operation_to_complete() - - def disconnect(self): - if self.is_connected: - self.device.stop() - self.device.close() - self.is_connected = False - - def __del__(self): - self.disconnect() - - def close(self): - if self.is_connected: - self.stop() - self.device.close() - self.is_connected = False +from qibolab.instruments.abstract import Instrument +from qibolab.instruments.oscillator import LocalOscillator class MCAttenuator(Instrument): @@ -177,181 +11,29 @@ class MCAttenuator(Instrument): def connect(self): pass - def setup(self, attenuation: float, **kwargs): - """Assigns the attenuation level on the attenuator. - - Arguments: - attenuation(float - ): Attenuation setting in dB. Ranges from 0 to 35. - """ - import urllib3 + @property + def attenuation(self): + http = urllib3.PoolManager() + res = http.request("GET", f"http://{self.address}/GETATT?") + return float(res._body) + @attenuation.setter + def attenuation(self, attenuation: float): http = urllib3.PoolManager() http.request("GET", f"http://{self.address}/SETATT={attenuation}") - def start(self): - pass - - def stop(self): + def setup(self): pass def disconnect(self): pass -class QuicSyn(Instrument): +class QuicSyn(LocalOscillator): """Driver for the National Instrument QuicSyn Lite local oscillator.""" - def connect(self): - if not self.is_connected: - import pyvisa as visa - - rm = visa.ResourceManager() - try: - self.device = rm.open_resource(self.address) - except Exception as exc: - raise InstrumentException(self, str(exc)) - self.is_connected = True - - def setup(self, frequency: float, **kwargs): - """Sets the frequency in Hz.""" - if self.is_connected: - self.device.write("0601") - self.frequency(frequency) - - def frequency(self, frequency): - self.device.write("FREQ {:f}Hz".format(frequency)) - - def start(self): - """Starts the instrument.""" - self.device.write("0F01") - - def stop(self): - """Stops the instrument.""" - self.device.write("0F00") + def create(self): + return LO_QuicSyn(self.name, self.address) def __del__(self): self.disconnect() - - def disconnect(self): - if self.is_connected: - self.stop() - self.device.close() - self.is_connected = False - - -class AlazarADC(Instrument): - """Driver for the AlazarTech ATS9371 ADC.""" - - def __init__(self, name, address): - super().__init__(name, address) - self.controller = None - self.device = None - - def connect(self): - if not self.is_connected: - from qcodes.instrument_drivers.AlazarTech.AlazarADC import ( # pylint: disable=E0401, E0611 - ADCController, - ) - from qcodes.instrument_drivers.AlazarTech.ATS9371 import ( # pylint: disable=E0401, E0611 - AlazarTech_ATS9371, - ) - - try: - self.device = AlazarTech_ATS9371(self.address) - self.controller = ADCController(self.name, self.address) - except Exception as exc: - raise InstrumentException(self, str(exc)) - self.is_connected = True - - def setup(self, trigger_volts, **kwargs): - """Sets the frequency in Hz.""" - if self.is_connected: - input_range_volts = 2.5 - trigger_level_code = int(128 + 127 * trigger_volts / input_range_volts) - with self.device.syncing(): - self.device.clock_source("EXTERNAL_CLOCK_10MHz_REF") - self.device.external_sample_rate(1_000_000_000) - self.device.clock_edge("CLOCK_EDGE_RISING") - self.device.decimation(1) - self.device.coupling1("DC") - self.device.coupling2("DC") - self.device.channel_range1(0.02) - self.device.channel_range2(0.02) - self.device.impedance1(50) - self.device.impedance2(50) - self.device.bwlimit1("DISABLED") - self.device.bwlimit2("DISABLED") - self.device.trigger_operation("TRIG_ENGINE_OP_J") - self.device.trigger_engine1("TRIG_ENGINE_J") - self.device.trigger_source1("EXTERNAL") - self.device.trigger_slope1("TRIG_SLOPE_POSITIVE") - self.device.trigger_level1(trigger_level_code) - self.device.trigger_engine2("TRIG_ENGINE_K") - self.device.trigger_source2("DISABLE") - self.device.trigger_slope2("TRIG_SLOPE_POSITIVE") - self.device.trigger_level2(128) - self.device.external_trigger_coupling("DC") - self.device.external_trigger_range("ETR_2V5") - self.device.trigger_delay(0) - self.device.timeout_ticks(0) - - samples = kwargs.pop("samples") - self.controller.samples = samples - self.__dict__.update(kwargs) - - def arm(self, nshots, readout_start): - with self.device.syncing(): - self.device.trigger_delay( - int(int((readout_start * 1e-9 + 4e-6) / 1e-9 / 8) * 8) - ) - self.controller.arm(nshots) - - def play_sequence_and_acquire(self): - """This method performs an acquisition, which is the get_cmd for the - acquisiion parameter of this instrument :return:""" - raw = self.device.acquire( - acquisition_controller=self.controller, **self.controller.acquisitionkwargs - ) - return self.process_result(raw) - - def process_result(self, readout_frequency=100e6, readout_channels=[0, 1]): - """Returns the processed signal result from the ADC. - - Arguments: - readout_frequency (float): Frequency to be used for signal processing. - readout_channels (int[]): Channels to be used for signal processing. - - Returns: - ampl (float): Amplitude of the processed signal. - phase (float): Phase shift of the processed signal in degrees. - it (float): I component of the processed signal. - qt (float): Q component of the processed signal. - """ - - input_vec_I = self.device._processed_data[readout_channels[0]] - input_vec_Q = self.device._processed_data[readout_channels[1]] - it = 0 - qt = 0 - for i in range(self.device.samples_per_record): - it += input_vec_I[i] * np.cos( - 2 * np.pi * readout_frequency * self.device.time_array[i] - ) - qt += input_vec_Q[i] * np.cos( - 2 * np.pi * readout_frequency * self.device.time_array[i] - ) - phase = np.arctan2(qt, it) - ampl = np.sqrt(it**2 + qt**2) - - return ampl, phase, it, qt - - def start(self): - """Starts the instrument.""" - - def stop(self): - """Stops the instrument.""" - - def disconnect(self): - if self.is_connected: - self.device.close() - self.controller.close() diff --git a/src/qibolab/instruments/icarusqfpga.py b/src/qibolab/instruments/icarusqfpga.py index fc5623c5a..b16cb8397 100644 --- a/src/qibolab/instruments/icarusqfpga.py +++ b/src/qibolab/instruments/icarusqfpga.py @@ -1,259 +1,423 @@ -import bisect -import socket -import struct -import threading -import time -from typing import List +import operator +from dataclasses import dataclass +from typing import Dict, List, Union import numpy as np +from icarusq_rfsoc_driver import IcarusQRFSoC # pylint: disable=E0401 +from icarusq_rfsoc_driver.rfsoc_settings import TRIGGER_MODE # pylint: disable=E0401 +from qibo.config import log + +from qibolab.execution_parameters import ( + AcquisitionType, + AveragingMode, + ExecutionParameters, +) +from qibolab.instruments.abstract import Controller +from qibolab.instruments.port import Port +from qibolab.pulses import Pulse, PulseSequence, PulseType +from qibolab.qubits import Qubit, QubitId +from qibolab.result import IntegratedResults, SampleResults +from qibolab.sweeper import Parameter, Sweeper, SweeperType + +DAC_SAMPLNG_RATE_MHZ = 5898.24 +ADC_SAMPLNG_RATE_MHZ = 1966.08 +ICARUSQ_PORT = 8080 + + +@dataclass +class RFSOCPort(Port): + name: str + dac: int = None + adc: int = None + + +class RFSOC(Controller): + """Driver for the IcarusQ RFSoC socket-based implementation.""" -from qibolab.instruments.abstract import Instrument -from qibolab.pulses import Pulse - - -class PulseBlaster(Instrument): - """Driver for the 24-pin PulseBlaster TTL signal generator.""" + PortType = RFSOCPort - def __init__(self, name, address, port=5000): + def __init__( + self, + name, + address, + delay_samples_offset_dac: int = 0, + delay_samples_offset_adc: int = 0, + ): super().__init__(name, address) - self.port = port - self._pins = None - - def setup(self, holdtime_ns, pins=None, **kwargs): - """Setup the PulseBlaster. - - Arguments: - holdtime_ns (int): TTL pulse length and delay between TTL pulses. The experiment repetition frequency is 1 / (2 * holdtime_ns). - pins (int): Pins to trigger in hex, defaults to all pins. - """ - if pins is None: - pins = list(range(24)) - self._pins = self._hexify(pins) - self._holdtime = holdtime_ns - - def arm(self, nshots, readout_start=0): - """Arm the PulseBlaster for playback. Sends a signal to the instrument - to setup the pulse sequence and repetition. - - Arguments: - nshots (int): Number of TTL triggers to repeat. - """ - payload = f"setup,{self._pins},{nshots},{self._holdtime}" - return self._send(payload.encode("utf-8"), True) - - def fire(self): - """Starts the PulseBlaster.""" - self._send(b"fire") - - def start(self): - pass - - def stop(self): - self._send(b"stop") - - def status(self): - return self._send(b"status", True) - def _send(self, payload, retval=False): - with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: - s.connect((self.address, self.port)) - s.sendall(payload) + self.channel_delay_offset_dac = delay_samples_offset_dac + self.channel_delay_offset_adc = delay_samples_offset_adc - if retval: - return s.recv(1024).decode("utf-8") + def connect(self): + self.device = IcarusQRFSoC(self.address, ICARUSQ_PORT) - def play_sequence(self): - self.fire() + for dac in range(self.device.dac_nchannels): + self.device.dac[dac].delay = self.channel_delay_offset_dac + for adc in range(self.device.adc_nchannels): + self.device.adc[adc].delay = self.channel_delay_offset_adc - def connect(self): - pass + self.device.set_adc_trigger_mode(TRIGGER_MODE.SLAVE) + ver = self.device.get_server_version() + log.info(f"Connected to {self.name}, version: {ver}") - def disconnect(self): + def setup(self): pass - @staticmethod - def _hexify(pins): - return int( - "".join(["1" if i in set(pins) else "0" for i in reversed(range(24))]), 2 - ) + @property + def sampling_rate(self): + return self.device.dac_sampling_rate / 1e3 # MHz to GHz - -class IcarusQFPGA(Instrument): - """Driver for the IcarusQ RFSoC socket-based implementation.""" - - def __init__(self, name, address, port=8080): - super().__init__(name, address) - self._dac_sample_size = 65536 - self._adc_sample_size = 65536 - self._dac_nchannels = 16 - self._adc_nchannels = 16 - self._dac_sampling_rate = 5898240000 - self._adc_sampling_rate = 1966080000 - self._nshots = 0 - - self.port = port - self._thread = None - self._buffer = None - self._adcs_to_read = None - self.nshots = None - - def setup(self, dac_sampling_rate, adcs_to_read, **kwargs): - """Sets the sampling rate of the RFSoC. May need to be repeated several - times due to multi-tile sync error. + def play( + self, + qubits: Dict[QubitId, Qubit], + couplers, + sequence: PulseSequence, + options: ExecutionParameters, + ): + """Plays the given pulse sequence without acquisition. Arguments: - dac_sampling_rate_id (int): Sampling rate ID to be set on the RFSoC. - dac_sampling_rate_6g_id (int): Optional sampling rate ID for the 6GS/s mode if used. + qubits (dict): Dictionary of qubit IDs mapped to qubit objects. + sequence (PulseSequence): Pulse sequence to be played on this instrument. + options (ExecutionParameters): Execution parameters for readout and repetition. """ - self._adcs_to_read = adcs_to_read - self._dac_sampling_rate = dac_sampling_rate - - def translate(self, sequence: List[Pulse], nshots): - """Translates the pulse sequence into a numpy array.""" - - # Waveform is 14-bit resolution on the DACs, so we first create 16-bit arrays to store the data. - waveform = np.zeros((self._dac_nchannels, self._dac_sample_size), dtype="i2") - # The global time can first be set as float to handle rounding errors. - time_array = ( - 1 / self._dac_sampling_rate * np.arange(0, self._dac_sample_size, 1) - ) - - for pulse in sequence: - # Get array indices corresponding to the start and end of the pulse. Note that the pulse time parameters are in ns and require conversion. - start = bisect.bisect(time_array, pulse.start * 1e-9) - end = bisect.bisect(time_array, (pulse.start + pulse.duration) * 1e-9) - - # Create the pulse waveform and cast it to 16-bit. The ampltiude is max signed 14-bit (+- 8191) and the indices should take care of any overlap of pulses. - # 2-byte bit shift for downsampling from 16 bit to 14 bit - pulse_waveform = ( - 4 - * np.sin( - 2 * np.pi * pulse.frequency * time_array[start:end] + pulse.phase + waveform_array = {dac.id: np.zeros(dac.max_samples) for dac in self.device.dac} + + dac_end_addr = {dac.id: 0 for dac in self.device.dac} + dac_sampling_rate = self.device.dac_sampling_rate * 1e6 + dac_sr_ghz = dac_sampling_rate / 1e9 + + # We iterate over the seuence of pulses and generate the waveforms for each type of pulses + for pulse in sequence.pulses: + if pulse.channel not in self._ports: + continue + + dac = self.ports(pulse.channel).dac + start = int(pulse.start * 1e-9 * dac_sampling_rate) + i_env = pulse.envelope_waveform_i(dac_sr_ghz).data + q_env = pulse.envelope_waveform_q(dac_sr_ghz).data + + # Flux pulses + # TODO: Add envelope support for flux pulses + if pulse.type == PulseType.FLUX: + wfm = i_env + end = start + len(wfm) + + # Qubit drive microwave signals + elif pulse.type == PulseType.DRIVE: + end = start + len(i_env) + t = np.arange(start, end) / dac_sampling_rate + cosalpha = np.cos( + 2 * np.pi * pulse.frequency * t + pulse.relative_phase + ) + sinalpha = np.sin( + 2 * np.pi * pulse.frequency * t + pulse.relative_phase + ) + wfm = i_env * sinalpha + q_env * cosalpha + + elif pulse.type == PulseType.READOUT: + # For readout pulses, we move the corresponding DAC/ADC pair to the start of the pulse to save memory + # This locks the phase of the readout in the demodulation + adc = self.ports(pulse.channel).adc + start = 0 + + end = start + len(i_env) + t = np.arange(start, end) / dac_sampling_rate + cosalpha = np.cos( + 2 * np.pi * pulse.frequency * t + pulse.relative_phase + ) + sinalpha = np.sin( + 2 * np.pi * pulse.frequency * t + pulse.relative_phase + ) + wfm = i_env * sinalpha + q_env * cosalpha + + # First we convert the pulse starting time to number of ADC samples + # Then, we convert this number to the number of ADC clock cycles (8 samples per clock cycle) + # Next, we raise it to the next nearest integer to prevent an overlap between drive and readout pulses + # Finally, we ensure that the number is even for the DAC delay conversion + delay_start_adc = int( + int( + np.ceil( + self.device.adc_sampling_rate * 1e6 * pulse.start * 1e-9 / 8 + ) + / 2 + ) + * 2 ) - ).astype("i2") - waveform[pulse.channel, start:end] += pulse_waveform - - self.nshots = nshots - return waveform + # For the DAC, currently the sampling rate is 3x higher than the ADC + # The number of clock cycles is 16 samples per clock cycle + # Hence, we multiply the adc delay clock cycles by 1.5x to align the DAC/ADC pair + delay_start_dac = int(delay_start_adc * 1.5) - def upload(self, waveform): - """Uploads a numpy array of size DAC_CHANNELS X DAC_SAMPLE_SIZE to the - PL memory. + self.device.dac[dac].delay = ( + delay_start_dac + self.channel_delay_offset_dac + ) + self.device.adc[adc].delay = ( + delay_start_adc + self.channel_delay_offset_adc + ) + # ADC0 complete marks the end of acquisition, so we also need to move ADC0 + self.device.adc[0].delay = ( + delay_start_adc + self.channel_delay_offset_adc + ) - Arguments: - waveform (numpy.ndarray): Numpy array of size DAC_CHANNELS X DAC_SAMPLE_SIZE with type signed short. - """ + if ( + options.acquisition_type is AcquisitionType.DISCRIMINATION + or AcquisitionType.INTEGRATION + ): + self.device.program_qunit( + readout_frequency=pulse.frequency, + readout_time=pulse.duration * 1e-9, + qunit=pulse.qubit, + ) + + end = start + len(wfm) + waveform_array[dac][start:end] += self.device.dac_max_amplitude * wfm + dac_end_addr[dac] = max(end >> 4, dac_end_addr[dac]) + + payload = [ + (dac, wfm, dac_end_addr[dac]) + for dac, wfm in waveform_array.items() + if dac_end_addr[dac] != 0 + ] + self.device.upload_waveform(payload) - # TODO: Implement checks for size and dtype of waveform. + def disconnect(self): + if self.is_connected: + self.device.sock.close() - with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: - s.connect((self.address, self.port)) - # Signal to the RFSoC to start listening for DAC waveforms and load into PL mem. - s.sendall(struct.pack("B", 1)) - s.sendall(waveform.tobytes()) + def sweep(self): + pass - def play_sequence(self): - """DACs are automatically armed for playbacked when waveforms are - loaded, no need to signal.""" - self._buffer = np.zeros((self._adc_nchannels, self._adc_sample_size)) - self._thread = threading.Thread(target=self._play, args=(self.nshots,)) - self._thread.start() - time.sleep(0.1) # Use threading lock and socket signals instead of hard sleep? +class RFSOC_RO(RFSOC): + """IcarusQ RFSoC attached with readout capability.""" + + available_sweep_parameters = { + Parameter.amplitude, + Parameter.duration, + Parameter.frequency, + Parameter.relative_phase, + Parameter.start, + } + + def __init__( + self, + name, + address, + delay_samples_offset_dac: int = 0, + delay_samples_offset_adc: int = 0, + adcs_to_read: List[int] = [], + ): + super().__init__( + name, address, delay_samples_offset_dac, delay_samples_offset_adc + ) + self.adcs_to_read = adcs_to_read - def play_sequence_and_acquire(self): - """Signal the RFSoC to arm the ADC and start data transfer into PS - memory. Starts a thread to listen for ADC data from the RFSoC. + def connect(self): + super().connect() + self.device.init_qunit() + self.device.set_adc_trigger_mode(TRIGGER_MODE.MASTER) + + def play( + self, + qubits: Dict[QubitId, Qubit], + couplers, + sequence: PulseSequence, + options: ExecutionParameters, + ): + """Plays the pulse sequence on the IcarusQ RFSoC and awaits acquisition + at the end. Arguments: - nshots (int): Number of shots. + qubits (dict): Dictionary of qubit IDs mapped to qubit objects. + sequence (PulseSequence): Pulse sequence to be played on this instrument. + options (ExecutionParameters): Object representing acquisition type and number of shots. """ - # Create buffer to hold ADC data. - # TODO: Create flag to handle single shot measurement / buffer assignment per shot. - - def _play(self, nshots): - """Starts ADC data acquisition and transfer on the RFSoC.""" - - if len(self._adcs_to_read) == 0: - return - - # 2 bytes per ADC data point - BUF_SIZE = int(self._adc_sample_size * 2) - - with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: - s.connect((self.address, self.port)) - # Signal RFSoC to arm ADC and expect `nshots` number of triggers. - s.sendall(struct.pack("B", 2)) - s.sendall(struct.pack("H", nshots)) - s.sendall( - struct.pack("B", len(self._adcs_to_read)) - ) # send number of channels - - for adc in self._adcs_to_read: - s.sendall(struct.pack("B", adc)) # send ADC channel to read - - # Use the same socket to start listening for ADC data transfer. - for _ in range(nshots): - for _ in self._adcs_to_read: - # IcarusQ board may send channel/shot data out of order due to threading implementation. - # shotnum = struct.unpack("H", s.recv(2))[0] - channel = struct.unpack("H", s.recv(2))[0] - - # Start listening for ADC_SAMPLE_SIZE * 2 bytes corresponding to data per channel. - r = bytearray() - while len(r) < BUF_SIZE: - # Socket implementation does not return exactly desired amount of bytes, keep querying until bytearray reaches expected amount of bytes. - # TODO: Look for `MSG_WAITALL` flag in socket recv. - packet = s.recv(BUF_SIZE - len(r)) - if packet: - r.extend(packet) - - # Accumulate ADC data in buffer, buffer float dtype should be enough to prevent overflow. - self._buffer[channel] += np.frombuffer(r, dtype="i2") - - # Average buffer at the end of measurement - self._buffer = self._buffer / nshots - - def result(self, readout_frequency, readout_channel): - """Returns the processed signal result from the ADC. + super().play(qubits, couplers, sequence, options) + self.device.set_adc_trigger_repetition_rate(int(options.relaxation_time / 1e3)) + readout_pulses = [ + pulse for pulse in sequence.pulses if pulse.type is PulseType.READOUT + ] + readout_qubits = [pulse.qubit for pulse in readout_pulses] + + if options.acquisition_type is AcquisitionType.RAW: + self.device.set_adc_trigger_mode(0) + self.device.arm_adc(self.adcs_to_read, options.nshots) + raw = self.device.result() + return self.process_readout_signal(raw, readout_pulses, qubits, options) + + # Currently qunit only supports single qubit readout demodulation + elif options.acquisition_type is AcquisitionType.INTEGRATION: + self.device.set_adc_trigger_mode(1) + self.device.set_qunit_mode(0) + raw = self.device.start_qunit_acquisition(options.nshots, readout_qubits) + + qunit_mapping = { + ro_pulse.qubit: ro_pulse.serial for ro_pulse in readout_pulses + } + + if options.averaging_mode is not AveragingMode.SINGLESHOT: + res = { + qunit_mapping[qunit]: IntegratedResults(i + 1j * q).average + for qunit, (i, q) in raw.items() + } + else: + res = { + qunit_mapping[qunit]: IntegratedResults(i + 1j * q) + for qunit, (i, q) in raw.items() + } + # Temp fix for readout pulse sweepers, to be removed with IcarusQ v2 + for ro_pulse in readout_pulses: + res[ro_pulse.qubit] = res[ro_pulse.serial] + return res + + elif options.acquisition_type is AcquisitionType.DISCRIMINATION: + self.device.set_adc_trigger_mode(1) + self.device.set_qunit_mode(1) + raw = self.device.start_qunit_acquisition(options.nshots, readout_qubits) + res = {qubit: SampleResults(states) for qubit, states in raw.items()} + # Temp fix for readout pulse sweepers, to be removed with IcarusQ v2 + for ro_pulse in readout_pulses: + res[ro_pulse.qubit] = res[ro_pulse.serial] + return res + + def process_readout_signal( + self, + adc_raw_data: Dict[int, np.ndarray], + sequence: List[Pulse], + qubits: Dict[QubitId, Qubit], + options: ExecutionParameters, + ): + """Processes the raw signal from the ADC into IQ values.""" + + adc_sampling_rate = self.device.adc_sampling_rate * 1e6 + t = np.arange(self.device.adc_sample_size) / adc_sampling_rate + results = {} + + for readout_pulse in sequence: + qubit = qubits[readout_pulse.qubit] + _, adc = qubit.readout.ports + + raw_signal = adc_raw_data[adc] + sin = np.sin(2 * np.pi * readout_pulse.frequency * t) + cos = np.sin(2 * np.pi * readout_pulse.frequency * t) + + i = np.dot(raw_signal, cos) + q = np.dot(raw_signal, sin) + singleshot = IntegratedResults(i + 1j * q) + results[readout_pulse.serial] = ( + singleshot.average + if options.averaging_mode is not AveragingMode.SINGLESHOT + else singleshot + ) + # Temp fix for readout pulse sweepers, to be removed with IcarusQ v2 + results[readout_pulse.qubit] = results[readout_pulse.serial] + + return results + + def sweep( + self, + qubits: Dict[QubitId, Qubit], + couplers, + sequence: PulseSequence, + options: ExecutionParameters, + *sweeper: Sweeper, + ): + # Record pulse values before sweeper modification + bsv = [] + for sweep in sweeper: + if sweep.parameter not in self.available_sweep_parameters: + raise NotImplementedError( + "Sweep parameter requested not available", param_name + ) - Arguments: - readout_frequency (float): Frequency to be used for signal processing. - readout_channel (int): Channel to be used for signal processing. + param_name = sweep.parameter.name.lower() + base_sweeper_values = [getattr(pulse, param_name) for pulse in sweep.pulses] + bsv.append(base_sweeper_values) + + res = self._sweep_recursion(qubits, couplers, sequence, options, *sweeper) + + # Reset pulse values back to original values + for sweep, base_sweeper_values in zip(sweeper, bsv): + param_name = sweep.parameter.name.lower() + for pulse, value in zip(sweep.pulses, base_sweeper_values): + setattr(pulse, param_name, value) + + # Since the sweeper will modify the readout pulse serial, we collate the results with the qubit number. + # This is only for qibocal compatiability and will be removed with IcarusQ v2. + if pulse.type is PulseType.READOUT: + res[pulse.serial] = res[pulse.qubit] + + return res + + def _sweep_recursion( + self, + qubits: Dict[QubitId, Qubit], + couplers, + sequence: PulseSequence, + options: ExecutionParameters, + *sweeper: Sweeper, + ): + """Recursive python-based sweeper functionaltiy for the IcarusQ + RFSoC.""" + if len(sweeper) == 0: + return self.play(qubits, couplers, sequence, options) + + sweep = sweeper[0] + param = sweep.parameter + param_name = param.name.lower() + + if param not in self.available_sweep_parameters: + raise NotImplementedError( + "Sweep parameter requested not available", param_name + ) + + base_sweeper_values = [getattr(pulse, param_name) for pulse in sweep.pulses] + sweeper_op = _sweeper_operation.get(sweep.type) + ret = {} + + for value in sweep.values: + for idx, pulse in enumerate(sweep.pulses): + base = base_sweeper_values[idx] + setattr(pulse, param_name, sweeper_op(value, base)) + + self.merge_sweep_results( + ret, + self._sweep_recursion( + qubits, couplers, sequence, options, *sweeper[1:] + ), + ) + + return ret + @staticmethod + def merge_sweep_results( + dict_a: """dict[str, Union[IntegratedResults, SampleResults]]""", + dict_b: """dict[str, Union[IntegratedResults, SampleResults]]""", + ) -> """dict[str, Union[IntegratedResults, SampleResults]]""": + """Merge two dictionary mapping pulse serial to Results object. + + If dict_b has a key (serial) that dict_a does not have, simply add it, + otherwise sum the two results + + Args: + dict_a (dict): dict mapping ro pulses serial to qibolab res objects + dict_b (dict): dict mapping ro pulses serial to qibolab res objects Returns: - ampl (float): Amplitude of the processed signal. - phase (float): Phase shift of the processed signal in degrees. - it (float): I component of the processed signal. - qt (float): Q component of the processed signal. + A dict mapping the readout pulses serial to qibolab results objects """ - - # Wait for ADC data acquisition to complete - self._thread.join() - - input_vec = self._buffer[readout_channel] - - time_vec = 1 / self._adc_sampling_rate * np.arange(0, self._adc_sample_size, 1) - vec_I = np.sin(2 * np.pi * readout_frequency * time_vec) - vec_Q = np.cos(2 * np.pi * readout_frequency * time_vec) - - it = np.sum(vec_I * input_vec) - qt = np.sum(vec_Q * input_vec) - phase = np.arctan2(qt, it) - ampl = np.sqrt(it**2 + qt**2) - - return ampl, phase, it, qt - - def start(self): - pass - - def connect(self): - pass - - def stop(self): - pass - - def disconnect(self): - pass + for serial in dict_b: + if serial in dict_a: + dict_a[serial] = dict_a[serial] + dict_b[serial] + else: + dict_a[serial] = dict_b[serial] + return dict_a + + +_sweeper_operation = { + SweeperType.ABSOLUTE: lambda value, base: value, + SweeperType.OFFSET: operator.add, + SweeperType.FACTOR: operator.mul, +} diff --git a/src/qibolab/instruments/qblox/cluster_qcm_bb.py b/src/qibolab/instruments/qblox/cluster_qcm_bb.py index 4c6dea2d9..a5e95a554 100644 --- a/src/qibolab/instruments/qblox/cluster_qcm_bb.py +++ b/src/qibolab/instruments/qblox/cluster_qcm_bb.py @@ -20,7 +20,7 @@ from qibolab.sweeper import Parameter, Sweeper, SweeperType -class ClusterQCM_BB(ClusterModule): +class QcmBb(ClusterModule): """Qblox Cluster Qubit Control Module Baseband driver. Qubit Control Module (QCM) is an arbitratry wave generator with two DACs connected to @@ -109,9 +109,9 @@ def __init__(self, name: str, address: str): - cluster: The Cluster object to which the QCM baseband module is connected. Example: - To create a ClusterQCM_BB instance named 'qcm_bb' connected to slot 2 of a Cluster at address '192.168.0.100': + To create a QcmBb instance named 'qcm_bb' connected to slot 2 of a Cluster at address '192.168.0.100': >>> cluster_instance = Cluster("cluster","192.168.1.100", settings) - >>> qcm_module = ClusterQCM_BB(name="qcm_bb", address="192.168.1.100:2", cluster=cluster_instance) + >>> qcm_module = QcmBb(name="qcm_bb", address="192.168.1.100:2", cluster=cluster_instance) """ super().__init__(name, address) self._ports: dict = {} diff --git a/src/qibolab/instruments/qblox/cluster_qcm_rf.py b/src/qibolab/instruments/qblox/cluster_qcm_rf.py index 0ecc89572..90ce68d03 100644 --- a/src/qibolab/instruments/qblox/cluster_qcm_rf.py +++ b/src/qibolab/instruments/qblox/cluster_qcm_rf.py @@ -20,7 +20,7 @@ from qibolab.sweeper import Parameter, Sweeper, SweeperType -class ClusterQCM_RF(ClusterModule): +class QcmRf(ClusterModule): """Qblox Cluster Qubit Control Module RF driver. Qubit Control Module RF (QCM-RF) is an instrument that integrates an arbitratry @@ -125,9 +125,9 @@ def __init__(self, name: str, address: str): - cluster: The Cluster object to which the QCM-RF module is connected. Example: - To create a ClusterQCM_RF instance named 'qcm_rf' connected to slot 2 of a Cluster at address '192.168.0.100': + To create a QcmRf instance named 'qcm_rf' connected to slot 2 of a Cluster at address '192.168.0.100': >>> cluster_instance = Cluster("cluster","192.168.1.100", settings) - >>> qcm_module = ClusterQCM_RF(name="qcm_rf", address="192.168.1.100:2", cluster=cluster_instance) + >>> qcm_module = QcmRf(name="qcm_rf", address="192.168.1.100:2", cluster=cluster_instance) """ super().__init__(name, address) self.device: QbloxQrmQcm = None diff --git a/src/qibolab/instruments/qblox/cluster_qrm_rf.py b/src/qibolab/instruments/qblox/cluster_qrm_rf.py index 00f74d813..31c51e88d 100644 --- a/src/qibolab/instruments/qblox/cluster_qrm_rf.py +++ b/src/qibolab/instruments/qblox/cluster_qrm_rf.py @@ -18,7 +18,7 @@ from .sweeper import QbloxSweeper, QbloxSweeperType -class ClusterQRM_RF(ClusterModule): +class QrmRf(ClusterModule): """Qblox Cluster Qubit Readout Module RF driver. Qubit Readout Module RF (QRM-RF) is an instrument that integrates an arbitrary wave generator, a digitizer, @@ -132,9 +132,9 @@ def __init__(self, name: str, address: str): - cluster: The Cluster object to which the QRM-RF module is connected. Example: - To create a ClusterQRM_RF instance named 'qrm_rf' connected to slot 2 of a Cluster at address '192.168.0.100': + To create a QrmRf instance named 'qrm_rf' connected to slot 2 of a Cluster at address '192.168.0.100': >>> cluster_instance = Cluster("cluster","192.168.1.100", settings) - >>> qrm_module = ClusterQRM_RF(name="qrm_rf", address="192.168.1.100:2", cluster=cluster_instance) + >>> qrm_module = QrmRf(name="qrm_rf", address="192.168.1.100:2", cluster=cluster_instance) """ super().__init__(name, address) diff --git a/src/qibolab/instruments/qblox/controller.py b/src/qibolab/instruments/qblox/controller.py index 04ef6fe0b..3e024f6ff 100644 --- a/src/qibolab/instruments/qblox/controller.py +++ b/src/qibolab/instruments/qblox/controller.py @@ -6,9 +6,9 @@ from qibolab import AcquisitionType, AveragingMode, ExecutionParameters from qibolab.instruments.abstract import Controller -from qibolab.instruments.qblox.cluster_qcm_bb import ClusterQCM_BB -from qibolab.instruments.qblox.cluster_qcm_rf import ClusterQCM_RF -from qibolab.instruments.qblox.cluster_qrm_rf import ClusterQRM_RF +from qibolab.instruments.qblox.cluster_qcm_bb import QcmBb +from qibolab.instruments.qblox.cluster_qcm_rf import QcmRf +from qibolab.instruments.qblox.cluster_qrm_rf import QrmRf from qibolab.instruments.qblox.sequencer import SAMPLING_RATE from qibolab.instruments.unrolling import batch_max_sequences from qibolab.pulses import PulseSequence, PulseType @@ -90,7 +90,7 @@ def _termination_handler(self, signum, frame): log.warning("QbloxController: all modules are disconnected.") exit(0) - def _set_module_channel_map(self, module: ClusterQRM_RF, qubits: dict): + def _set_module_channel_map(self, module: QrmRf, qubits: dict): """Retrieve all the channels connected to a specific Qblox module. This method updates the `channel_port_map` attribute of the @@ -178,16 +178,13 @@ def _execute_pulse_sequence( # play the sequence or sweep for module in self.modules.values(): - if isinstance(module, (ClusterQRM_RF, ClusterQCM_RF, ClusterQCM_BB)): + if isinstance(module, (QrmRf, QcmRf, QcmBb)): module.play_sequence() # retrieve the results acquisition_results = {} for name, module in self.modules.items(): - if ( - isinstance(module, ClusterQRM_RF) - and not module_pulses[name].ro_pulses.is_empty - ): + if isinstance(module, QrmRf) and not module_pulses[name].ro_pulses.is_empty: results = module.acquire() existing_keys = set(acquisition_results.keys()) & set(results.keys()) for key, value in results.items(): diff --git a/src/qibolab/instruments/qblox/module.py b/src/qibolab/instruments/qblox/module.py index 04488c9c1..10b2c8b4f 100644 --- a/src/qibolab/instruments/qblox/module.py +++ b/src/qibolab/instruments/qblox/module.py @@ -5,7 +5,7 @@ class ClusterModule(Instrument): - """This class defines common features shared by all Qblox modules (QCM- BB, + """This class defines common features shared by all Qblox modules (QCM-BB, QCM-RF, QRM-RF). It serves as a foundational class, unifying the behavior of the @@ -43,7 +43,7 @@ def ports(self, name: str, out: bool = True): Returns this port object. Example: - >>> qrm_module = ClusterQRM_RF("qrm_rf", f"{IP_ADDRESS}:{SLOT_IDX}") + >>> qrm_module = QrmRf("qrm_rf", f"{IP_ADDRESS}:{SLOT_IDX}") >>> output_port = qrm_module.add_port("o1") >>> input_port = qrm_module.add_port("i1", out=False) >>> qrm_module.ports diff --git a/src/qibolab/instruments/zhinst.py b/src/qibolab/instruments/zhinst.py index ba6d68ef7..9049ce883 100644 --- a/src/qibolab/instruments/zhinst.py +++ b/src/qibolab/instruments/zhinst.py @@ -4,7 +4,6 @@ import os from collections import defaultdict from dataclasses import dataclass, replace -from pathlib import Path from typing import Dict, List, Tuple, Union import laboneq._token @@ -318,7 +317,6 @@ def __init__( self.smearing = smearing self.chip = "iqm5q" "Parameters read from the runcard not part of ExecutionParameters" - self.kernels = defaultdict(Path) self.exp = None self.experiment = None @@ -442,9 +440,6 @@ def register_readout_line(self, qubit, intermediate_frequency, options): f"q{q}" ].logical_signals["acquire_line"] - if qubit.kernel_path: - self.kernels[q] = qubit.kernel_path - oscillator = lo.Oscillator( frequency=intermediate_frequency, modulation_type=lo.ModulationType.SOFTWARE, @@ -452,7 +447,7 @@ def register_readout_line(self, qubit, intermediate_frequency, options): threshold = None if options.acquisition_type == AcquisitionType.DISCRIMINATION: - if self.kernels[q].is_file(): + if qubit.kernel is not None: # Kernels don't work with the software modulation on the acquire signal oscillator = None else: @@ -1039,15 +1034,15 @@ def measure_relax(self, exp, qubits, couplers, relaxation_time, acquisition_type iq_angle_readout_schedule[i].append(iq_angle) weights = {} - for i, (pulses, qubits, iq_angles) in enumerate( + for i, (pulses, qubits_readout, iq_angles) in enumerate( zip( readout_schedule.values(), qubit_readout_schedule.values(), iq_angle_readout_schedule.values(), ) ): - qd_finish = self.find_subsequence_finish(i, "drive", qubits) - qf_finish = self.find_subsequence_finish(i, "flux", qubits) + qd_finish = self.find_subsequence_finish(i, "drive", qubits_readout) + qf_finish = self.find_subsequence_finish(i, "flux", qubits_readout) cf_finish = self.find_subsequence_finish(i, "couplerflux", couplers) finish_times = np.array( [ @@ -1064,7 +1059,7 @@ def measure_relax(self, exp, qubits, couplers, relaxation_time, acquisition_type play_after = f"sequence_{latest_sequence['line']}_{i}" # Section on the outside loop allows for multiplex with exp.section(uid=f"sequence_measure_{i}", play_after=play_after): - for pulse, q, iq_angle in zip(pulses, qubits, iq_angles): + for pulse, q, iq_angle in zip(pulses, qubits_readout, iq_angles): pulse.zhpulse.uid += str(i) exp.delay( @@ -1073,13 +1068,13 @@ def measure_relax(self, exp, qubits, couplers, relaxation_time, acquisition_type ) if ( - self.kernels[q].is_file() + qubits[q].kernel is not None and acquisition_type == lo.AcquisitionType.DISCRIMINATION ): - kernels = np.load(self.kernels[q]) + kernel = qubits[q].kernel weight = lo.pulse_library.sampled_pulse_complex( uid="weight" + str(q), - samples=kernels[str(q)] * np.exp(1j * iq_angle), + samples=kernel * np.exp(1j * iq_angle), ) else: diff --git a/src/qibolab/kernels.py b/src/qibolab/kernels.py new file mode 100644 index 000000000..9ee1ae60d --- /dev/null +++ b/src/qibolab/kernels.py @@ -0,0 +1,39 @@ +import json +from pathlib import Path + +import numpy as np + +from qibolab.qubits import QubitId + +KERNELS = "kernels.npz" + + +class Kernels(dict[QubitId, np.ndarray]): + """A dictionary subclass for handling Qubit Kernels. + + This class extends the built-in dict class and maps QubitId to numpy + arrays. It provides methods to load and dump the kernels from and to + a file. + """ + + @classmethod + def load(cls, path: Path): + """Class method to load kernels from a file. + + The file should contain a serialized dictionary where keys are + serialized QubitId and values are numpy arrays. + """ + return cls( + {json.loads(key): value for key, value in np.load(path / KERNELS).items()} + ) + + def dump(self, path: Path): + """Instance method to dump the kernels to a file. + + The keys (QubitId) are serialized to strings and the values + (numpy arrays) are kept as is. + """ + np.savez( + path / KERNELS, + **{json.dumps(qubit_id): value for qubit_id, value in self.items()} + ) diff --git a/src/qibolab/qubits.py b/src/qibolab/qubits.py index c79ed331e..d3ed86f6e 100644 --- a/src/qibolab/qubits.py +++ b/src/qibolab/qubits.py @@ -1,7 +1,8 @@ from dataclasses import dataclass, field, fields -from pathlib import Path from typing import List, Optional, Tuple, Union +import numpy as np + from qibolab.channels import Channel from qibolab.couplers import Coupler from qibolab.native import SingleQubitNatives, TwoQubitNatives @@ -14,7 +15,7 @@ Not all channels are required to operate a qubit. """ -EXCLUDED_FIELDS = CHANNEL_NAMES + ("name", "native_gates", "_flux") +EXCLUDED_FIELDS = CHANNEL_NAMES + ("name", "native_gates", "kernel", "_flux") """Qubit dataclass fields that are excluded by the ``characterization`` property.""" @@ -75,7 +76,7 @@ class Qubit: # parameters for single shot classification threshold: Optional[float] = None iq_angle: float = 0.0 - kernel_path: Optional[Path] = None + kernel: Optional[np.ndarray] = field(default=None, repr=False) # required for mixers (not sure if it should be here) mixer_drive_g: float = 0.0 mixer_drive_phi: float = 0.0 diff --git a/src/qibolab/serialize.py b/src/qibolab/serialize.py index 2a858c79e..45698413a 100644 --- a/src/qibolab/serialize.py +++ b/src/qibolab/serialize.py @@ -4,13 +4,13 @@ repository is assumed here. See :ref:`Using runcards ` example for more details. """ +import json from dataclasses import asdict from pathlib import Path from typing import Tuple -import yaml - from qibolab.couplers import Coupler +from qibolab.kernels import Kernels from qibolab.native import CouplerNatives, SingleQubitNatives, TwoQubitNatives from qibolab.platform import ( CouplerMap, @@ -22,10 +22,13 @@ ) from qibolab.qubits import Qubit, QubitPair +RUNCARD = "parameters.json" +PLATFORM = "platform.py" + def load_runcard(path: Path) -> dict: - """Load runcard YAML to a dictionary.""" - return yaml.safe_load(path.read_text()) + """Load runcard JSON to a dictionary.""" + return json.loads((path / RUNCARD).read_text()) def load_settings(runcard: dict) -> Settings: @@ -34,7 +37,7 @@ def load_settings(runcard: dict) -> Settings: def load_qubits( - runcard: dict, extras_folder: Path = None + runcard: dict, kernels: Kernels = None ) -> Tuple[QubitMap, CouplerMap, QubitPairMap]: """Load qubits and pairs from the runcard. @@ -45,25 +48,25 @@ def load_qubits( objects. """ qubits = { - q: Qubit(q, **char) + json.loads(q): Qubit(json.loads(q), **char) for q, char in runcard["characterization"]["single_qubit"].items() } - if extras_folder is not None: - single_qubit = runcard["characterization"]["single_qubit"] - for qubit in qubits.values(): - qubit.kernel_path = extras_folder / single_qubit[qubit.name]["kernel_path"] + if kernels is not None: + for q in kernels: + qubits[q].kernel = kernels[q] + couplers = {} pairs = {} if "coupler" in runcard["characterization"]: couplers = { - c: Coupler(c, **char) + json.loads(c): Coupler(json.loads(c), **char) for c, char in runcard["characterization"]["coupler"].items() } for c, pair in runcard["topology"].items(): q0, q1 = pair pairs[(q0, q1)] = pairs[(q1, q0)] = QubitPair( - qubits[q0], qubits[q1], couplers[c] + qubits[q0], qubits[q1], couplers[json.loads(c)] ) else: for pair in runcard["topology"]: @@ -89,9 +92,14 @@ def register_gates( native_gates = runcard.get("native_gates", {}) for q, gates in native_gates.get("single_qubit", {}).items(): - qubits[q].native_gates = SingleQubitNatives.from_dict(qubits[q], gates) + qubits[json.loads(q)].native_gates = SingleQubitNatives.from_dict( + qubits[json.loads(q)], gates + ) + for c, gates in native_gates.get("coupler", {}).items(): - couplers[c].native_pulse = CouplerNatives.from_dict(couplers[c], gates) + couplers[json.loads(c)].native_pulse = CouplerNatives.from_dict( + couplers[json.loads(c)], gates + ) # register two-qubit native gates to ``QubitPair`` objects for pair, gatedict in native_gates.get("two_qubit", {}).items(): @@ -121,11 +129,13 @@ def dump_native_gates( using qubit and pair objects.""" # single-qubit native gates native_gates = { - "single_qubit": {q: qubit.native_gates.raw for q, qubit in qubits.items()} + "single_qubit": { + json.dumps(q): qubit.native_gates.raw for q, qubit in qubits.items() + } } if couplers: native_gates["coupler"] = { - c: coupler.native_pulse.raw for c, coupler in couplers.items() + json.dumps(c): coupler.native_pulse.raw for c, coupler in couplers.items() } # two-qubit native gates @@ -143,17 +153,14 @@ def dump_characterization(qubits: QubitMap, couplers: CouplerMap = None) -> dict """Dump qubit characterization section to dictionary following the runcard format, using qubit and pair objects.""" characterization = { - "single_qubit": {q: qubit.characterization for q, qubit in qubits.items()}, + "single_qubit": { + json.dumps(q): qubit.characterization for q, qubit in qubits.items() + }, } - for q in qubits: - qubit = characterization["single_qubit"][q] - kernel_path = qubit["kernel_path"] - if kernel_path is not None: - qubit["kernel_path"] = kernel_path.name if couplers: characterization["coupler"] = { - c.name: {"sweetspot": c.sweetspot} for c in couplers.values() + json.dumps(c.name): {"sweetspot": c.sweetspot} for c in couplers.values() } return characterization @@ -181,13 +188,13 @@ def dump_instruments(instruments: InstrumentMap) -> dict: def dump_runcard(platform: Platform, path: Path): - """Serializes the platform and saves it as a yaml runcard file. + """Serializes the platform and saves it as a json runcard file. The file saved follows the format explained in :ref:`Using runcards `. Args: platform (qibolab.platform.Platform): The platform to be serialized. - path (pathlib.Path): Path that the yaml file will be saved. + path (pathlib.Path): Path that the json file will be saved. """ settings = { @@ -212,6 +219,35 @@ def dump_runcard(platform: Platform, path: Path): platform.qubits, platform.couplers ) - path.write_text( - yaml.dump(settings, sort_keys=False, indent=4, default_flow_style=None) - ) + (path / RUNCARD).write_text(json.dumps(settings, sort_keys=False, indent=4)) + + +def dump_kernels(platform: Platform, path: Path): + """Creates Kernels instance from platform and dumps as npz. + + Args: + platform (qibolab.platform.Platform): The platform to be serialized. + path (pathlib.Path): Path that the kernels file will be saved. + """ + + # create kernels + kernels = Kernels() + for qubit in platform.qubits.values(): + if qubit.kernel is not None: + kernels[qubit.name] = qubit.kernel + + # dump only if not None + if kernels: + kernels.dump(path) + + +def dump_platform(platform: Platform, path: Path): + """Platform serialization as runcard (json) and kernels (npz). + + Args: + platform (qibolab.platform.Platform): The platform to be serialized. + path (pathlib.Path): Path where json and npz will be dumped. + """ + + dump_kernels(platform=platform, path=path) + dump_runcard(platform=platform, path=path) diff --git a/tests/dummy_qrc/qblox.yml b/tests/dummy_qrc/qblox.yml deleted file mode 100644 index 4980b71fb..000000000 --- a/tests/dummy_qrc/qblox.yml +++ /dev/null @@ -1,346 +0,0 @@ -nqubits: 5 - -settings: - nshots: 1024 - relaxation_time: 20_000 - -qubits: [0, 1, 2, 3, 4] - -topology: [[0, 2], [1, 2], [2, 3], [2, 4]] - -instruments: - twpa_pump: - frequency: 6_535_900_000 - power: 4 - - qcm_rf0: - o1: - attenuation: 20 - lo_frequency: 5_252_833_073 - gain: 0.470 - - o2: - attenuation: 20 - lo_frequency: 5_652_833_073 - gain: 0.570 - - qcm_rf1: - o1: - attenuation: 20 - lo_frequency: 5_995_371_914 - gain: 0.550 - - o2: - attenuation: 20 - lo_frequency: 6_961_018_001 - gain: 0.596 - - qcm_rf2: - o1: - attenuation: 20 - lo_frequency: 6_786_543_060 - gain: 0.470 - - qrm_rf_a: - o1: - attenuation: 36 - lo_frequency: 7_300_000_000 - gain: 0.6 - - i1: - acquisition_hold_off: 500 - acquisition_duration: 900 - - qrm_rf_b: - o1: - attenuation: 36 - lo_frequency: 7_850_000_000 - gain: 0.6 - - i1: - acquisition_hold_off: 500 - acquisition_duration: 900 - -native_gates: - single_qubit: - 0: - RX: - duration: 40 # should be multiple of 4 - amplitude: 0.5028 - frequency: 5_050_304_836 # qubit frequency - # if_frequency: -200_000_000 # difference in qubit frequency - shape: Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 40 - amplitude: 0.5028 - frequency: 5_050_304_836 - # if_frequency: -200_000_000 # difference in qubit frequency - shape: Gaussian(5) - type: qd - relative_start: 0 - phase: 0 - MZ: - duration: 2000 - amplitude: 0.1 - frequency: 7_213_299_307 # 7_212_299_307 # resonator frequency - # if_frequency: -42_700_693 # difference in resonator frequency - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - 1: # qubit id - RX: - duration: 40 # should be multiple of 4 - amplitude: 0.5078 - frequency: 4_852_833_073 # qubit frequency - # if_frequency: -200_000_000 # difference in qubit frequency - shape: Gaussian(5) - type: qd - relative_start: 0 - phase: 0 # qubit drive - RX12: - duration: 40 # should be multiple of 4 - amplitude: 0.5078 - frequency: 4_852_833_073 # qubit frequency - # if_frequency: -200_000_000 # difference in qubit frequency - shape: Gaussian(5) - type: qd - relative_start: 0 - phase: 0 - MZ: - duration: 2000 - amplitude: 0.2 - frequency: 7_452_990_931 # resonator frequency - # if_frequency: 197_990_931 # difference in resonator frequency - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - 2: # qubit id - RX: - duration: 40 # should be multiple of 4 - amplitude: 0.5016 - frequency: 5_795_371_914 # qubit frequency - # if_frequency: -200_000_000 # difference in qubit frequency - shape: Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 40 # should be multiple of 4 - amplitude: 0.5016 - frequency: 5_795_371_914 # qubit frequency - # if_frequency: -200_000_000 # difference in qubit frequency - shape: Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 2000 - amplitude: 0.25 - frequency: 7_655_083_068 # resonator frequency - # if_frequency: -194_916_932 # difference in resonator frequency - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - 3: # qubit id - RX: - duration: 40 # should be multiple of 4 - amplitude: 0.5026 - frequency: 6_761_018_001 # qubit frequency - # if_frequency: -200_000_000 # difference in qubit frequency - shape: Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 40 # should be multiple of 4 - amplitude: 0.5026 - frequency: 6_761_018_001 # qubit frequency - # if_frequency: -200_000_000 # difference in qubit frequency - shape: Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 2000 - amplitude: 0.2 - frequency: 7_803_441_221 # resonator frequency - # if_frequency: -46_558_779 # difference in resonator frequency - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - 4: # qubit id - RX: - duration: 40 # should be multiple of 4 - amplitude: 0.5172 - frequency: 6_586_543_060 # qubit frequency - # if_frequency: -200_000_000 # difference in qubit frequency - shape: Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 40 # should be multiple of 4 - amplitude: 0.5172 - frequency: 6_586_543_060 # qubit frequency - # if_frequency: -200_000_000 # difference in qubit frequency - shape: Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 2000 - amplitude: 0.4 - frequency: 8_058_947_261 # resonator frequency - # if_frequency: 208_947_261 # difference in resonator frequency - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - - two_qubit: - 2-3: - CZ: - - duration: 32 - amplitude: -0.6025 - shape: Exponential(12, 5000, 0.1) - qubit: 3 - relative_start: 0 - type: qf - - duration: 20 - amplitude: 0 - shape: Rectangular()) - qubit: 3 - relative_start: 32 - type: qf - - type: virtual_z - phase: -3.630 - qubit: 3 - - - duration: 32 - amplitude: 0 - shape: Rectangular()) - qubit: 2 - relative_start: 0 - type: qf - - duration: 20 - amplitude: 0 - shape: Rectangular()) - qubit: 2 - relative_start: 32 - type: qf - - type: virtual_z - phase: -0.041 - qubit: 2 - - 0-2: - CZ: - - duration: 28 - amplitude: -0.142 - shape: Exponential(12, 5000, 0.1) - qubit: 2 - relative_start: 0 - type: qf - 1-2: - CZ: - - duration: 32 - amplitude: -0.6025 - shape: Exponential(12, 5000, 0.1) - qubit: 3 - relative_start: 0 - type: qf - - duration: 20 - amplitude: 0 - shape: Rectangular()) - qubit: 3 - relative_start: 32 - type: qf - - type: virtual_z - phase: -3.630 - qubit: 3 - - - duration: 32 - amplitude: 0 - shape: Rectangular()) - qubit: 2 - relative_start: 0 - type: qf - - duration: 20 - amplitude: 0 - shape: Rectangular()) - qubit: 2 - relative_start: 32 - type: qf - - type: virtual_z - phase: -0.041 - qubit: 2 - - -characterization: - single_qubit: - 0: - readout_frequency: 7_213_299_307 # 7_212_299_307 - drive_frequency: 5_050_304_836 - anharmonicity: 291_463_266 - T1: 5_857 - T2: 0 - sweetspot: 0.5507 - - # parameters for single shot classification - # iq_angle: 99.758 - # threshold: 0.003933 - - # state0_voltage: 0.0 - # state1_voltage: 0.0 - # mean_gnd_states: (-0.0+0.0j) - # mean_exc_states: (0.0+0.0j) - 1: - readout_frequency: 7_452_990_931 - drive_frequency: 4_852_833_073 - anharmonicity: 292_584_018 - T1: 1_253 - T2: 0 - sweetspot: 0.2227 - - # parameters for single shot classification - iq_angle: 146.297 - threshold: 0.003488 - 2: - readout_frequency: 7_655_083_068 - drive_frequency: 5_795_371_914 - anharmonicity: 276_187_576 - T1: 4_563 - T2: 0 - sweetspot: -0.3780 - - # parameters for single shot classification - iq_angle: 97.821 - threshold: 0.002904 - 3: - readout_frequency: 7_803_441_221 - drive_frequency: 6_761_018_001 - anharmonicity: 262_310_994 - T1: 4_232 - T2: 0 - sweetspot: -0.8899 - - # parameters for single shot classification - iq_angle: 91.209 - threshold: 0.004318 - 4: - readout_frequency: 8_058_947_261 - drive_frequency: 6_586_543_060 - anharmonicity: 261_390_626 - T1: 492 - T2: 0 - sweetspot: 0.5890 - - # parameters for single shot classification - iq_angle: 7.997 - threshold: 0.002323 diff --git a/tests/dummy_qrc/qblox/parameters.json b/tests/dummy_qrc/qblox/parameters.json new file mode 100644 index 000000000..41cf5bee7 --- /dev/null +++ b/tests/dummy_qrc/qblox/parameters.json @@ -0,0 +1,398 @@ +{ + "nqubits": 5, + "settings": { + "nshots": 1024, + "relaxation_time": 20000 + }, + "qubits": [ + 0, + 1, + 2, + 3, + 4 + ], + "topology": [ + [ + 0, + 2 + ], + [ + 1, + 2 + ], + [ + 2, + 3 + ], + [ + 2, + 4 + ] + ], + "instruments": { + "twpa_pump": { + "frequency": 6535900000, + "power": 4 + }, + "qcm_rf0": { + "o1": { + "attenuation": 20, + "lo_frequency": 5252833073, + "gain": 0.47 + }, + "o2": { + "attenuation": 20, + "lo_frequency": 5652833073, + "gain": 0.57 + } + }, + "qcm_rf1": { + "o1": { + "attenuation": 20, + "lo_frequency": 5995371914, + "gain": 0.55 + }, + "o2": { + "attenuation": 20, + "lo_frequency": 6961018001, + "gain": 0.596 + } + }, + "qcm_rf2": { + "o1": { + "attenuation": 20, + "lo_frequency": 6786543060, + "gain": 0.47 + } + }, + "qrm_rf_a": { + "o1": { + "attenuation": 36, + "lo_frequency": 7300000000, + "gain": 0.6 + }, + "i1": { + "acquisition_hold_off": 500, + "acquisition_duration": 900 + } + }, + "qrm_rf_b": { + "o1": { + "attenuation": 36, + "lo_frequency": 7850000000, + "gain": 0.6 + }, + "i1": { + "acquisition_hold_off": 500, + "acquisition_duration": 900 + } + } + }, + "native_gates": { + "single_qubit": { + "0": { + "RX": { + "duration": 40, + "amplitude": 0.5028, + "frequency": 5050304836, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.5028, + "frequency": 5050304836, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 2000, + "amplitude": 0.1, + "frequency": 7213299307, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + }, + "1": { + "RX": { + "duration": 40, + "amplitude": 0.5078, + "frequency": 4852833073, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.5078, + "frequency": 4852833073, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 2000, + "amplitude": 0.2, + "frequency": 7452990931, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + }, + "2": { + "RX": { + "duration": 40, + "amplitude": 0.5016, + "frequency": 5795371914, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.5016, + "frequency": 5795371914, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 2000, + "amplitude": 0.25, + "frequency": 7655083068, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + }, + "3": { + "RX": { + "duration": 40, + "amplitude": 0.5026, + "frequency": 6761018001, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.5026, + "frequency": 6761018001, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 2000, + "amplitude": 0.2, + "frequency": 7803441221, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + }, + "4": { + "RX": { + "duration": 40, + "amplitude": 0.5172, + "frequency": 6586543060, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.5172, + "frequency": 6586543060, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 2000, + "amplitude": 0.4, + "frequency": 8058947261, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + } + }, + "two_qubit": { + "2-3": { + "CZ": [ + { + "duration": 32, + "amplitude": -0.6025, + "shape": "Exponential(12, 5000, 0.1)", + "qubit": 3, + "relative_start": 0, + "type": "qf" + }, + { + "duration": 20, + "amplitude": 0, + "shape": "Rectangular())", + "qubit": 3, + "relative_start": 32, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": -3.63, + "qubit": 3 + }, + { + "duration": 32, + "amplitude": 0, + "shape": "Rectangular())", + "qubit": 2, + "relative_start": 0, + "type": "qf" + }, + { + "duration": 20, + "amplitude": 0, + "shape": "Rectangular())", + "qubit": 2, + "relative_start": 32, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": -0.041, + "qubit": 2 + } + ] + }, + "0-2": { + "CZ": [ + { + "duration": 28, + "amplitude": -0.142, + "shape": "Exponential(12, 5000, 0.1)", + "qubit": 2, + "relative_start": 0, + "type": "qf" + } + ] + }, + "1-2": { + "CZ": [ + { + "duration": 32, + "amplitude": -0.6025, + "shape": "Exponential(12, 5000, 0.1)", + "qubit": 3, + "relative_start": 0, + "type": "qf" + }, + { + "duration": 20, + "amplitude": 0, + "shape": "Rectangular())", + "qubit": 3, + "relative_start": 32, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": -3.63, + "qubit": 3 + }, + { + "duration": 32, + "amplitude": 0, + "shape": "Rectangular())", + "qubit": 2, + "relative_start": 0, + "type": "qf" + }, + { + "duration": 20, + "amplitude": 0, + "shape": "Rectangular())", + "qubit": 2, + "relative_start": 32, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": -0.041, + "qubit": 2 + } + ] + } + } + }, + "characterization": { + "single_qubit": { + "0": { + "readout_frequency": 7213299307, + "drive_frequency": 5050304836, + "anharmonicity": 291463266, + "T1": 5857, + "T2": 0, + "sweetspot": 0.5507 + }, + "1": { + "readout_frequency": 7452990931, + "drive_frequency": 4852833073, + "anharmonicity": 292584018, + "T1": 1253, + "T2": 0, + "sweetspot": 0.2227, + "iq_angle": 146.297, + "threshold": 0.003488 + }, + "2": { + "readout_frequency": 7655083068, + "drive_frequency": 5795371914, + "anharmonicity": 276187576, + "T1": 4563, + "T2": 0, + "sweetspot": -0.378, + "iq_angle": 97.821, + "threshold": 0.002904 + }, + "3": { + "readout_frequency": 7803441221, + "drive_frequency": 6761018001, + "anharmonicity": 262310994, + "T1": 4232, + "T2": 0, + "sweetspot": -0.8899, + "iq_angle": 91.209, + "threshold": 0.004318 + }, + "4": { + "readout_frequency": 8058947261, + "drive_frequency": 6586543060, + "anharmonicity": 261390626, + "T1": 492, + "T2": 0, + "sweetspot": 0.589, + "iq_angle": 7.997, + "threshold": 0.002323 + } + } + } +} diff --git a/tests/dummy_qrc/qblox.py b/tests/dummy_qrc/qblox/platform.py similarity index 79% rename from tests/dummy_qrc/qblox.py rename to tests/dummy_qrc/qblox/platform.py index 235518073..6c7c47be3 100644 --- a/tests/dummy_qrc/qblox.py +++ b/tests/dummy_qrc/qblox/platform.py @@ -1,9 +1,9 @@ import pathlib from qibolab.channels import Channel, ChannelMap -from qibolab.instruments.qblox.cluster_qcm_bb import ClusterQCM_BB -from qibolab.instruments.qblox.cluster_qcm_rf import ClusterQCM_RF -from qibolab.instruments.qblox.cluster_qrm_rf import ClusterQRM_RF +from qibolab.instruments.qblox.cluster_qcm_bb import QcmBb +from qibolab.instruments.qblox.cluster_qcm_rf import QcmRf +from qibolab.instruments.qblox.cluster_qrm_rf import QrmRf from qibolab.instruments.qblox.controller import QbloxController from qibolab.instruments.rohde_schwarz import SGS100A from qibolab.platform import Platform @@ -14,20 +14,19 @@ load_settings, ) -NAME = "qblox" ADDRESS = "192.168.0.6" TIME_OF_FLIGHT = 500 -RUNCARD = pathlib.Path(__file__).parent / "qblox.yml" +FOLDER = pathlib.Path(__file__).parent -def create(runcard_path=RUNCARD): +def create(folder: pathlib.Path = FOLDER): """QuantWare 5q-chip controlled using qblox cluster. Args: runcard_path (str): Path to the runcard file. """ - runcard = load_runcard(runcard_path) + runcard = load_runcard(folder) modules = {} # DEBUG: debug folder = report folder @@ -39,13 +38,13 @@ def create(runcard_path=RUNCARD): # modules[name]._debug_folder = folder modules = { - "qcm_bb0": ClusterQCM_BB("qcm_bb0", f"{ADDRESS}:2"), - "qcm_bb1": ClusterQCM_BB("qcm_bb1", f"{ADDRESS}:4"), - "qcm_rf0": ClusterQCM_RF("qcm_rf0", f"{ADDRESS}:6"), - "qcm_rf1": ClusterQCM_RF("qcm_rf1", f"{ADDRESS}:8"), - "qcm_rf2": ClusterQCM_RF("qcm_rf2", f"{ADDRESS}:10"), - "qrm_rf_a": ClusterQRM_RF("qrm_rf_a", f"{ADDRESS}:16"), - "qrm_rf_b": ClusterQRM_RF("qrm_rf_b", f"{ADDRESS}:18"), + "qcm_bb0": QcmBb("qcm_bb0", f"{ADDRESS}:2"), + "qcm_bb1": QcmBb("qcm_bb1", f"{ADDRESS}:4"), + "qcm_rf0": QcmRf("qcm_rf0", f"{ADDRESS}:6"), + "qcm_rf1": QcmRf("qcm_rf1", f"{ADDRESS}:8"), + "qcm_rf2": QcmRf("qcm_rf2", f"{ADDRESS}:10"), + "qrm_rf_a": QrmRf("qrm_rf_a", f"{ADDRESS}:16"), + "qrm_rf_b": QrmRf("qrm_rf_b", f"{ADDRESS}:18"), } controller = QbloxController("qblox_controller", ADDRESS, modules) @@ -111,4 +110,6 @@ def create(runcard_path=RUNCARD): settings = load_settings(runcard) - return Platform("qblox", qubits, pairs, instruments, settings, resonator_type="2D") + return Platform( + str(FOLDER), qubits, pairs, instruments, settings, resonator_type="2D" + ) diff --git a/tests/dummy_qrc/qm.yml b/tests/dummy_qrc/qm.yml deleted file mode 100644 index 1f1f30ced..000000000 --- a/tests/dummy_qrc/qm.yml +++ /dev/null @@ -1,298 +0,0 @@ -nqubits: 5 - -qubits: [0, 1, 2, 3, 4] - -settings: - nshots: 1024 - relaxation_time: 50_000 - -topology: [[0, 2], [1, 2], [2, 3], [2, 4]] - -instruments: - con1: - i1: - gain: 0 - i2: - gain: 0 - con2: - o2: - filter: - feedforward: [1.0684635881381783, -1.0163217174522334] - feedback: [0.947858129314055] - i1: - gain: 0 - i2: - gain: 0 - lo_readout_a: - frequency: 7_300_000_000 - power: 18 - lo_readout_b: - frequency: 7_900_000_000 - power: 15 - lo_drive_low: - frequency: 4_700_000_000 - power: 16 - lo_drive_mid: - frequency: 5_600_000_000 - power: 16 - lo_drive_high: - frequency: 6_500_000_000 - power: 16 - twpa_a: - frequency: 6_511_000_000 - power: 4.5 - - -native_gates: - single_qubit: - 0: # qubit number - RX: - duration: 40 - amplitude: 0.005 - frequency: 4_700_000_000 - shape: Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 40 - amplitude: 0.005 - frequency: 4_700_000_000 - shape: Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 1000 - amplitude: 0.0025 - frequency: 7_226_500_000 - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - 1: # qubit number - RX: - duration: 40 - amplitude: 0.0484 - frequency: 4_855_663_000 - #frequency: 4_718_515_000 # 02 transition (more likely) - shape: Drag(5, -0.02) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 40 - amplitude: 0.0484 - frequency: 4_855_663_000 - #frequency: 4_718_515_000 # 02 transition (more likely) - shape: Drag(5, -0.02) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 620 - amplitude: 0.003575 - frequency: 7_453_265_000 - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - 2: # qubit number - RX: - duration: 40 - amplitude: 0.05682 - frequency: 5_800_563_000 - #frequency: 5_661_400_000 # 02 transition - shape: Drag(5, -0.04) #Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 40 - amplitude: 0.05682 - frequency: 5_800_563_000 - #frequency: 5_661_400_000 # 02 transition - shape: Drag(5, -0.04) #Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 960 - amplitude: 0.00325 - frequency: 7_655_107_000 - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - 3: # qubit number - RX: - duration: 40 - amplitude: 0.138 - frequency: 6_760_922_000 - #frequency: 6_628_822_000 # 02 transition - shape: Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 40 - amplitude: 0.138 - frequency: 6_760_922_000 - #frequency: 6_628_822_000 # 02 transition - shape: Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 960 - amplitude: 0.004225 - frequency: 7_802_191_000 - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - 4: # qubit number - RX: - duration: 40 - amplitude: 0.0617 - frequency: 6_585_053_000 - shape: Drag(5, 0.0) #Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 40 - amplitude: 0.0617 - frequency: 6_585_053_000 - shape: Drag(5, 0.0) #Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 640 - amplitude: 0.0039 - frequency: 8_057_668_000 - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - - two_qubit: - 1-2: - CZ: - - duration: 30 - amplitude: 0.055 - shape: Rectangular() - qubit: 2 - relative_start: 0 - type: qf - - type: virtual_z - phase: -1.5707963267948966 - qubit: 1 - - type: virtual_z - phase: -1.5707963267948966 - qubit: 2 - 2-3: - CZ: - - duration: 32 - amplitude: -0.0513 - shape: Rectangular() - qubit: 3 - relative_start: 0 - type: qf - - type: virtual_z - phase: -1.5707963267948966 - qubit: 2 - - type: virtual_z - phase: -1.5707963267948966 - qubit: 3 - - -characterization: - single_qubit: - 0: - readout_frequency: 0.0 - drive_frequency: 0.0 - T1: 0.0 - T2: 0.0 - sweetspot: 0.0 - # parameters for single shot classification - threshold: 0.0 - iq_angle: 0.00 - # required for mixers (not sure if it should be here) - mixer_drive_g: 0.0 - mixer_drive_phi: 0.0 - mixer_readout_g: 0.0 - mixer_readout_phi: 0.0 - 1: - readout_frequency: 7_453_265_000 - drive_frequency: 4_855_663_000 - T1: 0.0 - T2: 0.0 - sweetspot: -0.047 - # parameters for single shot classification - threshold: 0.00028502261712637096 - iq_angle: 1.283105298787488 - # Software classifier - # classifier: - # type: "scikit" - # model: "qw5q_gold/RBF_SVM_1.pkl" - # required for mixers (not sure if it should be here) - mixer_drive_g: 0.0 - mixer_drive_phi: 0.0 - mixer_readout_g: 0.0 - mixer_readout_phi: 0.0 - 2: - readout_frequency: 7_655_107_000 - drive_frequency: 5_799_876_000 - T1: 0.0 - T2: 0.0 - sweetspot: -0.045 - # parameters for single shot classification - threshold: 0.0002694329123116206 - iq_angle: 4.912447775569025 - # Software classifier - # classifier: - # type: "scikit" - # model: "qw5q_gold/RBF_SVM_2.pkl" - # required for mixers (not sure if it should be here) - mixer_drive_g: 0.0 - mixer_drive_phi: 0.0 - mixer_readout_g: 0.0 - mixer_readout_phi: 0.0 - 3: - readout_frequency: 7_802_391_000 - drive_frequency: 6_760_700_000 - T1: 0.0 - T2: 0.0 - sweetspot: 0.034 - # parameters for single shot classification - threshold: 0.0003363427381347193 - iq_angle: 1.6124890998581591 - # Software classifier - # classifier: - # type: "scikit" - # model: "qw5q_gold/RBF_SVM_3.pkl" - # required for mixers (not sure if it should be here) - mixer_drive_g: 0.0 - mixer_drive_phi: 0.0 - mixer_readout_g: 0.0 - mixer_readout_phi: 0.0 - 4: - readout_frequency: 8_057_668_000 - drive_frequency: 6_585_053_000 - T1: 0.0 - T2: 0.0 - sweetspot: -0.057 - # parameters for single shot classification - threshold: 0.00013079660165463033 - iq_angle: 5.6303684840135 - # Software classifier - # classifier: - # type: "scikit" - # model: "qw5q_gold/RBF_SVM_4.pkl" - # required for mixers (not sure if it should be here) - mixer_drive_g: 0.0 - mixer_drive_phi: 0.0 - mixer_readout_g: 0.0 - mixer_readout_phi: 0.0 diff --git a/tests/dummy_qrc/qm/parameters.json b/tests/dummy_qrc/qm/parameters.json new file mode 100644 index 000000000..5f2d43a0b --- /dev/null +++ b/tests/dummy_qrc/qm/parameters.json @@ -0,0 +1,336 @@ +{ + "nqubits": 5, + "qubits": [ + 0, + 1, + 2, + 3, + 4 + ], + "settings": { + "nshots": 1024, + "relaxation_time": 50000 + }, + "topology": [ + [ + 0, + 2 + ], + [ + 1, + 2 + ], + [ + 2, + 3 + ], + [ + 2, + 4 + ] + ], + "instruments": { + "con1": { + "i1": {"gain": 0}, + "i2": {"gain": 0} + }, + "con2": { + "o2": { + "filter": { + "feedforward": [1.0684635881381783, -1.0163217174522334], + "feedback": [0.947858129314055] + } + }, + "i1": {"gain": 0}, + "i2": {"gain": 0} + }, + "lo_readout_a": { + "frequency": 7300000000, + "power": 18 + }, + "lo_readout_b": { + "frequency": 7900000000, + "power": 15 + }, + "lo_drive_low": { + "frequency": 4700000000, + "power": 16 + }, + "lo_drive_mid": { + "frequency": 5600000000, + "power": 16 + }, + "lo_drive_high": { + "frequency": 6500000000, + "power": 16 + }, + "twpa_a": { + "frequency": 6511000000, + "power": 4.5 + } + }, + "native_gates": { + "single_qubit": { + "0": { + "RX": { + "duration": 40, + "amplitude": 0.005, + "frequency": 4700000000, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.005, + "frequency": 4700000000, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 1000, + "amplitude": 0.0025, + "frequency": 7226500000, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + }, + "1": { + "RX": { + "duration": 40, + "amplitude": 0.0484, + "frequency": 4855663000, + "shape": "Drag(5, -0.02)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.0484, + "frequency": 4855663000, + "shape": "Drag(5, -0.02)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 620, + "amplitude": 0.003575, + "frequency": 7453265000, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + }, + "2": { + "RX": { + "duration": 40, + "amplitude": 0.05682, + "frequency": 5800563000, + "shape": "Drag(5, -0.04)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.05682, + "frequency": 5800563000, + "shape": "Drag(5, -0.04)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 960, + "amplitude": 0.00325, + "frequency": 7655107000, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + }, + "3": { + "RX": { + "duration": 40, + "amplitude": 0.138, + "frequency": 6760922000, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.138, + "frequency": 6760922000, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 960, + "amplitude": 0.004225, + "frequency": 7802191000, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + }, + "4": { + "RX": { + "duration": 40, + "amplitude": 0.0617, + "frequency": 6585053000, + "shape": "Drag(5, 0.0)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.0617, + "frequency": 6585053000, + "shape": "Drag(5, 0.0)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 640, + "amplitude": 0.0039, + "frequency": 8057668000, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + } + }, + "two_qubit": { + "1-2": { + "CZ": [ + { + "duration": 30, + "amplitude": 0.055, + "shape": "Rectangular()", + "qubit": 2, + "relative_start": 0, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": -1.5707963267948966, + "qubit": 1 + }, + { + "type": "virtual_z", + "phase": -1.5707963267948966, + "qubit": 2 + } + ] + }, + "2-3": { + "CZ": [ + { + "duration": 32, + "amplitude": -0.0513, + "shape": "Rectangular()", + "qubit": 3, + "relative_start": 0, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": -1.5707963267948966, + "qubit": 2 + }, + { + "type": "virtual_z", + "phase": -1.5707963267948966, + "qubit": 3 + } + ] + } + } + }, + "characterization": { + "single_qubit": { + "0": { + "readout_frequency": 0.0, + "drive_frequency": 0.0, + "T1": 0.0, + "T2": 0.0, + "sweetspot": 0.0, + "threshold": 0.0, + "iq_angle": 0.0, + "mixer_drive_g": 0.0, + "mixer_drive_phi": 0.0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0.0 + }, + "1": { + "readout_frequency": 7453265000, + "drive_frequency": 4855663000, + "T1": 0.0, + "T2": 0.0, + "sweetspot": -0.047, + "threshold": 0.00028502261712637096, + "iq_angle": 1.283105298787488, + "mixer_drive_g": 0.0, + "mixer_drive_phi": 0.0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0.0 + }, + "2": { + "readout_frequency": 7655107000, + "drive_frequency": 5799876000, + "T1": 0.0, + "T2": 0.0, + "sweetspot": -0.045, + "threshold": 0.0002694329123116206, + "iq_angle": 4.912447775569025, + "mixer_drive_g": 0.0, + "mixer_drive_phi": 0.0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0.0 + }, + "3": { + "readout_frequency": 7802391000, + "drive_frequency": 6760700000, + "T1": 0.0, + "T2": 0.0, + "sweetspot": 0.034, + "threshold": 0.0003363427381347193, + "iq_angle": 1.6124890998581591, + "mixer_drive_g": 0.0, + "mixer_drive_phi": 0.0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0.0 + }, + "4": { + "readout_frequency": 8057668000, + "drive_frequency": 6585053000, + "T1": 0.0, + "T2": 0.0, + "sweetspot": -0.057, + "threshold": 0.00013079660165463033, + "iq_angle": 5.6303684840135, + "mixer_drive_g": 0.0, + "mixer_drive_phi": 0.0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0.0 + } + } + } +} diff --git a/tests/dummy_qrc/qm.py b/tests/dummy_qrc/qm/platform.py similarity index 96% rename from tests/dummy_qrc/qm.py rename to tests/dummy_qrc/qm/platform.py index 95d4f4b95..4ded60a64 100644 --- a/tests/dummy_qrc/qm.py +++ b/tests/dummy_qrc/qm/platform.py @@ -11,10 +11,10 @@ load_settings, ) -RUNCARD = pathlib.Path(__file__).parent / "qm.yml" +FOLDER = pathlib.Path(__file__).parent -def create(runcard_path=RUNCARD): +def create(folder: pathlib.Path = FOLDER): """Dummy platform using Quantum Machines (QM) OPXs and Rohde Schwarz local oscillators. @@ -70,7 +70,7 @@ def create(runcard_path=RUNCARD): channels["L4-26"].local_oscillator = local_oscillators[5] # create qubit objects - runcard = load_runcard(runcard_path) + runcard = load_runcard(folder) qubits, couplers, pairs = load_qubits(runcard) # assign channels to qubits diff --git a/tests/dummy_qrc/qm_octave.yml b/tests/dummy_qrc/qm_octave.yml deleted file mode 100644 index 760f6a8b7..000000000 --- a/tests/dummy_qrc/qm_octave.yml +++ /dev/null @@ -1,307 +0,0 @@ -nqubits: 5 - -qubits: [0, 1, 2, 3, 4] - -settings: - nshots: 1024 - relaxation_time: 50_000 - -topology: [[0, 2], [1, 2], [2, 3], [2, 4]] - -instruments: - con1: - i1: - gain: 0 - i2: - gain: 0 - con2: - i1: - gain: 0 - i2: - gain: 0 - octave1: - o1: - lo_frequency: 4_700_000_000 - gain: 0 - o2: - lo_frequency: 5_600_000_000 - gain: 0 - o3: - lo_frequency: 6_500_000_000 - gain: 0 - o4: - lo_frequency: 6_500_000_000 - gain: 0 - o5: - lo_frequency: 7_300_000_000 - gain: 0 - i1: - lo_frequency: 7_300_000_000 - octave2: - o5: - lo_frequency: 7_900_000_000 - gain: 0 - i1: - lo_frequency: 7_900_000_000 - octave3: - o1: - lo_frequency: 4_700_000_000 - gain: 0 - twpa_a: - frequency: 6_511_000_000 - power: 4.5 - - -native_gates: - single_qubit: - 0: # qubit number - RX: - duration: 40 - amplitude: 0.005 - frequency: 4_700_000_000 - shape: Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 40 - amplitude: 0.005 - frequency: 4_700_000_000 - shape: Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 1000 - amplitude: 0.0025 - frequency: 7_226_500_000 - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - 1: # qubit number - RX: - duration: 40 - amplitude: 0.0484 - frequency: 4_855_663_000 - #frequency: 4_718_515_000 # 02 transition (more likely) - shape: Drag(5, -0.02) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 40 - amplitude: 0.0484 - frequency: 4_855_663_000 - #frequency: 4_718_515_000 # 02 transition (more likely) - shape: Drag(5, -0.02) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 620 - amplitude: 0.003575 - frequency: 7_453_265_000 - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - 2: # qubit number - RX: - duration: 40 - amplitude: 0.05682 - frequency: 5_800_563_000 - #frequency: 5_661_400_000 # 02 transition - shape: Drag(5, -0.04) #Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 40 - amplitude: 0.05682 - frequency: 5_800_563_000 - #frequency: 5_661_400_000 # 02 transition - shape: Drag(5, -0.04) #Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 960 - amplitude: 0.00325 - frequency: 7_655_107_000 - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - 3: # qubit number - RX: - duration: 40 - amplitude: 0.138 - frequency: 6_760_922_000 - #frequency: 6_628_822_000 # 02 transition - shape: Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 40 - amplitude: 0.138 - frequency: 6_760_922_000 - #frequency: 6_628_822_000 # 02 transition - shape: Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 960 - amplitude: 0.004225 - frequency: 7_802_191_000 - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - 4: # qubit number - RX: - duration: 40 - amplitude: 0.0617 - frequency: 6_585_053_000 - shape: Drag(5, 0.0) #Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 40 - amplitude: 0.0617 - frequency: 6_585_053_000 - shape: Drag(5, 0.0) #Gaussian(5) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 640 - amplitude: 0.0039 - frequency: 8_057_668_000 - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - - two_qubit: - 1-2: - CZ: - - duration: 30 - amplitude: 0.055 - shape: Rectangular() - qubit: 2 - relative_start: 0 - type: qf - - type: virtual_z - phase: -1.5707963267948966 - qubit: 1 - - type: virtual_z - phase: -1.5707963267948966 - qubit: 2 - 2-3: - CZ: - - duration: 32 - amplitude: -0.0513 - shape: Rectangular() - qubit: 3 - relative_start: 0 - type: qf - - type: virtual_z - phase: -1.5707963267948966 - qubit: 2 - - type: virtual_z - phase: -1.5707963267948966 - qubit: 3 - - -characterization: - single_qubit: - 0: - readout_frequency: 0.0 - drive_frequency: 0.0 - T1: 0.0 - T2: 0.0 - sweetspot: 0.0 - # parameters for single shot classification - threshold: 0.0 - iq_angle: 0.00 - # required for mixers (not sure if it should be here) - mixer_drive_g: 0.0 - mixer_drive_phi: 0.0 - mixer_readout_g: 0.0 - mixer_readout_phi: 0.0 - 1: - readout_frequency: 7_453_265_000 - drive_frequency: 4_855_663_000 - T1: 0.0 - T2: 0.0 - sweetspot: -0.047 - # parameters for single shot classification - threshold: 0.00028502261712637096 - iq_angle: 1.283105298787488 - # Software classifier - # classifier: - # type: "scikit" - # model: "qw5q_gold/RBF_SVM_1.pkl" - # required for mixers (not sure if it should be here) - mixer_drive_g: 0.0 - mixer_drive_phi: 0.0 - mixer_readout_g: 0.0 - mixer_readout_phi: 0.0 - 2: - readout_frequency: 7_655_107_000 - drive_frequency: 5_799_876_000 - T1: 0.0 - T2: 0.0 - sweetspot: -0.045 - # parameters for single shot classification - threshold: 0.0002694329123116206 - iq_angle: 4.912447775569025 - # Software classifier - # classifier: - # type: "scikit" - # model: "qw5q_gold/RBF_SVM_2.pkl" - # required for mixers (not sure if it should be here) - mixer_drive_g: 0.0 - mixer_drive_phi: 0.0 - mixer_readout_g: 0.0 - mixer_readout_phi: 0.0 - 3: - readout_frequency: 7_802_391_000 - drive_frequency: 6_760_700_000 - T1: 0.0 - T2: 0.0 - sweetspot: 0.034 - # parameters for single shot classification - threshold: 0.0003363427381347193 - iq_angle: 1.6124890998581591 - # Software classifier - # classifier: - # type: "scikit" - # model: "qw5q_gold/RBF_SVM_3.pkl" - # required for mixers (not sure if it should be here) - mixer_drive_g: 0.0 - mixer_drive_phi: 0.0 - mixer_readout_g: 0.0 - mixer_readout_phi: 0.0 - 4: - readout_frequency: 8_057_668_000 - drive_frequency: 6_585_053_000 - T1: 0.0 - T2: 0.0 - sweetspot: -0.057 - # parameters for single shot classification - threshold: 0.00013079660165463033 - iq_angle: 5.6303684840135 - # Software classifier - # classifier: - # type: "scikit" - # model: "qw5q_gold/RBF_SVM_4.pkl" - # required for mixers (not sure if it should be here) - mixer_drive_g: 0.0 - mixer_drive_phi: 0.0 - mixer_readout_g: 0.0 - mixer_readout_phi: 0.0 diff --git a/tests/dummy_qrc/qm_octave/parameters.json b/tests/dummy_qrc/qm_octave/parameters.json new file mode 100644 index 000000000..c56861589 --- /dev/null +++ b/tests/dummy_qrc/qm_octave/parameters.json @@ -0,0 +1,358 @@ +{ + "nqubits": 5, + "qubits": [ + 0, + 1, + 2, + 3, + 4 + ], + "settings": { + "nshots": 1024, + "relaxation_time": 50000 + }, + "topology": [ + [ + 0, + 2 + ], + [ + 1, + 2 + ], + [ + 2, + 3 + ], + [ + 2, + 4 + ] + ], + "instruments": { + "con1": { + "i1": { + "gain": 0 + }, + "i2": { + "gain": 0 + } + }, + "con2": { + "i1": { + "gain": 0 + }, + "i2": { + "gain": 0 + } + }, + "octave1": { + "o1": { + "lo_frequency": 4700000000, + "gain": 0 + }, + "o2": { + "lo_frequency": 5600000000, + "gain": 0 + }, + "o3": { + "lo_frequency": 6500000000, + "gain": 0 + }, + "o4": { + "lo_frequency": 6500000000, + "gain": 0 + }, + "o5": { + "lo_frequency": 7300000000, + "gain": 0 + }, + "i1": { + "lo_frequency": 7300000000 + } + }, + "octave2": { + "o5": { + "lo_frequency": 7900000000, + "gain": 0 + }, + "i1": { + "lo_frequency": 7900000000 + } + }, + "octave3": { + "o1": { + "lo_frequency": 4700000000, + "gain": 0 + } + }, + "twpa_a": { + "frequency": 6511000000, + "power": 4.5 + } + }, + "native_gates": { + "single_qubit": { + "0": { + "RX": { + "duration": 40, + "amplitude": 0.005, + "frequency": 4700000000, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.005, + "frequency": 4700000000, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 1000, + "amplitude": 0.0025, + "frequency": 7226500000, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + }, + "1": { + "RX": { + "duration": 40, + "amplitude": 0.0484, + "frequency": 4855663000, + "shape": "Drag(5, -0.02)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.0484, + "frequency": 4855663000, + "shape": "Drag(5, -0.02)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 620, + "amplitude": 0.003575, + "frequency": 7453265000, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + }, + "2": { + "RX": { + "duration": 40, + "amplitude": 0.05682, + "frequency": 5800563000, + "shape": "Drag(5, -0.04)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.05682, + "frequency": 5800563000, + "shape": "Drag(5, -0.04)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 960, + "amplitude": 0.00325, + "frequency": 7655107000, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + }, + "3": { + "RX": { + "duration": 40, + "amplitude": 0.138, + "frequency": 6760922000, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.138, + "frequency": 6760922000, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 960, + "amplitude": 0.004225, + "frequency": 7802191000, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + }, + "4": { + "RX": { + "duration": 40, + "amplitude": 0.0617, + "frequency": 6585053000, + "shape": "Drag(5, 0.0)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.0617, + "frequency": 6585053000, + "shape": "Drag(5, 0.0)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 640, + "amplitude": 0.0039, + "frequency": 8057668000, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + } + }, + "two_qubit": { + "1-2": { + "CZ": [ + { + "duration": 30, + "amplitude": 0.055, + "shape": "Rectangular()", + "qubit": 2, + "relative_start": 0, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": -1.5707963267948966, + "qubit": 1 + }, + { + "type": "virtual_z", + "phase": -1.5707963267948966, + "qubit": 2 + } + ] + }, + "2-3": { + "CZ": [ + { + "duration": 32, + "amplitude": -0.0513, + "shape": "Rectangular()", + "qubit": 3, + "relative_start": 0, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": -1.5707963267948966, + "qubit": 2 + }, + { + "type": "virtual_z", + "phase": -1.5707963267948966, + "qubit": 3 + } + ] + } + } + }, + "characterization": { + "single_qubit": { + "0": { + "readout_frequency": 0.0, + "drive_frequency": 0.0, + "T1": 0.0, + "T2": 0.0, + "sweetspot": 0.0, + "threshold": 0.0, + "iq_angle": 0.0, + "mixer_drive_g": 0.0, + "mixer_drive_phi": 0.0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0.0 + }, + "1": { + "readout_frequency": 7453265000, + "drive_frequency": 4855663000, + "T1": 0.0, + "T2": 0.0, + "sweetspot": -0.047, + "threshold": 0.00028502261712637096, + "iq_angle": 1.283105298787488, + "mixer_drive_g": 0.0, + "mixer_drive_phi": 0.0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0.0 + }, + "2": { + "readout_frequency": 7655107000, + "drive_frequency": 5799876000, + "T1": 0.0, + "T2": 0.0, + "sweetspot": -0.045, + "threshold": 0.0002694329123116206, + "iq_angle": 4.912447775569025, + "mixer_drive_g": 0.0, + "mixer_drive_phi": 0.0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0.0 + }, + "3": { + "readout_frequency": 7802391000, + "drive_frequency": 6760700000, + "T1": 0.0, + "T2": 0.0, + "sweetspot": 0.034, + "threshold": 0.0003363427381347193, + "iq_angle": 1.6124890998581591, + "mixer_drive_g": 0.0, + "mixer_drive_phi": 0.0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0.0 + }, + "4": { + "readout_frequency": 8057668000, + "drive_frequency": 6585053000, + "T1": 0.0, + "T2": 0.0, + "sweetspot": -0.057, + "threshold": 0.00013079660165463033, + "iq_angle": 5.6303684840135, + "mixer_drive_g": 0.0, + "mixer_drive_phi": 0.0, + "mixer_readout_g": 0.0, + "mixer_readout_phi": 0.0 + } + } + } +} diff --git a/tests/dummy_qrc/qm_octave.py b/tests/dummy_qrc/qm_octave/platform.py similarity index 97% rename from tests/dummy_qrc/qm_octave.py rename to tests/dummy_qrc/qm_octave/platform.py index 37916fb07..19a04a019 100644 --- a/tests/dummy_qrc/qm_octave.py +++ b/tests/dummy_qrc/qm_octave/platform.py @@ -11,7 +11,7 @@ load_settings, ) -RUNCARD = pathlib.Path(__file__).parent / "qm_octave.yml" +RUNCARD = pathlib.Path(__file__).parent def create(runcard_path=RUNCARD): diff --git a/tests/dummy_qrc/rfsoc.yml b/tests/dummy_qrc/rfsoc.yml deleted file mode 100644 index b7048f529..000000000 --- a/tests/dummy_qrc/rfsoc.yml +++ /dev/null @@ -1,29 +0,0 @@ -nqubits: 1 -qubits: [0] -topology: [] -settings: - nshots: 1024 - relaxation_time: 100000 -instruments: - twpa_a: - frequency: 6_200_000_000 - power: -1 - ErasynthLO: - frequency: 0 - power: 0 -native_gates: - single_qubit: - 0: - RX: {duration: 30, amplitude: 0.05284168507293318, frequency: 5542341844, - shape: Rectangular(), type: qd, relative_start: 0, phase: 0} - RX12: {duration: 30, amplitude: 0.05284168507293318, frequency: 5542341844, - shape: Rectangular(), type: qd, relative_start: 0, phase: 0} - MZ: {duration: 600, amplitude: 0.03, frequency: 7371258599, shape: Rectangular(), - type: ro, relative_start: 0, phase: 0} - two_qubit: {} -characterization: - single_qubit: - 0: {readout_frequency: 7371258599, drive_frequency: 5542341844, pi_pulse_amplitude: 0.05284168507293318, - T1: 10441.64173639732, T2: 4083.4697338939845, threshold: -0.8981346462690887, - iq_angle: -1.2621946150226666, mean_gnd_states: [-0.17994037940379404, -2.4709365853658536], - mean_exc_states: [0.6854460704607047, 0.24369105691056914], T2_spin_echo: 5425.5448969467925} diff --git a/tests/dummy_qrc/rfsoc/parameters.json b/tests/dummy_qrc/rfsoc/parameters.json new file mode 100644 index 000000000..5e6883262 --- /dev/null +++ b/tests/dummy_qrc/rfsoc/parameters.json @@ -0,0 +1,77 @@ +{ + "nqubits": 1, + "qubits": [ + 0 + ], + "topology": [], + "settings": { + "nshots": 1024, + "relaxation_time": 100000 + }, + "instruments": { + "twpa_a": { + "frequency": 6200000000, + "power": -1 + }, + "ErasynthLO": { + "frequency": 0, + "power": 0 + } + }, + "native_gates": { + "single_qubit": { + "0": { + "RX": { + "duration": 30, + "amplitude": 0.05284168507293318, + "frequency": 5542341844, + "shape": "Rectangular()", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 30, + "amplitude": 0.05284168507293318, + "frequency": 5542341844, + "shape": "Rectangular()", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 600, + "amplitude": 0.03, + "frequency": 7371258599, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + } + }, + "two_qubit": {} + }, + "characterization": { + "single_qubit": { + "0": { + "readout_frequency": 7371258599, + "drive_frequency": 5542341844, + "pi_pulse_amplitude": 0.05284168507293318, + "T1": 10441.64173639732, + "T2": 4083.4697338939845, + "threshold": -0.8981346462690887, + "iq_angle": -1.2621946150226666, + "mean_gnd_states": [ + -0.17994037940379404, + -2.4709365853658536 + ], + "mean_exc_states": [ + 0.6854460704607047, + 0.24369105691056914 + ], + "T2_spin_echo": 5425.5448969467925 + } + } + } +} diff --git a/tests/dummy_qrc/rfsoc.py b/tests/dummy_qrc/rfsoc/platform.py similarity index 87% rename from tests/dummy_qrc/rfsoc.py rename to tests/dummy_qrc/rfsoc/platform.py index 5bab3f5f1..b8729571b 100644 --- a/tests/dummy_qrc/rfsoc.py +++ b/tests/dummy_qrc/rfsoc/platform.py @@ -12,10 +12,10 @@ load_settings, ) -RUNCARD = pathlib.Path(__file__).parent / "rfsoc.yml" +FOLDER = pathlib.Path(__file__).parent -def create(runcard_path=RUNCARD): +def create(folder: pathlib.Path = FOLDER): """Dummy platform using QICK project on the RFSoC4x2 board. Used in ``test_instruments_rfsoc.py``. @@ -34,7 +34,7 @@ def create(runcard_path=RUNCARD): lo_era = ERA("ErasynthLO", "192.168.0.212", ethernet=True) channels["L3-18_ro"].local_oscillator = lo_era - runcard = load_runcard(runcard_path) + runcard = load_runcard(FOLDER) qubits, couplers, pairs = load_qubits(runcard) # assign channels to qubits @@ -46,4 +46,6 @@ def create(runcard_path=RUNCARD): instruments = {inst.name: inst for inst in [controller, lo_twpa, lo_era]} settings = load_settings(runcard) instruments = load_instrument_settings(runcard, instruments) - return Platform("rfsoc", qubits, pairs, instruments, settings, resonator_type="3D") + return Platform( + str(FOLDER), qubits, pairs, instruments, settings, resonator_type="3D" + ) diff --git a/tests/dummy_qrc/zurich.yml b/tests/dummy_qrc/zurich.yml deleted file mode 100644 index b3a7ef795..000000000 --- a/tests/dummy_qrc/zurich.yml +++ /dev/null @@ -1,295 +0,0 @@ -nqubits: 5 -qubits: [0, 1, 2, 3, 4] -couplers: [0, 1, 3, 4] -topology: {0: [0, 2], 1: [1, 2], 3: [2, 3], 4: [2, 4]} -settings: - nshots: 4096 - relaxation_time: 300_000 - -instruments: - lo_readout: - frequency: 5_500_000_000 - lo_drive_0: - frequency: 4_200_000_000 - lo_drive_1: - frequency: 4_600_000_000 - lo_drive_2: - frequency: 4_800_000_000 - -native_gates: - single_qubit: - 0: # qubit number - RX: - duration: 40 - amplitude: 0.625 #0.45 - frequency: 4_095_830_788 #doesnt do anything requiered for qibolab to work - # shape: Gaussian(5) - shape: Drag(5, 0.04) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 40 - amplitude: 0.625 #0.45 - frequency: 4_095_830_788 #doesnt do anything requiered for qibolab to work - # shape: Gaussian(5) - shape: Drag(5, 0.04) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 2000 #2000.e-9 - amplitude: .5 # .1 - frequency: 5_229_200_000 #5_233_200_000 #doesnt do anything requiered for qibolab to work - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - - 1: # qubit number - RX: - duration: 90 #80 - amplitude: 0.2 #0.2 - frequency: 4_170_000_000 #doesnt do anything requiered for qibolab to work - shape: Gaussian(5) - # shape: Drag(5, 0.04) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 90 #80 - amplitude: 0.2 #0.2 - frequency: 4_170_000_000 #doesnt do anything requiered for qibolab to work - shape: Gaussian(5) - # shape: Drag(5, 0.04) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 1000 - amplitude: .1 # 1 - frequency: 4_931_000_000 #doesnt do anything requiered for qibolab to work - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - - 2: # qubit number - RX: - duration: 40 #200 #60 - amplitude: 0.59 - frequency: 4_300_587_281 #4_401_600_000 #4_505_500_000 #4_321_500_000 # 4_541_100_000 #doesnt do anything requiered for qibolab to work - shape: Gaussian(5) - # shape: Drag(5, 0.04) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 40 #200 #60 - amplitude: 0.59 - frequency: 4_300_587_281 #4_401_600_000 #4_505_500_000 #4_321_500_000 # 4_541_100_000 #doesnt do anything requiered for qibolab to work - shape: Gaussian(5) - # shape: Drag(5, 0.04) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 2000 - amplitude: .54 - frequency: 6.109e+9 #6_086_000_000 #6_112_000_000 #doesnt do anything requiered for qibolab to work - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - - 3: # qubit number - RX: - duration: 90 #80 - amplitude: 0.75 #0.8 - frequency: 4_100_000_000 #doesnt do anything requiered for qibolab to work - shape: Gaussian(5) - # shape: Drag(5, 0.04) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 90 #80 - amplitude: 0.75 #0.8 - frequency: 4_100_000_000 #doesnt do anything requiered for qibolab to work - shape: Gaussian(5) - # shape: Drag(5, 0.04) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 2000 - amplitude: .01 # 1 - frequency: 5_783_000_000 #doesnt do anything requiered for qibolab to work - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - - 4: # qubit number - RX: - duration: 53 #110 #80 - amplitude: 1 #0.398 #0.8 - frequency: 4_196_800_000 #Small detuning increase freq #4_248_775_000 #doesnt do anything requiered for qibolab to work - shape: Gaussian(5) - # shape: Drag(5, 0.04) - type: qd # qubit drive - relative_start: 0 - phase: 0 - RX12: - duration: 53 #110 #80 - amplitude: 1 #0.398 #0.8 - frequency: 4_196_800_000 #Small detuning increase freq #4_248_775_000 #doesnt do anything requiered for qibolab to work - shape: Gaussian(5) - # shape: Drag(5, 0.04) - type: qd # qubit drive - relative_start: 0 - phase: 0 - MZ: - duration: 1000 - amplitude: .5 #.50 # 1 - frequency: 5_515_000_000 #doesnt do anything requiered for qibolab to work - shape: Rectangular() - type: ro # readout - relative_start: 0 - phase: 0 - - coupler: - 0: - CP: - type: coupler - duration: 1000 - amplitude: .5 - shape: Rectangular() - coupler: 0 - relative_start: 0 - 1: - CP: - type: coupler - duration: 1000 - amplitude: .5 - shape: Rectangular() - coupler: 1 - relative_start: 0 - 3: - CP: - type: coupler - duration: 1000 - amplitude: .5 - shape: Rectangular() - coupler: 3 - relative_start: 0 - 4: - CP: - type: coupler - duration: 1000 - amplitude: .5 - shape: Rectangular() - coupler: 4 - relative_start: 0 - - two_qubit: - 1-2: - CZ: - - duration: 32 - amplitude: -0.6025 - shape: Exponential(12, 5000, 0.1) - qubit: 3 - relative_start: 0 - type: qf - - duration: 20 - amplitude: 0 - shape: Rectangular()) - qubit: 3 - relative_start: 32 - type: qf - - type: virtual_z - phase: -3.630 - qubit: 3 - - - duration: 32 - amplitude: 0 - shape: Rectangular()) - qubit: 2 - relative_start: 0 - type: qf - - duration: 20 - amplitude: 0 - shape: Rectangular()) - qubit: 2 - relative_start: 32 - type: qf - - type: virtual_z - phase: -0.041 - qubit: 2 - -characterization: - single_qubit: - 0: - readout_frequency: 5_229_200_000 #5_233_200_000 - drive_frequency: 4_095_830_788 #4_093_830_788 - T1: 0.0 - T2: 0.0 - sweetspot: 0.05 #Use this as an amplitude of the flux_bias - mean_gnd_states: [1.5420, 0.1813] - mean_exc_states: [2.4499,-0.5629] - # parameters for single shot classification - threshold: 0.8836 - iq_angle: -1.551 - kernel_path: "kernel_q0.npz" - - 1: - readout_frequency: 4_931_000_000 - drive_frequency: 4_170_000_000 - T1: 0. - T2: 0. - sweetspot: 0.0 - mean_gnd_states: [0, 0] - mean_exc_states: [0, 0] - kernel_path: "kernel_q1.npz" - 2: - readout_frequency: 6.109e+9 #6_112_000_000 - drive_frequency: 4_300_587_281 # 4_401_600_000 #4_541_100_000 - T1: 0. - T2: 0. - sweetspot: 0.0 #0.5 #0.62 0.00 - mean_gnd_states: [-1.8243, 1.5926] - mean_exc_states: [-0.8083, 2.3929] - # parameters for single shot classification - threshold: -0.0593 - iq_angle: -0.667 - kernel_path: "kernel_q2.npz" - 3: - readout_frequency: 5_783_000_000 - drive_frequency: 4_100_000_000 - T1: 0. - T2: 0. - sweetspot: 0.0 - mean_gnd_states: [0, 0] - mean_exc_states: [0, 0] - kernel_path: "kernel_q3.npz" - 4: - readout_frequency: 5_515_000_000 - drive_frequency: 4_196_800_000 - T1: 0. - T2: 0. - sweetspot: 0.0 - mean_gnd_states: [0, 0] - mean_exc_states: [0, 0] - # parameters for single shot classification - threshold: 0.233806 #0.370954 #0.350665 - iq_angle: 0.481 # -91.712 #191.016 - kernel_path: "kernel_q4.npz" - coupler: - 0: - sweetspot: 0.0 - 1: - sweetspot: 0.0 - 3: - sweetspot: 0.0 - 4: - sweetspot: 0.0 diff --git a/tests/dummy_qrc/zurich/kernels.npz b/tests/dummy_qrc/zurich/kernels.npz new file mode 100644 index 000000000..3cb33f155 Binary files /dev/null and b/tests/dummy_qrc/zurich/kernels.npz differ diff --git a/tests/dummy_qrc/zurich/parameters.json b/tests/dummy_qrc/zurich/parameters.json new file mode 100644 index 000000000..df0dc9a10 --- /dev/null +++ b/tests/dummy_qrc/zurich/parameters.json @@ -0,0 +1,390 @@ +{ + "nqubits": 5, + "qubits": [ + 0, + 1, + 2, + 3, + 4 + ], + "couplers": [ + 0, + 1, + 3, + 4 + ], + "topology": { + "0": [ + 0, + 2 + ], + "1": [ + 1, + 2 + ], + "3": [ + 2, + 3 + ], + "4": [ + 2, + 4 + ] + }, + "settings": { + "nshots": 4096, + "relaxation_time": 300000 + }, + "instruments": { + "lo_readout": { + "frequency": 5500000000 + }, + "lo_drive_0": { + "frequency": 4200000000 + }, + "lo_drive_1": { + "frequency": 4600000000 + }, + "lo_drive_2": { + "frequency": 4800000000 + } + }, + "native_gates": { + "single_qubit": { + "0": { + "RX": { + "duration": 40, + "amplitude": 0.625, + "frequency": 4095830788, + "shape": "Drag(5, 0.04)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.625, + "frequency": 4095830788, + "shape": "Drag(5, 0.04)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 2000, + "amplitude": 0.5, + "frequency": 5229200000, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + }, + "1": { + "RX": { + "duration": 90, + "amplitude": 0.2, + "frequency": 4170000000, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 90, + "amplitude": 0.2, + "frequency": 4170000000, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 1000, + "amplitude": 0.1, + "frequency": 4931000000, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + }, + "2": { + "RX": { + "duration": 40, + "amplitude": 0.59, + "frequency": 4300587281, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 40, + "amplitude": 0.59, + "frequency": 4300587281, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 2000, + "amplitude": 0.54, + "frequency": 6109000000.0, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + }, + "3": { + "RX": { + "duration": 90, + "amplitude": 0.75, + "frequency": 4100000000, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 90, + "amplitude": 0.75, + "frequency": 4100000000, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 2000, + "amplitude": 0.01, + "frequency": 5783000000, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + }, + "4": { + "RX": { + "duration": 53, + "amplitude": 1, + "frequency": 4196800000, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "RX12": { + "duration": 53, + "amplitude": 1, + "frequency": 4196800000, + "shape": "Gaussian(5)", + "type": "qd", + "relative_start": 0, + "phase": 0 + }, + "MZ": { + "duration": 1000, + "amplitude": 0.5, + "frequency": 5515000000, + "shape": "Rectangular()", + "type": "ro", + "relative_start": 0, + "phase": 0 + } + } + }, + "coupler": { + "0": { + "CP": { + "type": "coupler", + "duration": 1000, + "amplitude": 0.5, + "shape": "Rectangular()", + "coupler": 0, + "relative_start": 0 + } + }, + "1": { + "CP": { + "type": "coupler", + "duration": 1000, + "amplitude": 0.5, + "shape": "Rectangular()", + "coupler": 1, + "relative_start": 0 + } + }, + "3": { + "CP": { + "type": "coupler", + "duration": 1000, + "amplitude": 0.5, + "shape": "Rectangular()", + "coupler": 3, + "relative_start": 0 + } + }, + "4": { + "CP": { + "type": "coupler", + "duration": 1000, + "amplitude": 0.5, + "shape": "Rectangular()", + "coupler": 4, + "relative_start": 0 + } + } + }, + "two_qubit": { + "1-2": { + "CZ": [ + { + "duration": 32, + "amplitude": -0.6025, + "shape": "Exponential(12, 5000, 0.1)", + "qubit": 3, + "relative_start": 0, + "type": "qf" + }, + { + "duration": 20, + "amplitude": 0, + "shape": "Rectangular())", + "qubit": 3, + "relative_start": 32, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": -3.63, + "qubit": 3 + }, + { + "duration": 32, + "amplitude": 0, + "shape": "Rectangular())", + "qubit": 2, + "relative_start": 0, + "type": "qf" + }, + { + "duration": 20, + "amplitude": 0, + "shape": "Rectangular())", + "qubit": 2, + "relative_start": 32, + "type": "qf" + }, + { + "type": "virtual_z", + "phase": -0.041, + "qubit": 2 + } + ] + } + } + }, + "characterization": { + "single_qubit": { + "0": { + "readout_frequency": 5229200000, + "drive_frequency": 4095830788, + "T1": 0.0, + "T2": 0.0, + "sweetspot": 0.05, + "mean_gnd_states": [ + 1.542, + 0.1813 + ], + "mean_exc_states": [ + 2.4499, + -0.5629 + ], + "threshold": 0.8836, + "iq_angle": -1.551 + }, + "1": { + "readout_frequency": 4931000000, + "drive_frequency": 4170000000, + "T1": 0.0, + "T2": 0.0, + "sweetspot": 0.0, + "mean_gnd_states": [ + 0, + 0 + ], + "mean_exc_states": [ + 0, + 0 + ] + }, + "2": { + "readout_frequency": 6109000000.0, + "drive_frequency": 4300587281, + "T1": 0.0, + "T2": 0.0, + "sweetspot": 0.0, + "mean_gnd_states": [ + -1.8243, + 1.5926 + ], + "mean_exc_states": [ + -0.8083, + 2.3929 + ], + "threshold": -0.0593, + "iq_angle": -0.667 + }, + "3": { + "readout_frequency": 5783000000, + "drive_frequency": 4100000000, + "T1": 0.0, + "T2": 0.0, + "sweetspot": 0.0, + "mean_gnd_states": [ + 0, + 0 + ], + "mean_exc_states": [ + 0, + 0 + ] + }, + "4": { + "readout_frequency": 5515000000, + "drive_frequency": 4196800000, + "T1": 0.0, + "T2": 0.0, + "sweetspot": 0.0, + "mean_gnd_states": [ + 0, + 0 + ], + "mean_exc_states": [ + 0, + 0 + ], + "threshold": 0.233806, + "iq_angle": 0.481 + } + }, + "coupler": { + "0": { + "sweetspot": 0.0 + }, + "1": { + "sweetspot": 0.0 + }, + "3": { + "sweetspot": 0.0 + }, + "4": { + "sweetspot": 0.0 + } + } + } +} diff --git a/tests/dummy_qrc/zurich.py b/tests/dummy_qrc/zurich/platform.py similarity index 94% rename from tests/dummy_qrc/zurich.py rename to tests/dummy_qrc/zurich/platform.py index 7a251739c..e74c11672 100644 --- a/tests/dummy_qrc/zurich.py +++ b/tests/dummy_qrc/zurich/platform.py @@ -9,6 +9,7 @@ from qibolab.channels import Channel, ChannelMap from qibolab.instruments.dummy import DummyLocalOscillator as LocalOscillator from qibolab.instruments.zhinst import Zurich +from qibolab.kernels import Kernels from qibolab.serialize import ( load_instrument_settings, load_qubits, @@ -16,16 +17,15 @@ load_settings, ) -RUNCARD = pathlib.Path(__file__).parent / "zurich.yml" -FOLDER = pathlib.Path(__file__).parent / "iqm5q/" +FOLDER = pathlib.Path(__file__).parent N_QUBITS = 5 -def create(runcard_path=RUNCARD): - """IQM 5q-chip controlled Zurich Instrumetns (Zh) SHFQC, HDAWGs and PQSC. +def create(path: pathlib.Path = FOLDER): + """IQM 5q-chip controlled Zurich Instruments (Zh) SHFQC, HDAWGs and PQSC. Args: - runcard_path (str): Path to the runcard file. + path (str): Path to configuration folder. """ device_setup = DeviceSetup("EL_ZURO") @@ -171,8 +171,9 @@ def create(runcard_path=RUNCARD): channels[ch].local_oscillator = local_oscillators[lo] # create qubit objects - runcard = load_runcard(runcard_path) - qubits, couplers, pairs = load_qubits(runcard, FOLDER) + runcard = load_runcard(path) + kernels = Kernels.load(path) + qubits, couplers, pairs = load_qubits(runcard, kernels) settings = load_settings(runcard) # assign channels to qubits and sweetspots(operating points) @@ -193,7 +194,7 @@ def create(runcard_path=RUNCARD): instruments.update({lo.name: lo for lo in local_oscillators}) instruments = load_instrument_settings(runcard, instruments) return Platform( - "zurich", + str(FOLDER), qubits, pairs, instruments, diff --git a/tests/test_dummy.py b/tests/test_dummy.py index ffc02b422..8109833b9 100644 --- a/tests/test_dummy.py +++ b/tests/test_dummy.py @@ -165,7 +165,6 @@ def test_dummy_single_sweep_coupler( sweeper = Sweeper(parameter, parameter_range, couplers=[platform.couplers[0]]) else: sweeper = Sweeper(parameter, parameter_range, pulses=[coupler_pulse]) - print(sweeper) options = ExecutionParameters( nshots=nshots, averaging_mode=average, diff --git a/tests/test_instruments_qblox.py b/tests/test_instruments_qblox.py deleted file mode 100644 index 661fde85a..000000000 --- a/tests/test_instruments_qblox.py +++ /dev/null @@ -1,314 +0,0 @@ -"""Qblox instruments driver. - -Supports the following Instruments: - Cluster - Cluster QRM-RF - Cluster QCM-RF - Cluster QCM -Compatible with qblox-instruments driver 0.9.0 (28/2/2023). -It supports: - - multiplexed readout of up to 6 qubits - - hardware modulation, demodulation, and classification - - software modulation, with support for arbitrary pulses - - software demodulation - - binned acquisition - - real-time sweepers of - - pulse frequency (requires hardware modulation) - - pulse relative phase (requires hardware modulation) - - pulse amplitude - - pulse start - - pulse duration - - port gain - - port offset - - multiple readouts for the same qubit (sequence unrolling) - - max iq pulse length 8_192ns - - waveforms cache, uses additional free sequencers if the memory of one sequencer (16384) is exhausted - - instrument parameters cache - - safe disconnection of offsets on termination -""" - - -# from .conftest import load_from_platform - -# INSTRUMENTS_LIST = ["Cluster", "ClusterQRM_RF", "ClusterQCM_RF"] - -# instruments = {} -# instruments_settings = {} - - -# @pytest.mark.qpu -# @pytest.mark.parametrize("name", INSTRUMENTS_LIST) -# def test_instruments_qublox_init(platform_name, name): -# platform = create_platform(platform_name) -# settings = platform.settings -# # Instantiate instrument -# instance, instr_settings = load_from_platform(create_platform(platform_name), name) -# instruments[name] = instance -# instruments_settings[name] = instr_settings -# assert instance.name == name -# assert instance.is_connected == False -# assert instance.device == None -# assert instance.data_folder == INSTRUMENTS_DATA_FOLDER / instance.tmp_folder.name.split("/")[-1] - - -# @pytest.mark.qpu -# @pytest.mark.parametrize("name", INSTRUMENTS_LIST) -# def test_instruments_qublox_connect(name): -# instruments[name].connect() - - -# @pytest.mark.qpu -# @pytest.mark.parametrize("name", INSTRUMENTS_LIST) -# def test_instruments_qublox_setup(platform_name, name): -# settings = create_platform(platform_name).settings -# instruments[name].setup(**settings["settings"], **instruments_settings[name]) -# for parameter in instruments_settings[name]: -# if parameter == "ports": -# for port in instruments_settings[name]["ports"]: -# for sub_parameter in instruments_settings[name]["ports"][port]: -# # assert getattr(instruments[name].ports[port], sub_parameter) == settings["instruments"][name]["settings"]["ports"][port][sub_parameter] -# np.testing.assert_allclose( -# getattr(instruments[name].ports[port], sub_parameter), -# instruments_settings[name]["ports"][port][sub_parameter], -# atol=1e-4, -# ) -# else: -# assert getattr(instruments[name], parameter) == instruments_settings[name][parameter] - - -# def instrument_test_property_wrapper( -# origin_object, origin_attribute, destination_object, *destination_parameters, values -# ): -# for value in values: -# setattr(origin_object, origin_attribute, value) -# for destination_parameter in destination_parameters: -# assert (destination_object.get(destination_parameter) == value) or ( -# np.testing.assert_allclose(destination_object.get(destination_parameter), value, rtol=1e-1) == None -# ) - - -# @pytest.mark.qpu -# @pytest.mark.parametrize("name", INSTRUMENTS_LIST) -# def test_instruments_qublox_set_property_wrappers(name): -# instrument = instruments[name] -# device = instruments[name].device -# if instrument.__class__.__name__ == "Cluster": -# instrument_test_property_wrapper( -# instrument, "reference_clock_source", device, "reference_source", values=["external", "internal"] -# ) -# if instrument.__class__.__name__ == "ClusterQRM_RF": -# port = instruments[name].ports["o1"] -# sequencer = device.sequencers[instrument.DEFAULT_SEQUENCERS["o1"]] -# instrument_test_property_wrapper(port, "attenuation", device, "out0_att", values=np.arange(0, 60 + 2, 2)) -# instrument_test_property_wrapper(port, "lo_enabled", device, "out0_in0_lo_en", values=[True, False]) -# instrument_test_property_wrapper( -# port, "lo_frequency", device, "out0_in0_lo_freq", values=np.linspace(2e9, 18e9, 20) -# ) -# instrument_test_property_wrapper( -# port, "gain", sequencer, "gain_awg_path0", "gain_awg_path1", values=np.linspace(-1, 1, 20) -# ) -# instrument_test_property_wrapper(port, "hardware_mod_en", sequencer, "mod_en_awg", values=[True, False]) -# instrument_test_property_wrapper(port, "nco_freq", sequencer, "nco_freq", values=np.linspace(-500e6, 500e6, 20)) -# instrument_test_property_wrapper( -# port, "nco_phase_offs", sequencer, "nco_phase_offs", values=np.linspace(0, 359, 20) -# ) -# port = instruments[name].ports["i1"] -# sequencer = device.sequencers[instrument.DEFAULT_SEQUENCERS["i1"]] -# instrument_test_property_wrapper(port, "hardware_demod_en", sequencer, "demod_en_acq", values=[True, False]) -# instrument_test_property_wrapper( -# instrument, -# "acquisition_duration", -# sequencer, -# "integration_length_acq", -# values=np.arange(4, 16777212 + 4, 729444), -# ) -# # FIXME: I don't know why this is failing -# instrument_test_property_wrapper( -# instrument, -# "thresholded_acq_threshold", -# sequencer, -# "thresholded_acq_threshold", -# # values=np.linspace(-16777212.0, 16777212.0, 20), -# values=np.zeros(1), -# ) -# instrument_test_property_wrapper( -# instrument, -# "thresholded_acq_rotation", -# sequencer, -# "thresholded_acq_rotation", -# values=np.zeros(1), -# # values=np.linspace(0, 359, 20) -# ) -# if instrument.__class__.__name__ == "ClusterQCM_RF": -# port = instruments[name].ports["o1"] -# sequencer = device.sequencers[instrument.DEFAULT_SEQUENCERS["o1"]] -# instrument_test_property_wrapper(port, "attenuation", device, "out0_att", values=np.arange(0, 60 + 2, 2)) -# instrument_test_property_wrapper(port, "lo_enabled", device, "out0_lo_en", values=[True, False]) -# instrument_test_property_wrapper( -# port, "lo_frequency", device, "out0_lo_freq", values=np.linspace(2e9, 18e9, 20) -# ) -# instrument_test_property_wrapper( -# port, "gain", sequencer, "gain_awg_path0", "gain_awg_path1", values=np.linspace(-1, 1, 20) -# ) -# instrument_test_property_wrapper(port, "hardware_mod_en", sequencer, "mod_en_awg", values=[True, False]) -# instrument_test_property_wrapper(port, "nco_freq", sequencer, "nco_freq", values=np.linspace(-500e6, 500e6, 20)) -# instrument_test_property_wrapper( -# port, "nco_phase_offs", sequencer, "nco_phase_offs", values=np.linspace(0, 359, 20) -# ) -# port = instruments[name].ports["o2"] -# sequencer = device.sequencers[instrument.DEFAULT_SEQUENCERS["o2"]] -# instrument_test_property_wrapper(port, "attenuation", device, "out1_att", values=np.arange(0, 60 + 2, 2)) -# instrument_test_property_wrapper(port, "lo_enabled", device, "out1_lo_en", values=[True, False]) -# instrument_test_property_wrapper( -# port, "lo_frequency", device, "out1_lo_freq", values=np.linspace(2e9, 18e9, 20) -# ) -# instrument_test_property_wrapper( -# port, "gain", sequencer, "gain_awg_path0", "gain_awg_path1", values=np.linspace(-1, 1, 20) -# ) -# instrument_test_property_wrapper(port, "hardware_mod_en", sequencer, "mod_en_awg", values=[True, False]) -# instrument_test_property_wrapper(port, "nco_freq", sequencer, "nco_freq", values=np.linspace(-500e6, 500e6, 20)) -# instrument_test_property_wrapper( -# port, "nco_phase_offs", sequencer, "nco_phase_offs", values=np.linspace(0, 359, 20) -# ) - - -# def instrument_set_and_test_parameter_values(instrument, target, parameter, values): -# for value in values: -# instrument._set_device_parameter(target, parameter, value) -# np.testing.assert_allclose(target.get(parameter), value) - - -# @pytest.mark.parametrize("name", INSTRUMENTS_LIST) -# def test_instruments_qublox_set_device_paramters(name): -# """ # TODO: add attitional paramter tests -# qrm -# platform.instruments['qrm_rf'].device.print_readable_snapshot(update=True) -# cluster_module16: -# parameter value -# -------------------------------------------------------------------------------- -# in0_att : 0 (dB) -# out0_att : 34 (dB) -# out0_in0_lo_en : True -# out0_in0_lo_freq : 7537724144 (Hz) -# out0_offset_path0 : 34 (mV) -# out0_offset_path1 : 0 (mV) -# present : True -# scope_acq_avg_mode_en_path0 : True -# scope_acq_avg_mode_en_path1 : True -# scope_acq_sequencer_select : 0 -# scope_acq_trigger_level_path0 : 0 -# scope_acq_trigger_level_path1 : 0 -# scope_acq_trigger_mode_path0 : sequencer -# scope_acq_trigger_mode_path1 : sequencer -# cluster_module16_sequencer0: -# parameter value -# -------------------------------------------------------------------------------- -# channel_map_path0_out0_en : True -# channel_map_path1_out1_en : True -# cont_mode_en_awg_path0 : False -# cont_mode_en_awg_path1 : False -# cont_mode_waveform_idx_awg_path0 : 0 -# cont_mode_waveform_idx_awg_path1 : 0 -# demod_en_acq : False -# thresholded_acq_threshold : 0 -# gain_awg_path0 : 1 -# gain_awg_path1 : 1 -# integration_length_acq : 2000 -# marker_ovr_en : True -# marker_ovr_value : 15 -# mixer_corr_gain_ratio : 1 -# mixer_corr_phase_offset_degree : -0 -# mod_en_awg : False -# nco_freq : 0 (Hz) -# nco_phase_offs : 0 (Degrees) -# offset_awg_path0 : 0 -# offset_awg_path1 : 0 -# thresholded_acq_rotation : 0 (Degrees) -# sequence : /nfs/users/alvaro.orgaz/qibolab/src/qibola... -# sync_en : True -# upsample_rate_awg_path0 : 0 -# upsample_rate_awg_path1 : 0 - -# qcm: -# platform.instruments['qcm_rf2'].device.print_readable_snapshot(update=True) -# cluster_module12: -# parameter value -# -------------------------------------------------------------------------------- -# out0_att : 24 (dB) -# out0_lo_en : True -# out0_lo_freq : 5325473000 (Hz) -# out0_offset_path0 : 24 (mV) -# out0_offset_path1 : 24 (mV) -# out1_att : 24 (dB) -# out1_lo_en : True -# out1_lo_freq : 6212286000 (Hz) -# out1_offset_path0 : 0 (mV) -# out1_offset_path1 : 0 (mV) -# present : True -# cluster_module12_sequencer0: -# parameter value -# -------------------------------------------------------------------------------- -# channel_map_path0_out0_en : True -# channel_map_path0_out2_en : False -# channel_map_path1_out1_en : True -# channel_map_path1_out3_en : False -# cont_mode_en_awg_path0 : False -# cont_mode_en_awg_path1 : False -# cont_mode_waveform_idx_awg_path0 : 0 -# cont_mode_waveform_idx_awg_path1 : 0 -# gain_awg_path0 : 0.33998 -# gain_awg_path1 : 0.33998 -# marker_ovr_en : True -# marker_ovr_value : 15 -# mixer_corr_gain_ratio : 1 -# mixer_corr_phase_offset_degree : -0 -# mod_en_awg : False -# nco_freq : -2e+08 (Hz) -# nco_phase_offs : 0 (Degrees) -# offset_awg_path0 : 0 -# offset_awg_path1 : 0 -# sequence : /nfs/users/alvaro.orgaz/qibolab/src/qibola... -# sync_en : True -# upsample_rate_awg_path0 : 0 -# upsample_rate_awg_path1 : 0 -# """ - - -# @pytest.mark.qpu -# @pytest.mark.parametrize("name", INSTRUMENTS_LIST) -# def test_instruments_process_pulse_sequence_upload_play(platform_name, name): -# instrument = instruments[name] -# settings = create_platform(platform_name).settings -# instrument.setup(**settings["settings"], **instruments_settings[name]) -# relaxation_time = settings["settings"]["relaxation_time"] -# instrument_pulses = {} -# instrument_pulses[name] = PulseSequence() -# if "QCM" in instrument.__class__.__name__: -# for channel in instrument.channel_port_map: -# instrument_pulses[name].add(Pulse(0, 200, 1, 10e6, np.pi / 2, "Gaussian(5)", str(channel))) -# instrument.process_pulse_sequence(instrument_pulses[name], nshots=5, relaxation_time=relaxation_time) -# instrument.upload() -# instrument.play_sequence() -# if "QRM" in instrument.__class__.__name__: -# channel = instrument._port_channel_map["o1"] -# instrument_pulses[name].add( -# Pulse(0, 200, 1, 10e6, np.pi / 2, "Gaussian(5)", channel), -# ReadoutPulse(200, 2000, 1, 10e6, np.pi / 2, "Rectangular()", channel), -# ) -# instrument.device.sequencers[0].sync_en( -# False -# ) # TODO: Check why this is necessary here and not when playing a PS of only one readout pulse -# instrument.process_pulse_sequence(instrument_pulses[name], nshots=5, relaxation_time=relaxation_time) -# instrument.upload() -# instrument.play_sequence() -# acquisition_results = instrument.acquire() - - -# @pytest.mark.qpu -# @pytest.mark.parametrize("name", INSTRUMENTS_LIST) -# def test_instruments_qublox_start_stop_disconnect(name): -# instrument = instruments[name] -# instrument.start() -# instrument.stop() -# instrument.disconnect() -# assert instrument.is_connected == False diff --git a/tests/test_instruments_qblox_cluster_qcm_bb.py b/tests/test_instruments_qblox_cluster_qcm_bb.py index e515c3243..5af689fe0 100644 --- a/tests/test_instruments_qblox_cluster_qcm_bb.py +++ b/tests/test_instruments_qblox_cluster_qcm_bb.py @@ -4,7 +4,7 @@ import pytest from qibolab.instruments.abstract import Instrument -from qibolab.instruments.qblox.cluster_qcm_bb import ClusterQCM_BB +from qibolab.instruments.qblox.cluster_qcm_bb import QcmBb from qibolab.instruments.qblox.port import QbloxOutputPort from qibolab.pulses import FluxPulse, PulseSequence from qibolab.sweeper import Parameter, Sweeper, SweeperType @@ -21,8 +21,8 @@ def get_qcm_bb(controller): for module in controller.modules.values(): - if isinstance(module, ClusterQCM_BB): - return ClusterQCM_BB(module.name, module.address) + if isinstance(module, QcmBb): + return QcmBb(module.name, module.address) @pytest.fixture(scope="module") @@ -41,7 +41,7 @@ def connected_qcm_bb(connected_controller): connected_controller.disconnect() -def test_instrument_interface(qcm_bb: ClusterQCM_BB): +def test_instrument_interface(qcm_bb: QcmBb): # Test compliance with :class:`qibolab.instruments.abstract.Instrument` interface for abstract_method in Instrument.__abstractmethods__: assert hasattr(qcm_bb, abstract_method) @@ -54,16 +54,16 @@ def test_instrument_interface(qcm_bb: ClusterQCM_BB): assert hasattr(qcm_bb, attribute) -def test_init(qcm_bb: ClusterQCM_BB): +def test_init(qcm_bb: QcmBb): assert qcm_bb.device == None -def test_setup(qcm_bb: ClusterQCM_BB): +def test_setup(qcm_bb: QcmBb): qcm_bb.setup() @pytest.mark.qpu -def test_connect(connected_qcm_bb: ClusterQCM_BB): +def test_connect(connected_qcm_bb: QcmBb): qcm_bb = connected_qcm_bb assert qcm_bb.is_connected @@ -134,7 +134,7 @@ def test_connect(connected_qcm_bb: ClusterQCM_BB): @pytest.mark.qpu -def test_pulse_sequence(connected_platform, connected_qcm_bb: ClusterQCM_BB): +def test_pulse_sequence(connected_platform, connected_qcm_bb: QcmBb): ps = PulseSequence() ps.add(FluxPulse(40, 70, 0.5, "Rectangular", O1_OUTPUT_CHANNEL)) ps.add(FluxPulse(0, 50, 0.3, "Rectangular", O2_OUTPUT_CHANNEL)) @@ -153,7 +153,7 @@ def test_pulse_sequence(connected_platform, connected_qcm_bb: ClusterQCM_BB): @pytest.mark.qpu -def test_sweepers(connected_platform, connected_qcm_bb: ClusterQCM_BB): +def test_sweepers(connected_platform, connected_qcm_bb: QcmBb): ps = PulseSequence() ps.add(FluxPulse(40, 70, 0.5, "Rectangular", O1_OUTPUT_CHANNEL)) ps.add(FluxPulse(0, 50, 0.3, "Rectangular", O2_OUTPUT_CHANNEL)) diff --git a/tests/test_instruments_qblox_cluster_qcm_rf.py b/tests/test_instruments_qblox_cluster_qcm_rf.py index f9f47f782..5d046de2d 100644 --- a/tests/test_instruments_qblox_cluster_qcm_rf.py +++ b/tests/test_instruments_qblox_cluster_qcm_rf.py @@ -2,7 +2,7 @@ import pytest from qibolab.instruments.abstract import Instrument -from qibolab.instruments.qblox.cluster_qcm_rf import ClusterQCM_RF +from qibolab.instruments.qblox.cluster_qcm_rf import QcmRf from qibolab.instruments.qblox.port import QbloxOutputPort from qibolab.pulses import DrivePulse, PulseSequence from qibolab.sweeper import Parameter, Sweeper, SweeperType @@ -30,8 +30,8 @@ def get_qcm_rf(controller): for module in controller.modules.values(): - if isinstance(module, ClusterQCM_RF): - return ClusterQCM_RF(module.name, module.address) + if isinstance(module, QcmRf): + return QcmRf(module.name, module.address) @pytest.fixture(scope="module") @@ -52,7 +52,7 @@ def connected_qcm_rf(connected_controller): connected_controller.disconnect() -def test_instrument_interface(qcm_rf: ClusterQCM_RF): +def test_instrument_interface(qcm_rf: QcmRf): # Test compliance with :class:`qibolab.instruments.abstract.Instrument` interface for abstract_method in Instrument.__abstractmethods__: assert hasattr(qcm_rf, abstract_method) @@ -65,18 +65,18 @@ def test_instrument_interface(qcm_rf: ClusterQCM_RF): assert hasattr(qcm_rf, attribute) -def test_init(qcm_rf: ClusterQCM_RF): +def test_init(qcm_rf: QcmRf): assert qcm_rf.device == None assert type(qcm_rf._ports) == dict -def test_setup(qcm_rf: ClusterQCM_RF): +def test_setup(qcm_rf: QcmRf): qcm_rf.setup(**SETTINGS) assert qcm_rf.settings == SETTINGS @pytest.mark.qpu -def test_connect(connected_qcm_rf: ClusterQCM_RF): +def test_connect(connected_qcm_rf: QcmRf): qcm_rf = connected_qcm_rf assert qcm_rf.is_connected @@ -149,7 +149,7 @@ def test_connect(connected_qcm_rf: ClusterQCM_RF): @pytest.mark.qpu -def test_pulse_sequence(connected_platform, connected_qcm_rf: ClusterQCM_RF): +def test_pulse_sequence(connected_platform, connected_qcm_rf: QcmRf): ps = PulseSequence() ps.add( DrivePulse( @@ -187,7 +187,7 @@ def test_pulse_sequence(connected_platform, connected_qcm_rf: ClusterQCM_RF): @pytest.mark.qpu -def test_sweepers(connected_platform, connected_qcm_rf: ClusterQCM_RF): +def test_sweepers(connected_platform, connected_qcm_rf: QcmRf): ps = PulseSequence() ps.add( DrivePulse( diff --git a/tests/test_instruments_qblox_cluster_qrm_rf.py b/tests/test_instruments_qblox_cluster_qrm_rf.py index ae65e5774..21978461a 100644 --- a/tests/test_instruments_qblox_cluster_qrm_rf.py +++ b/tests/test_instruments_qblox_cluster_qrm_rf.py @@ -2,7 +2,7 @@ import pytest from qibolab.instruments.abstract import Instrument -from qibolab.instruments.qblox.cluster_qrm_rf import ClusterQRM_RF +from qibolab.instruments.qblox.cluster_qrm_rf import QrmRf from qibolab.instruments.qblox.port import QbloxInputPort, QbloxOutputPort from qibolab.pulses import DrivePulse, PulseSequence, ReadoutPulse from qibolab.sweeper import Parameter, Sweeper, SweeperType @@ -29,8 +29,8 @@ def get_qrm_rf(controller): for module in controller.modules.values(): - if isinstance(module, ClusterQRM_RF): - return ClusterQRM_RF(module.name, module.address) + if isinstance(module, QrmRf): + return QrmRf(module.name, module.address) @pytest.fixture(scope="module") @@ -51,7 +51,7 @@ def connected_qrm_rf(connected_controller): connected_controller.disconnect() -def test_instrument_interface(qrm_rf: ClusterQRM_RF): +def test_instrument_interface(qrm_rf: QrmRf): # Test compliance with :class:`qibolab.instruments.abstract.Instrument` interface for abstract_method in Instrument.__abstractmethods__: assert hasattr(qrm_rf, abstract_method) @@ -64,17 +64,17 @@ def test_instrument_interface(qrm_rf: ClusterQRM_RF): assert hasattr(qrm_rf, attribute) -def test_init(qrm_rf: ClusterQRM_RF): +def test_init(qrm_rf: QrmRf): assert qrm_rf.device == None -def test_setup(qrm_rf: ClusterQRM_RF): +def test_setup(qrm_rf: QrmRf): qrm_rf.setup(**SETTINGS) assert qrm_rf.settings == SETTINGS @pytest.mark.qpu -def test_connect(connected_qrm_rf: ClusterQRM_RF): +def test_connect(connected_qrm_rf: QrmRf): qrm_rf = connected_qrm_rf assert qrm_rf.is_connected @@ -142,7 +142,7 @@ def test_connect(connected_qrm_rf: ClusterQRM_RF): @pytest.mark.qpu -def test_pulse_sequence(connected_platform, connected_qrm_rf: ClusterQRM_RF): +def test_pulse_sequence(connected_platform, connected_qrm_rf: QrmRf): ps = PulseSequence() for channel in connected_qrm_rf.channel_map: ps.add(DrivePulse(0, 200, 1, 6.8e9, np.pi / 2, "Gaussian(5)", channel)) @@ -170,7 +170,7 @@ def test_pulse_sequence(connected_platform, connected_qrm_rf: ClusterQRM_RF): @pytest.mark.qpu -def test_sweepers(connected_platform, connected_qrm_rf: ClusterQRM_RF): +def test_sweepers(connected_platform, connected_qrm_rf: QrmRf): ps = PulseSequence() qd_pulses = {} ro_pulses = {} diff --git a/tests/test_instruments_rfsoc.py b/tests/test_instruments_rfsoc.py index 67aa7f796..555ddd3fa 100644 --- a/tests/test_instruments_rfsoc.py +++ b/tests/test_instruments_rfsoc.py @@ -107,20 +107,79 @@ def test_convert_pulse(dummy_qrc): qubit.feedback.port = controller.ports(1) qubit.readout.local_oscillator.frequency = 1e6 - pulse = Pulse(0, 40, 0.9, 50e6, 0, Drag(5, 2), 0, PulseType.DRIVE, 0) + pulse = Pulse( + start=0, + duration=40, + amplitude=0.9, + frequency=50e6, + relative_phase=0, + shape=Drag(5, 2), + channel=0, + type=PulseType.DRIVE, + qubit=0, + ) targ = rfsoc_pulses.Drag( - 50, 0.9, 0, 0, 0.04, pulse.serial, "drive", 4, None, rel_sigma=5, beta=2 + type="drive", + frequency=50, + amplitude=0.9, + start_delay=0, + duration=0.04, + adc=None, + dac=4, + name=pulse.serial, + relative_phase=0, + rel_sigma=5, + beta=2, ) assert convert(pulse, platform.qubits, 0, sampling_rate=1) == targ - pulse = Pulse(0, 40, 0.9, 50e6, 0, Gaussian(2), 0, PulseType.DRIVE, 0) + pulse = Pulse( + start=0, + duration=40, + amplitude=0.9, + frequency=50e6, + relative_phase=0, + shape=Gaussian(2), + channel=0, + type=PulseType.DRIVE, + qubit=0, + ) targ = rfsoc_pulses.Gaussian( - 50, 0.9, 0, 0, 0.04, pulse.serial, "drive", 4, None, rel_sigma=2 + frequency=50, + amplitude=0.9, + start_delay=0, + relative_phase=0, + duration=0.04, + name=pulse.serial, + type="drive", + dac=4, + adc=None, + rel_sigma=2, ) assert convert(pulse, platform.qubits, 0, sampling_rate=1) == targ - pulse = Pulse(0, 40, 0.9, 50e6, 0, Rectangular(), 0, PulseType.READOUT, 0) - targ = rfsoc_pulses.Rectangular(49, 0.9, 0, 0, 0.04, pulse.serial, "readout", 2, 1) + pulse = Pulse( + start=0, + duration=40, + amplitude=0.9, + frequency=50e6, + relative_phase=0, + shape=Rectangular(), + channel=0, + type=PulseType.READOUT, + qubit=0, + ) + targ = rfsoc_pulses.Rectangular( + frequency=49, + amplitude=0.9, + start_delay=0, + relative_phase=0, + duration=0.04, + name=pulse.serial, + type="readout", + dac=2, + adc=1, + ) assert convert(pulse, platform.qubits, 0, sampling_rate=1) == targ diff --git a/tests/test_platform.py b/tests/test_platform.py index 09c0193a1..0dca4522b 100644 --- a/tests/test_platform.py +++ b/tests/test_platform.py @@ -1,6 +1,5 @@ """Tests :class:`qibolab.platforms.multiqubit.MultiqubitPlatform` and :class:`qibolab.platforms.platform.DesignPlatform`.""" -import os import pathlib import pickle import warnings @@ -8,16 +7,25 @@ import numpy as np import pytest from qibo.models import Circuit +from qibo.result import CircuitResult from qibolab import create_platform from qibolab.backends import QibolabBackend -from qibolab.dummy import load_dummy_runcard +from qibolab.dummy import create_dummy +from qibolab.dummy.platform import FOLDER from qibolab.execution_parameters import ExecutionParameters from qibolab.instruments.qblox.controller import QbloxController from qibolab.instruments.rfsoc.driver import RFSoC +from qibolab.kernels import Kernels from qibolab.platform import Platform, unroll_sequences from qibolab.pulses import PulseSequence, Rectangular -from qibolab.serialize import dump_runcard, load_runcard +from qibolab.serialize import ( + dump_kernels, + dump_platform, + dump_runcard, + load_runcard, + load_settings, +) from .conftest import find_instrument @@ -60,16 +68,13 @@ def test_platform_pickle(platform): assert new_platform.is_connected == platform.is_connected -def test_dump_runcard(platform): - path = pathlib.Path(__file__).parent / "test.yml" - dump_runcard(platform, path) - final_runcard = load_runcard(path) +def test_dump_runcard(platform, tmp_path): + dump_runcard(platform, tmp_path) + final_runcard = load_runcard(tmp_path) if platform.name == "dummy" or platform.name == "dummy_couplers": - target_runcard = load_dummy_runcard() + target_runcard = load_runcard(FOLDER) else: - target_path = ( - pathlib.Path(__file__).parent / "dummy_qrc" / f"{platform.name}.yml" - ) + target_path = pathlib.Path(__file__).parent / "dummy_qrc" / f"{platform.name}" target_runcard = load_runcard(target_path) # for the characterization section the dumped runcard may contain # some default ``Qubit`` parameters @@ -83,7 +88,46 @@ def test_dump_runcard(platform): target_instruments = target_runcard.pop("instruments") final_instruments = final_runcard.pop("instruments") assert final_instruments == target_instruments - os.remove(path) + + +@pytest.mark.parametrize("has_kernels", [False, True]) +def test_kernels(tmp_path, has_kernels): + """Test dumping and loading of `Kernels`.""" + + platform = create_dummy() + if has_kernels: + for qubit in platform.qubits: + platform.qubits[qubit].kernel = np.random.rand(10) + + dump_kernels(platform, tmp_path) + + if has_kernels: + kernels = Kernels.load(tmp_path) + for qubit in platform.qubits: + np.testing.assert_array_equal(platform.qubits[qubit].kernel, kernels[qubit]) + else: + with pytest.raises(FileNotFoundError): + Kernels.load(tmp_path) + + +@pytest.mark.parametrize("has_kernels", [False, True]) +def test_dump_platform(tmp_path, has_kernels): + """Test platform dump and loading runcard and kernels.""" + + platform = create_dummy() + if has_kernels: + for qubit in platform.qubits: + platform.qubits[qubit].kernel = np.random.rand(10) + + dump_platform(platform, tmp_path) + + settings = load_settings(load_runcard(tmp_path)) + if has_kernels: + kernels = Kernels.load(tmp_path) + for qubit in platform.qubits: + np.testing.assert_array_equal(platform.qubits[qubit].kernel, kernels[qubit]) + + assert settings == platform.settings @pytest.fixture(scope="module")