From 95362ddd387292488c54ada1dcee18a1ca40221c Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Wed, 28 Jun 2023 10:19:57 +0400 Subject: [PATCH 01/52] dummy2-Now_with_couplers! --- src/qibolab/__init__.py | 4 + src/qibolab/dummy2.py | 291 ++++++++++++++++++++++++++++++++++++++++ src/qibolab/qubits.py | 2 +- 3 files changed, 296 insertions(+), 1 deletion(-) create mode 100644 src/qibolab/dummy2.py diff --git a/src/qibolab/__init__.py b/src/qibolab/__init__.py index 780be2795..aed9c7e18 100644 --- a/src/qibolab/__init__.py +++ b/src/qibolab/__init__.py @@ -39,6 +39,10 @@ def create_platform(name, runcard=None): if name == "dummy": from qibolab.dummy import create_dummy + return create_dummy() + if name == "dummy2": + from qibolab.dummy2 import create_dummy + return create_dummy() platform = get_platforms_path() / f"{name}.py" diff --git a/src/qibolab/dummy2.py b/src/qibolab/dummy2.py new file mode 100644 index 000000000..ecdf2123a --- /dev/null +++ b/src/qibolab/dummy2.py @@ -0,0 +1,291 @@ +import itertools + +from qibolab.channels import Channel, ChannelMap +from qibolab.instruments.dummy import DummyInstrument +from qibolab.platform import Platform + +NAME = "dummy2" +RUNCARD = { + "nqubits": 5, + "description": "Dummy2 5-qubits + couplers on star topology platform.", + "qubits": [ + 0, + 1, + 2, + 3, + 4, + "c0", + "c1", + "c3", + "c4", + ], + "settings": {"sampling_rate": 1000000000, "relaxation_time": 0, "nshots": 1024}, + "resonator_type": "2D", + "topology": [[0, 2], [1, 2], [2, 3], [2, 4]], + "native_gates": { + "single_qubit": { + 0: { + "RX": { + "duration": 40, + "amplitude": 0.1, + "frequency": 4.0e9, + "shape": "Gaussian(5)", + "type": "qd", + "start": 0, + "phase": 0, + }, + "MZ": { + "duration": 2000, + "amplitude": 0.1, + "frequency": 5.2e9, + "shape": "Rectangular()", + "type": "ro", + "start": 0, + "phase": 0, + }, + }, + 1: { + "RX": { + "duration": 40, + "amplitude": 0.3, + "frequency": 4.2e9, + "shape": "Drag(5, -0.02)", + "type": "qd", + "start": 0, + "phase": 0, + }, + "MZ": { + "duration": 2000, + "amplitude": 0.1, + "frequency": 4.9e9, + "shape": "Rectangular()", + "type": "ro", + "start": 0, + "phase": 0, + }, + }, + 2: { + "RX": { + "duration": 40, + "amplitude": 0.3, + "frequency": 4.5e9, + "shape": "Drag(5, -0.02)", + "type": "qd", + "start": 0, + "phase": 0, + }, + "MZ": { + "duration": 2000, + "amplitude": 0.1, + "frequency": 6.1e9, + "shape": "Rectangular()", + "type": "ro", + "start": 0, + "phase": 0, + }, + }, + 3: { + "RX": { + "duration": 40, + "amplitude": 0.3, + "frequency": 4.15e9, + "shape": "Drag(5, -0.02)", + "type": "qd", + "start": 0, + "phase": 0, + }, + "MZ": { + "duration": 2000, + "amplitude": 0.1, + "frequency": 5.8e9, + "shape": "Rectangular()", + "type": "ro", + "start": 0, + "phase": 0, + }, + }, + 4: { + "RX": { + "duration": 40, + "amplitude": 0.3, + "frequency": 4155663000, + "shape": "Drag(5, -0.02)", + "type": "qd", + "start": 0, + "phase": 0, + }, + "MZ": { + "duration": 2000, + "amplitude": 0.1, + "frequency": 5.5e9, + "shape": "Rectangular()", + "type": "ro", + "start": 0, + "phase": 0, + }, + }, + }, + "two_qubit": { + "0-2": { + "CZ": [ + { + "duration": 30, + "amplitude": 0.05, + "shape": "Rectangular()", + "qubit": 0, + "relative_start": 0, + "type": "qf", + }, + {"type": "virtual_z", "phase": 0.0, "qubit": 0}, + {"type": "virtual_z", "phase": 0.0, "qubit": 2}, + ] + }, + "1-2": { + "CZ": [ + { + "duration": 30, + "amplitude": 0.05, + "shape": "Rectangular()", + "qubit": 0, + "relative_start": 0, + "type": "qf", + }, + {"type": "virtual_z", "phase": 0.0, "qubit": 1}, + {"type": "virtual_z", "phase": 0.0, "qubit": 2}, + ] + }, + "3-2": { + "CZ": [ + { + "duration": 30, + "amplitude": 0.05, + "shape": "Rectangular()", + "qubit": 0, + "relative_start": 0, + "type": "qf", + }, + {"type": "virtual_z", "phase": 0.0, "qubit": 3}, + {"type": "virtual_z", "phase": 0.0, "qubit": 2}, + ] + }, + "4-2": { + "CZ": [ + { + "duration": 30, + "amplitude": 0.05, + "shape": "Rectangular()", + "qubit": 0, + "relative_start": 0, + "type": "qf", + }, + {"type": "virtual_z", "phase": 0.0, "qubit": 4}, + {"type": "virtual_z", "phase": 0.0, "qubit": 2}, + ] + }, + }, + }, + "characterization": { + "single_qubit": { + 0: { + "readout_frequency": 5.2e9, + "drive_frequency": 4.0e9, + "T1": 0.0, + "T2": 0.0, + "sweetspot": 0.0, + "mean_gnd_states": (0 + 0j), + "mean_exc_states": (0 + 0j), + "threshold": 0.0, + "iq_angle": 0.0, + }, + 1: { + "readout_frequency": 4.9e9, + "drive_frequency": 4.2e9, + "T1": 0.0, + "T2": 0.0, + "sweetspot": 0.0, + "mean_gnd_states": (0 + 0j), + "mean_exc_states": (0 + 0j), + "threshold": 0.0, + "iq_angle": 0.0, + }, + 2: { + "readout_frequency": 6.1e9, + "drive_frequency": 4.5e9, + "T1": 0.0, + "T2": 0.0, + "sweetspot": 0.0, + "mean_gnd_states": (0 + 0j), + "mean_exc_states": (0 + 0j), + "threshold": 0.0, + "iq_angle": 0.0, + }, + 3: { + "readout_frequency": 5.8e9, + "drive_frequency": 4.15e9, + "T1": 0.0, + "T2": 0.0, + "sweetspot": 0.0, + "mean_gnd_states": (0 + 0j), + "mean_exc_states": (0 + 0j), + "threshold": 0.0, + "iq_angle": 0.0, + }, + 4: { + "readout_frequency": 5.5e9, + "drive_frequency": 4.1e9, + "T1": 0.0, + "T2": 0.0, + "sweetspot": 0.0, + "mean_gnd_states": (0 + 0j), + "mean_exc_states": (0 + 0j), + "threshold": 0.0, + "iq_angle": 0.0, + }, + "c0": {"sweetspot": 0.0}, + "c1": {"sweetspot": 0.0}, + "c3": {"sweetspot": 0.0}, + "c4": {"sweetspot": 0.0}, + } + }, +} + + +def create_dummy(): + """Create a dummy platform using the dummy instrument.""" + # Create dummy controller + instrument = DummyInstrument(NAME, 0) + # Create channel objects + nqubits = RUNCARD["nqubits"] + channels = ChannelMap() + channels |= Channel("readout", port=instrument["readout"]) + channels |= (Channel(f"drive-{i}", port=instrument[f"drive-{i}"]) for i in range(nqubits)) + channels |= (Channel(f"flux-{i}", port=instrument[f"flux-{i}"]) for i in range(nqubits)) + channels |= ( + Channel(f"flux_coupler-c{c}", port=instrument[f"flux_coupler-c{c}"]) + for c in itertools.chain(range(0, 2), range(3, 5)) + ) + + # Create platform + platform = Platform(NAME, RUNCARD, [instrument], channels) + + instrument.sampling_rate = platform.sampling_rate * 1e-9 + + # map channels to qubits + for qubit in platform.qubits: + # FIXME: Nicer way of finding couplers among qubits maybe + if isinstance(qubit, str): + platform.qubits[qubit].flux = channels[f"flux_coupler-{qubit}"] + continue + platform.qubits[qubit].readout = channels["readout"] + platform.qubits[qubit].drive = channels[f"drive-{qubit}"] + platform.qubits[qubit].flux = channels[f"flux-{qubit}"] + channels["readout"].attenuation = 0 + + # FIXME: This could be a way of getting qubits to coupler or we could get couplers to qubits + # FIXME: Nicer way of getting this range + # assign couplers to qubits + for c in itertools.chain(range(0, 2), range(3, 4)): + platform.qubits[c].flux_coupler[f"c{c}"] = platform.qubits[f"c{c}"] + platform.qubits[2].flux_coupler[f"c{c}"] = platform.qubits[f"c{c}"] + + return platform diff --git a/src/qibolab/qubits.py b/src/qibolab/qubits.py index e8bd82690..505fc55b2 100644 --- a/src/qibolab/qubits.py +++ b/src/qibolab/qubits.py @@ -60,7 +60,7 @@ class Qubit: twpa: Optional[Channel] = None drive: Optional[Channel] = None flux: Optional[Channel] = None - flux_coupler: Optional[List["Qubit"]] = None + flux_coupler: Optional[List["Qubit"]] = field(default_factory=dict) classifiers_hpars: dict = field(default_factory=dict) native_gates: SingleQubitNatives = field(default_factory=SingleQubitNatives) From 7f17fe96ef971a0a5cb5f4a0d4c22c1905d212ba Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Fri, 30 Jun 2023 16:21:57 +0400 Subject: [PATCH 02/52] update means --- src/qibolab/dummy2.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/qibolab/dummy2.py b/src/qibolab/dummy2.py index ecdf2123a..81eedfa9a 100644 --- a/src/qibolab/dummy2.py +++ b/src/qibolab/dummy2.py @@ -192,8 +192,8 @@ "T1": 0.0, "T2": 0.0, "sweetspot": 0.0, - "mean_gnd_states": (0 + 0j), - "mean_exc_states": (0 + 0j), + "mean_gnd_states": (0 + 1j), + "mean_exc_states": (1 + 0j), "threshold": 0.0, "iq_angle": 0.0, }, @@ -203,8 +203,8 @@ "T1": 0.0, "T2": 0.0, "sweetspot": 0.0, - "mean_gnd_states": (0 + 0j), - "mean_exc_states": (0 + 0j), + "mean_gnd_states": (0.25 + 0j), + "mean_exc_states": (0 + 0.25j), "threshold": 0.0, "iq_angle": 0.0, }, @@ -214,8 +214,8 @@ "T1": 0.0, "T2": 0.0, "sweetspot": 0.0, - "mean_gnd_states": (0 + 0j), - "mean_exc_states": (0 + 0j), + "mean_gnd_states": (0.5 + 0j), + "mean_exc_states": (0 + 0.5j), "threshold": 0.0, "iq_angle": 0.0, }, @@ -225,8 +225,8 @@ "T1": 0.0, "T2": 0.0, "sweetspot": 0.0, - "mean_gnd_states": (0 + 0j), - "mean_exc_states": (0 + 0j), + "mean_gnd_states": (0.75 + 0j), + "mean_exc_states": (0 + 0.75j), "threshold": 0.0, "iq_angle": 0.0, }, @@ -236,8 +236,8 @@ "T1": 0.0, "T2": 0.0, "sweetspot": 0.0, - "mean_gnd_states": (0 + 0j), - "mean_exc_states": (0 + 0j), + "mean_gnd_states": (1 + 0j), + "mean_exc_states": (0 + 1j), "threshold": 0.0, "iq_angle": 0.0, }, @@ -284,8 +284,13 @@ def create_dummy(): # FIXME: This could be a way of getting qubits to coupler or we could get couplers to qubits # FIXME: Nicer way of getting this range # assign couplers to qubits - for c in itertools.chain(range(0, 2), range(3, 4)): + for c in itertools.chain(range(0, 2), range(3, 5)): platform.qubits[c].flux_coupler[f"c{c}"] = platform.qubits[f"c{c}"] platform.qubits[2].flux_coupler[f"c{c}"] = platform.qubits[f"c{c}"] + + # assign qubits to couplers + for c in itertools.chain(range(0, 2), range(3, 5)): + platform.qubits[f"c{c}"].flux_coupler[c] = [platform.qubits[c]] + platform.qubits[f"c{c}"].flux_coupler[c].append(platform.qubits[2]) return platform From ddd4545a486ed18a29d43e7ddb1dee4180d13241 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 12:22:59 +0000 Subject: [PATCH 03/52] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/qibolab/dummy2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qibolab/dummy2.py b/src/qibolab/dummy2.py index 81eedfa9a..8092ecb98 100644 --- a/src/qibolab/dummy2.py +++ b/src/qibolab/dummy2.py @@ -287,7 +287,7 @@ def create_dummy(): for c in itertools.chain(range(0, 2), range(3, 5)): platform.qubits[c].flux_coupler[f"c{c}"] = platform.qubits[f"c{c}"] platform.qubits[2].flux_coupler[f"c{c}"] = platform.qubits[f"c{c}"] - + # assign qubits to couplers for c in itertools.chain(range(0, 2), range(3, 5)): platform.qubits[f"c{c}"].flux_coupler[c] = [platform.qubits[c]] From ad5304215937870883204333b3a9d339d92c3637 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 11 Jul 2023 11:43:02 +0400 Subject: [PATCH 04/52] dummy2 + couplers class --- src/qibolab/__init__.py | 4 +-- src/qibolab/couplers.py | 58 ++++++++++++++++++++++++++++++++ src/qibolab/dummy2.py | 12 ++++--- src/qibolab/instruments/dummy.py | 10 +++--- src/qibolab/platform.py | 15 +++++++++ 5 files changed, 87 insertions(+), 12 deletions(-) create mode 100644 src/qibolab/couplers.py diff --git a/src/qibolab/__init__.py b/src/qibolab/__init__.py index aed9c7e18..6035f860f 100644 --- a/src/qibolab/__init__.py +++ b/src/qibolab/__init__.py @@ -41,9 +41,9 @@ def create_platform(name, runcard=None): return create_dummy() if name == "dummy2": - from qibolab.dummy2 import create_dummy + from qibolab.dummy2 import create_dummy2 - return create_dummy() + return create_dummy2() platform = get_platforms_path() / f"{name}.py" if not platform.exists(): diff --git a/src/qibolab/couplers.py b/src/qibolab/couplers.py new file mode 100644 index 000000000..631bbb2bd --- /dev/null +++ b/src/qibolab/couplers.py @@ -0,0 +1,58 @@ +from dataclasses import dataclass, field +from typing import List, Optional, Union + +from qibolab.channels import Channel +from qibolab.native import TwoQubitNatives +from qibolab.qubits import Qubit + +CouplerId = Union[str, int] +"""Type for Coupler names.""" + + +@dataclass +class Coupler: + """Representation of a physical coupler. + + Coupler objects are instantiated by :class:`qibolab.platforms.platform.Platform` + but they are passed to instrument designs in order to play pulses. + + Args: + name (int, str): Qubit number or name. + + flux (:class:`qibolab.platforms.utils.Channel`): Channel used to + send flux pulses to the qubit. + Other characterization parameters for the coupler, loaded from the runcard. + """ + + name: CouplerId + + frequency: int = 0 + sweetspot: float = 0 + + flux: Optional[Channel] = None + qubits: Optional[List["Qubit"]] = field(default_factory=dict) + + def __post_init__(self): + # register qubit in ``flux`` channel so that we can access + # ``sweetspot`` and ``filters`` at the channel level + if self.flux: + self.flux.coupler = self + + @property + def channels(self): + for channel in [self.flux]: + if channel is not None: + yield channel + + +@dataclass +class CouplerPair: + """Data structure for holding a coupler and its two-qubits on a pair of qubits. + + Qubits are sorted according to ``qubit.name`` such that + ``qubit1.name < qubit2.name``. + """ + + qubit1: Qubit + qubit2: Qubit + native_gates: TwoQubitNatives = field(default_factory=TwoQubitNatives) diff --git a/src/qibolab/dummy2.py b/src/qibolab/dummy2.py index 8092ecb98..907e53c70 100644 --- a/src/qibolab/dummy2.py +++ b/src/qibolab/dummy2.py @@ -14,6 +14,8 @@ 2, 3, 4, + ], + "couplers": [ "c0", "c1", "c3", @@ -250,7 +252,7 @@ } -def create_dummy(): +def create_dummy2(): """Create a dummy platform using the dummy instrument.""" # Create dummy controller instrument = DummyInstrument(NAME, 0) @@ -285,12 +287,12 @@ def create_dummy(): # FIXME: Nicer way of getting this range # assign couplers to qubits for c in itertools.chain(range(0, 2), range(3, 5)): - platform.qubits[c].flux_coupler[f"c{c}"] = platform.qubits[f"c{c}"] - platform.qubits[2].flux_coupler[f"c{c}"] = platform.qubits[f"c{c}"] + platform.qubits[c].flux_coupler[f"c{c}"] = platform.couplers[f"c{c}"] + platform.qubits[2].flux_coupler[f"c{c}"] = platform.couplers[f"c{c}"] # assign qubits to couplers for c in itertools.chain(range(0, 2), range(3, 5)): - platform.qubits[f"c{c}"].flux_coupler[c] = [platform.qubits[c]] - platform.qubits[f"c{c}"].flux_coupler[c].append(platform.qubits[2]) + platform.couplers[f"c{c}"].qubits[c] = [platform.qubits[c]] + platform.couplers[f"c{c}"].qubits[c].append(platform.qubits[2]) return platform diff --git a/src/qibolab/instruments/dummy.py b/src/qibolab/instruments/dummy.py index 498e7004d..5430cd232 100644 --- a/src/qibolab/instruments/dummy.py +++ b/src/qibolab/instruments/dummy.py @@ -43,19 +43,19 @@ class DummyInstrument(Controller): sampling_rate = 1 def connect(self): - log.info("Connecting to dummy instrument.") + log.info(f"Connecting to {self.name} instrument.") def setup(self, *args, **kwargs): - log.info("Setting up dummy instrument.") + log.info(f"Setting up {self.name} instrument.") def start(self): - log.info("Starting dummy instrument.") + log.info(f"Starting {self.name} instrument.") def stop(self): - log.info("Stopping dummy instrument.") + log.info(f"Stopping {self.name} instrument.") def disconnect(self): - log.info("Disconnecting dummy instrument.") + log.info(f"Disconnecting {self.name} instrument.") def get_values(self, options, sequence, shape): for ro_pulse in sequence.ro_pulses: diff --git a/src/qibolab/platform.py b/src/qibolab/platform.py index 82e8f69eb..6a6d99b63 100644 --- a/src/qibolab/platform.py +++ b/src/qibolab/platform.py @@ -11,6 +11,7 @@ from qibo.config import log, raise_error from qibolab.channels import Channel, ChannelMap +from qibolab.couplers import Coupler, CouplerId from qibolab.execution_parameters import ExecutionParameters from qibolab.instruments.abstract import Controller, Instrument from qibolab.native import NativeType, SingleQubitNatives, TwoQubitNatives @@ -38,6 +39,7 @@ def __init__(self, name, runcard, instruments, channels): self.channels: ChannelMap = channels self.qubits: Dict[QubitId, Qubit] = {} + self.couplers: Dict[CouplerId, Coupler] = {} self.pairs: Dict[Tuple[QubitId, QubitId], QubitPair] = {} # Values for the following are set from the runcard in ``reload_settings`` @@ -110,6 +112,19 @@ def reload_settings(self): if q in self.native_gates["single_qubit"]: qubit.native_gates = SingleQubitNatives.from_dict(qubit, self.native_gates["single_qubit"][q]) + for c in settings["couplers"]: + if c in self.couplers: + for name, value in settings["characterization"]["single_qubit"][c].items(): + setattr(self.couplers[c], name, value) + else: + self.couplers[c] = coupler = Coupler(c, **settings["characterization"]["single_qubit"][c]) + # register channels to qubits when we are using the old format + # needed for ``NativeGates`` to work + if "qubit_channel_map" in self.settings: + flux, _ = self.settings["qubit_channel_map"][c] + if flux is not None: + coupler.flux = Channel(flux) + for pair in settings["topology"]: pair = tuple(sorted(pair)) if pair not in self.pairs: From ab02f0cedb0c3c31c06a8dc44c39ec5b8ccbe6d2 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 11 Jul 2023 12:28:58 +0400 Subject: [PATCH 05/52] tests --- src/qibolab/platform.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/qibolab/platform.py b/src/qibolab/platform.py index 6a6d99b63..d8bb698e2 100644 --- a/src/qibolab/platform.py +++ b/src/qibolab/platform.py @@ -112,18 +112,19 @@ def reload_settings(self): if q in self.native_gates["single_qubit"]: qubit.native_gates = SingleQubitNatives.from_dict(qubit, self.native_gates["single_qubit"][q]) - for c in settings["couplers"]: - if c in self.couplers: - for name, value in settings["characterization"]["single_qubit"][c].items(): - setattr(self.couplers[c], name, value) - else: - self.couplers[c] = coupler = Coupler(c, **settings["characterization"]["single_qubit"][c]) - # register channels to qubits when we are using the old format - # needed for ``NativeGates`` to work - if "qubit_channel_map" in self.settings: - flux, _ = self.settings["qubit_channel_map"][c] - if flux is not None: - coupler.flux = Channel(flux) + if "couplers" in settings: + for c in settings["couplers"]: + if c in self.couplers: + for name, value in settings["characterization"]["single_qubit"][c].items(): + setattr(self.couplers[c], name, value) + else: + self.couplers[c] = coupler = Coupler(c, **settings["characterization"]["single_qubit"][c]) + # register channels to qubits when we are using the old format + # needed for ``NativeGates`` to work + if "qubit_channel_map" in self.settings: + flux, _ = self.settings["qubit_channel_map"][c] + if flux is not None: + coupler.flux = Channel(flux) for pair in settings["topology"]: pair = tuple(sorted(pair)) From d0b7e8323ae8aacb7ac824179276021163a076f3 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 11 Jul 2023 12:46:55 +0400 Subject: [PATCH 06/52] fix cov ? --- src/qibolab/dummy2.py | 7 +++---- tests/test_platforms_dummy.py | 10 ++++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/qibolab/dummy2.py b/src/qibolab/dummy2.py index 907e53c70..8a54e5d4e 100644 --- a/src/qibolab/dummy2.py +++ b/src/qibolab/dummy2.py @@ -274,15 +274,14 @@ def create_dummy2(): # map channels to qubits for qubit in platform.qubits: - # FIXME: Nicer way of finding couplers among qubits maybe - if isinstance(qubit, str): - platform.qubits[qubit].flux = channels[f"flux_coupler-{qubit}"] - continue platform.qubits[qubit].readout = channels["readout"] platform.qubits[qubit].drive = channels[f"drive-{qubit}"] platform.qubits[qubit].flux = channels[f"flux-{qubit}"] channels["readout"].attenuation = 0 + for coupler in platform.couplers: + platform.couplers[coupler].flux = channels[f"flux_coupler-{coupler}"] + # FIXME: This could be a way of getting qubits to coupler or we could get couplers to qubits # FIXME: Nicer way of getting this range # assign couplers to qubits diff --git a/tests/test_platforms_dummy.py b/tests/test_platforms_dummy.py index 35f7c7bbf..b183c0430 100644 --- a/tests/test_platforms_dummy.py +++ b/tests/test_platforms_dummy.py @@ -18,6 +18,16 @@ def test_dummy_initialization(): platform.disconnect() +def test_dummy_initialization(): + platform = create_platform("dummy2") + platform.reload_settings() + platform.connect() + platform.setup() + platform.start() + platform.stop() + platform.disconnect() + + @pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.RAW]) def test_dummy_execute_pulse_sequence(acquisition): platform = create_platform("dummy") From e51ecae927d64ba89253b42a7e94365dccd5eba9 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Fri, 14 Jul 2023 10:57:46 +0400 Subject: [PATCH 07/52] working on it --- src/qibolab/instruments/zhinst.py | 13 +++++++++++-- src/qibolab/platform.py | 6 +++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/qibolab/instruments/zhinst.py b/src/qibolab/instruments/zhinst.py index b55ccf5e9..9d0c33981 100644 --- a/src/qibolab/instruments/zhinst.py +++ b/src/qibolab/instruments/zhinst.py @@ -486,7 +486,7 @@ def experiment_flow(self, qubits, sequence, options, sweepers=[]): self.create_exp(qubits, options) # pylint: disable=W0221 - def play(self, qubits, sequence, options): + def play(self, qubits, couplers, sequence, options): """Play pulse sequence""" self.signal_map = {} dimensions = [] @@ -532,6 +532,7 @@ def sequence_zh(self, sequence, qubits, sweepers): # Fill the sequences with pulses according to their lines in temporal order for pulse in sequence: + #FIXME: qubits[pulse.qubit] zhsequence[f"{pulse.type.name.lower()}{pulse.qubit}"].append(ZhPulse(pulse)) # Mess that gets the sweeper and substitutes the pulse it sweeps in the right place @@ -555,6 +556,13 @@ def nt_loop(sweeper): nt_loop(sweeper) for element in aux_list: if pulse == element.pulse: + + #FIXME: qubits[pulse.qubit] + # if pulse.qubit in qubits: + # print("here") + # else: + # print("coupler") + if isinstance(aux_list[aux_list.index(element)], ZhPulse): aux_list[aux_list.index(element)] = ZhSweeper(pulse, sweeper, qubits[pulse.qubit]) elif isinstance(aux_list[aux_list.index(element)], ZhSweeper): @@ -562,6 +570,7 @@ def nt_loop(sweeper): if sweeper.parameter.name in SWEEPER_BIAS: for qubit in sweeper.qubits: + print(qubit) zhsequence[f"flux{qubit.name}"] = [ZhSweeperLine(sweeper, qubit, sequence)] # FIXME: This may not place the Zhsweeper when the start occurs among different sections or lines @@ -932,7 +941,7 @@ def offsets_off(self): self.session.devices["device_hdawg"].awgs[0].sigouts[sigout].offset = 0 self.session.devices["device_hdawg2"].awgs[0].sigouts[0].offset = 0 - def sweep(self, qubits, sequence: PulseSequence, options, *sweepers): + def sweep(self, qubits, couplers, sequence: PulseSequence, options, *sweepers): """Play pulse and sweepers sequence""" self.signal_map = {} diff --git a/src/qibolab/platform.py b/src/qibolab/platform.py index 6debe0033..779281794 100644 --- a/src/qibolab/platform.py +++ b/src/qibolab/platform.py @@ -115,10 +115,10 @@ def reload_settings(self): if "couplers" in settings: for c in settings["couplers"]: if c in self.couplers: - for name, value in settings["characterization"]["single_qubit"][c].items(): + for name, value in settings["characterization"]["coupler"][c].items(): setattr(self.couplers[c], name, value) else: - self.couplers[c] = coupler = Coupler(c, **settings["characterization"]["single_qubit"][c]) + self.couplers[c] = coupler = Coupler(c, **settings["characterization"]["coupler"][c]) # register channels to qubits when we are using the old format # needed for ``NativeGates`` to work if "qubit_channel_map" in self.settings: @@ -435,7 +435,7 @@ def sweep(self, sequence: PulseSequence, options: ExecutionParameters, *sweepers result = {} for instrument in self.instruments: if isinstance(instrument, Controller): - new_result = instrument.sweep(self.qubits, sequence, options, *sweepers) + new_result = instrument.sweep(self.qubits, self.couplers, sequence, options, *sweepers) if isinstance(new_result, dict): result.update(new_result) elif new_result is not None: From c5b4a131441d788bade99b6e39761e7c1ae8bb53 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 18 Jul 2023 11:59:33 +0400 Subject: [PATCH 08/52] driver --- src/qibolab/instruments/zhinst.py | 103 +++++++++++++++++------------- 1 file changed, 57 insertions(+), 46 deletions(-) diff --git a/src/qibolab/instruments/zhinst.py b/src/qibolab/instruments/zhinst.py index 9d0c33981..60c52a601 100644 --- a/src/qibolab/instruments/zhinst.py +++ b/src/qibolab/instruments/zhinst.py @@ -351,29 +351,27 @@ def disconnect(self): def setup(self, *args, **kwargs): """Empty method to comply with Instrument interface.""" - def calibration_step(self, qubits): + def calibration_step(self, qubits, couplers): """ Zurich general pre experiment calibration definitions Change to get frequencies from sequence """ - + for coupler in couplers.values(): + self.register_flux_line(coupler) for qubit in qubits.values(): - if qubit.flux_coupler: + if qubit.flux is not None: self.register_flux_line(qubit) - else: - if qubit.flux is not None: - self.register_flux_line(qubit) - if len(self.sequence[f"drive{qubit.name}"]) != 0: - self.register_drive_line( - qubit=qubit, - intermediate_frequency=qubit.drive_frequency - qubit.drive.local_oscillator.frequency, - ) - if len(self.sequence[f"readout{qubit.name}"]) != 0: - self.register_readout_line( - qubit=qubit, - intermediate_frequency=qubit.readout_frequency - qubit.readout.local_oscillator.frequency, - ) + if len(self.sequence[f"drive{qubit.name}"]) != 0: + self.register_drive_line( + qubit=qubit, + intermediate_frequency=qubit.drive_frequency - qubit.drive.local_oscillator.frequency, + ) + if len(self.sequence[f"readout{qubit.name}"]) != 0: + self.register_readout_line( + qubit=qubit, + intermediate_frequency=qubit.readout_frequency - qubit.readout.local_oscillator.frequency, + ) self.device_setup.set_calibration(self.calibration) def register_readout_line(self, qubit, intermediate_frequency): @@ -476,14 +474,14 @@ def frequency_from_pulses(qubits, sequence): if pulse.type is PulseType.DRIVE: qubit.drive_frequency = pulse.frequency - def experiment_flow(self, qubits, sequence, options, sweepers=[]): + def experiment_flow(self, qubits, couplers, sequence, options, sweepers=[]): """ Create the experiment object for the devices, following the steps separated one on each method: Translation, Calibration, Experiment Definition. """ self.sequence_zh(sequence, qubits, sweepers) - self.calibration_step(qubits) - self.create_exp(qubits, options) + self.calibration_step(qubits, couplers) + self.create_exp(qubits, couplers, options) # pylint: disable=W0221 def play(self, qubits, couplers, sequence, options): @@ -495,14 +493,14 @@ def play(self, qubits, couplers, sequence, options): self.frequency_from_pulses(qubits, sequence) - self.experiment_flow(qubits, sequence, options) + self.experiment_flow(qubits, couplers, sequence, options) self.run_exp() # Get the results back results = {} for qubit in qubits.values(): - if qubit.flux_coupler: - continue + # if qubit.flux_coupler: + # continue q = qubit.name # pylint: disable=C0103 if len(self.sequence[f"readout{q}"]) != 0: exp_res = self.results.get_data(f"sequence{q}") @@ -532,7 +530,7 @@ def sequence_zh(self, sequence, qubits, sweepers): # Fill the sequences with pulses according to their lines in temporal order for pulse in sequence: - #FIXME: qubits[pulse.qubit] + # FIXME: qubits[pulse.qubit] zhsequence[f"{pulse.type.name.lower()}{pulse.qubit}"].append(ZhPulse(pulse)) # Mess that gets the sweeper and substitutes the pulse it sweeps in the right place @@ -556,13 +554,12 @@ def nt_loop(sweeper): nt_loop(sweeper) for element in aux_list: if pulse == element.pulse: - - #FIXME: qubits[pulse.qubit] + # FIXME: qubits[pulse.qubit] # if pulse.qubit in qubits: # print("here") # else: # print("coupler") - + if isinstance(aux_list[aux_list.index(element)], ZhPulse): aux_list[aux_list.index(element)] = ZhSweeper(pulse, sweeper, qubits[pulse.qubit]) elif isinstance(aux_list[aux_list.index(element)], ZhSweeper): @@ -570,7 +567,6 @@ def nt_loop(sweeper): if sweeper.parameter.name in SWEEPER_BIAS: for qubit in sweeper.qubits: - print(qubit) zhsequence[f"flux{qubit.name}"] = [ZhSweeperLine(sweeper, qubit, sequence)] # FIXME: This may not place the Zhsweeper when the start occurs among different sections or lines @@ -588,23 +584,38 @@ def nt_loop(sweeper): self.sequence = zhsequence - def create_exp(self, qubits, options): + def create_exp(self, qubits, couplers, options): """Zurich experiment initialization usig their Experiment class""" # Setting experiment signal lines signals = [] + + for coupler in couplers.values(): + c = coupler.name + signals.append(lo.ExperimentSignal(f"flux{c}")) + for qubit in qubits.values(): q = qubit.name # pylint: disable=C0103 - if qubit.flux_coupler: + if len(self.sequence[f"drive{q}"]) != 0: + signals.append(lo.ExperimentSignal(f"drive{q}")) + if qubit.flux is not None: signals.append(lo.ExperimentSignal(f"flux{q}")) - else: - if len(self.sequence[f"drive{q}"]) != 0: - signals.append(lo.ExperimentSignal(f"drive{q}")) - if qubit.flux is not None: - signals.append(lo.ExperimentSignal(f"flux{q}")) - if len(self.sequence[f"readout{q}"]) != 0: - signals.append(lo.ExperimentSignal(f"measure{q}")) - signals.append(lo.ExperimentSignal(f"acquire{q}")) + if len(self.sequence[f"readout{q}"]) != 0: + signals.append(lo.ExperimentSignal(f"measure{q}")) + signals.append(lo.ExperimentSignal(f"acquire{q}")) + + # for qubit in qubits.values(): + # q = qubit.name # pylint: disable=C0103 + # if qubit.flux_coupler: + # signals.append(lo.ExperimentSignal(f"flux{q}")) + # else: + # if len(self.sequence[f"drive{q}"]) != 0: + # signals.append(lo.ExperimentSignal(f"drive{q}")) + # if qubit.flux is not None: + # signals.append(lo.ExperimentSignal(f"flux{q}")) + # if len(self.sequence[f"readout{q}"]) != 0: + # signals.append(lo.ExperimentSignal(f"measure{q}")) + # signals.append(lo.ExperimentSignal(f"acquire{q}")) exp = lo.Experiment( uid="Sequence", @@ -759,8 +770,8 @@ def flux(self, exp, qubits): def drive(self, exp, qubits): """qubit driving pulses""" for qubit in qubits.values(): - if qubit.flux_coupler: - continue + # if qubit.flux_coupler: + # continue q = qubit.name # pylint: disable=C0103 time = 0 i = 0 @@ -825,8 +836,8 @@ def measure_relax(self, exp, qubits, relaxation_time, acquisition_type): # Section on the outside loop allows for multiplex with exp.section(uid="sequence_measure", play_after=play_after): for qubit in qubits.values(): - if qubit.flux_coupler: - continue + # if qubit.flux_coupler: + # continue q = qubit.name # pylint: disable=C0103 if len(self.sequence[f"readout{q}"]) != 0: for pulse in self.sequence[f"readout{q}"]: @@ -902,8 +913,8 @@ def fast_reset(self, exp, qubits, fast_reset): log.warning("Im fast resetting") for qubit_name in self.sequence_qibo.qubits: qubit = qubits[qubit_name] - if qubit.flux_coupler: - continue + # if qubit.flux_coupler: + # continue q = qubit.name # pylint: disable=C0103 with exp.section(uid=f"fast_reset{q}", play_after=f"sequence_measure{q}"): with exp.match_local(handle=f"sequence{q}"): @@ -962,14 +973,14 @@ def sweep(self, qubits, couplers, sequence: PulseSequence, options, *sweepers): self.frequency_from_pulses(qubits, sequence) - self.experiment_flow(qubits, sequence, options, sweepers) + self.experiment_flow(qubits, couplers, sequence, options, sweepers) self.run_exp() # Get the results back results = {} for qubit in qubits.values(): - if qubit.flux_coupler: - continue + # if qubit.flux_coupler: + # continue q = qubit.name # pylint: disable=C0103 if len(self.sequence[f"readout{q}"]) != 0: exp_res = self.results.get_data(f"sequence{q}") From bae4b5371e40a8a0082847d7a75e4834b6ec3140 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Thu, 24 Aug 2023 20:28:11 +0400 Subject: [PATCH 09/52] updating things --- src/qibolab/couplers.py | 9 ++++-- src/qibolab/dummy2.py | 64 ++++++++++++++++++++++------------------ src/qibolab/platform.py | 3 +- src/qibolab/serialize.py | 38 +++++++++++++++++++++++- 4 files changed, 81 insertions(+), 33 deletions(-) diff --git a/src/qibolab/couplers.py b/src/qibolab/couplers.py index 631bbb2bd..f3b91f2e6 100644 --- a/src/qibolab/couplers.py +++ b/src/qibolab/couplers.py @@ -1,9 +1,9 @@ from dataclasses import dataclass, field -from typing import List, Optional, Union +from typing import List, Optional, Tuple, Union from qibolab.channels import Channel from qibolab.native import TwoQubitNatives -from qibolab.qubits import Qubit +from qibolab.qubits import Qubit, QubitId CouplerId = Union[str, int] """Type for Coupler names.""" @@ -45,6 +45,10 @@ def channels(self): yield channel +CouplerPairId = Tuple[CouplerId, QubitId, QubitId] +"""Type for holding ``QubitPair``s in the ``platform.pairs`` dictionary.""" + + @dataclass class CouplerPair: """Data structure for holding a coupler and its two-qubits on a pair of qubits. @@ -53,6 +57,7 @@ class CouplerPair: ``qubit1.name < qubit2.name``. """ + coupler: Coupler qubit1: Qubit qubit2: Qubit native_gates: TwoQubitNatives = field(default_factory=TwoQubitNatives) diff --git a/src/qibolab/dummy2.py b/src/qibolab/dummy2.py index 8a54e5d4e..514304739 100644 --- a/src/qibolab/dummy2.py +++ b/src/qibolab/dummy2.py @@ -3,6 +3,7 @@ from qibolab.channels import Channel, ChannelMap from qibolab.instruments.dummy import DummyInstrument from qibolab.platform import Platform +from qibolab.serialize import load_couplers, load_qubits, load_settings NAME = "dummy2" RUNCARD = { @@ -16,13 +17,12 @@ 4, ], "couplers": [ - "c0", - "c1", - "c3", - "c4", + 0, + 1, + 3, + 4, ], "settings": {"sampling_rate": 1000000000, "relaxation_time": 0, "nshots": 1024}, - "resonator_type": "2D", "topology": [[0, 2], [1, 2], [2, 3], [2, 4]], "native_gates": { "single_qubit": { @@ -243,11 +243,13 @@ "threshold": 0.0, "iq_angle": 0.0, }, - "c0": {"sweetspot": 0.0}, - "c1": {"sweetspot": 0.0}, - "c3": {"sweetspot": 0.0}, - "c4": {"sweetspot": 0.0}, - } + }, + "coupler": { + 0: {"sweetspot": 0.0}, + 1: {"sweetspot": 0.0}, + 3: {"sweetspot": 0.0}, + 4: {"sweetspot": 0.0}, + }, }, } @@ -262,36 +264,40 @@ def create_dummy2(): channels |= Channel("readout", port=instrument["readout"]) channels |= (Channel(f"drive-{i}", port=instrument[f"drive-{i}"]) for i in range(nqubits)) channels |= (Channel(f"flux-{i}", port=instrument[f"flux-{i}"]) for i in range(nqubits)) + # FIXME: Issues with the names if they are strings maybe channels |= ( - Channel(f"flux_coupler-c{c}", port=instrument[f"flux_coupler-c{c}"]) + Channel(f"flux_coupler-{c}", port=instrument[f"flux_coupler-{c}"]) for c in itertools.chain(range(0, 2), range(3, 5)) ) + channels["readout"].attenuation = 0 - # Create platform - platform = Platform(NAME, RUNCARD, [instrument], channels) - - instrument.sampling_rate = platform.sampling_rate * 1e-9 + qubits, pairs = load_qubits(RUNCARD) + couplers, coupler_pairs = load_couplers(RUNCARD) + settings = load_settings(RUNCARD) # map channels to qubits - for qubit in platform.qubits: - platform.qubits[qubit].readout = channels["readout"] - platform.qubits[qubit].drive = channels[f"drive-{qubit}"] - platform.qubits[qubit].flux = channels[f"flux-{qubit}"] - channels["readout"].attenuation = 0 + for q, qubit in qubits.items(): + qubit.readout = channels["readout"] + qubit.drive = channels[f"drive-{q}"] + qubit.flux = channels[f"flux-{q}"] - for coupler in platform.couplers: - platform.couplers[coupler].flux = channels[f"flux_coupler-{coupler}"] + # map channels to couplers + for c, coupler in couplers.items(): + coupler.flux = channels[f"flux_coupler-{c}"] - # FIXME: This could be a way of getting qubits to coupler or we could get couplers to qubits - # FIXME: Nicer way of getting this range + # FIXME: Call couplers by its name # assign couplers to qubits for c in itertools.chain(range(0, 2), range(3, 5)): - platform.qubits[c].flux_coupler[f"c{c}"] = platform.couplers[f"c{c}"] - platform.qubits[2].flux_coupler[f"c{c}"] = platform.couplers[f"c{c}"] + qubits[c].flux_coupler[c] = couplers[c] + qubits[2].flux_coupler[c] = couplers[c] + # FIXME: Call couplers by its name # assign qubits to couplers for c in itertools.chain(range(0, 2), range(3, 5)): - platform.couplers[f"c{c}"].qubits[c] = [platform.qubits[c]] - platform.couplers[f"c{c}"].qubits[c].append(platform.qubits[2]) + couplers[c].qubits[c] = [qubits[c]] + couplers[c].qubits[c].append(qubits[2]) + + instruments = {instrument.name: instrument} + instrument.sampling_rate = settings.sampling_rate * 1e-9 - return platform + return Platform(NAME, qubits, pairs, instruments, settings, resonator_type="2D") diff --git a/src/qibolab/platform.py b/src/qibolab/platform.py index 2b3e62df7..2e791f0f0 100644 --- a/src/qibolab/platform.py +++ b/src/qibolab/platform.py @@ -8,7 +8,7 @@ import networkx as nx from qibo.config import log, raise_error -from qibolab.couplers import Coupler, CouplerId +from qibolab.couplers import Coupler, CouplerId, CouplerPair, CouplerPairId from qibolab.execution_parameters import ExecutionParameters from qibolab.instruments.abstract import Controller, Instrument, InstrumentId from qibolab.native import NativeType @@ -20,6 +20,7 @@ QubitMap = Dict[QubitId, Qubit] CouplerMap = Dict[CouplerId, Coupler] QubitPairMap = Dict[QubitPairId, QubitPair] +CouplerPairMap = Dict[CouplerPairId, CouplerPair] @dataclass diff --git a/src/qibolab/serialize.py b/src/qibolab/serialize.py index cd39ebe36..8d62f79f9 100644 --- a/src/qibolab/serialize.py +++ b/src/qibolab/serialize.py @@ -10,8 +10,16 @@ import yaml +from qibolab.couplers import Coupler, CouplerPair from qibolab.native import SingleQubitNatives, TwoQubitNatives -from qibolab.platform import Platform, QubitMap, QubitPairMap, Settings +from qibolab.platform import ( + CouplerMap, + CouplerPairMap, + Platform, + QubitMap, + QubitPairMap, + Settings, +) from qibolab.qubits import Qubit, QubitPair @@ -51,6 +59,27 @@ def load_qubits(runcard: dict) -> Tuple[QubitMap, QubitPairMap]: return qubits, pairs +def load_couplers(runcard: dict) -> Tuple[CouplerMap, CouplerPairMap]: + """Load couplers and pairs from the runcard. + + Uses the native gate and characterization sections of the runcard + to parse the :class:`qibolab.qubits.Qubit` and :class:`qibolab.qubits.QubitPair` + objects. + """ + qubits = {q: Qubit(q, **char) for q, char in runcard["characterization"]["single_qubit"].items()} + couplers = {c: Coupler(c, **char) for c, char in runcard["characterization"]["coupler"].items()} + + print(couplers) + + coupler_pairs = {} + for pair, coupler in zip(runcard["topology"], runcard["couplers"]): + pair = tuple(sorted(pair)) + # Fancier ordering for couplers + coupler_pairs[pair] = CouplerPair(couplers[coupler], qubits[pair[0]], qubits[pair[1]]) + + return couplers, coupler_pairs + + def dump_qubits(qubits: QubitMap, pairs: QubitPairMap) -> dict: """Dump qubit and pair objects to a dictionary following the runcard format.""" native_gates = { @@ -69,6 +98,13 @@ def dump_qubits(qubits: QubitMap, pairs: QubitPairMap) -> dict: } +# TODO: Couplers would need to be associated to qubits in the runcard +def dump_couplers(couplers: CouplerMap, coupler_pairs: CouplerPairMap) -> dict: + """Dump coupler and coupler_pair objects to a dictionary following the runcard format.""" + # TODO: + return {"couplers": couplers, "coupler_qubits": coupler_pairs} + + def dump_runcard(platform: Platform, path: Path): """Serializes the platform and saves it as a yaml runcard file. From 2728b330d617d4c72b332fe28ed544e118fc3113 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Thu, 24 Aug 2023 20:39:41 +0400 Subject: [PATCH 10/52] something works --- src/qibolab/dummy2.py | 4 +++- src/qibolab/instruments/dummy.py | 4 +++- src/qibolab/platform.py | 7 +++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/qibolab/dummy2.py b/src/qibolab/dummy2.py index 514304739..344e19e86 100644 --- a/src/qibolab/dummy2.py +++ b/src/qibolab/dummy2.py @@ -300,4 +300,6 @@ def create_dummy2(): instruments = {instrument.name: instrument} instrument.sampling_rate = settings.sampling_rate * 1e-9 - return Platform(NAME, qubits, pairs, instruments, settings, resonator_type="2D") + return Platform( + NAME, qubits, pairs, instruments, settings, resonator_type="2D", couplers=couplers, coupler_pairs=coupler_pairs + ) diff --git a/src/qibolab/instruments/dummy.py b/src/qibolab/instruments/dummy.py index 5430cd232..37204c5fa 100644 --- a/src/qibolab/instruments/dummy.py +++ b/src/qibolab/instruments/dummy.py @@ -6,9 +6,10 @@ from qibo.config import log from qibolab import AcquisitionType, AveragingMode, ExecutionParameters +from qibolab.couplers import CouplerId from qibolab.instruments.abstract import Controller from qibolab.instruments.port import Port -from qibolab.platform import Qubit +from qibolab.platform import Coupler, Qubit from qibolab.pulses import PulseSequence from qibolab.qubits import QubitId from qibolab.sweeper import Sweeper @@ -109,6 +110,7 @@ def play_sequences( def sweep( self, qubits: Dict[QubitId, Qubit], + couplers: Dict[CouplerId, Coupler], sequence: PulseSequence, options: ExecutionParameters, *sweepers: List[Sweeper], diff --git a/src/qibolab/platform.py b/src/qibolab/platform.py index 2e791f0f0..a4d9c1118 100644 --- a/src/qibolab/platform.py +++ b/src/qibolab/platform.py @@ -43,8 +43,6 @@ class Platform: """Name of the platform.""" qubits: QubitMap """Dictionary mapping qubit names to :class:`qibolab.qubits.Qubit` objects.""" - couplers: CouplerMap - """Dictionary mapping qubit names to :class:`qibolab.couplers.Coupler` objects.""" pairs: QubitPairMap """Dictionary mapping sorted tuples of qubit names to :class:`qibolab.qubits.QubitPair` objects.""" instruments: InstrumentMap @@ -57,6 +55,11 @@ class Platform: Default is 3D for single-qubit chips and 2D for multi-qubit. """ + couplers: Optional[CouplerMap] = None + """Dictionary mapping coupler names to :class:`qibolab.couplers.Coupler` objects.""" + coupler_pairs: Optional[CouplerPairMap] = None + """Dictionary mapping sorted tuples of coupler names to :class:`qibolab.qubits.QubitPair` objects.""" + is_connected: bool = False """Flag for whether we are connected to the physical instruments.""" two_qubit_native_types: NativeType = field(default_factory=lambda: NativeType(0)) From 9e4102dde4fc874c173cda999ecb8417c2731cce Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Thu, 24 Aug 2023 22:29:27 +0400 Subject: [PATCH 11/52] fixes --- src/qibolab/couplers.py | 2 + src/qibolab/dummy2.py | 8 ++++ src/qibolab/native.py | 97 +++++++++++++++++++++++++++++++++++----- src/qibolab/platform.py | 14 +++++- src/qibolab/serialize.py | 3 +- 5 files changed, 112 insertions(+), 12 deletions(-) diff --git a/src/qibolab/couplers.py b/src/qibolab/couplers.py index f3b91f2e6..6b02c94c3 100644 --- a/src/qibolab/couplers.py +++ b/src/qibolab/couplers.py @@ -26,7 +26,9 @@ class Coupler: name: CouplerId + # TODO: I think is not needed frequency: int = 0 + sweetspot: float = 0 flux: Optional[Channel] = None diff --git a/src/qibolab/dummy2.py b/src/qibolab/dummy2.py index 344e19e86..bd9e6ca88 100644 --- a/src/qibolab/dummy2.py +++ b/src/qibolab/dummy2.py @@ -154,6 +154,14 @@ }, {"type": "virtual_z", "phase": 0.0, "qubit": 1}, {"type": "virtual_z", "phase": 0.0, "qubit": 2}, + { + "type": "coupler", + "duration": 30, + "amplitude": 0.05, + "shape": "Rectangular()", + "coupler": 1, + "relative_start": 0, + }, ] }, "3-2": { diff --git a/src/qibolab/native.py b/src/qibolab/native.py index 7e773e6be..d2ae0614f 100644 --- a/src/qibolab/native.py +++ b/src/qibolab/native.py @@ -126,6 +126,63 @@ def raw(self): return {"type": "virtual_z", "phase": self.phase, "qubit": self.qubit.name} +@dataclass +class CouplerPulse: + """Container with parameters required to add a coupler pulse in a pulse sequence.""" + + duration: int + amplitude: float + shape: str + coupler: "couplers.Coupler" + relative_start: int = 0 + + @classmethod + def from_dict(cls, pulse, coupler): + """Parse the dictionary provided by the runcard. + + Args: + name (str): Name of the native gate (dictionary key). + pulse (dict): Dictionary containing the parameters of the pulse implementing + the gate, as loaded from the runcard. + qubits (:class:`qibolab.platforms.abstract.Qubit`): Qubit that the + pulse is acting on + """ + kwargs = pulse.copy() + kwargs["coupler"] = coupler + return cls(**kwargs) + + @property + def raw(self): + return ( + { + "type": "coupler", + "duration": self.duration, + "amplitude": self.amplitude, + "shape": self.shape, + "coupler": self.coupler, + "relative_start": self.relative_start, + }, + ) + + def pulse(self, start): + """Construct the :class:`qibolab.pulses.Pulse` object implementing the gate. + + Args: + start (int): Start time of the pulse in the sequence. + + Returns: + A :class:`qibolab.pulses.FluxPulse` with the pulse parameters of the gate. + """ + return FluxPulse( + start + self.relative_start, + self.duration, + self.amplitude, + self.shape, + channel=self.coupler.flux.name, + qubit=self.coupler.name, + ) + + @dataclass class NativeSequence: """List of :class:`qibolab.platforms.native.NativePulse` objects implementing a gate. @@ -136,19 +193,28 @@ class NativeSequence: name: str pulses: List[Union[NativePulse, VirtualZPulse]] = field(default_factory=list) + coupler_pulses: List[CouplerPulse] = field(default_factory=list) @classmethod - def from_dict(cls, name, sequence, qubits): + def from_dict(cls, name, sequence, qubits, couplers): """Constructs the native sequence from the dictionaries provided in the runcard. Args: name (str): Name of the gate the sequence is applying. sequence (dict): Dictionary describing the sequence as provided in the runcard. - qubits (list): List of :class:`qibolab.platforms.abstract.Qubit` object for all + qubits (list): List of :class:`qibolab.qubits.Qubit` object for all qubits in the platform. All qubits are required because the sequence may be acting on qubits that the implemented gate is not targeting. + couplres (list): List of :class:`qibolab.couplers.Coupler` object for all + couplers in the platform. All couplers are required because the sequence may be + acting on couplers that the implemented gate is not targeting. """ pulses = [] + coupler_pulses = [] + + import pdb + + pdb.set_trace() # If sequence contains only one pulse dictionary, convert it into a list that can be iterated below if isinstance(sequence, dict): @@ -156,14 +222,22 @@ def from_dict(cls, name, sequence, qubits): for i, pulse in enumerate(sequence): pulse = pulse.copy() - qubit = qubits[pulse.pop("qubit")] pulse_type = pulse.pop("type") - if pulse_type == "virtual_z": - phase = pulse["phase"] - pulses.append(VirtualZPulse(phase, qubit)) + if pulse_type == "coupler": + coupler = couplers[pulse.pop("coupler")] + duration = pulse["duration"] + amplitude = pulse["amplitude"] + shape = pulse["shape"] + relative_start = pulse["relative_start"] + coupler_pulses.append(CouplerPulse(duration, amplitude, shape, coupler, relative_start)) else: - pulses.append(NativePulse(f"{name}{i}", **pulse, pulse_type=PulseType(pulse_type), qubit=qubit)) - return cls(name, pulses) + qubit = qubits[pulse.pop("qubit")] + if pulse_type == "virtual_z": + phase = pulse["phase"] + pulses.append(VirtualZPulse(phase, qubit)) + else: + pulses.append(NativePulse(f"{name}{i}", **pulse, pulse_type=PulseType(pulse_type), qubit=qubit)) + return cls(name, pulses, coupler_pulses) @property def raw(self): @@ -180,6 +254,9 @@ def sequence(self, start=0): else: virtual_z_phases[pulse.qubit.name] += pulse.phase + for coupler_pulse in self.coupler_pulses: + sequence.add(coupler_pulse.pulse(start=start)) + # TODO: Maybe ``virtual_z_phases`` should be an attribute of ``PulseSequence`` return sequence, virtual_z_phases @@ -229,8 +306,8 @@ class TwoQubitNatives: iSWAP: Optional[NativeSequence] = None @classmethod - def from_dict(cls, qubits, native_gates): - sequences = {n: NativeSequence.from_dict(n, seq, qubits) for n, seq in native_gates.items()} + def from_dict(cls, qubits, couplers, native_gates): + sequences = {n: NativeSequence.from_dict(n, seq, qubits, couplers) for n, seq in native_gates.items()} return cls(**sequences) @property diff --git a/src/qibolab/platform.py b/src/qibolab/platform.py index a4d9c1118..da3a156d9 100644 --- a/src/qibolab/platform.py +++ b/src/qibolab/platform.py @@ -268,7 +268,7 @@ def _execute(self, method, sequences, options, **kwargs): result = {} for instrument in self.instruments.values(): if isinstance(instrument, Controller): - new_result = getattr(instrument, method)(self.qubits, sequences, options) + new_result = getattr(instrument, method)(self.qubits, self.couplers, sequences, options) if isinstance(new_result, dict): result.update(new_result) elif new_result is not None: @@ -364,6 +364,18 @@ def get_qubit(self, qubit): except KeyError: return list(self.qubits.keys())[qubit] + # TODO: Similar for couplers (I think this won't be needed) + def get_coupler(self, coupler): + """Return the name of the physical coupler corresponding to a logical coupler. + + Temporary fix for the compiler to work for platforms where the couplers + are not named as 0, 1, 2, ... + """ + try: + return self.couplers[coupler].name + except KeyError: + return list(self.couplers.keys())[coupler] + def create_RX90_pulse(self, qubit, start=0, relative_phase=0): qubit = self.get_qubit(qubit) return self.qubits[qubit].native_gates.RX90.pulse(start, relative_phase) diff --git a/src/qibolab/serialize.py b/src/qibolab/serialize.py index 8d62f79f9..ea04e7947 100644 --- a/src/qibolab/serialize.py +++ b/src/qibolab/serialize.py @@ -41,6 +41,7 @@ def load_qubits(runcard: dict) -> Tuple[QubitMap, QubitPairMap]: objects. """ qubits = {q: Qubit(q, **char) for q, char in runcard["characterization"]["single_qubit"].items()} + couplers = {c: Coupler(c, **char) for c, char in runcard["characterization"]["coupler"].items()} pairs = {} for pair in runcard["topology"]: @@ -54,7 +55,7 @@ def load_qubits(runcard: dict) -> Tuple[QubitMap, QubitPairMap]: # register two-qubit native gates to ``QubitPair`` objects for pair, gatedict in native_gates.get("two_qubit", {}).items(): pair = tuple(sorted(int(q) if q.isdigit() else q for q in pair.split("-"))) - pairs[pair].native_gates = TwoQubitNatives.from_dict(qubits, gatedict) + pairs[pair].native_gates = TwoQubitNatives.from_dict(qubits, couplers, gatedict) return qubits, pairs From acca782bb2117ef9679c4d4a4213378bc12263ef Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Fri, 25 Aug 2023 14:18:51 +0400 Subject: [PATCH 12/52] working --- src/qibolab/dummy2.py | 12 +++--- src/qibolab/native.py | 16 ++++---- src/qibolab/pulses.py | 82 +++++++++++++++++++++++++++++++++++++++- src/qibolab/serialize.py | 28 ++++++++------ 4 files changed, 112 insertions(+), 26 deletions(-) diff --git a/src/qibolab/dummy2.py b/src/qibolab/dummy2.py index bd9e6ca88..bdec2db03 100644 --- a/src/qibolab/dummy2.py +++ b/src/qibolab/dummy2.py @@ -3,7 +3,7 @@ from qibolab.channels import Channel, ChannelMap from qibolab.instruments.dummy import DummyInstrument from qibolab.platform import Platform -from qibolab.serialize import load_couplers, load_qubits, load_settings +from qibolab.serialize import load_couplers, load_qubits, load_settings, register_gates NAME = "dummy2" RUNCARD = { @@ -148,7 +148,7 @@ "duration": 30, "amplitude": 0.05, "shape": "Rectangular()", - "qubit": 0, + "qubit": 2, "relative_start": 0, "type": "qf", }, @@ -156,11 +156,11 @@ {"type": "virtual_z", "phase": 0.0, "qubit": 2}, { "type": "coupler", - "duration": 30, - "amplitude": 0.05, + "duration": 40, + "amplitude": 0.1, "shape": "Rectangular()", "coupler": 1, - "relative_start": 0, + "relative_start": -5, }, ] }, @@ -305,6 +305,8 @@ def create_dummy2(): couplers[c].qubits[c] = [qubits[c]] couplers[c].qubits[c].append(qubits[2]) + qubits, pairs = register_gates(RUNCARD, qubits, pairs, couplers) + instruments = {instrument.name: instrument} instrument.sampling_rate = settings.sampling_rate * 1e-9 diff --git a/src/qibolab/native.py b/src/qibolab/native.py index d2ae0614f..9b157cbbe 100644 --- a/src/qibolab/native.py +++ b/src/qibolab/native.py @@ -6,7 +6,13 @@ from qibo import gates from qibo.config import raise_error -from qibolab.pulses import FluxPulse, PulseConstructor, PulseSequence, PulseType +from qibolab.pulses import ( + CouplerFluxPulse, + FluxPulse, + PulseConstructor, + PulseSequence, + PulseType, +) class NativeType(Flag): @@ -173,13 +179,13 @@ def pulse(self, start): Returns: A :class:`qibolab.pulses.FluxPulse` with the pulse parameters of the gate. """ - return FluxPulse( + return CouplerFluxPulse( start + self.relative_start, self.duration, self.amplitude, self.shape, channel=self.coupler.flux.name, - qubit=self.coupler.name, + coupler=self.coupler.name, ) @@ -212,10 +218,6 @@ def from_dict(cls, name, sequence, qubits, couplers): pulses = [] coupler_pulses = [] - import pdb - - pdb.set_trace() - # If sequence contains only one pulse dictionary, convert it into a list that can be iterated below if isinstance(sequence, dict): sequence = [sequence] diff --git a/src/qibolab/pulses.py b/src/qibolab/pulses.py index 6b0338936..7c1edbfb8 100644 --- a/src/qibolab/pulses.py +++ b/src/qibolab/pulses.py @@ -681,6 +681,7 @@ def __init__( channel, type=PulseType.DRIVE, qubit=0, + coupler=None, ): # def __init__(self, start:int | se_int, duration:int | se_int, amplitude:float, frequency:int, relative_phase:float, shape: PulseShape | str, # channel: int | str, type: PulseType | str = PulseType.DRIVE, qubit: int | str = 0): @@ -696,6 +697,7 @@ def __init__( # self._channel: int | str = None self._type: PulseType = None self._qubit = None + self._coupler = None # self._qubit: int | str = None self._id: int = Pulse.count Pulse.count += 1 @@ -709,6 +711,7 @@ def __init__( self.channel = channel self.type = type self.qubit = qubit + self.coupler = coupler self._if = 0 @@ -1403,6 +1406,80 @@ def serial(self): return f"FluxPulse({self.start}, {self.duration}, {format(self.amplitude, '.6f').rstrip('0').rstrip('.')}, {self.shape}, {self.channel}, {self.qubit})" +class CouplerFluxPulse(Pulse): + """Describes a coupler flux pulse. + + Flux pulses have frequency and relative_phase equal to 0. Their i and q components are equal. + See :class:`qibolab.pulses.Pulse` for argument desciption. + """ + + def __init__(self, start, duration, amplitude, shape, channel, coupler=0): + # def __init__(self, start:int | se_int, duration:int | se_int, amplitude:float, frequency:int, relative_phase:float, shape: PulseShape | str, + # channel: int | str, coupler: int | str = 0): + super().__init__( + start, + duration, + amplitude, + 0, + 0, + shape, + channel, + type=PulseType.FLUX, + coupler=coupler, + ) + + @property + def envelope_waveform_i(self) -> Waveform: + return self._shape.envelope_waveform_i + + @property + def envelope_waveform_q(self) -> Waveform: + return self._shape.envelope_waveform_i + + @property + def envelope_waveforms(self): # -> tuple[Waveform, Waveform]: + return (self._shape.envelope_waveform_i, self._shape.envelope_waveform_i) + + @property + def modulated_waveform_i(self) -> Waveform: + return self._shape.envelope_waveform_i + + @property + def modulated_waveform_q(self) -> Waveform: + return self._shape.envelope_waveform_i + + @property + def modulated_waveforms(self): # -> tuple[Waveform, Waveform]: + return (self._shape.envelope_waveform_i, self._shape.envelope_waveform_i) + + @property + def serial(self): + return f"FluxPulse({self.start}, {self.duration}, {format(self.amplitude, '.6f').rstrip('0').rstrip('.')}, {self.shape}, {self.channel}, {self.coupler})" + + +# class CouplerFluxPulse(FluxPulse): +# """Describes a coupler flux pulse. + +# Flux pulses have frequency and relative_phase equal to 0. Their i and q components are equal. +# See :class:`qibolab.pulses.Pulse` for argument desciption. +# """ + +# def __init__(self, start, duration, amplitude, shape, channel, coupler=0): +# # def __init__(self, start:int | se_int, duration:int | se_int, amplitude:float, frequency:int, relative_phase:float, shape: PulseShape | str, +# # channel: int | str, qubit: int | str = 0): +# super().__init__( +# start, +# duration, +# amplitude, +# 0, +# 0, +# shape, +# channel, +# type=PulseType.FLUX, +# coupler=coupler, +# ) + + class SplitPulse(Pulse): """A supporting class to represent sections or slices of a pulse.""" @@ -1805,8 +1882,9 @@ def get_qubit_pulses(self, *qubits): new_pc = PulseSequence() for pulse in self.pulses: - if pulse.qubit in qubits: - new_pc.add(pulse) + if not isinstance(pulse, CouplerFluxPulse): + if pulse.qubit in qubits: + new_pc.add(pulse) return new_pc @property diff --git a/src/qibolab/serialize.py b/src/qibolab/serialize.py index ea04e7947..25a171c55 100644 --- a/src/qibolab/serialize.py +++ b/src/qibolab/serialize.py @@ -41,22 +41,12 @@ def load_qubits(runcard: dict) -> Tuple[QubitMap, QubitPairMap]: objects. """ qubits = {q: Qubit(q, **char) for q, char in runcard["characterization"]["single_qubit"].items()} - couplers = {c: Coupler(c, **char) for c, char in runcard["characterization"]["coupler"].items()} pairs = {} for pair in runcard["topology"]: pair = tuple(sorted(pair)) pairs[pair] = QubitPair(qubits[pair[0]], qubits[pair[1]]) - # register single qubit native gates to ``Qubit`` objects - 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) - # register two-qubit native gates to ``QubitPair`` objects - for pair, gatedict in native_gates.get("two_qubit", {}).items(): - pair = tuple(sorted(int(q) if q.isdigit() else q for q in pair.split("-"))) - pairs[pair].native_gates = TwoQubitNatives.from_dict(qubits, couplers, gatedict) - return qubits, pairs @@ -70,8 +60,6 @@ def load_couplers(runcard: dict) -> Tuple[CouplerMap, CouplerPairMap]: qubits = {q: Qubit(q, **char) for q, char in runcard["characterization"]["single_qubit"].items()} couplers = {c: Coupler(c, **char) for c, char in runcard["characterization"]["coupler"].items()} - print(couplers) - coupler_pairs = {} for pair, coupler in zip(runcard["topology"], runcard["couplers"]): pair = tuple(sorted(pair)) @@ -81,6 +69,22 @@ def load_couplers(runcard: dict) -> Tuple[CouplerMap, CouplerPairMap]: return couplers, coupler_pairs +# TODO: I may be written to much stuff on the couplers now +def register_gates( + runcard: dict, qubits: QubitMap, pairs: QubitPairMap, couplers: CouplerMap +) -> Tuple[QubitMap, QubitPairMap]: + # register single qubit native gates to ``Qubit`` objects + 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) + # register two-qubit native gates to ``QubitPair`` objects + for pair, gatedict in native_gates.get("two_qubit", {}).items(): + pair = tuple(sorted(int(q) if q.isdigit() else q for q in pair.split("-"))) + pairs[pair].native_gates = TwoQubitNatives.from_dict(qubits, couplers, gatedict) + + return qubits, pairs + + def dump_qubits(qubits: QubitMap, pairs: QubitPairMap) -> dict: """Dump qubit and pair objects to a dictionary following the runcard format.""" native_gates = { From d0c72fa97e7b79b40d00a89697eedb0902172f58 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Fri, 25 Aug 2023 14:24:58 +0400 Subject: [PATCH 13/52] remove zurich file form this PR --- src/qibolab/instruments/zhinst.py | 146 +++++++++++++++--------------- 1 file changed, 74 insertions(+), 72 deletions(-) diff --git a/src/qibolab/instruments/zhinst.py b/src/qibolab/instruments/zhinst.py index 8686b4a6c..878845e85 100644 --- a/src/qibolab/instruments/zhinst.py +++ b/src/qibolab/instruments/zhinst.py @@ -349,27 +349,35 @@ def disconnect(self): def setup(self, *args, **kwargs): """Empty method to comply with Instrument interface.""" - def calibration_step(self, qubits, couplers): + def calibration_step(self, qubits, options): """ Zurich general pre experiment calibration definitions Change to get frequencies from sequence """ - for coupler in couplers.values(): - self.register_flux_line(coupler) + for qubit in qubits.values(): - if qubit.flux is not None: + if qubit.flux_coupler: self.register_flux_line(qubit) - if len(self.sequence[f"drive{qubit.name}"]) != 0: - self.register_drive_line( - qubit=qubit, - intermediate_frequency=qubit.drive_frequency - qubit.drive.local_oscillator.frequency, - ) - if len(self.sequence[f"readout{qubit.name}"]) != 0: - self.register_readout_line( - qubit=qubit, - intermediate_frequency=qubit.readout_frequency - qubit.readout.local_oscillator.frequency, - ) + else: + if qubit.flux is not None: + self.register_flux_line(qubit) + if len(self.sequence[f"drive{qubit.name}"]) != 0: + self.register_drive_line( + qubit=qubit, + intermediate_frequency=qubit.drive_frequency - qubit.drive.local_oscillator.frequency, + ) + if len(self.sequence[f"readout{qubit.name}"]) != 0: + self.register_readout_line( + qubit=qubit, + intermediate_frequency=qubit.readout_frequency - qubit.readout.local_oscillator.frequency, + ) + if options.fast_reset is not False: + if len(self.sequence[f"drive{qubit.name}"]) == 0: + self.register_drive_line( + qubit=qubit, + intermediate_frequency=qubit.drive_frequency - qubit.drive.local_oscillator.frequency, + ) self.device_setup.set_calibration(self.calibration) def register_readout_line(self, qubit, intermediate_frequency): @@ -472,17 +480,17 @@ def frequency_from_pulses(qubits, sequence): if pulse.type is PulseType.DRIVE: qubit.drive_frequency = pulse.frequency - def experiment_flow(self, qubits, couplers, sequence, options, sweepers=[]): + def experiment_flow(self, qubits, sequence, options, sweepers=[]): """ Create the experiment object for the devices, following the steps separated one on each method: Translation, Calibration, Experiment Definition. """ self.sequence_zh(sequence, qubits, sweepers) - self.calibration_step(qubits, couplers) - self.create_exp(qubits, couplers, options) + self.calibration_step(qubits, options) + self.create_exp(qubits, options) # pylint: disable=W0221 - def play(self, qubits, couplers, sequence, options): + def play(self, qubits, sequence, options): """Play pulse sequence""" self.signal_map = {} dimensions = [] @@ -491,14 +499,14 @@ def play(self, qubits, couplers, sequence, options): self.frequency_from_pulses(qubits, sequence) - self.experiment_flow(qubits, couplers, sequence, options) + self.experiment_flow(qubits, sequence, options) self.run_exp() # Get the results back results = {} for qubit in qubits.values(): - # if qubit.flux_coupler: - # continue + if qubit.flux_coupler: + continue q = qubit.name # pylint: disable=C0103 if len(self.sequence[f"readout{q}"]) != 0: for i, ropulse in enumerate(self.sequence[f"readout{q}"]): @@ -531,7 +539,6 @@ def sequence_zh(self, sequence, qubits, sweepers): # Fill the sequences with pulses according to their lines in temporal order for pulse in sequence: - # FIXME: qubits[pulse.qubit] zhsequence[f"{pulse.type.name.lower()}{pulse.qubit}"].append(ZhPulse(pulse)) # Mess that gets the sweeper and substitutes the pulse it sweeps in the right place @@ -555,12 +562,6 @@ def nt_loop(sweeper): nt_loop(sweeper) for element in aux_list: if pulse == element.pulse: - # FIXME: qubits[pulse.qubit] - # if pulse.qubit in qubits: - # print("here") - # else: - # print("coupler") - if isinstance(aux_list[aux_list.index(element)], ZhPulse): aux_list[aux_list.index(element)] = ZhSweeper(pulse, sweeper, qubits[pulse.qubit]) elif isinstance(aux_list[aux_list.index(element)], ZhSweeper): @@ -585,38 +586,26 @@ def nt_loop(sweeper): self.sequence = zhsequence - def create_exp(self, qubits, couplers, options): + def create_exp(self, qubits, options): """Zurich experiment initialization usig their Experiment class""" # Setting experiment signal lines signals = [] - - for coupler in couplers.values(): - c = coupler.name - signals.append(lo.ExperimentSignal(f"flux{c}")) - for qubit in qubits.values(): q = qubit.name # pylint: disable=C0103 - if len(self.sequence[f"drive{q}"]) != 0: - signals.append(lo.ExperimentSignal(f"drive{q}")) - if qubit.flux is not None: + if qubit.flux_coupler: signals.append(lo.ExperimentSignal(f"flux{q}")) - if len(self.sequence[f"readout{q}"]) != 0: - signals.append(lo.ExperimentSignal(f"measure{q}")) - signals.append(lo.ExperimentSignal(f"acquire{q}")) - - # for qubit in qubits.values(): - # q = qubit.name # pylint: disable=C0103 - # if qubit.flux_coupler: - # signals.append(lo.ExperimentSignal(f"flux{q}")) - # else: - # if len(self.sequence[f"drive{q}"]) != 0: - # signals.append(lo.ExperimentSignal(f"drive{q}")) - # if qubit.flux is not None: - # signals.append(lo.ExperimentSignal(f"flux{q}")) - # if len(self.sequence[f"readout{q}"]) != 0: - # signals.append(lo.ExperimentSignal(f"measure{q}")) - # signals.append(lo.ExperimentSignal(f"acquire{q}")) + else: + if len(self.sequence[f"drive{q}"]) != 0: + signals.append(lo.ExperimentSignal(f"drive{q}")) + if qubit.flux is not None: + signals.append(lo.ExperimentSignal(f"flux{q}")) + if len(self.sequence[f"readout{q}"]) != 0: + signals.append(lo.ExperimentSignal(f"measure{q}")) + signals.append(lo.ExperimentSignal(f"acquire{q}")) + if options.fast_reset is not False: + if len(self.sequence[f"drive{q}"]) == 0: + signals.append(lo.ExperimentSignal(f"drive{q}")) exp = lo.Experiment( uid="Sequence", @@ -771,8 +760,8 @@ def flux(self, exp, qubits): def drive(self, exp, qubits): """qubit driving pulses""" for qubit in qubits.values(): - # if qubit.flux_coupler: - # continue + if qubit.flux_coupler: + continue q = qubit.name # pylint: disable=C0103 time = 0 i = 0 @@ -834,16 +823,29 @@ def measure_relax(self, exp, qubits, relaxation_time, acquisition_type): elif len(self.sequence_qibo.qd_pulses) != 0: play_after = self.play_after_set(self.sequence_qibo.qd_pulses, "drive") - # Section on the outside loop allows for multiplex - with exp.section(uid="sequence_measure", play_after=play_after): - for qubit in qubits.values(): - # if qubit.flux_coupler: - # continue - q = qubit.name # pylint: disable=C0103 - if len(self.sequence[f"readout{q}"]) != 0: - for pulse in self.sequence[f"readout{q}"]: - i = 0 - pulse.zhpulse.uid += str(i) + readout_schedule = defaultdict(list) + qubit_readout_schedule = defaultdict(list) + iq_angle_readout_schedule = defaultdict(list) + for qubit in qubits.values(): + if qubit.flux_coupler: + continue + q = qubit.name # pylint: disable=C0103 + iq_angle = qubit.iq_angle + if len(self.sequence[f"readout{q}"]) != 0: + for i, pulse in enumerate(self.sequence[f"readout{q}"]): + readout_schedule[i].append(pulse) + qubit_readout_schedule[i].append(q) + iq_angle_readout_schedule[i].append(iq_angle) + + for i, (pulses, qubits, iq_angles) in enumerate( + zip(readout_schedule.values(), qubit_readout_schedule.values(), iq_angle_readout_schedule.values()) + ): + if i != 0: + play_after = f"sequence_measure_{i-1}" + # 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): + pulse.zhpulse.uid += str(i) # Integration weights definition or load from the chip folder weights_file = ( @@ -920,8 +922,8 @@ def fast_reset(self, exp, qubits, fast_reset): log.warning("Im fast resetting") for qubit_name in self.sequence_qibo.qubits: qubit = qubits[qubit_name] - # if qubit.flux_coupler: - # continue + if qubit.flux_coupler: + continue q = qubit.name # pylint: disable=C0103 with exp.section(uid=f"fast_reset{q}", play_after=f"sequence_measure"): with exp.match_local(handle=f"sequence{q}"): @@ -962,7 +964,7 @@ def offsets_off(self): self.session.devices["device_hdawg"].awgs[0].sigouts[sigout].offset = 0 self.session.devices["device_hdawg2"].awgs[0].sigouts[0].offset = 0 - def sweep(self, qubits, couplers, sequence: PulseSequence, options, *sweepers): + def sweep(self, qubits, sequence: PulseSequence, options, *sweepers): """Play pulse and sweepers sequence""" self.signal_map = {} @@ -983,14 +985,14 @@ def sweep(self, qubits, couplers, sequence: PulseSequence, options, *sweepers): self.frequency_from_pulses(qubits, sequence) - self.experiment_flow(qubits, couplers, sequence, options, sweepers) + self.experiment_flow(qubits, sequence, options, sweepers) self.run_exp() # Get the results back results = {} for qubit in qubits.values(): - # if qubit.flux_coupler: - # continue + if qubit.flux_coupler: + continue q = qubit.name # pylint: disable=C0103 if len(self.sequence[f"readout{q}"]) != 0: for i in range(len(self.sequence[f"readout{q}"])): @@ -1165,4 +1167,4 @@ def run_sim(self, sim_time): length=sim_time, plot_width=10, plot_height=3, - ) + ) \ No newline at end of file From f8f0c0536a5000cff8d96e4b921491205fee21e8 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 25 Aug 2023 10:26:33 +0000 Subject: [PATCH 14/52] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/qibolab/instruments/zhinst.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qibolab/instruments/zhinst.py b/src/qibolab/instruments/zhinst.py index 878845e85..0ffae96df 100644 --- a/src/qibolab/instruments/zhinst.py +++ b/src/qibolab/instruments/zhinst.py @@ -1167,4 +1167,4 @@ def run_sim(self, sim_time): length=sim_time, plot_width=10, plot_height=3, - ) \ No newline at end of file + ) From 2933132863a69378a08e921b471636e54c6c0f3e Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Fri, 25 Aug 2023 14:36:17 +0400 Subject: [PATCH 15/52] cleaning --- src/qibolab/dummy2.py | 30 +++++++++++++++++++++++++++--- src/qibolab/pulses.py | 33 ++++++++++----------------------- 2 files changed, 37 insertions(+), 26 deletions(-) diff --git a/src/qibolab/dummy2.py b/src/qibolab/dummy2.py index bdec2db03..efa9cd60a 100644 --- a/src/qibolab/dummy2.py +++ b/src/qibolab/dummy2.py @@ -134,12 +134,20 @@ "duration": 30, "amplitude": 0.05, "shape": "Rectangular()", - "qubit": 0, + "qubit": 2, "relative_start": 0, "type": "qf", }, {"type": "virtual_z", "phase": 0.0, "qubit": 0}, {"type": "virtual_z", "phase": 0.0, "qubit": 2}, + { + "type": "coupler", + "duration": 40, + "amplitude": 0.1, + "shape": "Rectangular()", + "coupler": 0, + "relative_start": -5, + }, ] }, "1-2": { @@ -170,12 +178,20 @@ "duration": 30, "amplitude": 0.05, "shape": "Rectangular()", - "qubit": 0, + "qubit": 2, "relative_start": 0, "type": "qf", }, {"type": "virtual_z", "phase": 0.0, "qubit": 3}, {"type": "virtual_z", "phase": 0.0, "qubit": 2}, + { + "type": "coupler", + "duration": 40, + "amplitude": 0.1, + "shape": "Rectangular()", + "coupler": 3, + "relative_start": -5, + }, ] }, "4-2": { @@ -184,12 +200,20 @@ "duration": 30, "amplitude": 0.05, "shape": "Rectangular()", - "qubit": 0, + "qubit": 2, "relative_start": 0, "type": "qf", }, {"type": "virtual_z", "phase": 0.0, "qubit": 4}, {"type": "virtual_z", "phase": 0.0, "qubit": 2}, + { + "type": "coupler", + "duration": 40, + "amplitude": 0.1, + "shape": "Rectangular()", + "coupler": 4, + "relative_start": -5, + }, ] }, }, diff --git a/src/qibolab/pulses.py b/src/qibolab/pulses.py index 7c1edbfb8..6f8fe0cca 100644 --- a/src/qibolab/pulses.py +++ b/src/qibolab/pulses.py @@ -1457,29 +1457,6 @@ def serial(self): return f"FluxPulse({self.start}, {self.duration}, {format(self.amplitude, '.6f').rstrip('0').rstrip('.')}, {self.shape}, {self.channel}, {self.coupler})" -# class CouplerFluxPulse(FluxPulse): -# """Describes a coupler flux pulse. - -# Flux pulses have frequency and relative_phase equal to 0. Their i and q components are equal. -# See :class:`qibolab.pulses.Pulse` for argument desciption. -# """ - -# def __init__(self, start, duration, amplitude, shape, channel, coupler=0): -# # def __init__(self, start:int | se_int, duration:int | se_int, amplitude:float, frequency:int, relative_phase:float, shape: PulseShape | str, -# # channel: int | str, qubit: int | str = 0): -# super().__init__( -# start, -# duration, -# amplitude, -# 0, -# 0, -# shape, -# channel, -# type=PulseType.FLUX, -# coupler=coupler, -# ) - - class SplitPulse(Pulse): """A supporting class to represent sections or slices of a pulse.""" @@ -1887,6 +1864,16 @@ def get_qubit_pulses(self, *qubits): new_pc.add(pulse) return new_pc + def get_coupler_pulses(self, *couplers): + """Returns a new PulseSequence containing only the pulses on a specific set of couplers.""" + + new_pc = PulseSequence() + for pulse in self.pulses: + if isinstance(pulse, CouplerFluxPulse): + if pulse.coupler in couplers: + new_pc.add(pulse) + return new_pc + @property def is_empty(self): """Returns True if the sequence does not contain any pulses.""" From 8d217be6230939b3b0b09c276d9026a373b0c0dc Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 29 Aug 2023 14:26:45 +0400 Subject: [PATCH 16/52] fixes --- src/qibolab/couplers.py | 1 + src/qibolab/dummy.py | 4 +- src/qibolab/dummy2.py | 16 +-- src/qibolab/instruments/dummy.py | 2 + src/qibolab/native.py | 1 - src/qibolab/platform.py | 6 + src/qibolab/pulses.py | 2 +- src/qibolab/serialize.py | 3 +- tests/test_dummy.py | 1 - tests/test_dummy2.py | 237 +++++++++++++++++++++++++++++++ 10 files changed, 259 insertions(+), 14 deletions(-) create mode 100644 tests/test_dummy2.py diff --git a/src/qibolab/couplers.py b/src/qibolab/couplers.py index 6b02c94c3..cd0ea7a03 100644 --- a/src/qibolab/couplers.py +++ b/src/qibolab/couplers.py @@ -51,6 +51,7 @@ def channels(self): """Type for holding ``QubitPair``s in the ``platform.pairs`` dictionary.""" +# Maybe this one is not needed @dataclass class CouplerPair: """Data structure for holding a coupler and its two-qubits on a pair of qubits. diff --git a/src/qibolab/dummy.py b/src/qibolab/dummy.py index 45104ffd3..44b0f8948 100644 --- a/src/qibolab/dummy.py +++ b/src/qibolab/dummy.py @@ -1,7 +1,7 @@ from qibolab.channels import Channel, ChannelMap from qibolab.instruments.dummy import DummyInstrument from qibolab.platform import Platform -from qibolab.serialize import load_qubits, load_settings +from qibolab.serialize import load_qubits, load_settings, register_gates NAME = "dummy" RUNCARD = { @@ -223,6 +223,8 @@ def create_dummy(): qubit.drive = channels[f"drive-{q}"] qubit.flux = channels[f"flux-{q}"] + qubits, pairs = register_gates(RUNCARD, qubits, pairs) + instruments = {instrument.name: instrument} instrument.sampling_rate = settings.sampling_rate * 1e-9 return Platform(NAME, qubits, pairs, instruments, settings, resonator_type="2D") diff --git a/src/qibolab/dummy2.py b/src/qibolab/dummy2.py index efa9cd60a..b54306eef 100644 --- a/src/qibolab/dummy2.py +++ b/src/qibolab/dummy2.py @@ -146,7 +146,7 @@ "amplitude": 0.1, "shape": "Rectangular()", "coupler": 0, - "relative_start": -5, + "relative_start": 0, }, ] }, @@ -168,7 +168,7 @@ "amplitude": 0.1, "shape": "Rectangular()", "coupler": 1, - "relative_start": -5, + "relative_start": 0, }, ] }, @@ -190,7 +190,7 @@ "amplitude": 0.1, "shape": "Rectangular()", "coupler": 3, - "relative_start": -5, + "relative_start": 0, }, ] }, @@ -212,7 +212,7 @@ "amplitude": 0.1, "shape": "Rectangular()", "coupler": 4, - "relative_start": -5, + "relative_start": 0, }, ] }, @@ -320,14 +320,14 @@ def create_dummy2(): # FIXME: Call couplers by its name # assign couplers to qubits for c in itertools.chain(range(0, 2), range(3, 5)): - qubits[c].flux_coupler[c] = couplers[c] - qubits[2].flux_coupler[c] = couplers[c] + qubits[c].flux_coupler[c] = couplers[c].name + qubits[2].flux_coupler[c] = couplers[c].name # FIXME: Call couplers by its name # assign qubits to couplers for c in itertools.chain(range(0, 2), range(3, 5)): - couplers[c].qubits[c] = [qubits[c]] - couplers[c].qubits[c].append(qubits[2]) + couplers[c].qubits = [qubits[c].name] + couplers[c].qubits.append(qubits[2].name) qubits, pairs = register_gates(RUNCARD, qubits, pairs, couplers) diff --git a/src/qibolab/instruments/dummy.py b/src/qibolab/instruments/dummy.py index 37204c5fa..d97c87318 100644 --- a/src/qibolab/instruments/dummy.py +++ b/src/qibolab/instruments/dummy.py @@ -76,6 +76,7 @@ def get_values(self, options, sequence, shape): def play( self, qubits: Dict[QubitId, Qubit], + couplers: Dict[CouplerId, Coupler], sequence: PulseSequence, options: ExecutionParameters, ): @@ -92,6 +93,7 @@ def play( def play_sequences( self, qubits: Dict[QubitId, Qubit], + couplers: Dict[CouplerId, Coupler], sequences: List[PulseSequence], options: ExecutionParameters, ): diff --git a/src/qibolab/native.py b/src/qibolab/native.py index 9b157cbbe..980a0e1c1 100644 --- a/src/qibolab/native.py +++ b/src/qibolab/native.py @@ -258,7 +258,6 @@ def sequence(self, start=0): for coupler_pulse in self.coupler_pulses: sequence.add(coupler_pulse.pulse(start=start)) - # TODO: Maybe ``virtual_z_phases`` should be an attribute of ``PulseSequence`` return sequence, virtual_z_phases diff --git a/src/qibolab/platform.py b/src/qibolab/platform.py index da3a156d9..303b43e59 100644 --- a/src/qibolab/platform.py +++ b/src/qibolab/platform.py @@ -376,6 +376,12 @@ def get_coupler(self, coupler): except KeyError: return list(self.couplers.keys())[coupler] + def get_coupler_pair(self, qubits): + for coupler in self.couplers.values(): + # I add this as a subset as it may appear on the future + if set(qubits).issubset(coupler.qubits): + return coupler.name + def create_RX90_pulse(self, qubit, start=0, relative_phase=0): qubit = self.get_qubit(qubit) return self.qubits[qubit].native_gates.RX90.pulse(start, relative_phase) diff --git a/src/qibolab/pulses.py b/src/qibolab/pulses.py index 6f8fe0cca..5d5964477 100644 --- a/src/qibolab/pulses.py +++ b/src/qibolab/pulses.py @@ -1454,7 +1454,7 @@ def modulated_waveforms(self): # -> tuple[Waveform, Waveform]: @property def serial(self): - return f"FluxPulse({self.start}, {self.duration}, {format(self.amplitude, '.6f').rstrip('0').rstrip('.')}, {self.shape}, {self.channel}, {self.coupler})" + return f"CouplerFluxPulse({self.start}, {self.duration}, {format(self.amplitude, '.6f').rstrip('0').rstrip('.')}, {self.shape}, {self.channel}, {self.coupler})" class SplitPulse(Pulse): diff --git a/src/qibolab/serialize.py b/src/qibolab/serialize.py index 25a171c55..b18349331 100644 --- a/src/qibolab/serialize.py +++ b/src/qibolab/serialize.py @@ -69,9 +69,8 @@ def load_couplers(runcard: dict) -> Tuple[CouplerMap, CouplerPairMap]: return couplers, coupler_pairs -# TODO: I may be written to much stuff on the couplers now def register_gates( - runcard: dict, qubits: QubitMap, pairs: QubitPairMap, couplers: CouplerMap + runcard: dict, qubits: QubitMap, pairs: QubitPairMap, couplers: CouplerMap = None ) -> Tuple[QubitMap, QubitPairMap]: # register single qubit native gates to ``Qubit`` objects native_gates = runcard.get("native_gates", {}) diff --git a/tests/test_dummy.py b/tests/test_dummy.py index dadfe1ee9..0fe9d0462 100644 --- a/tests/test_dummy.py +++ b/tests/test_dummy.py @@ -19,7 +19,6 @@ def test_dummy_initialization(): def test_dummy_initialization(): platform = create_platform("dummy2") - platform.reload_settings() platform.connect() platform.setup() platform.start() diff --git a/tests/test_dummy2.py b/tests/test_dummy2.py new file mode 100644 index 000000000..356a43c44 --- /dev/null +++ b/tests/test_dummy2.py @@ -0,0 +1,237 @@ +import numpy as np +import pytest + +from qibolab import AcquisitionType, AveragingMode, ExecutionParameters, create_platform +from qibolab.pulses import PulseSequence +from qibolab.sweeper import Parameter, QubitParameter, Sweeper + +SWEPT_POINTS = 5 + + +def test_dummy_initialization(): + platform = create_platform("dummy2") + platform.connect() + platform.setup() + platform.start() + platform.stop() + platform.disconnect() + + +@pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.RAW]) +def test_dummy_execute_pulse_sequence(acquisition): + platform = create_platform("dummy2") + sequence = PulseSequence() + sequence.add(platform.create_qubit_readout_pulse(0, 0)) + options = ExecutionParameters(nshots=None, acquisition_type=acquisition) + result = platform.execute_pulse_sequence(sequence, options) + + +def test_dummy_execute_pulse_sequence_couplers(): + platform = create_platform("dummy2") + ordered_pair = (1, 2) + sequence = PulseSequence() + + cz, _ = platform.create_CZ_pulse_sequence( + qubits=(ordered_pair[1], ordered_pair[0]), + start=0, + ) + sequence.add(cz.get_qubit_pulses(ordered_pair[0])) + sequence.add(cz.get_qubit_pulses(ordered_pair[1])) + sequence.add(cz.get_coupler_pulses(platform.get_coupler_pair(ordered_pair))) + sequence.add(platform.create_qubit_readout_pulse(0, 40)) + sequence.add(platform.create_qubit_readout_pulse(2, 40)) + options = ExecutionParameters(nshots=None) + result = platform.execute_pulse_sequence(sequence, options) + assert len(sequence.get_coupler_pulses(1)) == 1 + + +def test_dummy_execute_pulse_sequence_fast_reset(): + platform = create_platform("dummy2") + sequence = PulseSequence() + sequence.add(platform.create_qubit_readout_pulse(0, 0)) + options = ExecutionParameters(nshots=None, fast_reset=True) + result = platform.execute_pulse_sequence(sequence, options) + + +@pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.DISCRIMINATION]) +def test_dummy_execute_pulse_sequence_unrolling(acquisition): + platform = create_platform("dummy2") + sequences = [] + sequence = PulseSequence() + sequence.add(platform.create_qubit_readout_pulse(0, 0)) + for _ in range(5): + sequences.append(sequence) + options = ExecutionParameters(nshots=None, acquisition_type=acquisition) + result = platform.execute_pulse_sequences(sequences, options) + + +def test_dummy_single_sweep_RAW(): + platform = create_platform("dummy2") + sequence = PulseSequence() + pulse = platform.create_qubit_readout_pulse(qubit=0, start=0) + + parameter_range = np.random.randint(SWEPT_POINTS, size=SWEPT_POINTS) + sequence.add(pulse) + sweeper = Sweeper(Parameter.frequency, parameter_range, pulses=[pulse]) + options = ExecutionParameters( + nshots=10, + averaging_mode=AveragingMode.CYCLIC, + acquisition_type=AcquisitionType.RAW, + ) + results = platform.sweep(sequence, options, sweeper) + assert pulse.serial and pulse.qubit in results + shape = results[pulse.qubit].magnitude.shape + samples = platform.settings.sampling_rate * 1e-9 * pulse.duration + + assert shape == (samples * SWEPT_POINTS,) + + +@pytest.mark.parametrize("fast_reset", [True, False]) +@pytest.mark.parametrize("parameter", Parameter) +@pytest.mark.parametrize("average", [AveragingMode.SINGLESHOT, AveragingMode.CYCLIC]) +@pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.DISCRIMINATION]) +@pytest.mark.parametrize("nshots", [10, 20]) +def test_dummy_single_sweep(fast_reset, parameter, average, acquisition, nshots): + platform = create_platform("dummy2") + sequence = PulseSequence() + pulse = platform.create_qubit_readout_pulse(qubit=0, start=0) + if parameter is Parameter.amplitude: + parameter_range = np.random.rand(SWEPT_POINTS) + else: + parameter_range = np.random.randint(SWEPT_POINTS, size=SWEPT_POINTS) + sequence.add(pulse) + if parameter in QubitParameter: + sweeper = Sweeper(parameter, parameter_range, qubits=[platform.qubits[0]]) + else: + sweeper = Sweeper(parameter, parameter_range, pulses=[pulse]) + options = ExecutionParameters( + nshots=nshots, + averaging_mode=average, + acquisition_type=acquisition, + fast_reset=fast_reset, + ) + average = not options.averaging_mode is AveragingMode.SINGLESHOT + results = platform.sweep(sequence, options, sweeper) + + assert pulse.serial and pulse.qubit in results + if average: + results_shape = ( + results[pulse.qubit].magnitude.shape + if acquisition is AcquisitionType.INTEGRATION + else results[pulse.qubit].statistical_frequency.shape + ) + else: + results_shape = ( + results[pulse.qubit].magnitude.shape + if acquisition is AcquisitionType.INTEGRATION + else results[pulse.qubit].samples.shape + ) + assert results_shape == (SWEPT_POINTS,) if average else (nshots, SWEPT_POINTS) + + +@pytest.mark.parametrize("parameter1", Parameter) +@pytest.mark.parametrize("parameter2", Parameter) +@pytest.mark.parametrize("average", [AveragingMode.SINGLESHOT, AveragingMode.CYCLIC]) +@pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.DISCRIMINATION]) +@pytest.mark.parametrize("nshots", [10, 20]) +def test_dummy_double_sweep(parameter1, parameter2, average, acquisition, nshots): + platform = create_platform("dummy2") + sequence = PulseSequence() + pulse = platform.create_qubit_drive_pulse(qubit=0, start=0, duration=1000) + ro_pulse = platform.create_qubit_readout_pulse(qubit=0, start=pulse.finish) + sequence.add(pulse) + sequence.add(ro_pulse) + parameter_range_1 = ( + np.random.rand(SWEPT_POINTS) + if parameter1 is Parameter.amplitude + else np.random.randint(SWEPT_POINTS, size=SWEPT_POINTS) + ) + parameter_range_2 = ( + np.random.rand(SWEPT_POINTS) + if parameter2 is Parameter.amplitude + else np.random.randint(SWEPT_POINTS, size=SWEPT_POINTS) + ) + + if parameter1 in QubitParameter: + sweeper1 = Sweeper(parameter1, parameter_range_1, qubits=[platform.qubits[0]]) + else: + sweeper1 = Sweeper(parameter1, parameter_range_1, pulses=[ro_pulse]) + if parameter2 in QubitParameter: + sweeper2 = Sweeper(parameter2, parameter_range_2, qubits=[platform.qubits[0]]) + else: + sweeper2 = Sweeper(parameter2, parameter_range_2, pulses=[pulse]) + + options = ExecutionParameters( + nshots=nshots, + averaging_mode=average, + acquisition_type=acquisition, + ) + average = not options.averaging_mode is AveragingMode.SINGLESHOT + results = platform.sweep(sequence, options, sweeper1, sweeper2) + + assert ro_pulse.serial and ro_pulse.qubit in results + + if average: + results_shape = ( + results[pulse.qubit].magnitude.shape + if acquisition is AcquisitionType.INTEGRATION + else results[pulse.qubit].statistical_frequency.shape + ) + else: + results_shape = ( + results[pulse.qubit].magnitude.shape + if acquisition is AcquisitionType.INTEGRATION + else results[pulse.qubit].samples.shape + ) + + assert results_shape == (SWEPT_POINTS, SWEPT_POINTS) if average else (nshots, SWEPT_POINTS, SWEPT_POINTS) + + +@pytest.mark.parametrize("parameter", Parameter) +@pytest.mark.parametrize("average", [AveragingMode.SINGLESHOT, AveragingMode.CYCLIC]) +@pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.DISCRIMINATION]) +@pytest.mark.parametrize("nshots", [10, 20]) +def test_dummy_single_sweep_multiplex(parameter, average, acquisition, nshots): + platform = create_platform("dummy2") + sequence = PulseSequence() + ro_pulses = {} + for qubit in platform.qubits: + ro_pulses[qubit] = platform.create_qubit_readout_pulse(qubit=qubit, start=0) + sequence.add(ro_pulses[qubit]) + parameter_range = ( + np.random.rand(SWEPT_POINTS) + if parameter is Parameter.amplitude + else np.random.randint(SWEPT_POINTS, size=SWEPT_POINTS) + ) + + if parameter in QubitParameter: + sweeper1 = Sweeper(parameter, parameter_range, qubits=[platform.qubits[qubit] for qubit in platform.qubits]) + else: + sweeper1 = Sweeper(parameter, parameter_range, pulses=[ro_pulses[qubit] for qubit in platform.qubits]) + + options = ExecutionParameters( + nshots=nshots, + averaging_mode=average, + acquisition_type=acquisition, + ) + average = not options.averaging_mode is AveragingMode.SINGLESHOT + results = platform.sweep(sequence, options, sweeper1) + + for ro_pulse in ro_pulses.values(): + assert ro_pulse.serial and ro_pulse.qubit in results + if average: + results_shape = ( + results[ro_pulse.qubit].magnitude.shape + if acquisition is AcquisitionType.INTEGRATION + else results[ro_pulse.qubit].statistical_frequency.shape + ) + else: + results_shape = ( + results[ro_pulse.qubit].magnitude.shape + if acquisition is AcquisitionType.INTEGRATION + else results[ro_pulse.qubit].samples.shape + ) + assert results_shape == (SWEPT_POINTS,) if average else (nshots, SWEPT_POINTS) + + +# TODO: add test_dummy_double_sweep_multiplex From 2582f105d272d558dcea408aec2e6d477e5aaf64 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 29 Aug 2023 14:33:11 +0400 Subject: [PATCH 17/52] docs --- src/qibolab/serialize.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/qibolab/serialize.py b/src/qibolab/serialize.py index b18349331..b325ebc8c 100644 --- a/src/qibolab/serialize.py +++ b/src/qibolab/serialize.py @@ -55,6 +55,7 @@ def load_couplers(runcard: dict) -> Tuple[CouplerMap, CouplerPairMap]: Uses the native gate and characterization sections of the runcard to parse the :class:`qibolab.qubits.Qubit` and :class:`qibolab.qubits.QubitPair` + and the the :class:`qibolab.coupler.Coupler` and :class:`qibolab.coupler.CouplerPair` objects. """ qubits = {q: Qubit(q, **char) for q, char in runcard["characterization"]["single_qubit"].items()} @@ -72,7 +73,13 @@ def load_couplers(runcard: dict) -> Tuple[CouplerMap, CouplerPairMap]: def register_gates( runcard: dict, qubits: QubitMap, pairs: QubitPairMap, couplers: CouplerMap = None ) -> Tuple[QubitMap, QubitPairMap]: - # register single qubit native gates to ``Qubit`` objects + """Register single qubit native gates to ``Qubit`` objects from the runcard. + + Uses the native gate and characterization sections of the runcard + to parse the :class:`qibolab.qubits.Qubit` and :class:`qibolab.qubits.QubitPair` + objects. + """ + 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) From d711d403635cf2b2f4adce36bac17c2125c4e5e2 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 29 Aug 2023 14:35:16 +0400 Subject: [PATCH 18/52] test_dummy unchanged --- tests/test_dummy.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/tests/test_dummy.py b/tests/test_dummy.py index 0fe9d0462..6bca16a5e 100644 --- a/tests/test_dummy.py +++ b/tests/test_dummy.py @@ -17,15 +17,6 @@ def test_dummy_initialization(): platform.disconnect() -def test_dummy_initialization(): - platform = create_platform("dummy2") - platform.connect() - platform.setup() - platform.start() - platform.stop() - platform.disconnect() - - @pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.RAW]) def test_dummy_execute_pulse_sequence(acquisition): platform = create_platform("dummy") From cc1f28aad335823b7fe199f878c50186e4efe104 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 29 Aug 2023 14:45:01 +0400 Subject: [PATCH 19/52] fix for non coupler platforms --- src/qibolab/platform.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/qibolab/platform.py b/src/qibolab/platform.py index 303b43e59..baac6b1cc 100644 --- a/src/qibolab/platform.py +++ b/src/qibolab/platform.py @@ -377,10 +377,13 @@ def get_coupler(self, coupler): return list(self.couplers.keys())[coupler] def get_coupler_pair(self, qubits): - for coupler in self.couplers.values(): - # I add this as a subset as it may appear on the future - if set(qubits).issubset(coupler.qubits): - return coupler.name + try: + for coupler in self.couplers.values(): + # I add this as a subset as it may appear on the future + if set(qubits).issubset(coupler.qubits): + return coupler.name + except AttributeError: + return None def create_RX90_pulse(self, qubit, start=0, relative_phase=0): qubit = self.get_qubit(qubit) From 01f27e9c29196ed72fb37550fcc8e54d3f7cccf6 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 29 Aug 2023 15:55:59 +0400 Subject: [PATCH 20/52] more fixes --- poetry.lock | 1339 +++++++++++++++++++------------------ pyproject.toml | 2 +- src/qibolab/serialize.py | 1 + tests/dummy_qrc/qblox.py | 3 +- tests/dummy_qrc/qm.py | 3 +- tests/dummy_qrc/rfsoc.py | 3 +- tests/dummy_qrc/zurich.py | 22 +- 7 files changed, 728 insertions(+), 645 deletions(-) diff --git a/poetry.lock b/poetry.lock index d234668fe..ed70fa4f7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -115,19 +115,19 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "azure-core" -version = "1.29.1" +version = "1.29.3" description = "Microsoft Azure Core Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "azure-core-1.29.1.zip", hash = "sha256:68e5bb6e3a3230ec202001cc5cb88e57f11c441c8345e921a9ffb8c370abf936"}, - {file = "azure_core-1.29.1-py3-none-any.whl", hash = "sha256:6bcefa1f70ff7bf3c39c07c73d8a21df73288eff7e6a1031eb8cfae71cc7bed4"}, + {file = "azure-core-1.29.3.tar.gz", hash = "sha256:c92700af982e71c8c73de9f4c20da8b3f03ce2c22d13066e4d416b4629c87903"}, + {file = "azure_core-1.29.3-py3-none-any.whl", hash = "sha256:f8b2910f92b66293d93bd00564924ad20ad48f4a1e150577cf18d1e7d4f9263c"}, ] [package.dependencies] requests = ">=2.18.4" six = ">=1.11.0" -typing-extensions = ">=4.3.0" +typing-extensions = ">=4.6.0" [package.extras] aio = ["aiohttp (>=3.0)"] @@ -429,13 +429,13 @@ files = [ [[package]] name = "click" -version = "8.1.6" +version = "8.1.7" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.6-py3-none-any.whl", hash = "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5"}, - {file = "click-8.1.6.tar.gz", hash = "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd"}, + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, ] [package.dependencies] @@ -574,71 +574,63 @@ test-no-images = ["pytest", "pytest-cov", "wurlitzer"] [[package]] name = "coverage" -version = "7.2.7" +version = "7.3.0" description = "Code coverage measurement for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "coverage-7.2.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d39b5b4f2a66ccae8b7263ac3c8170994b65266797fb96cbbfd3fb5b23921db8"}, - {file = "coverage-7.2.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d040ef7c9859bb11dfeb056ff5b3872436e3b5e401817d87a31e1750b9ae2fb"}, - {file = "coverage-7.2.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba90a9563ba44a72fda2e85302c3abc71c5589cea608ca16c22b9804262aaeb6"}, - {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d9405291c6928619403db1d10bd07888888ec1abcbd9748fdaa971d7d661b2"}, - {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31563e97dae5598556600466ad9beea39fb04e0229e61c12eaa206e0aa202063"}, - {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ebba1cd308ef115925421d3e6a586e655ca5a77b5bf41e02eb0e4562a111f2d1"}, - {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cb017fd1b2603ef59e374ba2063f593abe0fc45f2ad9abdde5b4d83bd922a353"}, - {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62a5c7dad11015c66fbb9d881bc4caa5b12f16292f857842d9d1871595f4495"}, - {file = "coverage-7.2.7-cp310-cp310-win32.whl", hash = "sha256:ee57190f24fba796e36bb6d3aa8a8783c643d8fa9760c89f7a98ab5455fbf818"}, - {file = "coverage-7.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:f75f7168ab25dd93110c8a8117a22450c19976afbc44234cbf71481094c1b850"}, - {file = "coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f"}, - {file = "coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe"}, - {file = "coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3"}, - {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52edc1a60c0d34afa421c9c37078817b2e67a392cab17d97283b64c5833f427f"}, - {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb"}, - {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:afb17f84d56068a7c29f5fa37bfd38d5aba69e3304af08ee94da8ed5b0865833"}, - {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:48c19d2159d433ccc99e729ceae7d5293fbffa0bdb94952d3579983d1c8c9d97"}, - {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0e1f928eaf5469c11e886fe0885ad2bf1ec606434e79842a879277895a50942a"}, - {file = "coverage-7.2.7-cp311-cp311-win32.whl", hash = "sha256:33d6d3ea29d5b3a1a632b3c4e4f4ecae24ef170b0b9ee493883f2df10039959a"}, - {file = "coverage-7.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:5b7540161790b2f28143191f5f8ec02fb132660ff175b7747b95dcb77ac26562"}, - {file = "coverage-7.2.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4"}, - {file = "coverage-7.2.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a342242fe22407f3c17f4b499276a02b01e80f861f1682ad1d95b04018e0c0d4"}, - {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:171717c7cb6b453aebac9a2ef603699da237f341b38eebfee9be75d27dc38e01"}, - {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49969a9f7ffa086d973d91cec8d2e31080436ef0fb4a359cae927e742abfaaa6"}, - {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b46517c02ccd08092f4fa99f24c3b83d8f92f739b4657b0f146246a0ca6a831d"}, - {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a3d33a6b3eae87ceaefa91ffdc130b5e8536182cd6dfdbfc1aa56b46ff8c86de"}, - {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:976b9c42fb2a43ebf304fa7d4a310e5f16cc99992f33eced91ef6f908bd8f33d"}, - {file = "coverage-7.2.7-cp312-cp312-win32.whl", hash = "sha256:8de8bb0e5ad103888d65abef8bca41ab93721647590a3f740100cd65c3b00511"}, - {file = "coverage-7.2.7-cp312-cp312-win_amd64.whl", hash = "sha256:9e31cb64d7de6b6f09702bb27c02d1904b3aebfca610c12772452c4e6c21a0d3"}, - {file = "coverage-7.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58c2ccc2f00ecb51253cbe5d8d7122a34590fac9646a960d1430d5b15321d95f"}, - {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d22656368f0e6189e24722214ed8d66b8022db19d182927b9a248a2a8a2f67eb"}, - {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a895fcc7b15c3fc72beb43cdcbdf0ddb7d2ebc959edac9cef390b0d14f39f8a9"}, - {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84606b74eb7de6ff581a7915e2dab7a28a0517fbe1c9239eb227e1354064dcd"}, - {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a5f9e1dbd7fbe30196578ca36f3fba75376fb99888c395c5880b355e2875f8a"}, - {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:419bfd2caae268623dd469eff96d510a920c90928b60f2073d79f8fe2bbc5959"}, - {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2aee274c46590717f38ae5e4650988d1af340fe06167546cc32fe2f58ed05b02"}, - {file = "coverage-7.2.7-cp37-cp37m-win32.whl", hash = "sha256:61b9a528fb348373c433e8966535074b802c7a5d7f23c4f421e6c6e2f1697a6f"}, - {file = "coverage-7.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:b1c546aca0ca4d028901d825015dc8e4d56aac4b541877690eb76490f1dc8ed0"}, - {file = "coverage-7.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:54b896376ab563bd38453cecb813c295cf347cf5906e8b41d340b0321a5433e5"}, - {file = "coverage-7.2.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d376df58cc111dc8e21e3b6e24606b5bb5dee6024f46a5abca99124b2229ef5"}, - {file = "coverage-7.2.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e330fc79bd7207e46c7d7fd2bb4af2963f5f635703925543a70b99574b0fea9"}, - {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e9d683426464e4a252bf70c3498756055016f99ddaec3774bf368e76bbe02b6"}, - {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d13c64ee2d33eccf7437961b6ea7ad8673e2be040b4f7fd4fd4d4d28d9ccb1e"}, - {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7aa5f8a41217360e600da646004f878250a0d6738bcdc11a0a39928d7dc2050"}, - {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fa03bce9bfbeeef9f3b160a8bed39a221d82308b4152b27d82d8daa7041fee5"}, - {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:245167dd26180ab4c91d5e1496a30be4cd721a5cf2abf52974f965f10f11419f"}, - {file = "coverage-7.2.7-cp38-cp38-win32.whl", hash = "sha256:d2c2db7fd82e9b72937969bceac4d6ca89660db0a0967614ce2481e81a0b771e"}, - {file = "coverage-7.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:2e07b54284e381531c87f785f613b833569c14ecacdcb85d56b25c4622c16c3c"}, - {file = "coverage-7.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:537891ae8ce59ef63d0123f7ac9e2ae0fc8b72c7ccbe5296fec45fd68967b6c9"}, - {file = "coverage-7.2.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06fb182e69f33f6cd1d39a6c597294cff3143554b64b9825d1dc69d18cc2fff2"}, - {file = "coverage-7.2.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:201e7389591af40950a6480bd9edfa8ed04346ff80002cec1a66cac4549c1ad7"}, - {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6951407391b639504e3b3be51b7ba5f3528adbf1a8ac3302b687ecababf929e"}, - {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1"}, - {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b29019c76039dc3c0fd815c41392a044ce555d9bcdd38b0fb60fb4cd8e475ba9"}, - {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:81c13a1fc7468c40f13420732805a4c38a105d89848b7c10af65a90beff25250"}, - {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:975d70ab7e3c80a3fe86001d8751f6778905ec723f5b110aed1e450da9d4b7f2"}, - {file = "coverage-7.2.7-cp39-cp39-win32.whl", hash = "sha256:7ee7d9d4822c8acc74a5e26c50604dff824710bc8de424904c0982e25c39c6cb"}, - {file = "coverage-7.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb393e5ebc85245347950143969b241d08b52b88a3dc39479822e073a1a8eb27"}, - {file = "coverage-7.2.7-pp37.pp38.pp39-none-any.whl", hash = "sha256:b7b4c971f05e6ae490fef852c218b0e79d4e52f79ef0c8475566584a8fb3e01d"}, - {file = "coverage-7.2.7.tar.gz", hash = "sha256:924d94291ca674905fe9481f12294eb11f2d3d3fd1adb20314ba89e94f44ed59"}, + {file = "coverage-7.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db76a1bcb51f02b2007adacbed4c88b6dee75342c37b05d1822815eed19edee5"}, + {file = "coverage-7.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c02cfa6c36144ab334d556989406837336c1d05215a9bdf44c0bc1d1ac1cb637"}, + {file = "coverage-7.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:477c9430ad5d1b80b07f3c12f7120eef40bfbf849e9e7859e53b9c93b922d2af"}, + {file = "coverage-7.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce2ee86ca75f9f96072295c5ebb4ef2a43cecf2870b0ca5e7a1cbdd929cf67e1"}, + {file = "coverage-7.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68d8a0426b49c053013e631c0cdc09b952d857efa8f68121746b339912d27a12"}, + {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b3eb0c93e2ea6445b2173da48cb548364f8f65bf68f3d090404080d338e3a689"}, + {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:90b6e2f0f66750c5a1178ffa9370dec6c508a8ca5265c42fbad3ccac210a7977"}, + {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:96d7d761aea65b291a98c84e1250cd57b5b51726821a6f2f8df65db89363be51"}, + {file = "coverage-7.3.0-cp310-cp310-win32.whl", hash = "sha256:63c5b8ecbc3b3d5eb3a9d873dec60afc0cd5ff9d9f1c75981d8c31cfe4df8527"}, + {file = "coverage-7.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:97c44f4ee13bce914272589b6b41165bbb650e48fdb7bd5493a38bde8de730a1"}, + {file = "coverage-7.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:74c160285f2dfe0acf0f72d425f3e970b21b6de04157fc65adc9fd07ee44177f"}, + {file = "coverage-7.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b543302a3707245d454fc49b8ecd2c2d5982b50eb63f3535244fd79a4be0c99d"}, + {file = "coverage-7.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad0f87826c4ebd3ef484502e79b39614e9c03a5d1510cfb623f4a4a051edc6fd"}, + {file = "coverage-7.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:13c6cbbd5f31211d8fdb477f0f7b03438591bdd077054076eec362cf2207b4a7"}, + {file = "coverage-7.3.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fac440c43e9b479d1241fe9d768645e7ccec3fb65dc3a5f6e90675e75c3f3e3a"}, + {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3c9834d5e3df9d2aba0275c9f67989c590e05732439b3318fa37a725dff51e74"}, + {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4c8e31cf29b60859876474034a83f59a14381af50cbe8a9dbaadbf70adc4b214"}, + {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7a9baf8e230f9621f8e1d00c580394a0aa328fdac0df2b3f8384387c44083c0f"}, + {file = "coverage-7.3.0-cp311-cp311-win32.whl", hash = "sha256:ccc51713b5581e12f93ccb9c5e39e8b5d4b16776d584c0f5e9e4e63381356482"}, + {file = "coverage-7.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:887665f00ea4e488501ba755a0e3c2cfd6278e846ada3185f42d391ef95e7e70"}, + {file = "coverage-7.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d000a739f9feed900381605a12a61f7aaced6beae832719ae0d15058a1e81c1b"}, + {file = "coverage-7.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:59777652e245bb1e300e620ce2bef0d341945842e4eb888c23a7f1d9e143c446"}, + {file = "coverage-7.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9737bc49a9255d78da085fa04f628a310c2332b187cd49b958b0e494c125071"}, + {file = "coverage-7.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5247bab12f84a1d608213b96b8af0cbb30d090d705b6663ad794c2f2a5e5b9fe"}, + {file = "coverage-7.3.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2ac9a1de294773b9fa77447ab7e529cf4fe3910f6a0832816e5f3d538cfea9a"}, + {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:85b7335c22455ec12444cec0d600533a238d6439d8d709d545158c1208483873"}, + {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:36ce5d43a072a036f287029a55b5c6a0e9bd73db58961a273b6dc11a2c6eb9c2"}, + {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:211a4576e984f96d9fce61766ffaed0115d5dab1419e4f63d6992b480c2bd60b"}, + {file = "coverage-7.3.0-cp312-cp312-win32.whl", hash = "sha256:56afbf41fa4a7b27f6635bc4289050ac3ab7951b8a821bca46f5b024500e6321"}, + {file = "coverage-7.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:7f297e0c1ae55300ff688568b04ff26b01c13dfbf4c9d2b7d0cb688ac60df479"}, + {file = "coverage-7.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac0dec90e7de0087d3d95fa0533e1d2d722dcc008bc7b60e1143402a04c117c1"}, + {file = "coverage-7.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:438856d3f8f1e27f8e79b5410ae56650732a0dcfa94e756df88c7e2d24851fcd"}, + {file = "coverage-7.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1084393c6bda8875c05e04fce5cfe1301a425f758eb012f010eab586f1f3905e"}, + {file = "coverage-7.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49ab200acf891e3dde19e5aa4b0f35d12d8b4bd805dc0be8792270c71bd56c54"}, + {file = "coverage-7.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a67e6bbe756ed458646e1ef2b0778591ed4d1fcd4b146fc3ba2feb1a7afd4254"}, + {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f39c49faf5344af36042b293ce05c0d9004270d811c7080610b3e713251c9b0"}, + {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7df91fb24c2edaabec4e0eee512ff3bc6ec20eb8dccac2e77001c1fe516c0c84"}, + {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:34f9f0763d5fa3035a315b69b428fe9c34d4fc2f615262d6be3d3bf3882fb985"}, + {file = "coverage-7.3.0-cp38-cp38-win32.whl", hash = "sha256:bac329371d4c0d456e8d5f38a9b0816b446581b5f278474e416ea0c68c47dcd9"}, + {file = "coverage-7.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:b859128a093f135b556b4765658d5d2e758e1fae3e7cc2f8c10f26fe7005e543"}, + {file = "coverage-7.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fc0ed8d310afe013db1eedd37176d0839dc66c96bcfcce8f6607a73ffea2d6ba"}, + {file = "coverage-7.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61260ec93f99f2c2d93d264b564ba912bec502f679793c56f678ba5251f0393"}, + {file = "coverage-7.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97af9554a799bd7c58c0179cc8dbf14aa7ab50e1fd5fa73f90b9b7215874ba28"}, + {file = "coverage-7.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3558e5b574d62f9c46b76120a5c7c16c4612dc2644c3d48a9f4064a705eaee95"}, + {file = "coverage-7.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37d5576d35fcb765fca05654f66aa71e2808d4237d026e64ac8b397ffa66a56a"}, + {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07ea61bcb179f8f05ffd804d2732b09d23a1238642bf7e51dad62082b5019b34"}, + {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:80501d1b2270d7e8daf1b64b895745c3e234289e00d5f0e30923e706f110334e"}, + {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4eddd3153d02204f22aef0825409091a91bf2a20bce06fe0f638f5c19a85de54"}, + {file = "coverage-7.3.0-cp39-cp39-win32.whl", hash = "sha256:2d22172f938455c156e9af2612650f26cceea47dc86ca048fa4e0b2d21646ad3"}, + {file = "coverage-7.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:60f64e2007c9144375dd0f480a54d6070f00bb1a28f65c408370544091c9bc9e"}, + {file = "coverage-7.3.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:5492a6ce3bdb15c6ad66cb68a0244854d9917478877a25671d70378bdc8562d0"}, + {file = "coverage-7.3.0.tar.gz", hash = "sha256:49dbb19cdcafc130f597d9e04a29d0a032ceedf729e41b181f51cd170e6ee865"}, ] [package.dependencies] @@ -705,13 +697,13 @@ files = [ [[package]] name = "dash" -version = "2.11.1" +version = "2.13.0" description = "A Python framework for building reactive web-apps. Developed by Plotly." optional = false python-versions = ">=3.6" files = [ - {file = "dash-2.11.1-py3-none-any.whl", hash = "sha256:a5b55efc7f139538d95331fa0b5ee0d21600f7dafa9cce4fe4f887b773aba01a"}, - {file = "dash-2.11.1.tar.gz", hash = "sha256:1acc4c634311cb306a1086fff315c1f2aaa3898bac362d93bc8db6b1a6474e5c"}, + {file = "dash-2.13.0-py3-none-any.whl", hash = "sha256:ca21f01f720652c7e2d16d04d4e27803c2b60c4c2a382e750c3d8d778c06e209"}, + {file = "dash-2.13.0.tar.gz", hash = "sha256:07c192db694b9bb4c87d57b6da877413f2695bfcb1d5c51f08995de7dcdd1e92"}, ] [package.dependencies] @@ -724,6 +716,7 @@ nest-asyncio = "*" plotly = ">=5.0.0" requests = "*" retrying = "*" +setuptools = "*" typing-extensions = ">=4.1.1" Werkzeug = "<2.3.0" @@ -811,13 +804,13 @@ files = [ [[package]] name = "datadog-api-client" -version = "2.15.0" +version = "2.16.0" description = "Collection of all Datadog Public endpoints" optional = false python-versions = ">=3.7" files = [ - {file = "datadog-api-client-2.15.0.tar.gz", hash = "sha256:12888c35ce8e39d29261dbc42e6c2293972e91f3c82f9efa1ccc1bb122a88798"}, - {file = "datadog_api_client-2.15.0-py3-none-any.whl", hash = "sha256:a47c1177416cc28cb23b7ee23805b11cc9ec9a276a1c66a35f7d90afda035103"}, + {file = "datadog-api-client-2.16.0.tar.gz", hash = "sha256:47724b24966a8acb0c75905dba651c50d8831a133e762cd6338bb84f74e0c9cc"}, + {file = "datadog_api_client-2.16.0-py3-none-any.whl", hash = "sha256:f25271a91530e4d2a39c0ec83c262d75e050d1b935e27a29ebe47bb1abe76d91"}, ] [package.dependencies] @@ -1020,13 +1013,13 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.1.2" +version = "1.1.3" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.2-py3-none-any.whl", hash = "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f"}, - {file = "exceptiongroup-1.1.2.tar.gz", hash = "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"}, + {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, + {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, ] [package.extras] @@ -1084,45 +1077,45 @@ dotenv = ["python-dotenv"] [[package]] name = "fonttools" -version = "4.42.0" +version = "4.42.1" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.42.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9c456d1f23deff64ffc8b5b098718e149279abdea4d8692dba69172fb6a0d597"}, - {file = "fonttools-4.42.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:150122ed93127a26bc3670ebab7e2add1e0983d30927733aec327ebf4255b072"}, - {file = "fonttools-4.42.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48e82d776d2e93f88ca56567509d102266e7ab2fb707a0326f032fe657335238"}, - {file = "fonttools-4.42.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58c1165f9b2662645de9b19a8c8bdd636b36294ccc07e1b0163856b74f10bafc"}, - {file = "fonttools-4.42.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2d6dc3fa91414ff4daa195c05f946e6a575bd214821e26d17ca50f74b35b0fe4"}, - {file = "fonttools-4.42.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fae4e801b774cc62cecf4a57b1eae4097903fced00c608d9e2bc8f84cd87b54a"}, - {file = "fonttools-4.42.0-cp310-cp310-win32.whl", hash = "sha256:b8600ae7dce6ec3ddfb201abb98c9d53abbf8064d7ac0c8a0d8925e722ccf2a0"}, - {file = "fonttools-4.42.0-cp310-cp310-win_amd64.whl", hash = "sha256:57b68eab183fafac7cd7d464a7bfa0fcd4edf6c67837d14fb09c1c20516cf20b"}, - {file = "fonttools-4.42.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0a1466713e54bdbf5521f2f73eebfe727a528905ff5ec63cda40961b4b1eea95"}, - {file = "fonttools-4.42.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3fb2a69870bfe143ec20b039a1c8009e149dd7780dd89554cc8a11f79e5de86b"}, - {file = "fonttools-4.42.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae881e484702efdb6cf756462622de81d4414c454edfd950b137e9a7352b3cb9"}, - {file = "fonttools-4.42.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27ec3246a088555629f9f0902f7412220c67340553ca91eb540cf247aacb1983"}, - {file = "fonttools-4.42.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8ece1886d12bb36c48c00b2031518877f41abae317e3a55620d38e307d799b7e"}, - {file = "fonttools-4.42.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:10dac980f2b975ef74532e2a94bb00e97a95b4595fb7f98db493c474d5f54d0e"}, - {file = "fonttools-4.42.0-cp311-cp311-win32.whl", hash = "sha256:83b98be5d291e08501bd4fc0c4e0f8e6e05b99f3924068b17c5c9972af6fff84"}, - {file = "fonttools-4.42.0-cp311-cp311-win_amd64.whl", hash = "sha256:e35bed436726194c5e6e094fdfb423fb7afaa0211199f9d245e59e11118c576c"}, - {file = "fonttools-4.42.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c36c904ce0322df01e590ba814d5d69e084e985d7e4c2869378671d79662a7d4"}, - {file = "fonttools-4.42.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d54e600a2bcfa5cdaa860237765c01804a03b08404d6affcd92942fa7315ffba"}, - {file = "fonttools-4.42.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01cfe02416b6d416c5c8d15e30315cbcd3e97d1b50d3b34b0ce59f742ef55258"}, - {file = "fonttools-4.42.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f81ed9065b4bd3f4f3ce8e4873cd6a6b3f4e92b1eddefde35d332c6f414acc3"}, - {file = "fonttools-4.42.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:685a4dd6cf31593b50d6d441feb7781a4a7ef61e19551463e14ed7c527b86f9f"}, - {file = "fonttools-4.42.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:329341ba3d86a36e482610db56b30705384cb23bd595eac8cbb045f627778e9d"}, - {file = "fonttools-4.42.0-cp38-cp38-win32.whl", hash = "sha256:4655c480a1a4d706152ff54f20e20cf7609084016f1df3851cce67cef768f40a"}, - {file = "fonttools-4.42.0-cp38-cp38-win_amd64.whl", hash = "sha256:6bd7e4777bff1dcb7c4eff4786998422770f3bfbef8be401c5332895517ba3fa"}, - {file = "fonttools-4.42.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a9b55d2a3b360e0c7fc5bd8badf1503ca1c11dd3a1cd20f2c26787ffa145a9c7"}, - {file = "fonttools-4.42.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0df8ef75ba5791e873c9eac2262196497525e3f07699a2576d3ab9ddf41cb619"}, - {file = "fonttools-4.42.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd2363ea7728496827658682d049ffb2e98525e2247ca64554864a8cc945568"}, - {file = "fonttools-4.42.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d40673b2e927f7cd0819c6f04489dfbeb337b4a7b10fc633c89bf4f34ecb9620"}, - {file = "fonttools-4.42.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c8bf88f9e3ce347c716921804ef3a8330cb128284eb6c0b6c4b3574f3c580023"}, - {file = "fonttools-4.42.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:703101eb0490fae32baf385385d47787b73d9ea55253df43b487c89ec767e0d7"}, - {file = "fonttools-4.42.0-cp39-cp39-win32.whl", hash = "sha256:f0290ea7f9945174bd4dfd66e96149037441eb2008f3649094f056201d99e293"}, - {file = "fonttools-4.42.0-cp39-cp39-win_amd64.whl", hash = "sha256:ae7df0ae9ee2f3f7676b0ff6f4ebe48ad0acaeeeaa0b6839d15dbf0709f2c5ef"}, - {file = "fonttools-4.42.0-py3-none-any.whl", hash = "sha256:dfe7fa7e607f7e8b58d0c32501a3a7cac148538300626d1b930082c90ae7f6bd"}, - {file = "fonttools-4.42.0.tar.gz", hash = "sha256:614b1283dca88effd20ee48160518e6de275ce9b5456a3134d5f235523fc5065"}, + {file = "fonttools-4.42.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ed1a13a27f59d1fc1920394a7f596792e9d546c9ca5a044419dca70c37815d7c"}, + {file = "fonttools-4.42.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c9b1ce7a45978b821a06d375b83763b27a3a5e8a2e4570b3065abad240a18760"}, + {file = "fonttools-4.42.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f720fa82a11c0f9042376fd509b5ed88dab7e3cd602eee63a1af08883b37342b"}, + {file = "fonttools-4.42.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db55cbaea02a20b49fefbd8e9d62bd481aaabe1f2301dabc575acc6b358874fa"}, + {file = "fonttools-4.42.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a35981d90feebeaef05e46e33e6b9e5b5e618504672ca9cd0ff96b171e4bfff"}, + {file = "fonttools-4.42.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:68a02bbe020dc22ee0540e040117535f06df9358106d3775e8817d826047f3fd"}, + {file = "fonttools-4.42.1-cp310-cp310-win32.whl", hash = "sha256:12a7c247d1b946829bfa2f331107a629ea77dc5391dfd34fdcd78efa61f354ca"}, + {file = "fonttools-4.42.1-cp310-cp310-win_amd64.whl", hash = "sha256:a398bdadb055f8de69f62b0fc70625f7cbdab436bbb31eef5816e28cab083ee8"}, + {file = "fonttools-4.42.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:689508b918332fb40ce117131633647731d098b1b10d092234aa959b4251add5"}, + {file = "fonttools-4.42.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9e36344e48af3e3bde867a1ca54f97c308735dd8697005c2d24a86054a114a71"}, + {file = "fonttools-4.42.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19b7db825c8adee96fac0692e6e1ecd858cae9affb3b4812cdb9d934a898b29e"}, + {file = "fonttools-4.42.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:113337c2d29665839b7d90b39f99b3cac731f72a0eda9306165a305c7c31d341"}, + {file = "fonttools-4.42.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:37983b6bdab42c501202500a2be3a572f50d4efe3237e0686ee9d5f794d76b35"}, + {file = "fonttools-4.42.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6ed2662a3d9c832afa36405f8748c250be94ae5dfc5283d668308391f2102861"}, + {file = "fonttools-4.42.1-cp311-cp311-win32.whl", hash = "sha256:179737095eb98332a2744e8f12037b2977f22948cf23ff96656928923ddf560a"}, + {file = "fonttools-4.42.1-cp311-cp311-win_amd64.whl", hash = "sha256:f2b82f46917d8722e6b5eafeefb4fb585d23babd15d8246c664cd88a5bddd19c"}, + {file = "fonttools-4.42.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:62f481ac772fd68901573956231aea3e4b1ad87b9b1089a61613a91e2b50bb9b"}, + {file = "fonttools-4.42.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f2f806990160d1ce42d287aa419df3ffc42dfefe60d473695fb048355fe0c6a0"}, + {file = "fonttools-4.42.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db372213d39fa33af667c2aa586a0c1235e88e9c850f5dd5c8e1f17515861868"}, + {file = "fonttools-4.42.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d18fc642fd0ac29236ff88ecfccff229ec0386090a839dd3f1162e9a7944a40"}, + {file = "fonttools-4.42.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8708b98c278012ad267ee8a7433baeb809948855e81922878118464b274c909d"}, + {file = "fonttools-4.42.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c95b0724a6deea2c8c5d3222191783ced0a2f09bd6d33f93e563f6f1a4b3b3a4"}, + {file = "fonttools-4.42.1-cp38-cp38-win32.whl", hash = "sha256:4aa79366e442dbca6e2c8595645a3a605d9eeabdb7a094d745ed6106816bef5d"}, + {file = "fonttools-4.42.1-cp38-cp38-win_amd64.whl", hash = "sha256:acb47f6f8680de24c1ab65ebde39dd035768e2a9b571a07c7b8da95f6c8815fd"}, + {file = "fonttools-4.42.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5fb289b7a815638a7613d46bcf324c9106804725b2bb8ad913c12b6958ffc4ec"}, + {file = "fonttools-4.42.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:53eb5091ddc8b1199330bb7b4a8a2e7995ad5d43376cadce84523d8223ef3136"}, + {file = "fonttools-4.42.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46a0ec8adbc6ff13494eb0c9c2e643b6f009ce7320cf640de106fb614e4d4360"}, + {file = "fonttools-4.42.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cc7d685b8eeca7ae69dc6416833fbfea61660684b7089bca666067cb2937dcf"}, + {file = "fonttools-4.42.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:be24fcb80493b2c94eae21df70017351851652a37de514de553435b256b2f249"}, + {file = "fonttools-4.42.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:515607ec756d7865f23070682622c49d922901943697871fc292277cf1e71967"}, + {file = "fonttools-4.42.1-cp39-cp39-win32.whl", hash = "sha256:0eb79a2da5eb6457a6f8ab904838454accc7d4cccdaff1fd2bd3a0679ea33d64"}, + {file = "fonttools-4.42.1-cp39-cp39-win_amd64.whl", hash = "sha256:7286aed4ea271df9eab8d7a9b29e507094b51397812f7ce051ecd77915a6e26b"}, + {file = "fonttools-4.42.1-py3-none-any.whl", hash = "sha256:9398f244e28e0596e2ee6024f808b06060109e33ed38dcc9bded452fd9bbb853"}, + {file = "fonttools-4.42.1.tar.gz", hash = "sha256:c391cd5af88aacaf41dd7cfb96eeedfad297b5899a39e12f4c2c3706d0a3329d"}, ] [package.extras] @@ -1141,13 +1134,13 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] [[package]] name = "furo" -version = "2023.7.26" +version = "2023.8.19" description = "A clean customisable Sphinx documentation theme." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "furo-2023.7.26-py3-none-any.whl", hash = "sha256:1c7936929ec57c5ddecc7c85f07fa8b2ce536b5c89137764cca508be90e11efd"}, - {file = "furo-2023.7.26.tar.gz", hash = "sha256:257f63bab97aa85213a1fa24303837a3c3f30be92901ec732fea74290800f59e"}, + {file = "furo-2023.8.19-py3-none-any.whl", hash = "sha256:12f99f87a1873b6746228cfde18f77244e6c1ffb85d7fed95e638aae70d80590"}, + {file = "furo-2023.8.19.tar.gz", hash = "sha256:e671ee638ab3f1b472f4033b0167f502ab407830e0db0f843b1c1028119c9cd1"}, ] [package.dependencies] @@ -1766,79 +1759,115 @@ files = [ [[package]] name = "kiwisolver" -version = "1.4.4" +version = "1.4.5" description = "A fast implementation of the Cassowary constraint solver" optional = false python-versions = ">=3.7" files = [ - {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2f5e60fabb7343a836360c4f0919b8cd0d6dbf08ad2ca6b9cf90bf0c76a3c4f6"}, - {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:10ee06759482c78bdb864f4109886dff7b8a56529bc1609d4f1112b93fe6423c"}, - {file = "kiwisolver-1.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c79ebe8f3676a4c6630fd3f777f3cfecf9289666c84e775a67d1d358578dc2e3"}, - {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abbe9fa13da955feb8202e215c4018f4bb57469b1b78c7a4c5c7b93001699938"}, - {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7577c1987baa3adc4b3c62c33bd1118c3ef5c8ddef36f0f2c950ae0b199e100d"}, - {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ad8285b01b0d4695102546b342b493b3ccc6781fc28c8c6a1bb63e95d22f09"}, - {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ed58b8acf29798b036d347791141767ccf65eee7f26bde03a71c944449e53de"}, - {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a68b62a02953b9841730db7797422f983935aeefceb1679f0fc85cbfbd311c32"}, - {file = "kiwisolver-1.4.4-cp310-cp310-win32.whl", hash = "sha256:e92a513161077b53447160b9bd8f522edfbed4bd9759e4c18ab05d7ef7e49408"}, - {file = "kiwisolver-1.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:3fe20f63c9ecee44560d0e7f116b3a747a5d7203376abeea292ab3152334d004"}, - {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ea21f66820452a3f5d1655f8704a60d66ba1191359b96541eaf457710a5fc6"}, - {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bc9db8a3efb3e403e4ecc6cd9489ea2bac94244f80c78e27c31dcc00d2790ac2"}, - {file = "kiwisolver-1.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d5b61785a9ce44e5a4b880272baa7cf6c8f48a5180c3e81c59553ba0cb0821ca"}, - {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c2dbb44c3f7e6c4d3487b31037b1bdbf424d97687c1747ce4ff2895795c9bf69"}, - {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6295ecd49304dcf3bfbfa45d9a081c96509e95f4b9d0eb7ee4ec0530c4a96514"}, - {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bd472dbe5e136f96a4b18f295d159d7f26fd399136f5b17b08c4e5f498cd494"}, - {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf7d9fce9bcc4752ca4a1b80aabd38f6d19009ea5cbda0e0856983cf6d0023f5"}, - {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d6601aed50c74e0ef02f4204da1816147a6d3fbdc8b3872d263338a9052c51"}, - {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:877272cf6b4b7e94c9614f9b10140e198d2186363728ed0f701c6eee1baec1da"}, - {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:db608a6757adabb32f1cfe6066e39b3706d8c3aa69bbc353a5b61edad36a5cb4"}, - {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5853eb494c71e267912275e5586fe281444eb5e722de4e131cddf9d442615626"}, - {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f0a1dbdb5ecbef0d34eb77e56fcb3e95bbd7e50835d9782a45df81cc46949750"}, - {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:283dffbf061a4ec60391d51e6155e372a1f7a4f5b15d59c8505339454f8989e4"}, - {file = "kiwisolver-1.4.4-cp311-cp311-win32.whl", hash = "sha256:d06adcfa62a4431d404c31216f0f8ac97397d799cd53800e9d3efc2fbb3cf14e"}, - {file = "kiwisolver-1.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:e7da3fec7408813a7cebc9e4ec55afed2d0fd65c4754bc376bf03498d4e92686"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:62ac9cc684da4cf1778d07a89bf5f81b35834cb96ca523d3a7fb32509380cbf6"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41dae968a94b1ef1897cb322b39360a0812661dba7c682aa45098eb8e193dbdf"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0611a0a2a518464c05ddd5a3a1a0e856ccc10e67079bb17f265ad19ab3c7597"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:db5283d90da4174865d520e7366801a93777201e91e79bacbac6e6927cbceede"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1041feb4cda8708ce73bb4dcb9ce1ccf49d553bf87c3954bdfa46f0c3f77252c"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-win32.whl", hash = "sha256:a553dadda40fef6bfa1456dc4be49b113aa92c2a9a9e8711e955618cd69622e3"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-win_amd64.whl", hash = "sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166"}, - {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:841293b17ad704d70c578f1f0013c890e219952169ce8a24ebc063eecf775454"}, - {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f4f270de01dd3e129a72efad823da90cc4d6aafb64c410c9033aba70db9f1ff0"}, - {file = "kiwisolver-1.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f9f39e2f049db33a908319cf46624a569b36983c7c78318e9726a4cb8923b26c"}, - {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c97528e64cb9ebeff9701e7938653a9951922f2a38bd847787d4a8e498cc83ae"}, - {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d1573129aa0fd901076e2bfb4275a35f5b7aa60fbfb984499d661ec950320b0"}, - {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad881edc7ccb9d65b0224f4e4d05a1e85cf62d73aab798943df6d48ab0cd79a1"}, - {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b428ef021242344340460fa4c9185d0b1f66fbdbfecc6c63eff4b7c29fad429d"}, - {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2e407cb4bd5a13984a6c2c0fe1845e4e41e96f183e5e5cd4d77a857d9693494c"}, - {file = "kiwisolver-1.4.4-cp38-cp38-win32.whl", hash = "sha256:75facbe9606748f43428fc91a43edb46c7ff68889b91fa31f53b58894503a191"}, - {file = "kiwisolver-1.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:5bce61af018b0cb2055e0e72e7d65290d822d3feee430b7b8203d8a855e78766"}, - {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8c808594c88a025d4e322d5bb549282c93c8e1ba71b790f539567932722d7bd8"}, - {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0a71d85ecdd570ded8ac3d1c0f480842f49a40beb423bb8014539a9f32a5897"}, - {file = "kiwisolver-1.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b533558eae785e33e8c148a8d9921692a9fe5aa516efbdff8606e7d87b9d5824"}, - {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:efda5fc8cc1c61e4f639b8067d118e742b812c930f708e6667a5ce0d13499e29"}, - {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7c43e1e1206cd421cd92e6b3280d4385d41d7166b3ed577ac20444b6995a445f"}, - {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc8d3bd6c72b2dd9decf16ce70e20abcb3274ba01b4e1c96031e0c4067d1e7cd"}, - {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ea39b0ccc4f5d803e3337dd46bcce60b702be4d86fd0b3d7531ef10fd99a1ac"}, - {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:968f44fdbf6dd757d12920d63b566eeb4d5b395fd2d00d29d7ef00a00582aac9"}, - {file = "kiwisolver-1.4.4-cp39-cp39-win32.whl", hash = "sha256:da7e547706e69e45d95e116e6939488d62174e033b763ab1496b4c29b76fabea"}, - {file = "kiwisolver-1.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:ba59c92039ec0a66103b1d5fe588fa546373587a7d68f5c96f743c3396afc04b"}, - {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:91672bacaa030f92fc2f43b620d7b337fd9a5af28b0d6ed3f77afc43c4a64b5a"}, - {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:787518a6789009c159453da4d6b683f468ef7a65bbde796bcea803ccf191058d"}, - {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da152d8cdcab0e56e4f45eb08b9aea6455845ec83172092f09b0e077ece2cf7a"}, - {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ecb1fa0db7bf4cff9dac752abb19505a233c7f16684c5826d1f11ebd9472b871"}, - {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:28bc5b299f48150b5f822ce68624e445040595a4ac3d59251703779836eceff9"}, - {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:81e38381b782cc7e1e46c4e14cd997ee6040768101aefc8fa3c24a4cc58e98f8"}, - {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2a66fdfb34e05b705620dd567f5a03f239a088d5a3f321e7b6ac3239d22aa286"}, - {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:872b8ca05c40d309ed13eb2e582cab0c5a05e81e987ab9c521bf05ad1d5cf5cb"}, - {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:70e7c2e7b750585569564e2e5ca9845acfaa5da56ac46df68414f29fea97be9f"}, - {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9f85003f5dfa867e86d53fac6f7e6f30c045673fa27b603c397753bebadc3008"}, - {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e307eb9bd99801f82789b44bb45e9f541961831c7311521b13a6c85afc09767"}, - {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1792d939ec70abe76f5054d3f36ed5656021dcad1322d1cc996d4e54165cef9"}, - {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6cb459eea32a4e2cf18ba5fcece2dbdf496384413bc1bae15583f19e567f3b2"}, - {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:36dafec3d6d6088d34e2de6b85f9d8e2324eb734162fba59d2ba9ed7a2043d5b"}, - {file = "kiwisolver-1.4.4.tar.gz", hash = "sha256:d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955"}, + {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:05703cf211d585109fcd72207a31bb170a0f22144d68298dc5e61b3c946518af"}, + {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:146d14bebb7f1dc4d5fbf74f8a6cb15ac42baadee8912eb84ac0b3b2a3dc6ac3"}, + {file = "kiwisolver-1.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ef7afcd2d281494c0a9101d5c571970708ad911d028137cd558f02b851c08b4"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9eaa8b117dc8337728e834b9c6e2611f10c79e38f65157c4c38e9400286f5cb1"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec20916e7b4cbfb1f12380e46486ec4bcbaa91a9c448b97023fde0d5bbf9e4ff"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39b42c68602539407884cf70d6a480a469b93b81b7701378ba5e2328660c847a"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa12042de0171fad672b6c59df69106d20d5596e4f87b5e8f76df757a7c399aa"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a40773c71d7ccdd3798f6489aaac9eee213d566850a9533f8d26332d626b82c"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:19df6e621f6d8b4b9c4d45f40a66839294ff2bb235e64d2178f7522d9170ac5b"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:83d78376d0d4fd884e2c114d0621624b73d2aba4e2788182d286309ebdeed770"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e391b1f0a8a5a10ab3b9bb6afcfd74f2175f24f8975fb87ecae700d1503cdee0"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:852542f9481f4a62dbb5dd99e8ab7aedfeb8fb6342349a181d4036877410f525"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59edc41b24031bc25108e210c0def6f6c2191210492a972d585a06ff246bb79b"}, + {file = "kiwisolver-1.4.5-cp310-cp310-win32.whl", hash = "sha256:a6aa6315319a052b4ee378aa171959c898a6183f15c1e541821c5c59beaa0238"}, + {file = "kiwisolver-1.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:d0ef46024e6a3d79c01ff13801cb19d0cad7fd859b15037aec74315540acc276"}, + {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:11863aa14a51fd6ec28688d76f1735f8f69ab1fabf388851a595d0721af042f5"}, + {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ab3919a9997ab7ef2fbbed0cc99bb28d3c13e6d4b1ad36e97e482558a91be90"}, + {file = "kiwisolver-1.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fcc700eadbbccbf6bc1bcb9dbe0786b4b1cb91ca0dcda336eef5c2beed37b797"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dfdd7c0b105af050eb3d64997809dc21da247cf44e63dc73ff0fd20b96be55a9"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c6a5964640638cdeaa0c359382e5703e9293030fe730018ca06bc2010c4437"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbea0db94288e29afcc4c28afbf3a7ccaf2d7e027489c449cf7e8f83c6346eb9"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ceec1a6bc6cab1d6ff5d06592a91a692f90ec7505d6463a88a52cc0eb58545da"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:040c1aebeda72197ef477a906782b5ab0d387642e93bda547336b8957c61022e"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f91de7223d4c7b793867797bacd1ee53bfe7359bd70d27b7b58a04efbb9436c8"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:faae4860798c31530dd184046a900e652c95513796ef51a12bc086710c2eec4d"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b0157420efcb803e71d1b28e2c287518b8808b7cf1ab8af36718fd0a2c453eb0"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:06f54715b7737c2fecdbf140d1afb11a33d59508a47bf11bb38ecf21dc9ab79f"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fdb7adb641a0d13bdcd4ef48e062363d8a9ad4a182ac7647ec88f695e719ae9f"}, + {file = "kiwisolver-1.4.5-cp311-cp311-win32.whl", hash = "sha256:bb86433b1cfe686da83ce32a9d3a8dd308e85c76b60896d58f082136f10bffac"}, + {file = "kiwisolver-1.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:6c08e1312a9cf1074d17b17728d3dfce2a5125b2d791527f33ffbe805200a355"}, + {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:32d5cf40c4f7c7b3ca500f8985eb3fb3a7dfc023215e876f207956b5ea26632a"}, + {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f846c260f483d1fd217fe5ed7c173fb109efa6b1fc8381c8b7552c5781756192"}, + {file = "kiwisolver-1.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5ff5cf3571589b6d13bfbfd6bcd7a3f659e42f96b5fd1c4830c4cf21d4f5ef45"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7269d9e5f1084a653d575c7ec012ff57f0c042258bf5db0954bf551c158466e7"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da802a19d6e15dffe4b0c24b38b3af68e6c1a68e6e1d8f30148c83864f3881db"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3aba7311af82e335dd1e36ffff68aaca609ca6290c2cb6d821a39aa075d8e3ff"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763773d53f07244148ccac5b084da5adb90bfaee39c197554f01b286cf869228"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2270953c0d8cdab5d422bee7d2007f043473f9d2999631c86a223c9db56cbd16"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d099e745a512f7e3bbe7249ca835f4d357c586d78d79ae8f1dcd4d8adeb9bda9"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:74db36e14a7d1ce0986fa104f7d5637aea5c82ca6326ed0ec5694280942d1162"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e5bab140c309cb3a6ce373a9e71eb7e4873c70c2dda01df6820474f9889d6d4"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0f114aa76dc1b8f636d077979c0ac22e7cd8f3493abbab152f20eb8d3cda71f3"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:88a2df29d4724b9237fc0c6eaf2a1adae0cdc0b3e9f4d8e7dc54b16812d2d81a"}, + {file = "kiwisolver-1.4.5-cp312-cp312-win32.whl", hash = "sha256:72d40b33e834371fd330fb1472ca19d9b8327acb79a5821d4008391db8e29f20"}, + {file = "kiwisolver-1.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:2c5674c4e74d939b9d91dda0fae10597ac7521768fec9e399c70a1f27e2ea2d9"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3a2b053a0ab7a3960c98725cfb0bf5b48ba82f64ec95fe06f1d06c99b552e130"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cd32d6c13807e5c66a7cbb79f90b553642f296ae4518a60d8d76243b0ad2898"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59ec7b7c7e1a61061850d53aaf8e93db63dce0c936db1fda2658b70e4a1be709"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da4cfb373035def307905d05041c1d06d8936452fe89d464743ae7fb8371078b"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2400873bccc260b6ae184b2b8a4fec0e4082d30648eadb7c3d9a13405d861e89"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1b04139c4236a0f3aff534479b58f6f849a8b351e1314826c2d230849ed48985"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:4e66e81a5779b65ac21764c295087de82235597a2293d18d943f8e9e32746265"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7931d8f1f67c4be9ba1dd9c451fb0eeca1a25b89e4d3f89e828fe12a519b782a"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b3f7e75f3015df442238cca659f8baa5f42ce2a8582727981cbfa15fee0ee205"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:bbf1d63eef84b2e8c89011b7f2235b1e0bf7dacc11cac9431fc6468e99ac77fb"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4c380469bd3f970ef677bf2bcba2b6b0b4d5c75e7a020fb863ef75084efad66f"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-win32.whl", hash = "sha256:9408acf3270c4b6baad483865191e3e582b638b1654a007c62e3efe96f09a9a3"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-win_amd64.whl", hash = "sha256:5b94529f9b2591b7af5f3e0e730a4e0a41ea174af35a4fd067775f9bdfeee01a"}, + {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:11c7de8f692fc99816e8ac50d1d1aef4f75126eefc33ac79aac02c099fd3db71"}, + {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53abb58632235cd154176ced1ae8f0d29a6657aa1aa9decf50b899b755bc2b93"}, + {file = "kiwisolver-1.4.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:88b9f257ca61b838b6f8094a62418421f87ac2a1069f7e896c36a7d86b5d4c29"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3195782b26fc03aa9c6913d5bad5aeb864bdc372924c093b0f1cebad603dd712"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc579bf0f502e54926519451b920e875f433aceb4624a3646b3252b5caa9e0b6"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a580c91d686376f0f7c295357595c5a026e6cbc3d77b7c36e290201e7c11ecb"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cfe6ab8da05c01ba6fbea630377b5da2cd9bcbc6338510116b01c1bc939a2c18"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d2e5a98f0ec99beb3c10e13b387f8db39106d53993f498b295f0c914328b1333"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a51a263952b1429e429ff236d2f5a21c5125437861baeed77f5e1cc2d2c7c6da"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3edd2fa14e68c9be82c5b16689e8d63d89fe927e56debd6e1dbce7a26a17f81b"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:74d1b44c6cfc897df648cc9fdaa09bc3e7679926e6f96df05775d4fb3946571c"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:76d9289ed3f7501012e05abb8358bbb129149dbd173f1f57a1bf1c22d19ab7cc"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:92dea1ffe3714fa8eb6a314d2b3c773208d865a0e0d35e713ec54eea08a66250"}, + {file = "kiwisolver-1.4.5-cp38-cp38-win32.whl", hash = "sha256:5c90ae8c8d32e472be041e76f9d2f2dbff4d0b0be8bd4041770eddb18cf49a4e"}, + {file = "kiwisolver-1.4.5-cp38-cp38-win_amd64.whl", hash = "sha256:c7940c1dc63eb37a67721b10d703247552416f719c4188c54e04334321351ced"}, + {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9407b6a5f0d675e8a827ad8742e1d6b49d9c1a1da5d952a67d50ef5f4170b18d"}, + {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15568384086b6df3c65353820a4473575dbad192e35010f622c6ce3eebd57af9"}, + {file = "kiwisolver-1.4.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0dc9db8e79f0036e8173c466d21ef18e1befc02de8bf8aa8dc0813a6dc8a7046"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cdc8a402aaee9a798b50d8b827d7ecf75edc5fb35ea0f91f213ff927c15f4ff0"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6c3bd3cde54cafb87d74d8db50b909705c62b17c2099b8f2e25b461882e544ff"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:955e8513d07a283056b1396e9a57ceddbd272d9252c14f154d450d227606eb54"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:346f5343b9e3f00b8db8ba359350eb124b98c99efd0b408728ac6ebf38173958"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9098e0049e88c6a24ff64545cdfc50807818ba6c1b739cae221bbbcbc58aad3"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:00bd361b903dc4bbf4eb165f24d1acbee754fce22ded24c3d56eec268658a5cf"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7b8b454bac16428b22560d0a1cf0a09875339cab69df61d7805bf48919415901"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f1d072c2eb0ad60d4c183f3fb44ac6f73fb7a8f16a2694a91f988275cbf352f9"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:31a82d498054cac9f6d0b53d02bb85811185bcb477d4b60144f915f3b3126342"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6512cb89e334e4700febbffaaa52761b65b4f5a3cf33f960213d5656cea36a77"}, + {file = "kiwisolver-1.4.5-cp39-cp39-win32.whl", hash = "sha256:9db8ea4c388fdb0f780fe91346fd438657ea602d58348753d9fb265ce1bca67f"}, + {file = "kiwisolver-1.4.5-cp39-cp39-win_amd64.whl", hash = "sha256:59415f46a37f7f2efeec758353dd2eae1b07640d8ca0f0c42548ec4125492635"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5c7b3b3a728dc6faf3fc372ef24f21d1e3cee2ac3e9596691d746e5a536de920"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:620ced262a86244e2be10a676b646f29c34537d0d9cc8eb26c08f53d98013390"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:378a214a1e3bbf5ac4a8708304318b4f890da88c9e6a07699c4ae7174c09a68d"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf7be1207676ac608a50cd08f102f6742dbfc70e8d60c4db1c6897f62f71523"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ba55dce0a9b8ff59495ddd050a0225d58bd0983d09f87cfe2b6aec4f2c1234e4"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fd32ea360bcbb92d28933fc05ed09bffcb1704ba3fc7942e81db0fd4f81a7892"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5e7139af55d1688f8b960ee9ad5adafc4ac17c1c473fe07133ac092310d76544"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dced8146011d2bc2e883f9bd68618b8247387f4bbec46d7392b3c3b032640126"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9bf3325c47b11b2e51bca0824ea217c7cd84491d8ac4eefd1e409705ef092bd"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5794cf59533bc3f1b1c821f7206a3617999db9fbefc345360aafe2e067514929"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e368f200bbc2e4f905b8e71eb38b3c04333bddaa6a2464a6355487b02bb7fb09"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d706eba36b4c4d5bc6c6377bb6568098765e990cfc21ee16d13963fab7b3e7"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85267bd1aa8880a9c88a8cb71e18d3d64d2751a790e6ca6c27b8ccc724bcd5ad"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:210ef2c3a1f03272649aff1ef992df2e724748918c4bc2d5a90352849eb40bea"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11d011a7574eb3b82bcc9c1a1d35c1d7075677fdd15de527d91b46bd35e935ee"}, + {file = "kiwisolver-1.4.5.tar.gz", hash = "sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec"}, ] [[package]] @@ -2359,13 +2388,13 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= [[package]] name = "nbconvert" -version = "7.7.3" +version = "7.7.4" description = "Converting Jupyter Notebooks" optional = false python-versions = ">=3.8" files = [ - {file = "nbconvert-7.7.3-py3-none-any.whl", hash = "sha256:3022adadff3f86578a47fab7c2228bb3ca9c56a24345642a22f917f6168b48fc"}, - {file = "nbconvert-7.7.3.tar.gz", hash = "sha256:4a5996bf5f3cd16aa0431897ba1aa4c64842c2079f434b3dc6b8c4b252ef3355"}, + {file = "nbconvert-7.7.4-py3-none-any.whl", hash = "sha256:ace26f4386d08eb5c55833596a942048c5502a95e05590cb523826a749a40a37"}, + {file = "nbconvert-7.7.4.tar.gz", hash = "sha256:1113d039fa3fc3a846ffa5a3b0a019e85aaa94c566a09fa0c400fb7638e46087"}, ] [package.dependencies] @@ -2418,13 +2447,13 @@ test = ["pep440", "pre-commit", "pytest", "testpath"] [[package]] name = "nbsphinx" -version = "0.9.2" +version = "0.9.3" description = "Jupyter Notebook Tools for Sphinx" optional = false python-versions = ">=3.6" files = [ - {file = "nbsphinx-0.9.2-py3-none-any.whl", hash = "sha256:2746680ece5ad3b0e980639d717a5041a1c1aafb416846b72dfaeecc306bc351"}, - {file = "nbsphinx-0.9.2.tar.gz", hash = "sha256:540db7f4066347f23d0650c4ae8e7d85334c69adf749e030af64c12e996ff88e"}, + {file = "nbsphinx-0.9.3-py3-none-any.whl", hash = "sha256:6e805e9627f4a358bd5720d5cbf8bf48853989c79af557afd91a5f22e163029f"}, + {file = "nbsphinx-0.9.3.tar.gz", hash = "sha256:ec339c8691b688f8676104a367a4b8cf3ea01fd089dc28d24dec22d563b11562"}, ] [package.dependencies] @@ -2584,67 +2613,71 @@ tests = ["pytest (>=6.0)", "pyyaml"] [[package]] name = "orjson" -version = "3.9.4" +version = "3.9.5" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.7" files = [ - {file = "orjson-3.9.4-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2e83ec1ee66d83b558a6d273d8a01b86563daa60bea9bc040e2c1cb8008de61f"}, - {file = "orjson-3.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32a9e0f140c7d0d52f79553cabd1a471f6a4f187c59742239939f1139258a053"}, - {file = "orjson-3.9.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fb429c56ea645e084e34976c2ea0efca7661ee961f61e51405f28bc5a9d1fb24"}, - {file = "orjson-3.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fb7963c17ab347428412a0689f5c89ea480f5d5f7ba3e46c6c2f14f3159ee4"}, - {file = "orjson-3.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:224ad19dcdc21bb220d893807f2563e219319a8891ead3c54243b51a4882d767"}, - {file = "orjson-3.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4974cc2ebb53196081fef96743c02c8b073242b20a40b65d2aa2365ba8c949df"}, - {file = "orjson-3.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b39747f8e57728b9d8c26bd1d28e9a31c028717617a5938a179244b9436c0b31"}, - {file = "orjson-3.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0a31c2cab0ba86998205c2eba550c178a8b4ee7905cadeb402eed45392edb178"}, - {file = "orjson-3.9.4-cp310-none-win32.whl", hash = "sha256:04cd7f4a4f4cd2fe43d104eb70e7435c6fcbdde7aa0cde4230e444fbc66924d3"}, - {file = "orjson-3.9.4-cp310-none-win_amd64.whl", hash = "sha256:4fdb59cfa00e10c82e09d1c32a9ce08a38bd29496ba20a73cd7f498e3a0a5024"}, - {file = "orjson-3.9.4-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:daeed2502ddf1f2b29ec8da2fe2ea82807a5c4acf869608ce6c476db8171d070"}, - {file = "orjson-3.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73d9507a547202f0dd0672e529ce3ca45582d152369c684a9ce75677ce5ae089"}, - {file = "orjson-3.9.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144a3b8c7cbdd301e1b8cd7dd33e3cbfe7b011df2bebd45b84bacc8cb490302d"}, - {file = "orjson-3.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ef7119ebc9b76d5e37c330596616c697d1957779c916aec30cefd28df808f796"}, - {file = "orjson-3.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b75f0fc7a64a95027c6f0c70f17969299bdf2b6a85e342b29fc23be2788bad6f"}, - {file = "orjson-3.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e4b20164809b21966b63e063f894927bc85391e60d0a96fa0bb552090f1319c"}, - {file = "orjson-3.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e7c3b7e29572ef2d845a59853475f40fdabec53b8b7d6effda4bb26119c07f5"}, - {file = "orjson-3.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d73c0fd54a52a1a1abfad69d4f1dfb7048cd0b3ef1828ddb4920ef2d3739d8fb"}, - {file = "orjson-3.9.4-cp311-none-win32.whl", hash = "sha256:e12492ce65cb10f385e70a88badc6046bc720fa7d468db27b7429d85d41beaeb"}, - {file = "orjson-3.9.4-cp311-none-win_amd64.whl", hash = "sha256:3b9f8bf43a5367d5522f80e7d533c98d880868cd0b640b9088c9237306eca6e8"}, - {file = "orjson-3.9.4-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:0b400cf89c15958cd829c8a4ade8f5dd73588e63d2fb71a00483e7a74e9f92da"}, - {file = "orjson-3.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d3b6f2706cb324661899901e6b1fcaee4f5aac7d7588306df3f43e68173840"}, - {file = "orjson-3.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3932b06abf49135c93816c74139c7937fa54079fce3f44db2d598859894c344a"}, - {file = "orjson-3.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:562cf24f9f11df8099e0e78859ba6729e7caa25c2f3947cb228d9152946c854b"}, - {file = "orjson-3.9.4-cp312-none-win_amd64.whl", hash = "sha256:a533e664a0e3904307d662c5d45775544dc2b38df6e39e213ff6a86ceaa3d53c"}, - {file = "orjson-3.9.4-cp37-cp37m-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:149d1b7630771222f73ecb024ab5dd8e7f41502402b02015494d429bacc4d5c1"}, - {file = "orjson-3.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:004f0d307473af210717260dab2ddceab26750ef5d2c6b1f7454c33f7bb69f0c"}, - {file = "orjson-3.9.4-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ba21fe581a83555024f3cfc9182a2390a61bc50430364855022c518b8ba285a4"}, - {file = "orjson-3.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1fb36efdf2a35286fb87cfaa195fc34621389da1c7b28a8eb51a4d212d60e56d"}, - {file = "orjson-3.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:644728d803200d7774164d252a247e2fcb0d19e4ef7a4a19a1a139ae472c551b"}, - {file = "orjson-3.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bae10f4e7a9145b120e37b6456f1d3853a953e5131fe4740a764e46420289f5"}, - {file = "orjson-3.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c416c50f63bfcf453b6e28d1df956938486191fd1a15aeb95107e810e6e219c8"}, - {file = "orjson-3.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:220ca4125416636a3d6b53a77d50434987a83da243f9080ee4cce7ac6a34bb4a"}, - {file = "orjson-3.9.4-cp37-none-win32.whl", hash = "sha256:bcda6179eb863c295eb5ea832676d33ef12c04d227b4c98267876c8322e5a96e"}, - {file = "orjson-3.9.4-cp37-none-win_amd64.whl", hash = "sha256:3d947366127abef192419257eb7db7fcee0841ced2b49ccceba43b65e9ce5e3f"}, - {file = "orjson-3.9.4-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a7d029fc34a516f7eae29b778b30371fcb621134b2acfe4c51c785102aefc6cf"}, - {file = "orjson-3.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c65df12f92e771361dca45765fcac3d97491799ee8ab3c6c5ecf0155a397a313"}, - {file = "orjson-3.9.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b749d06a3d84ac27311cb85fb5e8f965efd1c5f27556ad8fcfd1853c323b4d54"}, - {file = "orjson-3.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:161cc72dd3ff569fd67da4af3a23c0c837029085300f0cebc287586ae3b559e0"}, - {file = "orjson-3.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:edcbccfe852d1d3d56cc8bfc5fa3688c866619328a73cb2394e79b29b4ab24d2"}, - {file = "orjson-3.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0725260a12d7102b6e66f9925a027f55567255d8455f8288b02d5eedc8925c3e"}, - {file = "orjson-3.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:53b417cc9465dbb42ec9cd7be744a921a0ce583556315d172a246d6e71aa043b"}, - {file = "orjson-3.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9ab3720fba68cc1c0bad00803d2c5e2c70177da5af12c45e18cc4d14426d56d8"}, - {file = "orjson-3.9.4-cp38-none-win32.whl", hash = "sha256:94d15ee45c2aaed334688e511aa73b4681f7c08a0810884c6b3ae5824dea1222"}, - {file = "orjson-3.9.4-cp38-none-win_amd64.whl", hash = "sha256:336ec8471102851f0699198031924617b7a77baadea889df3ffda6000bd59f4c"}, - {file = "orjson-3.9.4-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2f57ccb50e9e123709e9f2d7b1a9e09e694e49d1fa5c5585e34b8e3f01929dc3"}, - {file = "orjson-3.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e876ef36801b3d4d3a4b0613b6144b0b47f13f3043fd1fcdfafd783c174b538"}, - {file = "orjson-3.9.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f009c1a02773bdecdd1157036918fef1da47f7193d4ad599c9edb1e1960a0491"}, - {file = "orjson-3.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f0a4cf31bfa94cd235aa50030bef3df529e4eb2893ea6a7771c0fb087e4e53b2"}, - {file = "orjson-3.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c32dea3b27a97ac88783c1eb61ccb531865bf478a37df3707cbc96ca8f34a04"}, - {file = "orjson-3.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:264637cad35a1755ab90a8ea290076d444deda20753e55a0eb75496a4645f7bc"}, - {file = "orjson-3.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a4f12e9ec62679c3f2717d9ec41b497a2c2af0b1361229db0dc86ef078a4c034"}, - {file = "orjson-3.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c4fcd1ac0b7850f85398fd9fdbc7150ac4e82d2ae6754cc6acaf49ca7c30d79a"}, - {file = "orjson-3.9.4-cp39-none-win32.whl", hash = "sha256:b5b5038187b74e2d33e5caee8a7e83ddeb6a21da86837fa2aac95c69aeb366e6"}, - {file = "orjson-3.9.4-cp39-none-win_amd64.whl", hash = "sha256:915da36bc93ef0c659fa50fe7939d4f208804ad252fc4fc8d55adbbb82293c48"}, - {file = "orjson-3.9.4.tar.gz", hash = "sha256:a4c9254d21fc44526a3850355b89afd0d00ed73bdf902a5ab416df14a61eac6b"}, + {file = "orjson-3.9.5-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ad6845912a71adcc65df7c8a7f2155eba2096cf03ad2c061c93857de70d699ad"}, + {file = "orjson-3.9.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e298e0aacfcc14ef4476c3f409e85475031de24e5b23605a465e9bf4b2156273"}, + {file = "orjson-3.9.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:83c9939073281ef7dd7c5ca7f54cceccb840b440cec4b8a326bda507ff88a0a6"}, + {file = "orjson-3.9.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e174cc579904a48ee1ea3acb7045e8a6c5d52c17688dfcb00e0e842ec378cabf"}, + {file = "orjson-3.9.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f8d51702f42c785b115401e1d64a27a2ea767ae7cf1fb8edaa09c7cf1571c660"}, + {file = "orjson-3.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f13d61c0c7414ddee1ef4d0f303e2222f8cced5a2e26d9774751aecd72324c9e"}, + {file = "orjson-3.9.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d748cc48caf5a91c883d306ab648df1b29e16b488c9316852844dd0fd000d1c2"}, + {file = "orjson-3.9.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bd19bc08fa023e4c2cbf8294ad3f2b8922f4de9ba088dbc71e6b268fdf54591c"}, + {file = "orjson-3.9.5-cp310-none-win32.whl", hash = "sha256:5793a21a21bf34e1767e3d61a778a25feea8476dcc0bdf0ae1bc506dc34561ea"}, + {file = "orjson-3.9.5-cp310-none-win_amd64.whl", hash = "sha256:2bcec0b1024d0031ab3eab7a8cb260c8a4e4a5e35993878a2da639d69cdf6a65"}, + {file = "orjson-3.9.5-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:8547b95ca0e2abd17e1471973e6d676f1d8acedd5f8fb4f739e0612651602d66"}, + {file = "orjson-3.9.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87ce174d6a38d12b3327f76145acbd26f7bc808b2b458f61e94d83cd0ebb4d76"}, + {file = "orjson-3.9.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a960bb1bc9a964d16fcc2d4af5a04ce5e4dfddca84e3060c35720d0a062064fe"}, + {file = "orjson-3.9.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a7aa5573a949760d6161d826d34dc36db6011926f836851fe9ccb55b5a7d8e8"}, + {file = "orjson-3.9.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8b2852afca17d7eea85f8e200d324e38c851c96598ac7b227e4f6c4e59fbd3df"}, + {file = "orjson-3.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa185959c082475288da90f996a82e05e0c437216b96f2a8111caeb1d54ef926"}, + {file = "orjson-3.9.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:89c9332695b838438ea4b9a482bce8ffbfddde4df92750522d928fb00b7b8dce"}, + {file = "orjson-3.9.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2493f1351a8f0611bc26e2d3d407efb873032b4f6b8926fed8cfed39210ca4ba"}, + {file = "orjson-3.9.5-cp311-none-win32.whl", hash = "sha256:ffc544e0e24e9ae69301b9a79df87a971fa5d1c20a6b18dca885699709d01be0"}, + {file = "orjson-3.9.5-cp311-none-win_amd64.whl", hash = "sha256:89670fe2732e3c0c54406f77cad1765c4c582f67b915c74fda742286809a0cdc"}, + {file = "orjson-3.9.5-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:15df211469625fa27eced4aa08dc03e35f99c57d45a33855cc35f218ea4071b8"}, + {file = "orjson-3.9.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9f17c59fe6c02bc5f89ad29edb0253d3059fe8ba64806d789af89a45c35269a"}, + {file = "orjson-3.9.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ca6b96659c7690773d8cebb6115c631f4a259a611788463e9c41e74fa53bf33f"}, + {file = "orjson-3.9.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a26fafe966e9195b149950334bdbe9026eca17fe8ffe2d8fa87fdc30ca925d30"}, + {file = "orjson-3.9.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9006b1eb645ecf460da067e2dd17768ccbb8f39b01815a571bfcfab7e8da5e52"}, + {file = "orjson-3.9.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebfdbf695734b1785e792a1315e41835ddf2a3e907ca0e1c87a53f23006ce01d"}, + {file = "orjson-3.9.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4a3943234342ab37d9ed78fb0a8f81cd4b9532f67bf2ac0d3aa45fa3f0a339f3"}, + {file = "orjson-3.9.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e6762755470b5c82f07b96b934af32e4d77395a11768b964aaa5eb092817bc31"}, + {file = "orjson-3.9.5-cp312-none-win_amd64.whl", hash = "sha256:c74df28749c076fd6e2157190df23d43d42b2c83e09d79b51694ee7315374ad5"}, + {file = "orjson-3.9.5-cp37-cp37m-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:88e18a74d916b74f00d0978d84e365c6bf0e7ab846792efa15756b5fb2f7d49d"}, + {file = "orjson-3.9.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d28514b5b6dfaf69097be70d0cf4f1407ec29d0f93e0b4131bf9cc8fd3f3e374"}, + {file = "orjson-3.9.5-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25b81aca8c7be61e2566246b6a0ca49f8aece70dd3f38c7f5c837f398c4cb142"}, + {file = "orjson-3.9.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:385c1c713b1e47fd92e96cf55fd88650ac6dfa0b997e8aa7ecffd8b5865078b1"}, + {file = "orjson-3.9.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9850c03a8e42fba1a508466e6a0f99472fd2b4a5f30235ea49b2a1b32c04c11"}, + {file = "orjson-3.9.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4449f84bbb13bcef493d8aa669feadfced0f7c5eea2d0d88b5cc21f812183af8"}, + {file = "orjson-3.9.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:86127bf194f3b873135e44ce5dc9212cb152b7e06798d5667a898a00f0519be4"}, + {file = "orjson-3.9.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0abcd039f05ae9ab5b0ff11624d0b9e54376253b7d3217a358d09c3edf1d36f7"}, + {file = "orjson-3.9.5-cp37-none-win32.whl", hash = "sha256:10cc8ad5ff7188efcb4bec196009d61ce525a4e09488e6d5db41218c7fe4f001"}, + {file = "orjson-3.9.5-cp37-none-win_amd64.whl", hash = "sha256:ff27e98532cb87379d1a585837d59b187907228268e7b0a87abe122b2be6968e"}, + {file = "orjson-3.9.5-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:5bfa79916ef5fef75ad1f377e54a167f0de334c1fa4ebb8d0224075f3ec3d8c0"}, + {file = "orjson-3.9.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e87dfa6ac0dae764371ab19b35eaaa46dfcb6ef2545dfca03064f21f5d08239f"}, + {file = "orjson-3.9.5-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:50ced24a7b23058b469ecdb96e36607fc611cbaee38b58e62a55c80d1b3ad4e1"}, + {file = "orjson-3.9.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b1b74ea2a3064e1375da87788897935832e806cc784de3e789fd3c4ab8eb3fa5"}, + {file = "orjson-3.9.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7cb961efe013606913d05609f014ad43edfaced82a576e8b520a5574ce3b2b9"}, + {file = "orjson-3.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1225d2d5ee76a786bda02f8c5e15017462f8432bb960de13d7c2619dba6f0275"}, + {file = "orjson-3.9.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f39f4b99199df05c7ecdd006086259ed25886cdbd7b14c8cdb10c7675cfcca7d"}, + {file = "orjson-3.9.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a461dc9fb60cac44f2d3218c36a0c1c01132314839a0e229d7fb1bba69b810d8"}, + {file = "orjson-3.9.5-cp38-none-win32.whl", hash = "sha256:dedf1a6173748202df223aea29de814b5836732a176b33501375c66f6ab7d822"}, + {file = "orjson-3.9.5-cp38-none-win_amd64.whl", hash = "sha256:fa504082f53efcbacb9087cc8676c163237beb6e999d43e72acb4bb6f0db11e6"}, + {file = "orjson-3.9.5-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6900f0248edc1bec2a2a3095a78a7e3ef4e63f60f8ddc583687eed162eedfd69"}, + {file = "orjson-3.9.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17404333c40047888ac40bd8c4d49752a787e0a946e728a4e5723f111b6e55a5"}, + {file = "orjson-3.9.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0eefb7cfdd9c2bc65f19f974a5d1dfecbac711dae91ed635820c6b12da7a3c11"}, + {file = "orjson-3.9.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:68c78b2a3718892dc018adbc62e8bab6ef3c0d811816d21e6973dee0ca30c152"}, + {file = "orjson-3.9.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:591ad7d9e4a9f9b104486ad5d88658c79ba29b66c5557ef9edf8ca877a3f8d11"}, + {file = "orjson-3.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6cc2cbf302fbb2d0b2c3c142a663d028873232a434d89ce1b2604ebe5cc93ce8"}, + {file = "orjson-3.9.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b26b5aa5e9ee1bad2795b925b3adb1b1b34122cb977f30d89e0a1b3f24d18450"}, + {file = "orjson-3.9.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ef84724f7d29dcfe3aafb1fc5fc7788dca63e8ae626bb9298022866146091a3e"}, + {file = "orjson-3.9.5-cp39-none-win32.whl", hash = "sha256:664cff27f85939059472afd39acff152fbac9a091b7137092cb651cf5f7747b5"}, + {file = "orjson-3.9.5-cp39-none-win_amd64.whl", hash = "sha256:91dda66755795ac6100e303e206b636568d42ac83c156547634256a2e68de694"}, + {file = "orjson-3.9.5.tar.gz", hash = "sha256:6daf5ee0b3cf530b9978cdbf71024f1c16ed4a67d05f6ec435c6e7fe7a52724c"}, ] [[package]] @@ -2843,13 +2876,13 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co [[package]] name = "plotly" -version = "5.15.0" +version = "5.16.1" description = "An open-source, interactive data visualization library for Python" optional = false python-versions = ">=3.6" files = [ - {file = "plotly-5.15.0-py2.py3-none-any.whl", hash = "sha256:3508876bbd6aefb8a692c21a7128ca87ce42498dd041efa5c933ee44b55aab24"}, - {file = "plotly-5.15.0.tar.gz", hash = "sha256:822eabe53997d5ebf23c77e1d1fcbf3bb6aa745eb05d532afd4b6f9a2e2ab02f"}, + {file = "plotly-5.16.1-py2.py3-none-any.whl", hash = "sha256:19cc34f339acd4e624177806c14df22f388f23fb70658b03aad959a0e650a0dc"}, + {file = "plotly-5.16.1.tar.gz", hash = "sha256:295ac25edeb18c893abb71dcadcea075b78fd6fdf07cee4217a4e1009667925b"}, ] [package.dependencies] @@ -2858,13 +2891,13 @@ tenacity = ">=6.2.0" [[package]] name = "pluggy" -version = "1.2.0" +version = "1.3.0" description = "plugin and hook calling mechanisms for python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"}, - {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"}, + {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, + {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, ] [package.extras] @@ -3027,114 +3060,134 @@ pyasn1 = ">=0.4.6,<0.6.0" [[package]] name = "pybase64" -version = "1.2.3" +version = "1.3.0" description = "Fast Base64 encoding/decoding" optional = false python-versions = ">=3.6" files = [ - {file = "pybase64-1.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c1cadce189177956fa92f153d26a598e0f145ff2cc80e85f106fb24aad9e8d6a"}, - {file = "pybase64-1.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6b2ebe00db53787f319568caf2685fb12f8c3f7bc3374026f2f0f72ad12f3c17"}, - {file = "pybase64-1.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01072c567467937ac53af01d39b0594ebe03023ae58c0fd21bee0649bf966411"}, - {file = "pybase64-1.2.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc1f11f8f2c2c68b37110b2c898a102ba978f845370bded24830212ab423c02"}, - {file = "pybase64-1.2.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b5f986e99458495853840385e01f2bea384075863a77d7184c4db846d9266b0"}, - {file = "pybase64-1.2.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0730f59e8d4535843444327de127316d4ba39878a4dbc38d3a00ef16b6c62a36"}, - {file = "pybase64-1.2.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33b6f06be78fed7433f56b73a1d52dfd0d7d5d78f686d52f215e67515e3f10c3"}, - {file = "pybase64-1.2.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4b841ebec0a7d6d612cc22b5438d760566268ce47838179228c919c607ca88be"}, - {file = "pybase64-1.2.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:d3a697901a0d1079126dbb07577ffd849b4af3293d7f3d1b58089293758c3d3e"}, - {file = "pybase64-1.2.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d8e9c97cc807130be1f4629bdf38fe7751c8e4b7cce375c14ce038db855be6f"}, - {file = "pybase64-1.2.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:e7931f8907703270f6effab1b98218136f6ad9905ef455e963685585f639a1fa"}, - {file = "pybase64-1.2.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1249a79e354bd107860243742cb0e92d72cca153c57fea3ea22f7f37c5fa56a6"}, - {file = "pybase64-1.2.3-cp310-cp310-win32.whl", hash = "sha256:2dae0dd94b0b3eabef126d4780af8de4c081a54558ada5b130a5a1f976cbe832"}, - {file = "pybase64-1.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:ddbb9044e09305c08fca8de4ed1fb03d1bba1d10cdd23c6d722d843c0ce54ade"}, - {file = "pybase64-1.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f773941900cea224fc78f26bb9e3429b8c4174652047e2f46cd33f53e2555f9e"}, - {file = "pybase64-1.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1dac069c2d3efc0e149ace4fb3c6293436b0a86bd2d3e3c593c37b2603e4b90e"}, - {file = "pybase64-1.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:537e2d49eb30b87f949c3d08fe583401e612d67bfba99d294a09504f59db446c"}, - {file = "pybase64-1.2.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:292d7d35f028a9e4a1662520a68a462470cabb3ddb1cc2c5668a3e37c7d94fef"}, - {file = "pybase64-1.2.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a1d9dea62520e6cadbd87d5e3a282034a6a614d43d5e4b715e5947296ee7d81f"}, - {file = "pybase64-1.2.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a061c6206f1bf4119a8b5498d0dfb4015672711eb8dc38b3f707549ab570929"}, - {file = "pybase64-1.2.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f4eaa156c08d5eed2139e8491a8cb01b6eceb3dc12871dac0306bba13bc5574"}, - {file = "pybase64-1.2.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:aec642aaaf750b05636d5fe62d008bcc8e1f30c42cf5ac4b49f82c3fc79fa233"}, - {file = "pybase64-1.2.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:29a03a528bbc6894d8608142a4b6c055f90935f4638e0abcef596f44462e3c73"}, - {file = "pybase64-1.2.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1f4741245e8735f4056a14f7386e1e685d307c5ef954681328a232ea2f7e790a"}, - {file = "pybase64-1.2.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:9879621381dd6b3e2669b251e75bac501888238d06bb4f4625974436e2b7d25d"}, - {file = "pybase64-1.2.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:75f2797e8c140ad5f7a3ccbb148a592ba5b3e169a0ea94f4280b52ecc4f2ccc7"}, - {file = "pybase64-1.2.3-cp311-cp311-win32.whl", hash = "sha256:78950189489bd9c7448d9643fa686f1c6d35f683d5e5601576726984944de74d"}, - {file = "pybase64-1.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:5721f8f8a14952a8e923d4f7bcf41c40693c7b1148f4a954d2b66adf3ae9edfe"}, - {file = "pybase64-1.2.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:2c0052d2ce1acd33bbc05b1e7926c13906a50fbb1daafcb47f6855917f7da847"}, - {file = "pybase64-1.2.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94e48cc223814b9fd7e65dfe8acddc1030865878cb18053e0fb17786bc1cdd5b"}, - {file = "pybase64-1.2.3-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:326b33d2ec976b005466d0306fd9ba7ff403c1a1767816845b5d90d9bedb75d1"}, - {file = "pybase64-1.2.3-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef03843028b5c9382465d8d46f58b6598d3e1a55b52bd44138b930e0f34619a6"}, - {file = "pybase64-1.2.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64821cfafd06cfc77543ec69ccecf84a8f9c40c7f0101a324b7b0700828ca7ff"}, - {file = "pybase64-1.2.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe7ea731d9abd2bd39f55c9569368f7f419cb60200bebc8aaac724b3b19273fd"}, - {file = "pybase64-1.2.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:98bbf0df67649e14282c876c5836be228b09750d21cfb79ac0cd101e902c7de1"}, - {file = "pybase64-1.2.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1a653fe41ba640feef313c6f42f7a1dc1693800d78feec7f6b13d3d5b1423cb6"}, - {file = "pybase64-1.2.3-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:b868d016be460682be5b0d8679f568b5a2ebc9a8c5c2c9539e2300891ea2fb67"}, - {file = "pybase64-1.2.3-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:43d8ba72f6e33544a32186393b0b1b4bd66fe0919772e12264b2dfee1f727e83"}, - {file = "pybase64-1.2.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:82e0149cb7476453d4d1f44c88604d0adfa917736c52cf50b81fcc78e72b9772"}, - {file = "pybase64-1.2.3-cp36-cp36m-win32.whl", hash = "sha256:589462362bac25dcbf71706eaad632d700a5d7932c4e96cba590dd5ed9770386"}, - {file = "pybase64-1.2.3-cp36-cp36m-win_amd64.whl", hash = "sha256:e4e1fa5dbf2b62852b55413cfe870f29ab691492c74a0c470f981210ac1bf745"}, - {file = "pybase64-1.2.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:19dd061ff04efe5d2aa8e05d04f528c07dfb73a853b30efcddb7f9f00431bd04"}, - {file = "pybase64-1.2.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:084e70d0bd6199e5084d76f82b0925e4610bda7ace9da5b52e3501a166ab6371"}, - {file = "pybase64-1.2.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59a408097f0b2e8dffc098ac609ef53afe9b8b75f807ac2d58c79833f9f61222"}, - {file = "pybase64-1.2.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d653c6d51ac8e80c67fa565d4fefbec53df5c0fb5f966f831b69169b95d98d20"}, - {file = "pybase64-1.2.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72c3ddbfd0f86208c3bd055de9cdd2dd59713bd8a0805e8f1c2f1783b7519297"}, - {file = "pybase64-1.2.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6309692f35b6e834d482a5efdc8e87f71a366a56f60afc6df2ed1527d540c7fd"}, - {file = "pybase64-1.2.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:be0cf10e88bc57aaa96cac1e10e130780b976d03679d030720052fe466cde107"}, - {file = "pybase64-1.2.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c2e17a40082d9a787cb8ffb72d32c9ae0f957c9cf56e4f07c95c594eb912fdb9"}, - {file = "pybase64-1.2.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:5f530cf9bfe5a310203293369f3d160567fb8082d7736b2459ace68db9d14c60"}, - {file = "pybase64-1.2.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:86d490b407b5cd10f9f9c154a069bb55531c10c0fccaf42c85a6c2a06a796df6"}, - {file = "pybase64-1.2.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8807b8e7e84c13a2abeb7da645b8bf87090d7eab676548ae11cb46ab2933eec3"}, - {file = "pybase64-1.2.3-cp37-cp37m-win32.whl", hash = "sha256:a695f90e523caabf0e579ea4c47481cd2fd93f4e673c7383f48ff1152284de61"}, - {file = "pybase64-1.2.3-cp37-cp37m-win_amd64.whl", hash = "sha256:46b12c98b1cdfb7aa43731d1fa5d60cb17c8fa14370670e70e6e33cd86466686"}, - {file = "pybase64-1.2.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1e0cf3ed5e42ee97baea39f25ba709ebb240cf64544e3343e92c11b583b1c999"}, - {file = "pybase64-1.2.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cbaedfc1dc5d3a4342572c200d62650429f884c42a212871bceb5733a1aac7b0"}, - {file = "pybase64-1.2.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:047bcd86434c46fbd43cdccb201b530017a407d27ae98c4498377af4006d68b5"}, - {file = "pybase64-1.2.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:72bd918051aaeac67510e33ec3f0e96b4035a67dfa21f309996e1b5e2616a24b"}, - {file = "pybase64-1.2.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2087141b460601d2d4108c883c367937f010c25cf3ff8f49c782701046b5f42"}, - {file = "pybase64-1.2.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc2f0274200bec57869ca6a5a7645867bbc19b8682bc4a6f5f0389c72b37e40b"}, - {file = "pybase64-1.2.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54e20ccc303bcedc1a69f8ab362cd98ce3e1b6ab01f65a29e54f521d02c19c8e"}, - {file = "pybase64-1.2.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:53187e634178b042657c07a2ebf22fe0724a66af647c433bbb2eb794bbec0667"}, - {file = "pybase64-1.2.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d073f72a361ff56cf293bb1bee0681a67071da1e0a8eede573d6e734594c6ed6"}, - {file = "pybase64-1.2.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dec86d9d991a12cb71e59fb84a9eaa3804a4cc29f21d837f35b8c98d5db566a6"}, - {file = "pybase64-1.2.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:7be56353da4ff792ff9fc946d0f17b13e1073ed0f05cbb28a7af755c47cc1c8c"}, - {file = "pybase64-1.2.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8a65f8a5bdeb2f4d6453c7cea101314ff3e166c6fc497fa8f31bec69929f1428"}, - {file = "pybase64-1.2.3-cp38-cp38-win32.whl", hash = "sha256:79cd82fa82d4a899f226664fcd3d0b90f8f12a4a3d1d95554c9699c6ec892d5b"}, - {file = "pybase64-1.2.3-cp38-cp38-win_amd64.whl", hash = "sha256:7e9c8d2492fcbf4891a717aeb0d8cdf4a2c54c866fb722a531a41111c62865c2"}, - {file = "pybase64-1.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7bd9f50a8eaa8746e315de20250e659360d8410a48a0d482698533d1dee43b53"}, - {file = "pybase64-1.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a90fffad772230972aaebb6c56bef031e5d202f1423b5522f073896730370628"}, - {file = "pybase64-1.2.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7eb8ec42c613fb31cbee035905f970b2bcad9820f7101fa493c67efaedcd2d66"}, - {file = "pybase64-1.2.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e9a89663f117d4f3d7dd60c859444ff3441e81a125985179ef112e9f373c57a6"}, - {file = "pybase64-1.2.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0878a13182b394e58fe54130165e1a10865a5613003f1ff7642dcfdb6538ba7"}, - {file = "pybase64-1.2.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3bd12b8931929d12a53ce98e3395df91c7de1ca94d2e05f98415d469d36b08d"}, - {file = "pybase64-1.2.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2cca9aaac5641a1b36c4810d1649ce6acca62ded9b4097ab36d3ba3af07adc6a"}, - {file = "pybase64-1.2.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d9abc457eb5edbec38ba9cf23073a33df9bacb5a01946dbee771bf796805fc57"}, - {file = "pybase64-1.2.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:837425a94c3b6a6c9b5de20905da0b429625b4ff5e58177ff1843f2bf54449d3"}, - {file = "pybase64-1.2.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e6114954badadb5d959a11fd6876ea9ccf7debd3e78286560d66e958b342f8ac"}, - {file = "pybase64-1.2.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:9ff17a87bb7e945621199944dadf09fe5f07adf0db403186a309cd97b8611858"}, - {file = "pybase64-1.2.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2f14f5cb1b897093dde3c0837dfcea34d58938b531452582e04ca3079037181e"}, - {file = "pybase64-1.2.3-cp39-cp39-win32.whl", hash = "sha256:921d9b7962b357f92110cf39b8400e6afa1f0157a177d9829ea33628468cbae4"}, - {file = "pybase64-1.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:05e999d0deb97840fcc2dcbde04d7118aaa2c8bd2210b34f45a7d1c5329ca5af"}, - {file = "pybase64-1.2.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:55244f653fd617e236987b24c1889e2aff8424d01e434bff60d21b3731007cfe"}, - {file = "pybase64-1.2.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ca0e6b319981a6dae1eb38ee2c0eab7165f29017bb3d4c0e38fe3064dc04936"}, - {file = "pybase64-1.2.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7dbc2b242a3f6591010303e98eee68e498acb58a9c099b6c50cc1d283eeb2150"}, - {file = "pybase64-1.2.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01bbf4ed79b76a505de81076c04aa28cdd2415c75a100363066d4eda701ec840"}, - {file = "pybase64-1.2.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:63ecca6afe8ac97bb22ce55be52964ce10d51fb4bd2fbe5083c53626749fd96b"}, - {file = "pybase64-1.2.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eba9c73d63c9f2b00ea39a38e075feb3f3f092ff298581532270814700db060b"}, - {file = "pybase64-1.2.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed6cdfaa43905168ad7447ee01dcb6c168ade87ca8d58736f954c8739cc113f6"}, - {file = "pybase64-1.2.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed432b1f8792e3b9cef6ef5336ed51b9866726dc9fd3dcd5e9d54867dd8d23a7"}, - {file = "pybase64-1.2.3-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0e703404e7b4afacccb09423b924d19b6e20eb3ac3e3755e5b4bcbd877e7fc2"}, - {file = "pybase64-1.2.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:90f07db08a87b7cc7ceb745954f284854393e110917bb6aed118d9c0e07c45ff"}, - {file = "pybase64-1.2.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c0797f866300240b7af2092bd332bcf3d7d3925953bd5d8cd4e95d1c52adf6af"}, - {file = "pybase64-1.2.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72e4eeaa4170b123ad57071bab2b65cf69f2005d92ccfdebee0a1252cbc0576c"}, - {file = "pybase64-1.2.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47e2454298e1507546a6944c6a8aa23183e47aff1bab9a8233fc66d49cce0c87"}, - {file = "pybase64-1.2.3-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6135c961a7d0a8ab839ee7ae6dae6e0b318e22e19b820e6f7aadbbac6bbb4d2a"}, - {file = "pybase64-1.2.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5d00b0054345c347f8c38802e26bfa40fb28d29a481e333b849044decfdf519f"}, - {file = "pybase64-1.2.3.tar.gz", hash = "sha256:76d074df9a7b989b3589926ab1946677bbb399ecfe230714b13157e2633611ed"}, + {file = "pybase64-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1c3c50f916b08ddfdcb55f71dd7815d16e12348a05bb2baa4bdb4207a855b60"}, + {file = "pybase64-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4ce18e91485309618509e61fe4451bca2abbf99018916067231fa554a104050"}, + {file = "pybase64-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e7c9cfef84405c5a7982a3915e73c1eed00adbdc0d651600775e758d8acdd74"}, + {file = "pybase64-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6e0269762ecc8875eafa8c4f415e65fe8509662561f85cbf0c14c17485e3c51"}, + {file = "pybase64-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a662dad865d884fcf3dd76e9c9a6e041cc888d4883e2d350b5df382bd880aede"}, + {file = "pybase64-1.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4fdfb96fc34eb22556130db66fc1a9033a9c181ce02baefa5f896da83897f748"}, + {file = "pybase64-1.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdda3b80252ae80dacebd27812d8d1f385b6c2b36395d8bcbeb4e34858392b61"}, + {file = "pybase64-1.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b47d755db5a4b5c0b7dd92efc4a6868b3dea199b559839a0f52f3d1f93df2555"}, + {file = "pybase64-1.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b780a0900f8f07f1c643f8c8e1be498cec64375ff62b0a27f5f21081a3786bd3"}, + {file = "pybase64-1.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a27a41ee58e2dc0520de83749a08b7cd1db8c95db9cedb42915e114bad61b0a8"}, + {file = "pybase64-1.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4e6ec9e77dd54f3356110078275d812ccaae5af1653d9d122d096b7feb61e286"}, + {file = "pybase64-1.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:761b0bffa29f7e22acf349d975cf478c7fb53dce816409b83d310fcfdca9b87b"}, + {file = "pybase64-1.3.0-cp310-cp310-win32.whl", hash = "sha256:6d7f4c1f5d79293c06d7d12e7f90686d687aca64daf63becb85717656ccac77c"}, + {file = "pybase64-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:1b120de9c80aebe2f8e3c02b092b6ae97e003fec5449a4ed960732224e831430"}, + {file = "pybase64-1.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:6f575171eea9e8d5d475c914e3ef9f0140c9fbad630a18dc796d814612ffdd72"}, + {file = "pybase64-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f2880a727e04e10acc4f39edcae6687a712fcee7e86996e8d1315e5859961880"}, + {file = "pybase64-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9112d8f87d08ac945a4de8dd5fc77709527c1f8fa6ef8154c10b25e757529baa"}, + {file = "pybase64-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b986782a21d13d07831ecdce149674aa0df7e1cc3c7deeeebcefe72449e7c692"}, + {file = "pybase64-1.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad71d3939291cb5cb88f60021835b16118abe18f377c75520ae39ea8a3b7788e"}, + {file = "pybase64-1.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d701c481134a0012689b95af95b2b334c3b4536e4e54ad44560143bc485ce4dc"}, + {file = "pybase64-1.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09cb05b23038d2a6d6385b885a6548ceb93c8ca7e8dfa9739b65bfcdaaafbb5"}, + {file = "pybase64-1.3.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c0487ab3fbf2999365008394f3fa580fd9eccd134ea0d27aad475144e3e29b4"}, + {file = "pybase64-1.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3e1e9aef13de94d4f47323f0c70ca57b8c422415a7110a6ac1496f4b633465a6"}, + {file = "pybase64-1.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:023f5dcf694b38f6f226a13f052e9a3d5cdd7cd540a0c2907e4a5fc60fb82fda"}, + {file = "pybase64-1.3.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:084a0e42bc6122479cc5a57b7d05b6eff60fbfd76497917498a372c59a9cb0c2"}, + {file = "pybase64-1.3.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:73fcc61605e95e19fd45cc3a7d976e8f3eed5bdc762ee87c720b03038a44acdb"}, + {file = "pybase64-1.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7f107465a99b050f8a53277657d26ef8b3592ce87b8d3606774bc4e21cf474fb"}, + {file = "pybase64-1.3.0-cp311-cp311-win32.whl", hash = "sha256:84a3c54dfa2f28b2b95ab9e36c4203c6ed031898d9f68ade4666228c0fb6f790"}, + {file = "pybase64-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1daa40308c7bccc68b11135b97a21d314eddca14bd0ba867a241c88756f5b17"}, + {file = "pybase64-1.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:32bfed3960b24c9f8381a7daad20201fc1c0c1fd6678f2ee8b70721a9ba94ec1"}, + {file = "pybase64-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cd15189032a5369ed7713528c7196a06c9d97b425690751f4b2497859d9cc491"}, + {file = "pybase64-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:04140eeb99a610fe72c521a0ca9c7cd156f9eb9abb24e81e3f038cf7765d87f3"}, + {file = "pybase64-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:600830e54322d7a5b6bca19a5fd1475956b1fe63c4880fd8c654002354271bb0"}, + {file = "pybase64-1.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a711faf667188e4307e40a77288b2acffe8b2098cdfa88f6330a97843a454837"}, + {file = "pybase64-1.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f24766d87ea152eea03c5ba1b5463974e2f07e7bab5ab4a28fea91c72c5363db"}, + {file = "pybase64-1.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5922e9bff4c6b9599db3a3f7f7aa33e2a6514ae1955bcdd96f6e617edcb556e2"}, + {file = "pybase64-1.3.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43d7911250c48c9cd7c10742a4c6945645481b49e6853fed2e9589298ca6be2c"}, + {file = "pybase64-1.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a89ebdf8db3a92a464c8fecdf4e507296f84b559da7db19f2828184b89258a52"}, + {file = "pybase64-1.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6e8ed8abeb5a5d19bef402a7ac99c05ccef4108f94d1fbc1a8c8b4aba8e25940"}, + {file = "pybase64-1.3.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:9dcb13da2b169c3dd6d61d3e6aeb04726756f3992d8c0b0c37c98e091571d5fe"}, + {file = "pybase64-1.3.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:94ea75c8b4375e03db22535afe7cb4ed01541cf4e9f67972e324b663c866e8ee"}, + {file = "pybase64-1.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e5138ce4c87758217b06d3b0220d26a0c67dbf9c9bc49709a013fe3574f387b3"}, + {file = "pybase64-1.3.0-cp312-cp312-win32.whl", hash = "sha256:4df71c9e6493faf940f6dfd9accbd145d58913fae7187099a7466f6795fdc5a3"}, + {file = "pybase64-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:f2e06859495a0b94044caf93dd6291612f80804f0a2337e69a491e2e7db0cd0b"}, + {file = "pybase64-1.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:ecb0e69617ba11382f97c8108ab45d4beb6fe169a886b2390d6dfedadb6bfdfd"}, + {file = "pybase64-1.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3105312354816f53235aaacd7ab17424bb8cd7ab6bc64661b0e32cfca8ae3b56"}, + {file = "pybase64-1.3.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64779d223cd5217f0ab34ffc53b0d251783fd9d3888b4d5a2267987a0c8e81d2"}, + {file = "pybase64-1.3.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c89d6a11f2c25d1628343c6f9834459a3bb421a622d5e873f6ccb04439d2f9e"}, + {file = "pybase64-1.3.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c7e9330665d3cd7bbe1cebab5872c78a991f127e4f76160b5c77a0b2c850212b"}, + {file = "pybase64-1.3.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d14446f6a3a6aafe3b9f919087d8222f207b7feee8f4dea39b587b3ccd7b0ec3"}, + {file = "pybase64-1.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ace49d18090433e27f2a3223372d60dc54d4c2b5b6dc1aaaee5e6be1c4b118"}, + {file = "pybase64-1.3.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:d0d55d352baedec77b4a10559ee6d513c914eb9e1a84ae499809616b2e494cdb"}, + {file = "pybase64-1.3.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6dd1fef54470c70aebb7918ac4c9c6aad19e8c4722f044a69d08d349d5582001"}, + {file = "pybase64-1.3.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:b4ff0a687aebc950800b0081ff2f4c8a791b652fbb3204df6a8486cb731d8681"}, + {file = "pybase64-1.3.0-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:054cd527e44b447f57dcbd045968b5757df96477ddf247b1043f7bd784436f50"}, + {file = "pybase64-1.3.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:760e4c25694d2126a31820b3fb5a8dee1f6d116ba8307a1cd73b04beeabc1300"}, + {file = "pybase64-1.3.0-cp36-cp36m-win32.whl", hash = "sha256:9450f2445be62545201a36bae53c715d2ef8cdef40c03018e41562dcfcf8672f"}, + {file = "pybase64-1.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2da52b4effc95b84a43a85bc69f6edbbb8576c2f0920e6447139cb39c8a86a1a"}, + {file = "pybase64-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5384bb0aba843e513738ec3c08f802e3fec540e804f04065784cf29ecb358532"}, + {file = "pybase64-1.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77fda6b9992c45c29479e8d46b4a26bc50a5008037e63ce2de6d2835aa6ae643"}, + {file = "pybase64-1.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:40e3286be3079da0511f012e2a3f0fd1d0dcbd8ac8596afadfd24b837da85ae2"}, + {file = "pybase64-1.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:167be16cf5e2a167de96969b356157392b775135860344efaa171d0a8ad2f240"}, + {file = "pybase64-1.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edb3a1be432e4e7a8bec9ac42a3704bffe876e277fdee375fc63f694a9282642"}, + {file = "pybase64-1.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cab93be620b01aedd048358cd6d15acfb3e58b27e4e57042590f612a4333f66"}, + {file = "pybase64-1.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7bd7f355041e9c6bfa96661db5d23157bbbbafa4c413c360e962aa56d0fd261d"}, + {file = "pybase64-1.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:081516b88d34b192da357e9edf9b73686777990616e051486797142250abb17f"}, + {file = "pybase64-1.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:02986c344eb4f4e16adf496d3c2e3c6f218127a5304cc8486e8c40bf149ab995"}, + {file = "pybase64-1.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:7d5628d5bf7234fadb223f5a362f35a5a45b08a1ef85c2bcb9153b381ca220be"}, + {file = "pybase64-1.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:22ab3496f5628e2296c5dbb0698d9a370fcf3101e3e43da9993f1679a4d08e7c"}, + {file = "pybase64-1.3.0-cp37-cp37m-win32.whl", hash = "sha256:80e3049dd3330af16b1b1730ce49c32860e2524aaa57e106f576ae58dfbd11a6"}, + {file = "pybase64-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:52a780adb709f9a4eb4e8739b71133fbec790136d5b8105ba92084bd7efc8b75"}, + {file = "pybase64-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5c7972ec871f9a59dc2b2b761a77822d369879d9059d5040d9bdefed80219ac1"}, + {file = "pybase64-1.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9e10721ca00ecc5e998d0f5b6e1d22b5dda7d720df175a5b1b415ee0a8862e27"}, + {file = "pybase64-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a24fc0ac869f3dac5eaef8d5cd20c27778bf6c8eefa585cc771b1b1e45329c90"}, + {file = "pybase64-1.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3b8e13f35b469c80c42c6fbafd8f15debd49d706fcf10a156c4aef724567b57"}, + {file = "pybase64-1.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1aa05749b6404832c0645da6fbcec1cffb9f83ea96f25e8e87c0298b306de91a"}, + {file = "pybase64-1.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6091282affb99c9771a1c2be98a390df13dd9010dd2f2fc3cc11249c316b776"}, + {file = "pybase64-1.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef2120533607e75a6d4ab40a83b5d485760e305d9839e9f468adead6009680b"}, + {file = "pybase64-1.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0029e5e4dbbeb9bbbe81df35982448158aa270f337ba15a9be6e1999322c1f42"}, + {file = "pybase64-1.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c96eadf90ce34a0d775f6c1e12438a5a39e672c65c6f5a2e72c78abe218dd834"}, + {file = "pybase64-1.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:34697476d10a68b9ec27ad76b2beaea429e587f3da49765946732a21fbb364e6"}, + {file = "pybase64-1.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a647e75f90dfa00faea1a36c84395de0c915de918793123082de9e4d2efe4d4d"}, + {file = "pybase64-1.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d42bba75a6637cbdfc8c5f1ebd3df04d6610bc13d72162703d3f5968d816a4a7"}, + {file = "pybase64-1.3.0-cp38-cp38-win32.whl", hash = "sha256:1b04ad2a872a954f8e1d85a1acdbb047e4f7ca288ddc9adea01b8b61d1a5ce5a"}, + {file = "pybase64-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:0c2012ea06337fc47668dd29b37c1c1fe4204e6b07d73379879be13090c57ebc"}, + {file = "pybase64-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:46ae310754ec9d63ab831006ce8fb8b184d8ab81c077f3007d913f744c2c2640"}, + {file = "pybase64-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:09f729e0f59605ee7eddbeea5439ddc57e4495dbb56cf5c2ffcaf9a0b496d4dd"}, + {file = "pybase64-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b582f9808dc0f8ed21b66087a8a4fe7cf7b4f3aeb9c11bea6f0d0c0bf746b23"}, + {file = "pybase64-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cbb65a5b4431def82bfc6809f04148e86a2b31200bd752a20d454743c8cf08e"}, + {file = "pybase64-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9d616a1c5b722c8f7b5343f12b86f8eee08615942b7e1a2894c3b666e6a4a394"}, + {file = "pybase64-1.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8a052d3a11c4b238eac7fd8b853c9bfbf477125df4dffe91c7a0ee27534a1ac"}, + {file = "pybase64-1.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ec4457cf566ffd8c60674415428a719d181dbff60bfebb3475a7b46deecc7b"}, + {file = "pybase64-1.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:938964ab5b79b45dccb00060b1566956ff6b5fa08f4c57dc34d31a4a14733176"}, + {file = "pybase64-1.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2314c1da06ddc3ba8ef98c55e6fea4959bdeae777e193d7b97dd16e85dc9bd2e"}, + {file = "pybase64-1.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f731cbab4f9c00fc93fdbd1d95a27f82d60c870bed116ffe68053770a3b1fa03"}, + {file = "pybase64-1.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:c1a8acd12247f5268755ff1e29fe7dded6fdae52d38ebd54f87405008e65bdae"}, + {file = "pybase64-1.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c2b499fb95ad2a8bb2a337646dff38b4118cdf1cab18db8d016121978bda6e8e"}, + {file = "pybase64-1.3.0-cp39-cp39-win32.whl", hash = "sha256:88c67b7c8e81a97c3e26c885245057cf7917545034a7c80e1b79cf96ebe8d661"}, + {file = "pybase64-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:029b539a9ead94ff9b1785152a7fa6d044a7dd6e6eb40d067fdfef0d39ea8185"}, + {file = "pybase64-1.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:c3cdca2e30185e2c110e112439eba55a8574cc9d0b97fe1c7bffd6f565f23d0a"}, + {file = "pybase64-1.3.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eb27c4142a574d48490aac927f58d5bc93f667e75969871fcaddfc4e621c0fae"}, + {file = "pybase64-1.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d286d637e5b83b06a2a8018cb4c552bb38e7f29259070e32d01be71d316a8b04"}, + {file = "pybase64-1.3.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0c14c0e722f8454ee39a760bdc8990c28d76d3f8356152389e93948933732fd"}, + {file = "pybase64-1.3.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5792d0a9e96d69138faf154c4e41ba1fb3113eec2cc4b75ebf2ca1813562a0fd"}, + {file = "pybase64-1.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:db452c8de23cf1d9ea6fff3e432fe1e857a5af366619900b8d96eb3171be6a40"}, + {file = "pybase64-1.3.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b74519a5bae86650726ff94aff1eab215b761eb5a9cf423055f8af119fb2bd3f"}, + {file = "pybase64-1.3.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:518fc740672bf3ebfaddc4672ef1528c90ec72d60f7b74a1b8cf8e2e04c2816d"}, + {file = "pybase64-1.3.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa0fd426ce1fad183df4a19d2839e32e38340febae5940a6195214bf24b31f08"}, + {file = "pybase64-1.3.0-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5278c3f6909f81ee9cd938456432efdc6b56631f556c2db7bdc541e3020080b"}, + {file = "pybase64-1.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:2aeb0e5b1f7c4cd037b1abdceb13fe508712fac947783fc4358fb72ab857fcc0"}, + {file = "pybase64-1.3.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:10e5df94f20a80699b6f6fa2d1dd25c8ebdde372043af5b89d60d9f1beee6a7c"}, + {file = "pybase64-1.3.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41483e0ebc683dcd964ae3f1426eddda51637ecfbb84fa721499951ee79b9652"}, + {file = "pybase64-1.3.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd670a397b402af1633fd813ad78ef197fd22c472158987edbd9ef5ea8a0e5d8"}, + {file = "pybase64-1.3.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:659fd451225607b36132e33105add31941f6183057441d43b50947bb0c3e440c"}, + {file = "pybase64-1.3.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8747dbc33efbf8920734e733ce624b507d912a336643d2c55ccc2bfd7c17a42c"}, + {file = "pybase64-1.3.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:32d6167422a86077f83ce4d6c87880b99ff7c1b76612cf3cc5e16b80073e6f27"}, + {file = "pybase64-1.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fbefec1cc7ce66880e9745bc7d8e13a25687fcbadf79d600890f24964c4d43b0"}, + {file = "pybase64-1.3.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99734f83fb4d9279d59e3bb7cfe5b92ab57807c229cacfa72a71cb340920c7fb"}, + {file = "pybase64-1.3.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb88c75be3799c15c5c7f61724668c685674752cbd5aee50201b6c99b73fb60c"}, + {file = "pybase64-1.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:25f4f8a1376374a1b04b169acce0093ade07df67a086a6d86333acb8e70e83f0"}, + {file = "pybase64-1.3.0.tar.gz", hash = "sha256:d4c6472ab0084ebd4ee005bb9851729bdc64d8f62c6fae5bdb076b2029f488ee"}, ] -[package.extras] -test = ["pytest (>=5.0.0)"] - [[package]] name = "pybtex" version = "0.24.0" @@ -3156,17 +3209,17 @@ test = ["pytest"] [[package]] name = "pybtex-docutils" -version = "1.0.2" +version = "1.0.3" description = "A docutils backend for pybtex." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pybtex-docutils-1.0.2.tar.gz", hash = "sha256:43aa353b6d498fd5ac30f0073a98e332d061d34fe619d3d50d1761f8fd4aa016"}, - {file = "pybtex_docutils-1.0.2-py3-none-any.whl", hash = "sha256:6f9e3c25a37bcaac8c4f69513272706ec6253bb708a93d8b4b173f43915ba239"}, + {file = "pybtex-docutils-1.0.3.tar.gz", hash = "sha256:3a7ebdf92b593e00e8c1c538aa9a20bca5d92d84231124715acc964d51d93c6b"}, + {file = "pybtex_docutils-1.0.3-py3-none-any.whl", hash = "sha256:8fd290d2ae48e32fcb54d86b0efb8d573198653c7e2447d5bec5847095f430b9"}, ] [package.dependencies] -docutils = ">=0.8" +docutils = ">=0.14" pybtex = ">=0.16" [[package]] @@ -3182,18 +3235,18 @@ files = [ [[package]] name = "pydantic" -version = "2.1.1" +version = "2.3.0" description = "Data validation using Python type hints" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic-2.1.1-py3-none-any.whl", hash = "sha256:43bdbf359d6304c57afda15c2b95797295b702948082d4c23851ce752f21da70"}, - {file = "pydantic-2.1.1.tar.gz", hash = "sha256:22d63db5ce4831afd16e7c58b3192d3faf8f79154980d9397d9867254310ba4b"}, + {file = "pydantic-2.3.0-py3-none-any.whl", hash = "sha256:45b5e446c6dfaad9444819a293b921a40e1db1aa61ea08aede0522529ce90e81"}, + {file = "pydantic-2.3.0.tar.gz", hash = "sha256:1607cc106602284cd4a00882986570472f193fde9cb1259bceeaedb26aa79a6d"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.4.0" +pydantic-core = "2.6.3" typing-extensions = ">=4.6.1" [package.extras] @@ -3201,112 +3254,117 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.4.0" +version = "2.6.3" description = "" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic_core-2.4.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:2ca4687dd996bde7f3c420def450797feeb20dcee2b9687023e3323c73fc14a2"}, - {file = "pydantic_core-2.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:782fced7d61469fd1231b184a80e4f2fa7ad54cd7173834651a453f96f29d673"}, - {file = "pydantic_core-2.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6213b471b68146af97b8551294e59e7392c2117e28ffad9c557c65087f4baee3"}, - {file = "pydantic_core-2.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63797499a219d8e81eb4e0c42222d0a4c8ec896f5c76751d4258af95de41fdf1"}, - {file = "pydantic_core-2.4.0-cp310-cp310-manylinux_2_24_armv7l.whl", hash = "sha256:0455876d575a35defc4da7e0a199596d6c773e20d3d42fa1fc29f6aa640369ed"}, - {file = "pydantic_core-2.4.0-cp310-cp310-manylinux_2_24_ppc64le.whl", hash = "sha256:8c938c96294d983dcf419b54dba2d21056959c22911d41788efbf949a29ae30d"}, - {file = "pydantic_core-2.4.0-cp310-cp310-manylinux_2_24_s390x.whl", hash = "sha256:878a5017d93e776c379af4e7b20f173c82594d94fa073059bcc546789ad50bf8"}, - {file = "pydantic_core-2.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:69159afc2f2dc43285725f16143bc5df3c853bc1cb7df6021fce7ef1c69e8171"}, - {file = "pydantic_core-2.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:54df7df399b777c1fd144f541c95d351b3aa110535a6810a6a569905d106b6f3"}, - {file = "pydantic_core-2.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e412607ca89a0ced10758dfb8f9adcc365ce4c1c377e637c01989a75e9a9ec8a"}, - {file = "pydantic_core-2.4.0-cp310-none-win32.whl", hash = "sha256:853f103e2b9a58832fdd08a587a51de8b552ae90e1a5d167f316b7eabf8d7dde"}, - {file = "pydantic_core-2.4.0-cp310-none-win_amd64.whl", hash = "sha256:3ba2c9c94a9176f6321a879c8b864d7c5b12d34f549a4c216c72ce213d7d953c"}, - {file = "pydantic_core-2.4.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:a8b7acd04896e8f161e1500dc5f218017db05c1d322f054e89cbd089ce5d0071"}, - {file = "pydantic_core-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:16468bd074fa4567592d3255bf25528ed41e6b616d69bf07096bdb5b66f947d1"}, - {file = "pydantic_core-2.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cba5ad5eef02c86a1f3da00544cbc59a510d596b27566479a7cd4d91c6187a11"}, - {file = "pydantic_core-2.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7206e41e04b443016e930e01685bab7a308113c0b251b3f906942c8d4b48fcb"}, - {file = "pydantic_core-2.4.0-cp311-cp311-manylinux_2_24_armv7l.whl", hash = "sha256:c1375025f0bfc9155286ebae8eecc65e33e494c90025cda69e247c3ccd2bab00"}, - {file = "pydantic_core-2.4.0-cp311-cp311-manylinux_2_24_ppc64le.whl", hash = "sha256:3534118289e33130ed3f1cc487002e8d09b9f359be48b02e9cd3de58ce58fba9"}, - {file = "pydantic_core-2.4.0-cp311-cp311-manylinux_2_24_s390x.whl", hash = "sha256:94d2b36a74623caab262bf95f0e365c2c058396082bd9d6a9e825657d0c1e7fa"}, - {file = "pydantic_core-2.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:af24ad4fbaa5e4a2000beae0c3b7fd1c78d7819ab90f9370a1cfd8998e3f8a3c"}, - {file = "pydantic_core-2.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bf10963d8aed8bbe0165b41797c9463d4c5c8788ae6a77c68427569be6bead41"}, - {file = "pydantic_core-2.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:68199ada7c310ddb8c76efbb606a0de656b40899388a7498954f423e03fc38be"}, - {file = "pydantic_core-2.4.0-cp311-none-win32.whl", hash = "sha256:6f855bcc96ed3dd56da7373cfcc9dcbabbc2073cac7f65c185772d08884790ce"}, - {file = "pydantic_core-2.4.0-cp311-none-win_amd64.whl", hash = "sha256:de39eb3bab93a99ddda1ac1b9aa331b944d8bcc4aa9141148f7fd8ee0299dafc"}, - {file = "pydantic_core-2.4.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:f773b39780323a0499b53ebd91a28ad11cde6705605d98d999dfa08624caf064"}, - {file = "pydantic_core-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a297c0d6c61963c5c3726840677b798ca5b7dfc71bc9c02b9a4af11d23236008"}, - {file = "pydantic_core-2.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:546064c55264156b973b5e65e5fafbe5e62390902ce3cf6b4005765505e8ff56"}, - {file = "pydantic_core-2.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ba9e728588588f0196deaf6751b9222492331b5552f865a8ff120869d372e0"}, - {file = "pydantic_core-2.4.0-cp312-cp312-manylinux_2_24_armv7l.whl", hash = "sha256:57a53a75010c635b3ad6499e7721eaa3b450e03f6862afe2dbef9c8f66e46ec8"}, - {file = "pydantic_core-2.4.0-cp312-cp312-manylinux_2_24_ppc64le.whl", hash = "sha256:4b262bbc13022f2097c48a21adcc360a81d83dc1d854c11b94953cd46d7d3c07"}, - {file = "pydantic_core-2.4.0-cp312-cp312-manylinux_2_24_s390x.whl", hash = "sha256:01947ad728f426fa07fcb26457ebf90ce29320259938414bc0edd1476e75addb"}, - {file = "pydantic_core-2.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b2799c2eaf182769889761d4fb4d78b82bc47dae833799fedbf69fc7de306faa"}, - {file = "pydantic_core-2.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a08fd490ba36d1fbb2cd5dcdcfb9f3892deb93bd53456724389135712b5fc735"}, - {file = "pydantic_core-2.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1e8a7c62d15a5c4b307271e4252d76ebb981d6251c6ecea4daf203ef0179ea4f"}, - {file = "pydantic_core-2.4.0-cp312-none-win32.whl", hash = "sha256:9206c14a67c38de7b916e486ae280017cf394fa4b1aa95cfe88621a4e1d79725"}, - {file = "pydantic_core-2.4.0-cp312-none-win_amd64.whl", hash = "sha256:884235507549a6b2d3c4113fb1877ae263109e787d9e0eb25c35982ab28d0399"}, - {file = "pydantic_core-2.4.0-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:4cbe929efa77a806e8f1a97793f2dc3ea3475ae21a9ed0f37c21320fe93f6f50"}, - {file = "pydantic_core-2.4.0-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:9137289de8fe845c246a8c3482dd0cb40338846ba683756d8f489a4bd8fddcae"}, - {file = "pydantic_core-2.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5d8e764b5646623e57575f624f8ebb8f7a9f7fd1fae682ef87869ca5fec8dcf"}, - {file = "pydantic_core-2.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fba0aff4c407d0274e43697e785bcac155ad962be57518d1c711f45e72da70f"}, - {file = "pydantic_core-2.4.0-cp37-cp37m-manylinux_2_24_armv7l.whl", hash = "sha256:30527d173e826f2f7651f91c821e337073df1555e3b5a0b7b1e2c39e26e50678"}, - {file = "pydantic_core-2.4.0-cp37-cp37m-manylinux_2_24_ppc64le.whl", hash = "sha256:bd7d1dde70ff3e09e4bc7a1cbb91a7a538add291bfd5b3e70ef1e7b45192440f"}, - {file = "pydantic_core-2.4.0-cp37-cp37m-manylinux_2_24_s390x.whl", hash = "sha256:72f1216ca8cef7b8adacd4c4c6b89c3b0c4f97503197f5284c80f36d6e4edd30"}, - {file = "pydantic_core-2.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b013c7861a7c7bfcec48fd709513fea6f9f31727e7a0a93ca0dd12e056740717"}, - {file = "pydantic_core-2.4.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:478f5f6d7e32bd4a04d102160efb2d389432ecf095fe87c555c0a6fc4adfc1a4"}, - {file = "pydantic_core-2.4.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d9610b47b5fe4aacbbba6a9cb5f12cbe864eec99dbfed5710bd32ef5dd8a5d5b"}, - {file = "pydantic_core-2.4.0-cp37-none-win32.whl", hash = "sha256:ff246c0111076c8022f9ba325c294f2cb5983403506989253e04dbae565e019b"}, - {file = "pydantic_core-2.4.0-cp37-none-win_amd64.whl", hash = "sha256:d0c2b713464a8e263a243ae7980d81ce2de5ac59a9f798a282e44350b42dc516"}, - {file = "pydantic_core-2.4.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:12ef6838245569fd60a179fade81ca4b90ae2fa0ef355d616f519f7bb27582db"}, - {file = "pydantic_core-2.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:49db206eb8fdc4b4f30e6e3e410584146d813c151928f94ec0db06c4f2595538"}, - {file = "pydantic_core-2.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a507d7fa44688bbac76af6521e488b3da93de155b9cba6f2c9b7833ce243d59"}, - {file = "pydantic_core-2.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffe18407a4d000c568182ce5388bbbedeb099896904e43fc14eee76cfae6dec5"}, - {file = "pydantic_core-2.4.0-cp38-cp38-manylinux_2_24_armv7l.whl", hash = "sha256:fa8e48001b39d54d97d7b380a0669fa99fc0feeb972e35a2d677ba59164a9a22"}, - {file = "pydantic_core-2.4.0-cp38-cp38-manylinux_2_24_ppc64le.whl", hash = "sha256:394f12a2671ff8c4dfa2e85be6c08be0651ad85bc1e6aa9c77c21671baaf28cd"}, - {file = "pydantic_core-2.4.0-cp38-cp38-manylinux_2_24_s390x.whl", hash = "sha256:2f9ea0355f90db2a76af530245fa42f04d98f752a1236ed7c6809ec484560d5b"}, - {file = "pydantic_core-2.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:61d4e713f467abcdd59b47665d488bb898ad3dd47ce7446522a50e0cbd8e8279"}, - {file = "pydantic_core-2.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:453862ab268f6326b01f067ed89cb3a527d34dc46f6f4eeec46a15bbc706d0da"}, - {file = "pydantic_core-2.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:56a85fa0dab1567bd0cac10f0c3837b03e8a0d939e6a8061a3a420acd97e9421"}, - {file = "pydantic_core-2.4.0-cp38-none-win32.whl", hash = "sha256:0d726108c1c0380b88b6dd4db559f0280e0ceda9e077f46ff90bc85cd4d03e77"}, - {file = "pydantic_core-2.4.0-cp38-none-win_amd64.whl", hash = "sha256:047580388644c473b934d27849f8ed8dbe45df0adb72104e78b543e13bf69762"}, - {file = "pydantic_core-2.4.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:867d3eea954bea807cabba83cfc939c889a18576d66d197c60025b15269d7cc0"}, - {file = "pydantic_core-2.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:664402ef0c238a7f8a46efb101789d5f2275600fb18114446efec83cfadb5b66"}, - {file = "pydantic_core-2.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64e8012ad60a5f0da09ed48725e6e923d1be25f2f091a640af6079f874663813"}, - {file = "pydantic_core-2.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac2b680de398f293b68183317432b3d67ab3faeba216aec18de0c395cb5e3060"}, - {file = "pydantic_core-2.4.0-cp39-cp39-manylinux_2_24_armv7l.whl", hash = "sha256:8efc1be43b036c2b6bcfb1451df24ee0ddcf69c31351003daf2699ed93f5687b"}, - {file = "pydantic_core-2.4.0-cp39-cp39-manylinux_2_24_ppc64le.whl", hash = "sha256:d93aedbc4614cc21b9ab0d0c4ccd7143354c1f7cffbbe96ae5216ad21d1b21b5"}, - {file = "pydantic_core-2.4.0-cp39-cp39-manylinux_2_24_s390x.whl", hash = "sha256:af788b64e13d52fc3600a68b16d31fa8d8573e3ff2fc9a38f8a60b8d94d1f012"}, - {file = "pydantic_core-2.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:97c6349c81cee2e69ef59eba6e6c08c5936e6b01c2d50b9e4ac152217845ae09"}, - {file = "pydantic_core-2.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:cc086ddb6dc654a15deeed1d1f2bcb1cb924ebd70df9dca738af19f64229b06c"}, - {file = "pydantic_core-2.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e953353180bec330c3b830891d260b6f8e576e2d18db3c78d314e56bb2276066"}, - {file = "pydantic_core-2.4.0-cp39-none-win32.whl", hash = "sha256:6feb4b64d11d5420e517910d60a907d08d846cacaf4e029668725cd21d16743c"}, - {file = "pydantic_core-2.4.0-cp39-none-win_amd64.whl", hash = "sha256:153a61ac4030fa019b70b31fb7986461119230d3ba0ab661c757cfea652f4332"}, - {file = "pydantic_core-2.4.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:3fcf529382b282a30b466bd7af05be28e22aa620e016135ac414f14e1ee6b9e1"}, - {file = "pydantic_core-2.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2edef05b63d82568b877002dc4cb5cc18f8929b59077120192df1e03e0c633f8"}, - {file = "pydantic_core-2.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da055a1b0bfa8041bb2ff586b2cb0353ed03944a3472186a02cc44a557a0e661"}, - {file = "pydantic_core-2.4.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:77dadc764cf7c5405e04866181c5bd94a447372a9763e473abb63d1dfe9b7387"}, - {file = "pydantic_core-2.4.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:a4ea23b07f29487a7bef2a869f68c7ee0e05424d81375ce3d3de829314c6b5ec"}, - {file = "pydantic_core-2.4.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:382f0baa044d674ad59455a5eff83d7965572b745cc72df35c52c2ce8c731d37"}, - {file = "pydantic_core-2.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:08f89697625e453421401c7f661b9d1eb4c9e4c0a12fd256eeb55b06994ac6af"}, - {file = "pydantic_core-2.4.0-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:43a405ce520b45941df9ff55d0cd09762017756a7b413bbad3a6e8178e64a2c2"}, - {file = "pydantic_core-2.4.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:584a7a818c84767af16ce8bda5d4f7fedb37d3d231fc89928a192f567e4ef685"}, - {file = "pydantic_core-2.4.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04922fea7b13cd480586fa106345fe06e43220b8327358873c22d8dfa7a711c7"}, - {file = "pydantic_core-2.4.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17156abac20a9feed10feec867fddd91a80819a485b0107fe61f09f2117fe5f3"}, - {file = "pydantic_core-2.4.0-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4e562cc63b04636cde361fd47569162f1daa94c759220ff202a8129902229114"}, - {file = "pydantic_core-2.4.0-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:90f3785146f701e053bb6b9e8f53acce2c919aca91df88bd4975be0cb926eb41"}, - {file = "pydantic_core-2.4.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:e40b1e97edd3dc127aa53d8a5e539a3d0c227d71574d3f9ac1af02d58218a122"}, - {file = "pydantic_core-2.4.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:b27f3e67f6e031f6620655741b7d0d6bebea8b25d415924b3e8bfef2dd7bd841"}, - {file = "pydantic_core-2.4.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be86c2eb12fb0f846262ace9d8f032dc6978b8cb26a058920ecb723dbcb87d05"}, - {file = "pydantic_core-2.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4665f7ed345012a8d2eddf4203ef145f5f56a291d010382d235b94e91813f88a"}, - {file = "pydantic_core-2.4.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:79262be5a292d1df060f29b9a7cdd66934801f987a817632d7552534a172709a"}, - {file = "pydantic_core-2.4.0-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5fd905a69ac74eaba5041e21a1e8b1a479dab2b41c93bdcc4c1cede3c12a8d86"}, - {file = "pydantic_core-2.4.0-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:2ad538b7e07343001934417cdc8584623b4d8823c5b8b258e75ec8d327cec969"}, - {file = "pydantic_core-2.4.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:dd2429f7635ad4857b5881503f9c310be7761dc681c467a9d27787b674d1250a"}, - {file = "pydantic_core-2.4.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:efff8b6761a1f6e45cebd1b7a6406eb2723d2d5710ff0d1b624fe11313693989"}, - {file = "pydantic_core-2.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32a1e0352558cd7ccc014ffe818c7d87b15ec6145875e2cc5fa4bb7351a1033d"}, - {file = "pydantic_core-2.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a027f41c5008571314861744d83aff75a34cf3a07022e0be32b214a5bc93f7f1"}, - {file = "pydantic_core-2.4.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1927f0e15d190f11f0b8344373731e28fd774c6d676d8a6cfadc95c77214a48b"}, - {file = "pydantic_core-2.4.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7aa82d483d5fb867d4fb10a138ffd57b0f1644e99f2f4f336e48790ada9ada5e"}, - {file = "pydantic_core-2.4.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b85778308bf945e9b33ac604e6793df9b07933108d20bdf53811bc7c2798a4af"}, - {file = "pydantic_core-2.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3ded19dcaefe2f6706d81e0db787b59095f4ad0fbadce1edffdf092294c8a23f"}, - {file = "pydantic_core-2.4.0.tar.gz", hash = "sha256:ec3473c9789cc00c7260d840c3db2c16dbfc816ca70ec87a00cddfa3e1a1cdd5"}, + {file = "pydantic_core-2.6.3-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:1a0ddaa723c48af27d19f27f1c73bdc615c73686d763388c8683fe34ae777bad"}, + {file = "pydantic_core-2.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5cfde4fab34dd1e3a3f7f3db38182ab6c95e4ea91cf322242ee0be5c2f7e3d2f"}, + {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5493a7027bfc6b108e17c3383959485087d5942e87eb62bbac69829eae9bc1f7"}, + {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84e87c16f582f5c753b7f39a71bd6647255512191be2d2dbf49458c4ef024588"}, + {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:522a9c4a4d1924facce7270c84b5134c5cabcb01513213662a2e89cf28c1d309"}, + {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaafc776e5edc72b3cad1ccedb5fd869cc5c9a591f1213aa9eba31a781be9ac1"}, + {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a750a83b2728299ca12e003d73d1264ad0440f60f4fc9cee54acc489249b728"}, + {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e8b374ef41ad5c461efb7a140ce4730661aadf85958b5c6a3e9cf4e040ff4bb"}, + {file = "pydantic_core-2.6.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b594b64e8568cf09ee5c9501ede37066b9fc41d83d58f55b9952e32141256acd"}, + {file = "pydantic_core-2.6.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2a20c533cb80466c1d42a43a4521669ccad7cf2967830ac62c2c2f9cece63e7e"}, + {file = "pydantic_core-2.6.3-cp310-none-win32.whl", hash = "sha256:04fe5c0a43dec39aedba0ec9579001061d4653a9b53a1366b113aca4a3c05ca7"}, + {file = "pydantic_core-2.6.3-cp310-none-win_amd64.whl", hash = "sha256:6bf7d610ac8f0065a286002a23bcce241ea8248c71988bda538edcc90e0c39ad"}, + {file = "pydantic_core-2.6.3-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:6bcc1ad776fffe25ea5c187a028991c031a00ff92d012ca1cc4714087e575973"}, + {file = "pydantic_core-2.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:df14f6332834444b4a37685810216cc8fe1fe91f447332cd56294c984ecbff1c"}, + {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b7486d85293f7f0bbc39b34e1d8aa26210b450bbd3d245ec3d732864009819"}, + {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a892b5b1871b301ce20d40b037ffbe33d1407a39639c2b05356acfef5536d26a"}, + {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:883daa467865e5766931e07eb20f3e8152324f0adf52658f4d302242c12e2c32"}, + {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4eb77df2964b64ba190eee00b2312a1fd7a862af8918ec70fc2d6308f76ac64"}, + {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce8c84051fa292a5dc54018a40e2a1926fd17980a9422c973e3ebea017aa8da"}, + {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22134a4453bd59b7d1e895c455fe277af9d9d9fbbcb9dc3f4a97b8693e7e2c9b"}, + {file = "pydantic_core-2.6.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:02e1c385095efbd997311d85c6021d32369675c09bcbfff3b69d84e59dc103f6"}, + {file = "pydantic_core-2.6.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d79f1f2f7ebdb9b741296b69049ff44aedd95976bfee38eb4848820628a99b50"}, + {file = "pydantic_core-2.6.3-cp311-none-win32.whl", hash = "sha256:430ddd965ffd068dd70ef4e4d74f2c489c3a313adc28e829dd7262cc0d2dd1e8"}, + {file = "pydantic_core-2.6.3-cp311-none-win_amd64.whl", hash = "sha256:84f8bb34fe76c68c9d96b77c60cef093f5e660ef8e43a6cbfcd991017d375950"}, + {file = "pydantic_core-2.6.3-cp311-none-win_arm64.whl", hash = "sha256:5a2a3c9ef904dcdadb550eedf3291ec3f229431b0084666e2c2aa8ff99a103a2"}, + {file = "pydantic_core-2.6.3-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:8421cf496e746cf8d6b677502ed9a0d1e4e956586cd8b221e1312e0841c002d5"}, + {file = "pydantic_core-2.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bb128c30cf1df0ab78166ded1ecf876620fb9aac84d2413e8ea1594b588c735d"}, + {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37a822f630712817b6ecc09ccc378192ef5ff12e2c9bae97eb5968a6cdf3b862"}, + {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:240a015102a0c0cc8114f1cba6444499a8a4d0333e178bc504a5c2196defd456"}, + {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f90e5e3afb11268628c89f378f7a1ea3f2fe502a28af4192e30a6cdea1e7d5e"}, + {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:340e96c08de1069f3d022a85c2a8c63529fd88709468373b418f4cf2c949fb0e"}, + {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1480fa4682e8202b560dcdc9eeec1005f62a15742b813c88cdc01d44e85308e5"}, + {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f14546403c2a1d11a130b537dda28f07eb6c1805a43dae4617448074fd49c282"}, + {file = "pydantic_core-2.6.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a87c54e72aa2ef30189dc74427421e074ab4561cf2bf314589f6af5b37f45e6d"}, + {file = "pydantic_core-2.6.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f93255b3e4d64785554e544c1c76cd32f4a354fa79e2eeca5d16ac2e7fdd57aa"}, + {file = "pydantic_core-2.6.3-cp312-none-win32.whl", hash = "sha256:f70dc00a91311a1aea124e5f64569ea44c011b58433981313202c46bccbec0e1"}, + {file = "pydantic_core-2.6.3-cp312-none-win_amd64.whl", hash = "sha256:23470a23614c701b37252618e7851e595060a96a23016f9a084f3f92f5ed5881"}, + {file = "pydantic_core-2.6.3-cp312-none-win_arm64.whl", hash = "sha256:1ac1750df1b4339b543531ce793b8fd5c16660a95d13aecaab26b44ce11775e9"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:a53e3195f134bde03620d87a7e2b2f2046e0e5a8195e66d0f244d6d5b2f6d31b"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:f2969e8f72c6236c51f91fbb79c33821d12a811e2a94b7aa59c65f8dbdfad34a"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:672174480a85386dd2e681cadd7d951471ad0bb028ed744c895f11f9d51b9ebe"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:002d0ea50e17ed982c2d65b480bd975fc41086a5a2f9c924ef8fc54419d1dea3"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ccc13afee44b9006a73d2046068d4df96dc5b333bf3509d9a06d1b42db6d8bf"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:439a0de139556745ae53f9cc9668c6c2053444af940d3ef3ecad95b079bc9987"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d63b7545d489422d417a0cae6f9898618669608750fc5e62156957e609e728a5"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b44c42edc07a50a081672e25dfe6022554b47f91e793066a7b601ca290f71e42"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1c721bfc575d57305dd922e6a40a8fe3f762905851d694245807a351ad255c58"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5e4a2cf8c4543f37f5dc881de6c190de08096c53986381daebb56a355be5dfe6"}, + {file = "pydantic_core-2.6.3-cp37-none-win32.whl", hash = "sha256:d9b4916b21931b08096efed090327f8fe78e09ae8f5ad44e07f5c72a7eedb51b"}, + {file = "pydantic_core-2.6.3-cp37-none-win_amd64.whl", hash = "sha256:a8acc9dedd304da161eb071cc7ff1326aa5b66aadec9622b2574ad3ffe225525"}, + {file = "pydantic_core-2.6.3-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:5e9c068f36b9f396399d43bfb6defd4cc99c36215f6ff33ac8b9c14ba15bdf6b"}, + {file = "pydantic_core-2.6.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e61eae9b31799c32c5f9b7be906be3380e699e74b2db26c227c50a5fc7988698"}, + {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85463560c67fc65cd86153a4975d0b720b6d7725cf7ee0b2d291288433fc21b"}, + {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9616567800bdc83ce136e5847d41008a1d602213d024207b0ff6cab6753fe645"}, + {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e9b65a55bbabda7fccd3500192a79f6e474d8d36e78d1685496aad5f9dbd92c"}, + {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f468d520f47807d1eb5d27648393519655eadc578d5dd862d06873cce04c4d1b"}, + {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9680dd23055dd874173a3a63a44e7f5a13885a4cfd7e84814be71be24fba83db"}, + {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a718d56c4d55efcfc63f680f207c9f19c8376e5a8a67773535e6f7e80e93170"}, + {file = "pydantic_core-2.6.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8ecbac050856eb6c3046dea655b39216597e373aa8e50e134c0e202f9c47efec"}, + {file = "pydantic_core-2.6.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:788be9844a6e5c4612b74512a76b2153f1877cd845410d756841f6c3420230eb"}, + {file = "pydantic_core-2.6.3-cp38-none-win32.whl", hash = "sha256:07a1aec07333bf5adebd8264047d3dc518563d92aca6f2f5b36f505132399efc"}, + {file = "pydantic_core-2.6.3-cp38-none-win_amd64.whl", hash = "sha256:621afe25cc2b3c4ba05fff53525156d5100eb35c6e5a7cf31d66cc9e1963e378"}, + {file = "pydantic_core-2.6.3-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:813aab5bfb19c98ae370952b6f7190f1e28e565909bfc219a0909db168783465"}, + {file = "pydantic_core-2.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:50555ba3cb58f9861b7a48c493636b996a617db1a72c18da4d7f16d7b1b9952b"}, + {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19e20f8baedd7d987bd3f8005c146e6bcbda7cdeefc36fad50c66adb2dd2da48"}, + {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b0a5d7edb76c1c57b95df719af703e796fc8e796447a1da939f97bfa8a918d60"}, + {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f06e21ad0b504658a3a9edd3d8530e8cea5723f6ea5d280e8db8efc625b47e49"}, + {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea053cefa008fda40f92aab937fb9f183cf8752e41dbc7bc68917884454c6362"}, + {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:171a4718860790f66d6c2eda1d95dd1edf64f864d2e9f9115840840cf5b5713f"}, + {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ed7ceca6aba5331ece96c0e328cd52f0dcf942b8895a1ed2642de50800b79d3"}, + {file = "pydantic_core-2.6.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:acafc4368b289a9f291e204d2c4c75908557d4f36bd3ae937914d4529bf62a76"}, + {file = "pydantic_core-2.6.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1aa712ba150d5105814e53cb141412217146fedc22621e9acff9236d77d2a5ef"}, + {file = "pydantic_core-2.6.3-cp39-none-win32.whl", hash = "sha256:44b4f937b992394a2e81a5c5ce716f3dcc1237281e81b80c748b2da6dd5cf29a"}, + {file = "pydantic_core-2.6.3-cp39-none-win_amd64.whl", hash = "sha256:9b33bf9658cb29ac1a517c11e865112316d09687d767d7a0e4a63d5c640d1b17"}, + {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d7050899026e708fb185e174c63ebc2c4ee7a0c17b0a96ebc50e1f76a231c057"}, + {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99faba727727b2e59129c59542284efebbddade4f0ae6a29c8b8d3e1f437beb7"}, + {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fa159b902d22b283b680ef52b532b29554ea2a7fc39bf354064751369e9dbd7"}, + {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:046af9cfb5384f3684eeb3f58a48698ddab8dd870b4b3f67f825353a14441418"}, + {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:930bfe73e665ebce3f0da2c6d64455098aaa67e1a00323c74dc752627879fc67"}, + {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:85cc4d105747d2aa3c5cf3e37dac50141bff779545ba59a095f4a96b0a460e70"}, + {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b25afe9d5c4f60dcbbe2b277a79be114e2e65a16598db8abee2a2dcde24f162b"}, + {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e49ce7dc9f925e1fb010fc3d555250139df61fa6e5a0a95ce356329602c11ea9"}, + {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:2dd50d6a1aef0426a1d0199190c6c43ec89812b1f409e7fe44cb0fbf6dfa733c"}, + {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6595b0d8c8711e8e1dc389d52648b923b809f68ac1c6f0baa525c6440aa0daa"}, + {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ef724a059396751aef71e847178d66ad7fc3fc969a1a40c29f5aac1aa5f8784"}, + {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3c8945a105f1589ce8a693753b908815e0748f6279959a4530f6742e1994dcb6"}, + {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c8c6660089a25d45333cb9db56bb9e347241a6d7509838dbbd1931d0e19dbc7f"}, + {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:692b4ff5c4e828a38716cfa92667661a39886e71136c97b7dac26edef18767f7"}, + {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:f1a5d8f18877474c80b7711d870db0eeef9442691fcdb00adabfc97e183ee0b0"}, + {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:3796a6152c545339d3b1652183e786df648ecdf7c4f9347e1d30e6750907f5bb"}, + {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b962700962f6e7a6bd77e5f37320cabac24b4c0f76afeac05e9f93cf0c620014"}, + {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ea80269077003eaa59723bac1d8bacd2cd15ae30456f2890811efc1e3d4413"}, + {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c0ebbebae71ed1e385f7dfd9b74c1cff09fed24a6df43d326dd7f12339ec34"}, + {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:252851b38bad3bfda47b104ffd077d4f9604a10cb06fe09d020016a25107bf98"}, + {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:6656a0ae383d8cd7cc94e91de4e526407b3726049ce8d7939049cbfa426518c8"}, + {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d9140ded382a5b04a1c030b593ed9bf3088243a0a8b7fa9f071a5736498c5483"}, + {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d38bbcef58220f9c81e42c255ef0bf99735d8f11edef69ab0b499da77105158a"}, + {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:c9d469204abcca28926cbc28ce98f28e50e488767b084fb3fbdf21af11d3de26"}, + {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:48c1ed8b02ffea4d5c9c220eda27af02b8149fe58526359b3c07eb391cb353a2"}, + {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b2b1bfed698fa410ab81982f681f5b1996d3d994ae8073286515ac4d165c2e7"}, + {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf9d42a71a4d7a7c1f14f629e5c30eac451a6fc81827d2beefd57d014c006c4a"}, + {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4292ca56751aebbe63a84bbfc3b5717abb09b14d4b4442cc43fd7c49a1529efd"}, + {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7dc2ce039c7290b4ef64334ec7e6ca6494de6eecc81e21cb4f73b9b39991408c"}, + {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:615a31b1629e12445c0e9fc8339b41aaa6cc60bd53bf802d5fe3d2c0cda2ae8d"}, + {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1fa1f6312fb84e8c281f32b39affe81984ccd484da6e9d65b3d18c202c666149"}, + {file = "pydantic_core-2.6.3.tar.gz", hash = "sha256:1508f37ba9e3ddc0189e6ff4e2228bd2d3c3a4641cbe8c07177162f76ed696c7"}, ] [package.dependencies] @@ -3506,13 +3564,13 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale [[package]] name = "pytest-env" -version = "0.8.2" +version = "1.0.1" description = "py.test plugin that allows you to add environment variables." optional = false python-versions = ">=3.7" files = [ - {file = "pytest_env-0.8.2-py3-none-any.whl", hash = "sha256:5e533273f4d9e6a41c3a3120e0c7944aae5674fa773b329f00a5eb1f23c53a38"}, - {file = "pytest_env-0.8.2.tar.gz", hash = "sha256:baed9b3b6bae77bd75b9238e0ed1ee6903a42806ae9d6aeffb8754cd5584d4ff"}, + {file = "pytest_env-1.0.1-py3-none-any.whl", hash = "sha256:e8faf927c6fcdbbc8fe3317506acc116713c9708d01652a0fd945f9ae27b71aa"}, + {file = "pytest_env-1.0.1.tar.gz", hash = "sha256:603fe216e8e03a5d134989cb41317c59aabef013d2250c71b864ab0798fbe6f6"}, ] [package.dependencies] @@ -3540,27 +3598,25 @@ dev = ["pre-commit", "pytest-asyncio", "tox"] [[package]] name = "python-box" -version = "7.0.1" +version = "7.1.1" description = "Advanced Python dictionaries with dot notation access" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "python-box-7.0.1.tar.gz", hash = "sha256:dc6724f88255ccbc07092abd506281439cc2b75c6569c754ffc2b22580e7ae06"}, - {file = "python_box-7.0.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:92093bf5b1500004e3608b3f39e54230b21301ffb00ff5f4dbf775f2a409a7a9"}, - {file = "python_box-7.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cccb85f9cbf64eda51c773f3db68aa60291ec1356b0774c37bcd4e13f26b90e7"}, - {file = "python_box-7.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:f394cca98c777b25836faf25cb5afdc88c01dc753a5aab80055a038229091b7b"}, - {file = "python_box-7.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:86182565c9ebe9ee4a3aece1a55d9d5451c6a44b5ec127a5e4d315909efe6d10"}, - {file = "python_box-7.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:33d61b81133d1ddf6d85d0658c4c9aca871208c28df74e660dbdfe68f9b470ce"}, - {file = "python_box-7.0.1-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:042d10f33e56a3b3432a94a23c90672a7f32f6de7116cdd9bc59d852ca08f5f7"}, - {file = "python_box-7.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6a6d71c3c2ebed3f4c888edfa96bc5768f5e7641c4b0b6017d70f68a325811cf"}, - {file = "python_box-7.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:dc135cf06ef3dde501de9baab21d908088fb03e2de09e3fe80e8a4f1dcd1ab2b"}, - {file = "python_box-7.0.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:443ff7320c1b7e64384189f532c386600a6c31db9ddd9ded8ecc3ad4c43d0edb"}, - {file = "python_box-7.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6b8265e842eee33dd5d1b129b8da900ec0b6f80db70680b633f9086807f42fb9"}, - {file = "python_box-7.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:fbb14fac0ff0b2b42e47041b7b8b4f1f8d6f6ac086c8e68b7f0358602905653e"}, - {file = "python_box-7.0.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:84867f6527bbd1d17bc7534e1c64ccd1d173d973ae5eb202f04bdf8c0ca3a690"}, - {file = "python_box-7.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4e35521b9b96cf6a18ecfef7ebcf73fe326956a7b5d789c4ff0a01dc43edd6ce"}, - {file = "python_box-7.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:f9254a1c7ec5e729e256f9a223773aa8a76d7a995f4d6be0015f74ab93a0f97c"}, - {file = "python_box-7.0.1-py3-none-any.whl", hash = "sha256:f26f210b2257fd973413e75e8b91aaff9c95d7d61266426a7d3df473c4adcfd4"}, + {file = "python-box-7.1.1.tar.gz", hash = "sha256:2a3df244a5a79ac8f8447b5d11b5be0f2747d7b141cb2866060081ae9b53cc50"}, + {file = "python_box-7.1.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:81ed1ec0f0ff2370227fc07277c5baca46d190a4747631bad7eb6ab1630fb7d9"}, + {file = "python_box-7.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8891735b4148e84d348c6eadd2f127152f751c9603e35d43a1f496183a291ac4"}, + {file = "python_box-7.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:0036fd47d388deaca8ebd65aea905f88ee6ef91d1d8ce34898b66f1824afbe80"}, + {file = "python_box-7.1.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:aabf8b9ae5dbc8ba431d8cbe0d4cfe737a25d52d68b0f5f2ff34915c21a2c1db"}, + {file = "python_box-7.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c046608337e723ae4de3206db5d1e1202ed166da2dfdc70c1f9361e72ace5633"}, + {file = "python_box-7.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:f9266795e9c233874fb5b34fa994054b4fb0371881678e6ec45aec17fc95feac"}, + {file = "python_box-7.1.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:f76b5b7f0cdc07bfdd4200dc24e6e33189bb2ae322137a2b7110fd41891a3157"}, + {file = "python_box-7.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ea13c98e05a3ec0ff26f254986a17290b69b5ade209fad081fd628f8fcfaa08"}, + {file = "python_box-7.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:1b3f346e332dba16df0b0543d319d9e7ce07d93e5ae152175302894352aa2d28"}, + {file = "python_box-7.1.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:24c4ec0ee0278f66321100aaa9c615413da27a14ff43d376a2a3b4665e1d9494"}, + {file = "python_box-7.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d95e5eec4fc8f3fc5c9cc7347fc2eb4f9187c853d34c90b1658d1eff96cd4eac"}, + {file = "python_box-7.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:a0f1333c42e81529b6f68c192050df9d4505b803be7ac47f114036b98707f7cf"}, + {file = "python_box-7.1.1-py3-none-any.whl", hash = "sha256:63b609555554d7a9d4b6e725f8e78ef1717c67e7d386200e03422ad612338df8"}, ] [package.extras] @@ -4103,108 +4159,108 @@ six = ">=1.7.0" [[package]] name = "rpds-py" -version = "0.9.2" +version = "0.10.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.9.2-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:ab6919a09c055c9b092798ce18c6c4adf49d24d4d9e43a92b257e3f2548231e7"}, - {file = "rpds_py-0.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d55777a80f78dd09410bd84ff8c95ee05519f41113b2df90a69622f5540c4f8b"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a216b26e5af0a8e265d4efd65d3bcec5fba6b26909014effe20cd302fd1138fa"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:29cd8bfb2d716366a035913ced99188a79b623a3512292963d84d3e06e63b496"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44659b1f326214950a8204a248ca6199535e73a694be8d3e0e869f820767f12f"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:745f5a43fdd7d6d25a53ab1a99979e7f8ea419dfefebcab0a5a1e9095490ee5e"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a987578ac5214f18b99d1f2a3851cba5b09f4a689818a106c23dbad0dfeb760f"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf4151acb541b6e895354f6ff9ac06995ad9e4175cbc6d30aaed08856558201f"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:03421628f0dc10a4119d714a17f646e2837126a25ac7a256bdf7c3943400f67f"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:13b602dc3e8dff3063734f02dcf05111e887f301fdda74151a93dbbc249930fe"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fae5cb554b604b3f9e2c608241b5d8d303e410d7dfb6d397c335f983495ce7f6"}, - {file = "rpds_py-0.9.2-cp310-none-win32.whl", hash = "sha256:47c5f58a8e0c2c920cc7783113df2fc4ff12bf3a411d985012f145e9242a2764"}, - {file = "rpds_py-0.9.2-cp310-none-win_amd64.whl", hash = "sha256:4ea6b73c22d8182dff91155af018b11aac9ff7eca085750455c5990cb1cfae6e"}, - {file = "rpds_py-0.9.2-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:e564d2238512c5ef5e9d79338ab77f1cbbda6c2d541ad41b2af445fb200385e3"}, - {file = "rpds_py-0.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f411330a6376fb50e5b7a3e66894e4a39e60ca2e17dce258d53768fea06a37bd"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e7521f5af0233e89939ad626b15278c71b69dc1dfccaa7b97bd4cdf96536bb7"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8d3335c03100a073883857e91db9f2e0ef8a1cf42dc0369cbb9151c149dbbc1b"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d25b1c1096ef0447355f7293fbe9ad740f7c47ae032c2884113f8e87660d8f6e"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a5d3fbd02efd9cf6a8ffc2f17b53a33542f6b154e88dd7b42ef4a4c0700fdad"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5934e2833afeaf36bd1eadb57256239785f5af0220ed8d21c2896ec4d3a765f"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:095b460e117685867d45548fbd8598a8d9999227e9061ee7f012d9d264e6048d"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:91378d9f4151adc223d584489591dbb79f78814c0734a7c3bfa9c9e09978121c"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:24a81c177379300220e907e9b864107614b144f6c2a15ed5c3450e19cf536fae"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:de0b6eceb46141984671802d412568d22c6bacc9b230174f9e55fc72ef4f57de"}, - {file = "rpds_py-0.9.2-cp311-none-win32.whl", hash = "sha256:700375326ed641f3d9d32060a91513ad668bcb7e2cffb18415c399acb25de2ab"}, - {file = "rpds_py-0.9.2-cp311-none-win_amd64.whl", hash = "sha256:0766babfcf941db8607bdaf82569ec38107dbb03c7f0b72604a0b346b6eb3298"}, - {file = "rpds_py-0.9.2-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:b1440c291db3f98a914e1afd9d6541e8fc60b4c3aab1a9008d03da4651e67386"}, - {file = "rpds_py-0.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0f2996fbac8e0b77fd67102becb9229986396e051f33dbceada3debaacc7033f"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f30d205755566a25f2ae0382944fcae2f350500ae4df4e795efa9e850821d82"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:159fba751a1e6b1c69244e23ba6c28f879a8758a3e992ed056d86d74a194a0f3"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1f044792e1adcea82468a72310c66a7f08728d72a244730d14880cd1dabe36b"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9251eb8aa82e6cf88510530b29eef4fac825a2b709baf5b94a6094894f252387"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01899794b654e616c8625b194ddd1e5b51ef5b60ed61baa7a2d9c2ad7b2a4238"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0c43f8ae8f6be1d605b0465671124aa8d6a0e40f1fb81dcea28b7e3d87ca1e1"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:207f57c402d1f8712618f737356e4b6f35253b6d20a324d9a47cb9f38ee43a6b"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b52e7c5ae35b00566d244ffefba0f46bb6bec749a50412acf42b1c3f402e2c90"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:978fa96dbb005d599ec4fd9ed301b1cc45f1a8f7982d4793faf20b404b56677d"}, - {file = "rpds_py-0.9.2-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6aa8326a4a608e1c28da191edd7c924dff445251b94653988efb059b16577a4d"}, - {file = "rpds_py-0.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aad51239bee6bff6823bbbdc8ad85136c6125542bbc609e035ab98ca1e32a192"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd4dc3602370679c2dfb818d9c97b1137d4dd412230cfecd3c66a1bf388a196"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dd9da77c6ec1f258387957b754f0df60766ac23ed698b61941ba9acccd3284d1"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:190ca6f55042ea4649ed19c9093a9be9d63cd8a97880106747d7147f88a49d18"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:876bf9ed62323bc7dcfc261dbc5572c996ef26fe6406b0ff985cbcf460fc8a4c"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa2818759aba55df50592ecbc95ebcdc99917fa7b55cc6796235b04193eb3c55"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9ea4d00850ef1e917815e59b078ecb338f6a8efda23369677c54a5825dbebb55"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:5855c85eb8b8a968a74dc7fb014c9166a05e7e7a8377fb91d78512900aadd13d"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:14c408e9d1a80dcb45c05a5149e5961aadb912fff42ca1dd9b68c0044904eb32"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:65a0583c43d9f22cb2130c7b110e695fff834fd5e832a776a107197e59a1898e"}, - {file = "rpds_py-0.9.2-cp38-none-win32.whl", hash = "sha256:71f2f7715935a61fa3e4ae91d91b67e571aeb5cb5d10331ab681256bda2ad920"}, - {file = "rpds_py-0.9.2-cp38-none-win_amd64.whl", hash = "sha256:674c704605092e3ebbbd13687b09c9f78c362a4bc710343efe37a91457123044"}, - {file = "rpds_py-0.9.2-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:07e2c54bef6838fa44c48dfbc8234e8e2466d851124b551fc4e07a1cfeb37260"}, - {file = "rpds_py-0.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fdf55283ad38c33e35e2855565361f4bf0abd02470b8ab28d499c663bc5d7c"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:890ba852c16ace6ed9f90e8670f2c1c178d96510a21b06d2fa12d8783a905193"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:50025635ba8b629a86d9d5474e650da304cb46bbb4d18690532dd79341467846"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:517cbf6e67ae3623c5127206489d69eb2bdb27239a3c3cc559350ef52a3bbf0b"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0836d71ca19071090d524739420a61580f3f894618d10b666cf3d9a1688355b1"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c439fd54b2b9053717cca3de9583be6584b384d88d045f97d409f0ca867d80f"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f68996a3b3dc9335037f82754f9cdbe3a95db42bde571d8c3be26cc6245f2324"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7d68dc8acded354c972116f59b5eb2e5864432948e098c19fe6994926d8e15c3"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f963c6b1218b96db85fc37a9f0851eaf8b9040aa46dec112611697a7023da535"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a46859d7f947061b4010e554ccd1791467d1b1759f2dc2ec9055fa239f1bc26"}, - {file = "rpds_py-0.9.2-cp39-none-win32.whl", hash = "sha256:e07e5dbf8a83c66783a9fe2d4566968ea8c161199680e8ad38d53e075df5f0d0"}, - {file = "rpds_py-0.9.2-cp39-none-win_amd64.whl", hash = "sha256:682726178138ea45a0766907957b60f3a1bf3acdf212436be9733f28b6c5af3c"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:196cb208825a8b9c8fc360dc0f87993b8b260038615230242bf18ec84447c08d"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c7671d45530fcb6d5e22fd40c97e1e1e01965fc298cbda523bb640f3d923b387"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83b32f0940adec65099f3b1c215ef7f1d025d13ff947975a055989cb7fd019a4"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f67da97f5b9eac838b6980fc6da268622e91f8960e083a34533ca710bec8611"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03975db5f103997904c37e804e5f340c8fdabbb5883f26ee50a255d664eed58c"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:987b06d1cdb28f88a42e4fb8a87f094e43f3c435ed8e486533aea0bf2e53d931"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c861a7e4aef15ff91233751619ce3a3d2b9e5877e0fcd76f9ea4f6847183aa16"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02938432352359805b6da099c9c95c8a0547fe4b274ce8f1a91677401bb9a45f"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:ef1f08f2a924837e112cba2953e15aacfccbbfcd773b4b9b4723f8f2ddded08e"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:35da5cc5cb37c04c4ee03128ad59b8c3941a1e5cd398d78c37f716f32a9b7f67"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:141acb9d4ccc04e704e5992d35472f78c35af047fa0cfae2923835d153f091be"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:79f594919d2c1a0cc17d1988a6adaf9a2f000d2e1048f71f298b056b1018e872"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:a06418fe1155e72e16dddc68bb3780ae44cebb2912fbd8bb6ff9161de56e1798"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b2eb034c94b0b96d5eddb290b7b5198460e2d5d0c421751713953a9c4e47d10"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b08605d248b974eb02f40bdcd1a35d3924c83a2a5e8f5d0fa5af852c4d960af"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0805911caedfe2736935250be5008b261f10a729a303f676d3d5fea6900c96a"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab2299e3f92aa5417d5e16bb45bb4586171c1327568f638e8453c9f8d9e0f020"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c8d7594e38cf98d8a7df25b440f684b510cf4627fe038c297a87496d10a174f"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8b9ec12ad5f0a4625db34db7e0005be2632c1013b253a4a60e8302ad4d462afd"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1fcdee18fea97238ed17ab6478c66b2095e4ae7177e35fb71fbe561a27adf620"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:933a7d5cd4b84f959aedeb84f2030f0a01d63ae6cf256629af3081cf3e3426e8"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:686ba516e02db6d6f8c279d1641f7067ebb5dc58b1d0536c4aaebb7bf01cdc5d"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0173c0444bec0a3d7d848eaeca2d8bd32a1b43f3d3fde6617aac3731fa4be05f"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d576c3ef8c7b2d560e301eb33891d1944d965a4d7a2eacb6332eee8a71827db6"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed89861ee8c8c47d6beb742a602f912b1bb64f598b1e2f3d758948721d44d468"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1054a08e818f8e18910f1bee731583fe8f899b0a0a5044c6e680ceea34f93876"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99e7c4bb27ff1aab90dcc3e9d37ee5af0231ed98d99cb6f5250de28889a3d502"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c545d9d14d47be716495076b659db179206e3fd997769bc01e2d550eeb685596"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9039a11bca3c41be5a58282ed81ae422fa680409022b996032a43badef2a3752"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fb39aca7a64ad0c9490adfa719dbeeb87d13be137ca189d2564e596f8ba32c07"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2d8b3b3a2ce0eaa00c5bbbb60b6713e94e7e0becab7b3db6c5c77f979e8ed1f1"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:99b1c16f732b3a9971406fbfe18468592c5a3529585a45a35adbc1389a529a03"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c27ee01a6c3223025f4badd533bea5e87c988cb0ba2811b690395dfe16088cfe"}, - {file = "rpds_py-0.9.2.tar.gz", hash = "sha256:8d70e8f14900f2657c249ea4def963bed86a29b81f81f5b76b5a9215680de945"}, + {file = "rpds_py-0.10.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:c1e0e9916301e3b3d970814b1439ca59487f0616d30f36a44cead66ee1748c31"}, + {file = "rpds_py-0.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ce8caa29ebbdcde67e5fd652c811d34bc01f249dbc0d61e5cc4db05ae79a83b"}, + {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad277f74b1c164f7248afa968700e410651eb858d7c160d109fb451dc45a2f09"}, + {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8e1c68303ccf7fceb50fbab79064a2636119fd9aca121f28453709283dbca727"}, + {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:780fcb855be29153901c67fc9c5633d48aebef21b90aa72812fa181d731c6b00"}, + {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bbd7b24d108509a1b9b6679fcc1166a7dd031dbef1f3c2c73788f42e3ebb3beb"}, + {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0700c2133ba203c4068aaecd6a59bda22e06a5e46255c9da23cbf68c6942215d"}, + {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:576da63eae7809f375932bfcbca2cf20620a1915bf2fedce4b9cc8491eceefe3"}, + {file = "rpds_py-0.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:23750a9b8a329844ba1fe267ca456bb3184984da2880ed17ae641c5af8de3fef"}, + {file = "rpds_py-0.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d08395595c42bcd82c3608762ce734504c6d025eef1c06f42326a6023a584186"}, + {file = "rpds_py-0.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1d7b7b71bcb82d8713c7c2e9c5f061415598af5938666beded20d81fa23e7640"}, + {file = "rpds_py-0.10.0-cp310-none-win32.whl", hash = "sha256:97f5811df21703446b42303475b8b855ee07d6ab6cdf8565eff115540624f25d"}, + {file = "rpds_py-0.10.0-cp310-none-win_amd64.whl", hash = "sha256:cdbed8f21204398f47de39b0a9b180d7e571f02dfb18bf5f1b618e238454b685"}, + {file = "rpds_py-0.10.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:7a3a3d3e4f1e3cd2a67b93a0b6ed0f2499e33f47cc568e3a0023e405abdc0ff1"}, + {file = "rpds_py-0.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fc72ae476732cdb7b2c1acb5af23b478b8a0d4b6fcf19b90dd150291e0d5b26b"}, + {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0583f69522732bdd79dca4cd3873e63a29acf4a299769c7541f2ca1e4dd4bc6"}, + {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f8b9a7cd381970e64849070aca7c32d53ab7d96c66db6c2ef7aa23c6e803f514"}, + {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0d292cabd7c8335bdd3237ded442480a249dbcdb4ddfac5218799364a01a0f5c"}, + {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6903cdca64f1e301af9be424798328c1fe3b4b14aede35f04510989fc72f012"}, + {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bed57543c99249ab3a4586ddc8786529fbc33309e5e8a1351802a06ca2baf4c2"}, + {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15932ec5f224b0e35764dc156514533a4fca52dcfda0dfbe462a1a22b37efd59"}, + {file = "rpds_py-0.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eb2d59bc196e6d3b1827c7db06c1a898bfa0787c0574af398e65ccf2e97c0fbe"}, + {file = "rpds_py-0.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f99d74ddf9d3b6126b509e81865f89bd1283e3fc1b568b68cd7bd9dfa15583d7"}, + {file = "rpds_py-0.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f70bec8a14a692be6dbe7ce8aab303e88df891cbd4a39af091f90b6702e28055"}, + {file = "rpds_py-0.10.0-cp311-none-win32.whl", hash = "sha256:5f7487be65b9c2c510819e744e375bd41b929a97e5915c4852a82fbb085df62c"}, + {file = "rpds_py-0.10.0-cp311-none-win_amd64.whl", hash = "sha256:748e472345c3a82cfb462d0dff998a7bf43e621eed73374cb19f307e97e08a83"}, + {file = "rpds_py-0.10.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:d4639111e73997567343df6551da9dd90d66aece1b9fc26c786d328439488103"}, + {file = "rpds_py-0.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f4760e1b02173f4155203054f77a5dc0b4078de7645c922b208d28e7eb99f3e2"}, + {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a6420a36975e0073acaeee44ead260c1f6ea56812cfc6c31ec00c1c48197173"}, + {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:58fc4d66ee349a23dbf08c7e964120dc9027059566e29cf0ce6205d590ed7eca"}, + {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:063411228b852fb2ed7485cf91f8e7d30893e69b0acb207ec349db04cccc8225"}, + {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65af12f70355de29e1092f319f85a3467f4005e959ab65129cb697169ce94b86"}, + {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:298e8b5d8087e0330aac211c85428c8761230ef46a1f2c516d6a2f67fb8803c5"}, + {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5b9bf77008f2c55dabbd099fd3ac87009471d223a1c7ebea36873d39511b780a"}, + {file = "rpds_py-0.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c7853f27195598e550fe089f78f0732c66ee1d1f0eaae8ad081589a5a2f5d4af"}, + {file = "rpds_py-0.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:75dbfd41a61bc1fb0536bf7b1abf272dc115c53d4d77db770cd65d46d4520882"}, + {file = "rpds_py-0.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b25136212a3d064a8f0b9ebbb6c57094c5229e0de76d15c79b76feff26aeb7b8"}, + {file = "rpds_py-0.10.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:9affee8cb1ec453382c27eb9043378ab32f49cd4bc24a24275f5c39bf186c279"}, + {file = "rpds_py-0.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4d55528ef13af4b4e074d067977b1f61408602f53ae4537dccf42ba665c2c7bd"}, + {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7865df1fb564092bcf46dac61b5def25342faf6352e4bc0e61a286e3fa26a3d"}, + {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f5cc8c7bc99d2bbcd704cef165ca7d155cd6464c86cbda8339026a42d219397"}, + {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cbae50d352e4717ffc22c566afc2d0da744380e87ed44a144508e3fb9114a3f4"}, + {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fccbf0cd3411719e4c9426755df90bf3449d9fc5a89f077f4a7f1abd4f70c910"}, + {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d10c431073dc6ebceed35ab22948a016cc2b5120963c13a41e38bdde4a7212"}, + {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1b401e8b9aece651512e62c431181e6e83048a651698a727ea0eb0699e9f9b74"}, + {file = "rpds_py-0.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:7618a082c55cf038eede4a918c1001cc8a4411dfe508dc762659bcd48d8f4c6e"}, + {file = "rpds_py-0.10.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:b3226b246facae14909b465061ddcfa2dfeadb6a64f407f24300d42d69bcb1a1"}, + {file = "rpds_py-0.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a8edd467551c1102dc0f5754ab55cd0703431cd3044edf8c8e7d9208d63fa453"}, + {file = "rpds_py-0.10.0-cp38-none-win32.whl", hash = "sha256:71333c22f7cf5f0480b59a0aef21f652cf9bbaa9679ad261b405b65a57511d1e"}, + {file = "rpds_py-0.10.0-cp38-none-win_amd64.whl", hash = "sha256:a8ab1adf04ae2d6d65835995218fd3f3eb644fe20655ca8ee233e2c7270ff53b"}, + {file = "rpds_py-0.10.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:87c93b25d538c433fb053da6228c6290117ba53ff6a537c133b0f2087948a582"}, + {file = "rpds_py-0.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7996aed3f65667c6dcc8302a69368435a87c2364079a066750a2eac75ea01e"}, + {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8856aa76839dc234d3469f1e270918ce6bec1d6a601eba928f45d68a15f04fc3"}, + {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00215f6a9058fbf84f9d47536902558eb61f180a6b2a0fa35338d06ceb9a2e5a"}, + {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23a059143c1393015c68936370cce11690f7294731904bdae47cc3e16d0b2474"}, + {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e5c26905aa651cc8c0ddc45e0e5dea2a1296f70bdc96af17aee9d0493280a17"}, + {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c651847545422c8131660704c58606d841e228ed576c8f1666d98b3d318f89da"}, + {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:80992eb20755701753e30a6952a96aa58f353d12a65ad3c9d48a8da5ec4690cf"}, + {file = "rpds_py-0.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ffcf18ad3edf1c170e27e88b10282a2c449aa0358659592462448d71b2000cfc"}, + {file = "rpds_py-0.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:08e08ccf5b10badb7d0a5c84829b914c6e1e1f3a716fdb2bf294e2bd01562775"}, + {file = "rpds_py-0.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7150b83b3e3ddaac81a8bb6a9b5f93117674a0e7a2b5a5b32ab31fdfea6df27f"}, + {file = "rpds_py-0.10.0-cp39-none-win32.whl", hash = "sha256:3455ecc46ea443b5f7d9c2f946ce4017745e017b0d0f8b99c92564eff97e97f5"}, + {file = "rpds_py-0.10.0-cp39-none-win_amd64.whl", hash = "sha256:afe6b5a04b2ab1aa89bad32ca47bf71358e7302a06fdfdad857389dca8fb5f04"}, + {file = "rpds_py-0.10.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:b1cb078f54af0abd835ca76f93a3152565b73be0f056264da45117d0adf5e99c"}, + {file = "rpds_py-0.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8e7e2b3577e97fa43c2c2b12a16139b2cedbd0770235d5179c0412b4794efd9b"}, + {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae46a50d235f1631d9ec4670503f7b30405103034830bc13df29fd947207f795"}, + {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f869e34d2326e417baee430ae998e91412cc8e7fdd83d979277a90a0e79a5b47"}, + {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d544a614055b131111bed6edfa1cb0fb082a7265761bcb03321f2dd7b5c6c48"}, + {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ee9c2f6ca9774c2c24bbf7b23086264e6b5fa178201450535ec0859739e6f78d"}, + {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2da4a8c6d465fde36cea7d54bf47b5cf089073452f0e47c8632ecb9dec23c07"}, + {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac00c41dd315d147b129976204839ca9de699d83519ff1272afbe4fb9d362d12"}, + {file = "rpds_py-0.10.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:0155c33af0676fc38e1107679be882077680ad1abb6303956b97259c3177e85e"}, + {file = "rpds_py-0.10.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:db6585b600b2e76e98131e0ac0e5195759082b51687ad0c94505970c90718f4a"}, + {file = "rpds_py-0.10.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:7b6975d3763d0952c111700c0634968419268e6bbc0b55fe71138987fa66f309"}, + {file = "rpds_py-0.10.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:6388e4e95a26717b94a05ced084e19da4d92aca883f392dffcf8e48c8e221a24"}, + {file = "rpds_py-0.10.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:18f87baa20e02e9277ad8960cd89b63c79c05caf106f4c959a9595c43f2a34a5"}, + {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92f05fc7d832e970047662b3440b190d24ea04f8d3c760e33e7163b67308c878"}, + {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:291c9ce3929a75b45ce8ddde2aa7694fc8449f2bc8f5bd93adf021efaae2d10b"}, + {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:861d25ae0985a1dd5297fee35f476b60c6029e2e6e19847d5b4d0a43a390b696"}, + {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:668d2b45d62c68c7a370ac3dce108ffda482b0a0f50abd8b4c604a813a59e08f"}, + {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:344b89384c250ba6a4ce1786e04d01500e4dac0f4137ceebcaad12973c0ac0b3"}, + {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:885e023e73ce09b11b89ab91fc60f35d80878d2c19d6213a32b42ff36543c291"}, + {file = "rpds_py-0.10.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:841128a22e6ac04070a0f84776d07e9c38c4dcce8e28792a95e45fc621605517"}, + {file = "rpds_py-0.10.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:899b5e7e2d5a8bc92aa533c2d4e55e5ebba095c485568a5e4bedbc163421259a"}, + {file = "rpds_py-0.10.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e7947d9a6264c727a556541b1630296bbd5d0a05068d21c38dde8e7a1c703ef0"}, + {file = "rpds_py-0.10.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4992266817169997854f81df7f6db7bdcda1609972d8ffd6919252f09ec3c0f6"}, + {file = "rpds_py-0.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:26d9fd624649a10e4610fab2bc820e215a184d193e47d0be7fe53c1c8f67f370"}, + {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0028eb0967942d0d2891eae700ae1a27b7fd18604cfcb16a1ef486a790fee99e"}, + {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f9e7e493ded7042712a374471203dd43ae3fff5b81e3de1a0513fa241af9fd41"}, + {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2d68a8e8a3a816629283faf82358d8c93fe5bd974dd2704152394a3de4cec22a"}, + {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6d5f061f6a2aa55790b9e64a23dfd87b6664ab56e24cd06c78eb43986cb260b"}, + {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c7c4266c1b61eb429e8aeb7d8ed6a3bfe6c890a1788b18dbec090c35c6b93fa"}, + {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:80772e3bda6787510d9620bc0c7572be404a922f8ccdfd436bf6c3778119464c"}, + {file = "rpds_py-0.10.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b98e75b21fc2ba5285aef8efaf34131d16af1c38df36bdca2f50634bea2d3060"}, + {file = "rpds_py-0.10.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:d63787f289944cc4bde518ad2b5e70a4f0d6e2ce76324635359c74c113fd188f"}, + {file = "rpds_py-0.10.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:872f3dcaa8bf2245944861d7311179d2c0c9b2aaa7d3b464d99a7c2e401f01fa"}, + {file = "rpds_py-0.10.0.tar.gz", hash = "sha256:e36d7369363d2707d5f68950a64c4e025991eb0177db01ccb6aa6facae48b69f"}, ] [[package]] @@ -4253,7 +4309,8 @@ files = [ {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:1a6391a7cabb7641c32517539ca42cf84b87b667bad38b78d4d42dd23e957c81"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9c7617df90c1365638916b98cdd9be833d31d337dbcd722485597b43c4a215bf"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win32.whl", hash = "sha256:f6d3d39611ac2e4f62c3128a9eed45f19a6608670c5a2f4f07f24e8de3441d38"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:da538167284de58a52109a9b89b8f6a53ff8437dd6dc26d33b57bf6699153122"}, @@ -4400,30 +4457,36 @@ tests = ["black (>=23.3.0)", "matplotlib (>=3.1.3)", "mypy (>=1.3)", "numpydoc ( [[package]] name = "scipy" -version = "1.11.1" +version = "1.11.2" description = "Fundamental algorithms for scientific computing in Python" optional = false python-versions = "<3.13,>=3.9" files = [ - {file = "scipy-1.11.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:aec8c62fbe52914f9cf28d846cf0401dd80ab80788bbab909434eb336ed07c04"}, - {file = "scipy-1.11.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:3b9963798df1d8a52db41a6fc0e6fa65b1c60e85d73da27ae8bb754de4792481"}, - {file = "scipy-1.11.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e8eb42db36526b130dfbc417609498a6192381abc1975b91e3eb238e0b41c1a"}, - {file = "scipy-1.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:366a6a937110d80dca4f63b3f5b00cc89d36f678b2d124a01067b154e692bab1"}, - {file = "scipy-1.11.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:08d957ca82d3535b3b9ba6c8ff355d78fe975271874e2af267cb5add5bd78625"}, - {file = "scipy-1.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:e866514bc2d660608447b6ba95c8900d591f2865c07cca0aa4f7ff3c4ca70f30"}, - {file = "scipy-1.11.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba94eeef3c9caa4cea7b402a35bb02a5714ee1ee77eb98aca1eed4543beb0f4c"}, - {file = "scipy-1.11.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:512fdc18c65f76dadaca139348e525646d440220d8d05f6d21965b8d4466bccd"}, - {file = "scipy-1.11.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cce154372f0ebe88556ed06d7b196e9c2e0c13080ecb58d0f35062dc7cc28b47"}, - {file = "scipy-1.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4bb943010203465ac81efa392e4645265077b4d9e99b66cf3ed33ae12254173"}, - {file = "scipy-1.11.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:249cfa465c379c9bb2c20123001e151ff5e29b351cbb7f9c91587260602c58d0"}, - {file = "scipy-1.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:ffb28e3fa31b9c376d0fb1f74c1f13911c8c154a760312fbee87a21eb21efe31"}, - {file = "scipy-1.11.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:39154437654260a52871dfde852adf1b93b1d1bc5dc0ffa70068f16ec0be2624"}, - {file = "scipy-1.11.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:b588311875c58d1acd4ef17c983b9f1ab5391755a47c3d70b6bd503a45bfaf71"}, - {file = "scipy-1.11.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d51565560565a0307ed06fa0ec4c6f21ff094947d4844d6068ed04400c72d0c3"}, - {file = "scipy-1.11.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b41a0f322b4eb51b078cb3441e950ad661ede490c3aca66edef66f4b37ab1877"}, - {file = "scipy-1.11.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:396fae3f8c12ad14c5f3eb40499fd06a6fef8393a6baa352a652ecd51e74e029"}, - {file = "scipy-1.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:be8c962a821957fdde8c4044efdab7a140c13294997a407eaee777acf63cbf0c"}, - {file = "scipy-1.11.1.tar.gz", hash = "sha256:fb5b492fa035334fd249f0973cc79ecad8b09c604b42a127a677b45a9a3d4289"}, + {file = "scipy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2b997a5369e2d30c97995dcb29d638701f8000d04df01b8e947f206e5d0ac788"}, + {file = "scipy-1.11.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:95763fbda1206bec41157582bea482f50eb3702c85fffcf6d24394b071c0e87a"}, + {file = "scipy-1.11.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e367904a0fec76433bf3fbf3e85bf60dae8e9e585ffd21898ab1085a29a04d16"}, + {file = "scipy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d690e1ca993c8f7ede6d22e5637541217fc6a4d3f78b3672a6fe454dbb7eb9a7"}, + {file = "scipy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d2b813bfbe8dec6a75164523de650bad41f4405d35b0fa24c2c28ae07fcefb20"}, + {file = "scipy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:afdb0d983f6135d50770dd979df50bf1c7f58b5b33e0eb8cf5c73c70600eae1d"}, + {file = "scipy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d9886f44ef8c9e776cb7527fb01455bf4f4a46c455c4682edc2c2cc8cd78562"}, + {file = "scipy-1.11.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1342ca385c673208f32472830c10110a9dcd053cf0c4b7d4cd7026d0335a6c1d"}, + {file = "scipy-1.11.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b133f237bd8ba73bad51bc12eb4f2d84cbec999753bf25ba58235e9fc2096d80"}, + {file = "scipy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aeb87661de987f8ec56fa6950863994cd427209158255a389fc5aea51fa7055"}, + {file = "scipy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:90d3b1364e751d8214e325c371f0ee0dd38419268bf4888b2ae1040a6b266b2a"}, + {file = "scipy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:f73102f769ee06041a3aa26b5841359b1a93cc364ce45609657751795e8f4a4a"}, + {file = "scipy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa4909c6c20c3d91480533cddbc0e7c6d849e7d9ded692918c76ce5964997898"}, + {file = "scipy-1.11.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ac74b1512d38718fb6a491c439aa7b3605b96b1ed3be6599c17d49d6c60fca18"}, + {file = "scipy-1.11.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8425fa963a32936c9773ee3ce44a765d8ff67eed5f4ac81dc1e4a819a238ee9"}, + {file = "scipy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:542a757e2a6ec409e71df3d8fd20127afbbacb1c07990cb23c5870c13953d899"}, + {file = "scipy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ea932570b1c2a30edafca922345854ff2cd20d43cd9123b6dacfdecebfc1a80b"}, + {file = "scipy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:4447ad057d7597476f9862ecbd9285bbf13ba9d73ce25acfa4e4b11c6801b4c9"}, + {file = "scipy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b0620240ef445b5ddde52460e6bc3483b7c9c750275369379e5f609a1050911c"}, + {file = "scipy-1.11.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:f28f1f6cfeb48339c192efc6275749b2a25a7e49c4d8369a28b6591da02fbc9a"}, + {file = "scipy-1.11.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:214cdf04bbae7a54784f8431f976704ed607c4bc69ba0d5d5d6a9df84374df76"}, + {file = "scipy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10eb6af2f751aa3424762948e5352f707b0dece77288206f227864ddf675aca0"}, + {file = "scipy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0f3261f14b767b316d7137c66cc4f33a80ea05841b9c87ad83a726205b901423"}, + {file = "scipy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:2c91cf049ffb5575917f2a01da1da082fd24ed48120d08a6e7297dfcac771dcd"}, + {file = "scipy-1.11.2.tar.gz", hash = "sha256:b29318a5e39bd200ca4381d80b065cdf3076c7d7281c5e36569e99273867f61d"}, ] [package.dependencies] @@ -4436,18 +4499,18 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo [[package]] name = "setuptools" -version = "68.0.0" +version = "68.1.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"}, - {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"}, + {file = "setuptools-68.1.2-py3-none-any.whl", hash = "sha256:3d8083eed2d13afc9426f227b24fd1659489ec107c0e86cec2ffdde5c92e790b"}, + {file = "setuptools-68.1.2.tar.gz", hash = "sha256:3d4dfa6d95f1b101d695a6160a7626e15583af71a5f52176efa5d39a054d475d"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5,<=7.1.2)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] @@ -4594,13 +4657,13 @@ markdown = ">=3.4" [[package]] name = "sphinxcontrib-applehelp" -version = "1.0.6" +version = "1.0.7" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_applehelp-1.0.6-py3-none-any.whl", hash = "sha256:c0578efa23cab5a2f3aaa8af5691b952433f4fdfaac255befd3452448e7ea4a4"}, - {file = "sphinxcontrib_applehelp-1.0.6.tar.gz", hash = "sha256:a59274de7a952a99af36b8a5092352d9249279c0e3280b7dceaae8e15873c942"}, + {file = "sphinxcontrib_applehelp-1.0.7-py3-none-any.whl", hash = "sha256:094c4d56209d1734e7d252f6e0b3ccc090bd52ee56807a5d9315b19c122ab15d"}, + {file = "sphinxcontrib_applehelp-1.0.7.tar.gz", hash = "sha256:39fdc8d762d33b01a7d8f026a3b7d71563ea3b72787d5f00ad8465bd9d6dfbfa"}, ] [package.dependencies] @@ -4630,13 +4693,13 @@ Sphinx = ">=2.1" [[package]] name = "sphinxcontrib-devhelp" -version = "1.0.4" +version = "1.0.5" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_devhelp-1.0.4-py3-none-any.whl", hash = "sha256:d4e20a17f78865d4096733989b5efa0d5e7743900e98e1f6ecd6f489380febc8"}, - {file = "sphinxcontrib_devhelp-1.0.4.tar.gz", hash = "sha256:4fd751c63dc40895ac8740948f26bf1a3c87e4e441cc008672abd1cb2bc8a3d1"}, + {file = "sphinxcontrib_devhelp-1.0.5-py3-none-any.whl", hash = "sha256:fe8009aed765188f08fcaadbb3ea0d90ce8ae2d76710b7e29ea7d047177dae2f"}, + {file = "sphinxcontrib_devhelp-1.0.5.tar.gz", hash = "sha256:63b41e0d38207ca40ebbeabcf4d8e51f76c03e78cd61abe118cf4435c73d4212"}, ] [package.dependencies] @@ -4648,13 +4711,13 @@ test = ["pytest"] [[package]] name = "sphinxcontrib-htmlhelp" -version = "2.0.3" +version = "2.0.4" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_htmlhelp-2.0.3-py3-none-any.whl", hash = "sha256:abee4e6c5471203ad2fc40dc6a16ed99884a5d6b15a6f79c9269a7e82cf04149"}, - {file = "sphinxcontrib_htmlhelp-2.0.3.tar.gz", hash = "sha256:14358d0f88ccf58447f2b54343cdcc0012f32de2f8d27cf934fdbc0b362f9597"}, + {file = "sphinxcontrib_htmlhelp-2.0.4-py3-none-any.whl", hash = "sha256:8001661c077a73c29beaf4a79968d0726103c5605e27db92b9ebed8bab1359e9"}, + {file = "sphinxcontrib_htmlhelp-2.0.4.tar.gz", hash = "sha256:6c26a118a05b76000738429b724a0568dbde5b72391a688577da08f11891092a"}, ] [package.dependencies] @@ -4680,13 +4743,13 @@ test = ["flake8", "mypy", "pytest"] [[package]] name = "sphinxcontrib-qthelp" -version = "1.0.5" +version = "1.0.6" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_qthelp-1.0.5-py3-none-any.whl", hash = "sha256:962730a6ad15d21fd6760b14c9e95c00a097413595aa6ee871dd9dfa4b002a16"}, - {file = "sphinxcontrib_qthelp-1.0.5.tar.gz", hash = "sha256:d31d1a1beaf3894866bb318fb712f1edc82687f1c06235a01e5b2c50c36d5c40"}, + {file = "sphinxcontrib_qthelp-1.0.6-py3-none-any.whl", hash = "sha256:bf76886ee7470b934e363da7a954ea2825650013d367728588732c7350f49ea4"}, + {file = "sphinxcontrib_qthelp-1.0.6.tar.gz", hash = "sha256:62b9d1a186ab7f5ee3356d906f648cacb7a6bdb94d201ee7adf26db55092982d"}, ] [package.dependencies] @@ -4698,13 +4761,13 @@ test = ["pytest"] [[package]] name = "sphinxcontrib-serializinghtml" -version = "1.1.7" +version = "1.1.9" 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.7-py3-none-any.whl", hash = "sha256:424164fc3a8b4355a29d5ea8b7f18199022d160c8f7b96e68bb6c50217729b87"}, - {file = "sphinxcontrib_serializinghtml-1.1.7.tar.gz", hash = "sha256:ca31afee32e1508cff4034e258060ce2c81a3b1c49e77da60fdb61f0e7a73c22"}, + {file = "sphinxcontrib_serializinghtml-1.1.9-py3-none-any.whl", hash = "sha256:9b36e503703ff04f20e9675771df105e58aa029cfcbc23b8ed716019b7416ae1"}, + {file = "sphinxcontrib_serializinghtml-1.1.9.tar.gz", hash = "sha256:0c64ff898339e1fac29abd2bf5f11078f3ec413cfe9c046d3120d7ca65530b54"}, ] [package.dependencies] @@ -4778,13 +4841,13 @@ widechars = ["wcwidth"] [[package]] name = "tenacity" -version = "8.2.2" +version = "8.2.3" description = "Retry code until it succeeds" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "tenacity-8.2.2-py3-none-any.whl", hash = "sha256:2f277afb21b851637e8f52e6a613ff08734c347dc19ade928e519d7d2d8569b0"}, - {file = "tenacity-8.2.2.tar.gz", hash = "sha256:43af037822bd0029025877f3b2d97cc4d7bb0c2991000a3d59d71517c5c969e0"}, + {file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"}, + {file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"}, ] [package.extras] @@ -5201,13 +5264,13 @@ files = [ [[package]] name = "xarray" -version = "2023.7.0" +version = "2023.8.0" description = "N-D labeled arrays and datasets in Python" optional = false python-versions = ">=3.9" files = [ - {file = "xarray-2023.7.0-py3-none-any.whl", hash = "sha256:af8b55bf78b792b8ad9326eb9d89980602f1a51e93d8465b445aeea3accca27e"}, - {file = "xarray-2023.7.0.tar.gz", hash = "sha256:dace2fdbf1b7ff185d9c1226a24bf83c2ae52f3253dbfe80e17d1162600d055c"}, + {file = "xarray-2023.8.0-py3-none-any.whl", hash = "sha256:eb42b56aea2c7d5db2a7d0c33fb005b78eb5c4421eb747f2ced138c70b5c204e"}, + {file = "xarray-2023.8.0.tar.gz", hash = "sha256:825c6d64202a731a4e49321edd1e9dfabf4be06802f1b8c8a3c00a3ebfc8cedf"}, ] [package.dependencies] @@ -5317,4 +5380,4 @@ zh = ["laboneq"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.12" -content-hash = "4d81fe41131551f98b465df677234907a81958063184f26e789bb67f96bb53cc" +content-hash = "01fc9617d5a223932fb3b5d2bf40cdd035bc3c728f36cfe8a0dc84b96bfee83f" diff --git a/pyproject.toml b/pyproject.toml index f4af97d3b..ae57d295e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,7 @@ include = ["*.out", "*.yml"] [tool.poetry.dependencies] python = ">=3.9,<3.12" -qibo = ">=0.1.16,<0.3" +qibo = ">=0.2.0,<0.3" networkx = "^3.0" more-itertools = "^9.1.0" pyyaml = "^6.0" diff --git a/src/qibolab/serialize.py b/src/qibolab/serialize.py index b325ebc8c..b83bdac16 100644 --- a/src/qibolab/serialize.py +++ b/src/qibolab/serialize.py @@ -70,6 +70,7 @@ def load_couplers(runcard: dict) -> Tuple[CouplerMap, CouplerPairMap]: return couplers, coupler_pairs +# This creates the compiler error def register_gates( runcard: dict, qubits: QubitMap, pairs: QubitPairMap, couplers: CouplerMap = None ) -> Tuple[QubitMap, QubitPairMap]: diff --git a/tests/dummy_qrc/qblox.py b/tests/dummy_qrc/qblox.py index 36a4d269b..606315baa 100644 --- a/tests/dummy_qrc/qblox.py +++ b/tests/dummy_qrc/qblox.py @@ -26,7 +26,7 @@ ) from qibolab.instruments.rohde_schwarz import SGS100A from qibolab.platform import Platform -from qibolab.serialize import load_qubits, load_runcard, load_settings +from qibolab.serialize import load_qubits, load_runcard, load_settings, register_gates NAME = "qblox" ADDRESS = "192.168.0.6" @@ -229,6 +229,7 @@ def instantiate_module(modules, cls, name, address, settings): for q in range(5): qubits[q].flux.max_bias = 2.5 + qubits, pairs = register_gates(runcard, qubits, pairs) instruments = {controller.name: controller, twpa_pump.name: twpa_pump} settings = load_settings(runcard) return Platform("qblox", qubits, pairs, instruments, settings, resonator_type="2D") diff --git a/tests/dummy_qrc/qm.py b/tests/dummy_qrc/qm.py index f5eb53573..847916bfe 100644 --- a/tests/dummy_qrc/qm.py +++ b/tests/dummy_qrc/qm.py @@ -4,7 +4,7 @@ from qibolab.instruments.oscillator import LocalOscillator from qibolab.instruments.qm import QMSim from qibolab.platform import Platform -from qibolab.serialize import load_qubits, load_runcard, load_settings +from qibolab.serialize import load_qubits, load_runcard, load_settings, register_gates RUNCARD = pathlib.Path(__file__).parent / "qm.yml" @@ -92,6 +92,7 @@ def create(runcard_path=RUNCARD): for q in range(5): qubits[q].flux.max_bias = 0.2 + qubits, pairs = register_gates(runcard, qubits, pairs) instruments = {controller.name: controller} instruments.update({lo.name: lo for lo in local_oscillators}) settings = load_settings(runcard) diff --git a/tests/dummy_qrc/rfsoc.py b/tests/dummy_qrc/rfsoc.py index cc77aab2b..79f6bd67c 100644 --- a/tests/dummy_qrc/rfsoc.py +++ b/tests/dummy_qrc/rfsoc.py @@ -5,7 +5,7 @@ from qibolab.instruments.rfsoc import RFSoC from qibolab.instruments.rohde_schwarz import SGS100A from qibolab.platform import Platform -from qibolab.serialize import load_qubits, load_runcard, load_settings +from qibolab.serialize import load_qubits, load_runcard, load_settings, register_gates RUNCARD = pathlib.Path(__file__).parent / "rfsoc.yml" @@ -41,6 +41,7 @@ def create(runcard_path=RUNCARD): qubits[0].drive = channels["L3-18_qd"] qubits[0].flux = channels["L2-22_qf"] + qubits, pairs = register_gates(runcard, qubits, pairs) instruments = {inst.name: inst for inst in [controller, lo_twpa, lo_era]} settings = load_settings(runcard) return Platform("rfsoc", qubits, pairs, instruments, settings, resonator_type="3D") diff --git a/tests/dummy_qrc/zurich.py b/tests/dummy_qrc/zurich.py index 96e5a7904..97d5bd650 100644 --- a/tests/dummy_qrc/zurich.py +++ b/tests/dummy_qrc/zurich.py @@ -7,7 +7,13 @@ from qibolab.instruments.oscillator import LocalOscillator from qibolab.instruments.zhinst import Zurich from qibolab.platform import Platform -from qibolab.serialize import load_qubits, load_runcard, load_settings +from qibolab.serialize import ( + load_couplers, + load_qubits, + load_runcard, + load_settings, + register_gates, +) RUNCARD = pathlib.Path(__file__).parent / "zurich.yml" @@ -133,6 +139,8 @@ def create(runcard_path=RUNCARD): # create qubit objects from runcard runcard = load_runcard(runcard_path) qubits, pairs = load_qubits(runcard) + couplers, coupler_pairs = load_couplers(runcard) + settings = load_settings(runcard) # assign channels to qubits and sweetspots(operating points) for q in range(0, 5): @@ -152,11 +160,19 @@ def create(runcard_path=RUNCARD): qubits[f"c{c}"].flux = channels[f"L4-{10 + c}"] channels[f"L4-{10 + c}"].qubit = qubits[f"c{c}"] + # FIXME: Call couplers by its name + # assign couplers to qubits + for c in itertools.chain(range(0, 2), range(3, 5)): + qubits[c].flux_coupler[c] = couplers[c].name + qubits[2].flux_coupler[c] = couplers[c].name + + # FIXME: Call couplers by its name # assign qubits to couplers for c in itertools.chain(range(0, 2), range(3, 5)): - qubits[f"c{c}"].flux_coupler = [qubits[c]] - qubits[f"c{c}"].flux_coupler.append(qubits[2]) + couplers[c].qubits = [qubits[c].name] + couplers[c].qubits.append(qubits[2].name) + qubits, pairs = register_gates(runcard, qubits, pairs, couplers) instruments = {controller.name: controller} instruments.update({lo.name: lo for lo in local_oscillators}) settings = load_settings(runcard) From 7e404be9a2faa533b287d60b0efa48b2c8ae9082 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 29 Aug 2023 16:21:36 +0400 Subject: [PATCH 21/52] more more fixes --- tests/dummy_qrc/zurich.py | 10 ++++----- tests/dummy_qrc/zurich.yml | 44 ++++++++++---------------------------- 2 files changed, 15 insertions(+), 39 deletions(-) diff --git a/tests/dummy_qrc/zurich.py b/tests/dummy_qrc/zurich.py index 97d5bd650..a0f818dec 100644 --- a/tests/dummy_qrc/zurich.py +++ b/tests/dummy_qrc/zurich.py @@ -153,12 +153,10 @@ def create(runcard_path=RUNCARD): channels[f"L4-{6 + q}"].qubit = qubits[q] # assign channels to couplers and sweetspots(operating points) - for c in range(0, 2): - qubits[f"c{c}"].flux = channels[f"L4-{11 + c}"] - channels[f"L4-{11 + c}"].qubit = qubits[f"c{c}"] - for c in range(3, 5): - qubits[f"c{c}"].flux = channels[f"L4-{10 + c}"] - channels[f"L4-{10 + c}"].qubit = qubits[f"c{c}"] + for c, coupler in couplers.items(): + coupler.flux = channels[f"L4-{11 + c}"] + # Is this needed ? + # channels[f"L4-{11 + c}"].qubit = qubits[f"c{c}"] # FIXME: Call couplers by its name # assign couplers to qubits diff --git a/tests/dummy_qrc/zurich.yml b/tests/dummy_qrc/zurich.yml index 159a611c1..39d577548 100644 --- a/tests/dummy_qrc/zurich.yml +++ b/tests/dummy_qrc/zurich.yml @@ -5,7 +5,8 @@ settings: sampling_rate: 2.e+9 relaxation_time: 300_000 -qubits: [0, 1, 2, 3, 4, "c0", "c1", "c3", "c4"] +qubits: [0, 1, 2, 3, 4] +couplers: [0, 1, 3, 4] topology: [[0, 2], [1, 2], [2, 3], [2, 4]] @@ -105,10 +106,6 @@ native_gates: type: ro # readout relative_start: 0 phase: 0 - c0: {} - c1: {} - c3: {} - c4: {} two_qubit: 1-2: @@ -209,31 +206,12 @@ characterization: # parameters for single shot classification threshold: 0.233806 #0.370954 #0.350665 iq_angle: 0.481 # -91.712 #191.016 - "c0": - sweetspot: 0. - # To save power values on the runcard - # flux_range: -0 - "c1": - sweetspot: 0. - # To save power values on the runcard - # flux_range: -0 - "c3": - sweetspot: 0. - # To save power values on the runcard - # flux_range: -0 - "c4": - sweetspot: 0. #0.8 #0.16 - # To save power values on the runcard - # flux_range: -0 - # two_qubit: - - # two_qubit_couplers: - # 0: - # # frequency: 3_753_000_000 or 3_503_000_000 - # sweetspot: 0.1 - # 1: - # sweetspot: 0.0 - # 3: - # sweetspot: 0.0 - # 4: - # sweetspot: 0.0 + coupler: + 0: + sweetspot: 0.0 + 1: + sweetspot: 0.0 + 3: + sweetspot: 0.0 + 4: + sweetspot: 0.0 From c60ec28241b36a7e9f6a0e467e74cc2af7094980 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 29 Aug 2023 19:13:00 +0400 Subject: [PATCH 22/52] remove unused --- tests/dummy_qrc/zurich.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tests/dummy_qrc/zurich.py b/tests/dummy_qrc/zurich.py index a0f818dec..c89ecd902 100644 --- a/tests/dummy_qrc/zurich.py +++ b/tests/dummy_qrc/zurich.py @@ -164,12 +164,6 @@ def create(runcard_path=RUNCARD): qubits[c].flux_coupler[c] = couplers[c].name qubits[2].flux_coupler[c] = couplers[c].name - # FIXME: Call couplers by its name - # assign qubits to couplers - for c in itertools.chain(range(0, 2), range(3, 5)): - couplers[c].qubits = [qubits[c].name] - couplers[c].qubits.append(qubits[2].name) - qubits, pairs = register_gates(runcard, qubits, pairs, couplers) instruments = {controller.name: controller} instruments.update({lo.name: lo for lo in local_oscillators}) From dc976dbeb3a83a1deef05ff151a73ca163b083af Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 29 Aug 2023 21:26:37 +0400 Subject: [PATCH 23/52] fixes --- src/qibolab/instruments/zhinst.py | 173 ++++++++++++++++++------------ src/qibolab/pulses.py | 3 +- src/qibolab/sweeper.py | 9 +- tests/dummy_qrc/zurich.py | 11 +- tests/test_instruments_zhinst.py | 163 +++++++++++++++++++++++++--- 5 files changed, 272 insertions(+), 87 deletions(-) diff --git a/src/qibolab/instruments/zhinst.py b/src/qibolab/instruments/zhinst.py index 0ffae96df..8e849743f 100644 --- a/src/qibolab/instruments/zhinst.py +++ b/src/qibolab/instruments/zhinst.py @@ -19,7 +19,7 @@ from qibolab import AcquisitionType, AveragingMode, ExecutionParameters from qibolab.instruments.abstract import INSTRUMENTS_DATA_FOLDER, Controller from qibolab.instruments.port import Port -from qibolab.pulses import FluxPulse, PulseSequence, PulseType +from qibolab.pulses import CouplerFluxPulse, FluxPulse, PulseSequence, PulseType from qibolab.sweeper import Parameter # this env var just needs to be set @@ -349,35 +349,35 @@ def disconnect(self): def setup(self, *args, **kwargs): """Empty method to comply with Instrument interface.""" - def calibration_step(self, qubits, options): + def calibration_step(self, qubits, couplers, options): """ Zurich general pre experiment calibration definitions Change to get frequencies from sequence """ + for coupler in couplers.values(): + self.register_couplerflux_line(coupler) + for qubit in qubits.values(): - if qubit.flux_coupler: + if qubit.flux is not None: self.register_flux_line(qubit) - else: - if qubit.flux is not None: - self.register_flux_line(qubit) - if len(self.sequence[f"drive{qubit.name}"]) != 0: - self.register_drive_line( - qubit=qubit, - intermediate_frequency=qubit.drive_frequency - qubit.drive.local_oscillator.frequency, - ) - if len(self.sequence[f"readout{qubit.name}"]) != 0: - self.register_readout_line( - qubit=qubit, - intermediate_frequency=qubit.readout_frequency - qubit.readout.local_oscillator.frequency, - ) - if options.fast_reset is not False: - if len(self.sequence[f"drive{qubit.name}"]) == 0: - self.register_drive_line( - qubit=qubit, - intermediate_frequency=qubit.drive_frequency - qubit.drive.local_oscillator.frequency, - ) + if len(self.sequence[f"drive{qubit.name}"]) != 0: + self.register_drive_line( + qubit=qubit, + intermediate_frequency=qubit.drive_frequency - qubit.drive.local_oscillator.frequency, + ) + if len(self.sequence[f"readout{qubit.name}"]) != 0: + self.register_readout_line( + qubit=qubit, + intermediate_frequency=qubit.readout_frequency - qubit.readout.local_oscillator.frequency, + ) + if options.fast_reset is not False: + if len(self.sequence[f"drive{qubit.name}"]) == 0: + self.register_drive_line( + qubit=qubit, + intermediate_frequency=qubit.drive_frequency - qubit.drive.local_oscillator.frequency, + ) self.device_setup.set_calibration(self.calibration) def register_readout_line(self, qubit, intermediate_frequency): @@ -464,6 +464,19 @@ def register_flux_line(self, qubit): voltage_offset=qubit.flux.offset, ) + def register_couplerflux_line(self, coupler): + """Registers qubit flux line to calibration and signal map.""" + c = coupler.name # pylint: disable=C0103 + self.signal_map[f"couplerflux{c}"] = self.device_setup.logical_signal_groups[f"qc{c}"].logical_signals[ + "flux_line" + ] + self.calibration[f"/logical_signal_groups/qc{c}/flux_line"] = lo.SignalCalibration( + range=coupler.flux.power_range, + port_delay=None, + delay_signal=0, + voltage_offset=coupler.flux.offset, + ) + def run_exp(self): """Compilation settings, compilation step, execution step and data retrival""" self.exp = self.session.compile(self.experiment, compiler_settings=COMPILER_SETTINGS) @@ -480,14 +493,14 @@ def frequency_from_pulses(qubits, sequence): if pulse.type is PulseType.DRIVE: qubit.drive_frequency = pulse.frequency - def experiment_flow(self, qubits, sequence, options, sweepers=[]): + def experiment_flow(self, qubits, couplers, sequence, options, sweepers=[]): """ Create the experiment object for the devices, following the steps separated one on each method: Translation, Calibration, Experiment Definition. """ - self.sequence_zh(sequence, qubits, sweepers) - self.calibration_step(qubits, options) - self.create_exp(qubits, options) + self.sequence_zh(sequence, qubits, couplers, sweepers) + self.calibration_step(qubits, couplers, options) + self.create_exp(qubits, couplers, options) # pylint: disable=W0221 def play(self, qubits, sequence, options): @@ -505,8 +518,6 @@ def play(self, qubits, sequence, options): # Get the results back results = {} for qubit in qubits.values(): - if qubit.flux_coupler: - continue q = qubit.name # pylint: disable=C0103 if len(self.sequence[f"readout{q}"]) != 0: for i, ropulse in enumerate(self.sequence[f"readout{q}"]): @@ -530,7 +541,7 @@ def play(self, qubits, sequence, options): # lo.show_pulse_sheet("pulses", self.exp) return results - def sequence_zh(self, sequence, qubits, sweepers): + def sequence_zh(self, sequence, qubits, couplers, sweepers): """Qibo sequence to Zurich sequence""" # Define and assign the sequence @@ -538,8 +549,12 @@ def sequence_zh(self, sequence, qubits, sweepers): self.sequence_qibo = sequence # Fill the sequences with pulses according to their lines in temporal order + # TODO: Recheck couplers for pulse in sequence: - zhsequence[f"{pulse.type.name.lower()}{pulse.qubit}"].append(ZhPulse(pulse)) + if isinstance(pulse, CouplerFluxPulse): + zhsequence[f"{pulse.type.name.lower()}{pulse.coupler}"].append(ZhPulse(pulse)) + else: + zhsequence[f"{pulse.type.name.lower()}{pulse.qubit}"].append(ZhPulse(pulse)) # Mess that gets the sweeper and substitutes the pulse it sweeps in the right place @@ -562,6 +577,7 @@ def nt_loop(sweeper): nt_loop(sweeper) for element in aux_list: if pulse == element.pulse: + # TODO: Recheck couplers if isinstance(aux_list[aux_list.index(element)], ZhPulse): aux_list[aux_list.index(element)] = ZhSweeper(pulse, sweeper, qubits[pulse.qubit]) elif isinstance(aux_list[aux_list.index(element)], ZhSweeper): @@ -578,6 +594,7 @@ def nt_loop(sweeper): for element in aux_list: if pulse == element.pulse: if isinstance(aux_list[aux_list.index(element)], ZhPulse): + # TODO: Recheck couplers aux_list.insert( aux_list.index(element), ZhSweeperLine(sweeper, pulse.qubit, sequence), @@ -586,26 +603,26 @@ def nt_loop(sweeper): self.sequence = zhsequence - def create_exp(self, qubits, options): + def create_exp(self, qubits, couplers, options): """Zurich experiment initialization usig their Experiment class""" # Setting experiment signal lines signals = [] + for coupler in couplers.values(): + signals.append(lo.ExperimentSignal(f"couplerflux{coupler.name}")) + for qubit in qubits.values(): q = qubit.name # pylint: disable=C0103 - if qubit.flux_coupler: + if len(self.sequence[f"drive{q}"]) != 0: + signals.append(lo.ExperimentSignal(f"drive{q}")) + if qubit.flux is not None: signals.append(lo.ExperimentSignal(f"flux{q}")) - else: - if len(self.sequence[f"drive{q}"]) != 0: - signals.append(lo.ExperimentSignal(f"drive{q}")) - if qubit.flux is not None: - signals.append(lo.ExperimentSignal(f"flux{q}")) - if len(self.sequence[f"readout{q}"]) != 0: - signals.append(lo.ExperimentSignal(f"measure{q}")) - signals.append(lo.ExperimentSignal(f"acquire{q}")) - if options.fast_reset is not False: - if len(self.sequence[f"drive{q}"]) == 0: - signals.append(lo.ExperimentSignal(f"drive{q}")) + if len(self.sequence[f"readout{q}"]) != 0: + signals.append(lo.ExperimentSignal(f"measure{q}")) + signals.append(lo.ExperimentSignal(f"acquire{q}")) + if options.fast_reset is not False: + if len(self.sequence[f"drive{q}"]) == 0: + signals.append(lo.ExperimentSignal(f"drive{q}")) exp = lo.Experiment( uid="Sequence", @@ -623,11 +640,11 @@ def create_exp(self, qubits, options): exp_calib = lo.Calibration() # Near Time recursion loop or directly to Real Time recursion loop if self.nt_sweeps is not None: - self.sweep_recursion_nt(qubits, exp_options, exp, exp_calib) + self.sweep_recursion_nt(qubits, couplers, exp_options, exp, exp_calib) else: - self.define_exp(qubits, exp_options, exp, exp_calib) + self.define_exp(qubits, couplers, exp_options, exp, exp_calib) - def define_exp(self, qubits, exp_options, exp, exp_calib): + def define_exp(self, qubits, couplers, exp_options, exp, exp_calib): """Real time definition""" with exp.acquire_loop_rt( uid="shots", @@ -637,15 +654,17 @@ def define_exp(self, qubits, exp_options, exp, exp_calib): ): # Recursion loop for sweepers or just play a sequence if len(self.sweepers) > 0: - self.sweep_recursion(qubits, exp, exp_calib, exp_options) + self.sweep_recursion(qubits, couplers, exp, exp_calib, exp_options) else: - self.select_exp(exp, qubits, exp_options) + self.select_exp(exp, qubits, couplers, exp_options) exp.set_calibration(exp_calib) exp.set_signal_map(self.signal_map) self.experiment = exp - def select_exp(self, exp, qubits, exp_options): + def select_exp(self, exp, qubits, couplers, exp_options): """Build Zurich Experiment selecting the relevant sections""" + if "coupler" in str(self.sequence): + self.couplerflux(exp, couplers) if "drive" in str(self.sequence): if "flux" in str(self.sequence): self.flux(exp, qubits) @@ -732,8 +751,34 @@ def play_sweep(self, exp, qubit, pulse, section): else: self.play_sweep_select_single(exp, qubit, pulse, section, parameters, partial_sweep) + def couplerflux(self, exp, couplers): + """coupler flux for bias sweep or pulses""" + for coupler in couplers.values(): + c = coupler.name # pylint: disable=C0103 + with exp.section(uid=f"sequence_bias_coupler{c}"): + i = 0 + time = 0 + for pulse in self.sequence[f"couplerflux{c}"]: + if not isinstance(pulse, ZhSweeperLine): + pulse.zhpulse.uid += str(i) + exp.delay( + signal=f"couplerflux{c}", + time=round(pulse.pulse.start * NANO_TO_SECONDS, 9) - time, + ) + time = round(pulse.pulse.duration * NANO_TO_SECONDS, 9) + round( + pulse.pulse.start * NANO_TO_SECONDS, 9 + ) + # TODO: Check of play sweep doesnt need changes + if isinstance(pulse, ZhSweeperLine): + self.play_sweep(exp, coupler, pulse, section="couplerflux") + elif isinstance(pulse, ZhSweeper): + self.play_sweep(exp, coupler, pulse, section="couplerflux") + elif isinstance(pulse, ZhPulse): + exp.play(signal=f"couplerflux{c}", pulse=pulse.zhpulse) + i += 1 + def flux(self, exp, qubits): - """qubit flux or qubit coupler flux for bias sweep or pulses""" + """qubit flux for bias sweep or pulses""" for qubit in qubits.values(): q = qubit.name # pylint: disable=C0103 with exp.section(uid=f"sequence_bias{q}"): @@ -760,8 +805,6 @@ def flux(self, exp, qubits): def drive(self, exp, qubits): """qubit driving pulses""" for qubit in qubits.values(): - if qubit.flux_coupler: - continue q = qubit.name # pylint: disable=C0103 time = 0 i = 0 @@ -827,8 +870,6 @@ def measure_relax(self, exp, qubits, relaxation_time, acquisition_type): qubit_readout_schedule = defaultdict(list) iq_angle_readout_schedule = defaultdict(list) for qubit in qubits.values(): - if qubit.flux_coupler: - continue q = qubit.name # pylint: disable=C0103 iq_angle = qubit.iq_angle if len(self.sequence[f"readout{q}"]) != 0: @@ -922,8 +963,6 @@ def fast_reset(self, exp, qubits, fast_reset): log.warning("Im fast resetting") for qubit_name in self.sequence_qibo.qubits: qubit = qubits[qubit_name] - if qubit.flux_coupler: - continue q = qubit.name # pylint: disable=C0103 with exp.section(uid=f"fast_reset{q}", play_after=f"sequence_measure"): with exp.match_local(handle=f"sequence{q}"): @@ -964,13 +1003,11 @@ def offsets_off(self): self.session.devices["device_hdawg"].awgs[0].sigouts[sigout].offset = 0 self.session.devices["device_hdawg2"].awgs[0].sigouts[0].offset = 0 - def sweep(self, qubits, sequence: PulseSequence, options, *sweepers): + def sweep(self, qubits, couplers, sequence: PulseSequence, options, *sweepers): """Play pulse and sweepers sequence""" self.signal_map = {} - self.nt_sweeps = None - sweepers = list(sweepers) dimensions = [] @@ -985,14 +1022,12 @@ def sweep(self, qubits, sequence: PulseSequence, options, *sweepers): self.frequency_from_pulses(qubits, sequence) - self.experiment_flow(qubits, sequence, options, sweepers) + self.experiment_flow(qubits, couplers, sequence, options, sweepers) self.run_exp() # Get the results back results = {} for qubit in qubits.values(): - if qubit.flux_coupler: - continue q = qubit.name # pylint: disable=C0103 if len(self.sequence[f"readout{q}"]) != 0: for i in range(len(self.sequence[f"readout{q}"])): @@ -1025,7 +1060,8 @@ def sweep(self, qubits, sequence: PulseSequence, options, *sweepers): # lo.show_pulse_sheet("pulses", self.exp) return results - def sweep_recursion(self, qubits, exp, exp_calib, exp_options): + # TODO: This may work without changes due to couplers + def sweep_recursion(self, qubits, couplers, exp, exp_calib, exp_options): """Sweepers recursion for multiple nested Real Time sweepers""" sweeper = self.sweepers[0] @@ -1074,11 +1110,12 @@ def sweep_recursion(self, qubits, exp, exp_calib, exp_options): reset_oscillator_phase=True, # FIXME: Should we reset this phase ??? ): if len(self.sweepers) > 0: - self.sweep_recursion(qubits, exp, exp_calib, exp_options) + self.sweep_recursion(qubits, couplers, exp, exp_calib, exp_options) else: - self.select_exp(exp, qubits, exp_options) + self.select_exp(exp, qubits, couplers, exp_options) - def sweep_recursion_nt(self, qubits, options, exp, exp_calib): + # TODO: This may work without changes due to couplers + def sweep_recursion_nt(self, qubits, couplers, options, exp, exp_calib): """ Sweepers recursion for Near Time sweepers. Faster than regular software sweepers as they are executed on the actual device by (software ? or slower hardware ones) @@ -1125,9 +1162,9 @@ def sweep_recursion_nt(self, qubits, options, exp, exp_calib): ) if len(self.nt_sweeps) > 0: - self.sweep_recursion_nt(qubits, options, exp, exp_calib) + self.sweep_recursion_nt(qubits, couplers, options, exp, exp_calib) else: - self.define_exp(qubits, options, exp, exp_calib) + self.define_exp(qubits, couplers, options, exp, exp_calib) def play_sequences(self, qubits, sequence, options): pass diff --git a/src/qibolab/pulses.py b/src/qibolab/pulses.py index 5d5964477..6ab9a913c 100644 --- a/src/qibolab/pulses.py +++ b/src/qibolab/pulses.py @@ -21,6 +21,7 @@ class PulseType(Enum): READOUT = "ro" DRIVE = "qd" FLUX = "qf" + COUPLERFLUX = "cf" class Waveform: @@ -1424,7 +1425,7 @@ def __init__(self, start, duration, amplitude, shape, channel, coupler=0): 0, shape, channel, - type=PulseType.FLUX, + type=PulseType.COUPLERFLUX, coupler=coupler, ) diff --git a/src/qibolab/sweeper.py b/src/qibolab/sweeper.py index 4bfe4563d..766013233 100644 --- a/src/qibolab/sweeper.py +++ b/src/qibolab/sweeper.py @@ -85,17 +85,18 @@ class Sweeper: values: npt.NDArray pulses: Optional[list] = None qubits: Optional[list] = None + couplers: Optional[list] = None type: Optional[SweeperType] = SweeperType.ABSOLUTE def __post_init__(self): if self.pulses is not None and self.qubits is not None: raise ValueError("Cannot use a sweeper on both pulses and qubits.") if self.pulses is not None and self.parameter in QubitParameter: - raise ValueError(f"Cannot sweep {self.parameter} without specifying qubits.") - if self.qubits is not None and self.parameter not in QubitParameter: + raise ValueError(f"Cannot sweep {self.parameter} without specifying qubits or couplers.") + if self.qubits and self.couplers is not None and self.parameter not in QubitParameter: raise ValueError(f"Cannot sweep {self.parameter} without specifying pulses.") - if self.pulses is None and self.qubits is None: - raise ValueError("Cannot use a sweeper without specifying pulses or qubits.") + if self.pulses is None and self.qubits is None and self.couplers is None: + raise ValueError("Cannot use a sweeper without specifying pulses, qubits or couplers.") def get_values(self, base_value): """Convert sweeper values depending on the sweeper type""" diff --git a/tests/dummy_qrc/zurich.py b/tests/dummy_qrc/zurich.py index c89ecd902..0ed774e09 100644 --- a/tests/dummy_qrc/zurich.py +++ b/tests/dummy_qrc/zurich.py @@ -168,4 +168,13 @@ def create(runcard_path=RUNCARD): instruments = {controller.name: controller} instruments.update({lo.name: lo for lo in local_oscillators}) settings = load_settings(runcard) - return Platform("zurich", qubits, pairs, instruments, settings, resonator_type="2D") + return Platform( + "zurich", + qubits, + pairs, + instruments, + settings, + resonator_type="2D", + couplers=couplers, + coupler_pairs=coupler_pairs, + ) diff --git a/tests/test_instruments_zhinst.py b/tests/test_instruments_zhinst.py index 25f5073f9..5622cd6f7 100644 --- a/tests/test_instruments_zhinst.py +++ b/tests/test_instruments_zhinst.py @@ -6,6 +6,7 @@ from qibolab.pulses import ( IIR, SNZ, + CouplerFluxPulse, Drag, FluxPulse, Gaussian, @@ -83,17 +84,40 @@ def test_zhsequence(dummy_qrc): IQM5q = create_platform("zurich") controller = IQM5q.instruments["EL_ZURO"] - controller.sequence_zh(sequence, IQM5q.qubits, sweepers=[]) + controller.sequence_zh(sequence, IQM5q.qubits, IQM5q.couplers, sweepers=[]) zhsequence = controller.sequence with pytest.raises(AttributeError): - controller.sequence_zh("sequence", IQM5q.qubits, sweepers=[]) + controller.sequence_zh("sequence", IQM5q.qubits, IQM5q.couplers, sweepers=[]) zhsequence = controller.sequence assert len(zhsequence) == 2 assert len(zhsequence["readout0"]) == 1 +def test_zhsequence_couplers(dummy_qrc): + qd_pulse = Pulse(0, 40, 0.05, int(3e9), 0.0, Rectangular(), "ch0", qubit=0) + ro_pulse = ReadoutPulse(0, 40, 0.05, int(3e9), 0.0, Rectangular(), "ch1", qubit=0) + qc_pulse = CouplerFluxPulse(0, 40, 0.05, Rectangular(), "ch_c0", coupler=3) + sequence = PulseSequence() + sequence.add(qd_pulse) + sequence.add(ro_pulse) + sequence.add(qc_pulse) + IQM5q = create_platform("zurich") + controller = IQM5q.instruments["EL_ZURO"] + + controller.sequence_zh(sequence, IQM5q.qubits, IQM5q.couplers, sweepers=[]) + zhsequence = controller.sequence + + with pytest.raises(AttributeError): + controller.sequence_zh("sequence", IQM5q.qubits, IQM5q.couplers, sweepers=[]) + zhsequence = controller.sequence + + assert len(zhsequence) == 3 + assert len(zhsequence["readout0"]) == 1 + assert len(zhsequence["couplerflux3"]) == 1 + + def test_zhsequence_multiple_ro(dummy_qrc): sequence = PulseSequence() qd_pulse = Pulse(0, 40, 0.05, int(3e9), 0.0, Rectangular(), "ch0", qubit=0) @@ -105,11 +129,11 @@ def test_zhsequence_multiple_ro(dummy_qrc): platform = create_platform("zurich") controller = platform.instruments["EL_ZURO"] - controller.sequence_zh(sequence, platform.qubits, sweepers=[]) + controller.sequence_zh(sequence, platform.qubits, platform.couplers, sweepers=[]) zhsequence = controller.sequence with pytest.raises(AttributeError): - controller.sequence_zh("sequence", platform.qubits, sweepers=[]) + controller.sequence_zh("sequence", platform.qubits, platform.couplers, sweepers=[]) zhsequence = controller.sequence assert len(zhsequence) == 2 @@ -157,8 +181,9 @@ def test_experiment_execute_pulse_sequence(dummy_qrc): IQM5q.create_device_setup() sequence = PulseSequence() - qubits = {0: platform.qubits[0], "c0": platform.qubits["c0"]} + qubits = {0: platform.qubits[0], 2: platform.qubits[2]} platform.qubits = qubits + couplers = {} ro_pulses = {} qf_pulses = {} @@ -173,8 +198,6 @@ def test_experiment_execute_pulse_sequence(dummy_qrc): qubit=q, ) sequence.add(qf_pulses[q]) - if qubit.flux_coupler: - continue ro_pulses[q] = platform.create_qubit_readout_pulse(q, start=qf_pulses[q].finish) sequence.add(ro_pulses[q]) @@ -182,7 +205,59 @@ def test_experiment_execute_pulse_sequence(dummy_qrc): relaxation_time=300e-6, acquisition_type=AcquisitionType.INTEGRATION, averaging_mode=AveragingMode.CYCLIC ) - IQM5q.experiment_flow(qubits, sequence, options) + IQM5q.experiment_flow(qubits, couplers, sequence, options) + + assert "flux0" in IQM5q.experiment.signals + assert "measure0" in IQM5q.experiment.signals + assert "acquire0" in IQM5q.experiment.signals + + +def test_experiment_execute_pulse_sequence_coupler(dummy_qrc): + platform = create_platform("zurich") + platform.setup() + IQM5q = platform.instruments["EL_ZURO"] + IQM5q.create_device_setup() + + sequence = PulseSequence() + qubits = {0: platform.qubits[0], 2: platform.qubits[2]} + platform.qubits = qubits + couplers = {0: platform.couplers[0]} + platform.couplers = couplers + + ro_pulses = {} + qf_pulses = {} + for qubit in qubits.values(): + q = qubit.name + qf_pulses[q] = FluxPulse( + start=0, + duration=500, + amplitude=1, + shape=Rectangular(), + channel=platform.qubits[q].flux.name, + qubit=q, + ) + sequence.add(qf_pulses[q]) + ro_pulses[q] = platform.create_qubit_readout_pulse(q, start=qf_pulses[q].finish) + sequence.add(ro_pulses[q]) + + cf_pulses = {} + for coupler in couplers.values(): + c = coupler.name + cf_pulses[c] = CouplerFluxPulse( + start=0, + duration=500, + amplitude=1, + shape=Rectangular(), + channel=platform.couplers[c].flux.name, + coupler=c, + ) + sequence.add(cf_pulses[c]) + + options = ExecutionParameters( + relaxation_time=300e-6, acquisition_type=AcquisitionType.INTEGRATION, averaging_mode=AveragingMode.CYCLIC + ) + + IQM5q.experiment_flow(qubits, couplers, sequence, options) assert "flux0" in IQM5q.experiment.signals assert "measure0" in IQM5q.experiment.signals @@ -197,6 +272,7 @@ def test_experiment_fast_reset_readout(dummy_qrc): sequence = PulseSequence() qubits = {0: platform.qubits[0]} + couplers = {} platform.qubits = qubits ro_pulses = {} @@ -213,7 +289,7 @@ def test_experiment_fast_reset_readout(dummy_qrc): averaging_mode=AveragingMode.CYCLIC, ) - IQM5q.experiment_flow(qubits, sequence, options) + IQM5q.experiment_flow(qubits, couplers, sequence, options) assert "drive0" in IQM5q.experiment.signals assert "measure0" in IQM5q.experiment.signals @@ -279,6 +355,7 @@ def test_experiment_sweep_single(dummy_qrc, parameter1): sequence = PulseSequence() qubits = {0: platform.qubits[0]} + couplers = {} swept_points = 5 sequence = PulseSequence() @@ -305,8 +382,65 @@ def test_experiment_sweep_single(dummy_qrc, parameter1): IQM5q.sweepers = sweepers - IQM5q.experiment_flow(qubits, sequence, options, sweepers) + IQM5q.experiment_flow(qubits, couplers, sequence, options, sweepers) + + assert "drive0" in IQM5q.experiment.signals + assert "measure0" in IQM5q.experiment.signals + assert "acquire0" in IQM5q.experiment.signals + + +@pytest.mark.parametrize("parameter1", [Parameter.start, Parameter.duration]) +def test_experiment_sweep_single_coupler(dummy_qrc, parameter1): + platform = create_platform("zurich") + platform.setup() + IQM5q = platform.instruments["EL_ZURO"] + IQM5q.create_device_setup() + + sequence = PulseSequence() + qubits = {0: platform.qubits[0], 2: platform.qubits[2]} + couplers = {0: platform.couplers[0]} + + swept_points = 5 + sequence = PulseSequence() + ro_pulses = {} + qd_pulses = {} + for qubit in qubits: + qd_pulses[qubit] = platform.create_RX_pulse(qubit, start=0) + sequence.add(qd_pulses[qubit]) + ro_pulses[qubit] = platform.create_qubit_readout_pulse(qubit, start=qd_pulses[qubit].finish) + sequence.add(ro_pulses[qubit]) + + cf_pulses = {} + for coupler in couplers.values(): + c = coupler.name + cf_pulses[c] = CouplerFluxPulse( + start=0, + duration=500, + amplitude=1, + shape=Rectangular(), + channel=platform.couplers[c].flux.name, + coupler=c, + ) + sequence.add(cf_pulses[c]) + + parameter_range_1 = ( + np.random.rand(swept_points) + if parameter1 is Parameter.amplitude + else np.random.randint(swept_points, size=swept_points) + ) + + sweepers = [] + sweepers.append(Sweeper(parameter1, parameter_range_1, pulses=[cf_pulses[c]])) + + options = ExecutionParameters( + relaxation_time=300e-6, acquisition_type=AcquisitionType.INTEGRATION, averaging_mode=AveragingMode.CYCLIC + ) + + IQM5q.sweepers = sweepers + + IQM5q.experiment_flow(qubits, couplers, sequence, options, sweepers) + assert "couplerflux0" in IQM5q.experiment.signals assert "drive0" in IQM5q.experiment.signals assert "measure0" in IQM5q.experiment.signals assert "acquire0" in IQM5q.experiment.signals @@ -331,6 +465,7 @@ def test_experiment_sweep_2d_general(dummy_qrc, parameter1, parameter2): sequence = PulseSequence() qubits = {0: platform.qubits[0]} + couplers = {} swept_points = 5 sequence = PulseSequence() @@ -369,7 +504,7 @@ def test_experiment_sweep_2d_general(dummy_qrc, parameter1, parameter2): IQM5q.sweepers = sweepers rearranging_axes, sweepers = IQM5q.rearrange_sweepers(sweepers) - IQM5q.experiment_flow(qubits, sequence, options, sweepers) + IQM5q.experiment_flow(qubits, couplers, sequence, options, sweepers) assert "drive0" in IQM5q.experiment.signals assert "measure0" in IQM5q.experiment.signals @@ -384,6 +519,7 @@ def test_experiment_sweep_2d_specific(dummy_qrc): sequence = PulseSequence() qubits = {0: platform.qubits[0]} + couplers = {} swept_points = 5 sequence = PulseSequence() @@ -420,7 +556,7 @@ def test_experiment_sweep_2d_specific(dummy_qrc): IQM5q.sweepers = sweepers rearranging_axes, sweepers = IQM5q.rearrange_sweepers(sweepers) - IQM5q.experiment_flow(qubits, sequence, options, sweepers) + IQM5q.experiment_flow(qubits, couplers, sequence, options, sweepers) assert "drive0" in IQM5q.experiment.signals assert "measure0" in IQM5q.experiment.signals @@ -437,6 +573,7 @@ def test_experiment_sweep_punchouts(dummy_qrc, parameter): sequence = PulseSequence() qubits = {0: platform.qubits[0]} + couplers = {} if parameter is Parameter.frequency: parameter1 = Parameter.frequency @@ -480,7 +617,7 @@ def test_experiment_sweep_punchouts(dummy_qrc, parameter): IQM5q.sweepers = sweepers rearranging_axes, sweepers = IQM5q.rearrange_sweepers(sweepers) - IQM5q.experiment_flow(qubits, sequence, options, sweepers) + IQM5q.experiment_flow(qubits, couplers, sequence, options, sweepers) assert "measure0" in IQM5q.experiment.signals assert "acquire0" in IQM5q.experiment.signals From 8530a4566e751ca0fa5befcc9482cdc649a9b9cf Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 5 Sep 2023 13:44:05 +0400 Subject: [PATCH 24/52] fix tests --- src/qibolab/__init__.py | 4 - src/qibolab/couplers.py | 24 +-- src/qibolab/dummy.py | 241 ++++++++++++++++++-------- src/qibolab/dummy2.py | 339 ------------------------------------- src/qibolab/platform.py | 5 +- src/qibolab/serialize.py | 51 +++--- src/qibolab/sweeper.py | 2 +- tests/dummy_qrc/zurich.py | 3 +- tests/dummy_qrc/zurich.yml | 9 +- tests/test_dummy.py | 19 +++ tests/test_dummy2.py | 237 -------------------------- tests/test_sweeper.py | 1 + 12 files changed, 226 insertions(+), 709 deletions(-) delete mode 100644 src/qibolab/dummy2.py delete mode 100644 tests/test_dummy2.py diff --git a/src/qibolab/__init__.py b/src/qibolab/__init__.py index 540bfcf98..c24cbacab 100644 --- a/src/qibolab/__init__.py +++ b/src/qibolab/__init__.py @@ -42,10 +42,6 @@ def create_platform(name, runcard=None): from qibolab.dummy import create_dummy return create_dummy() - if name == "dummy2": - from qibolab.dummy2 import create_dummy2 - - return create_dummy2() platform = get_platforms_path() / f"{name}.py" if not platform.exists(): diff --git a/src/qibolab/couplers.py b/src/qibolab/couplers.py index cd0ea7a03..3c670f7cb 100644 --- a/src/qibolab/couplers.py +++ b/src/qibolab/couplers.py @@ -1,9 +1,8 @@ from dataclasses import dataclass, field -from typing import List, Optional, Tuple, Union +from typing import List, Optional, Union from qibolab.channels import Channel -from qibolab.native import TwoQubitNatives -from qibolab.qubits import Qubit, QubitId +from qibolab.qubits import Qubit CouplerId = Union[str, int] """Type for Coupler names.""" @@ -45,22 +44,3 @@ def channels(self): for channel in [self.flux]: if channel is not None: yield channel - - -CouplerPairId = Tuple[CouplerId, QubitId, QubitId] -"""Type for holding ``QubitPair``s in the ``platform.pairs`` dictionary.""" - - -# Maybe this one is not needed -@dataclass -class CouplerPair: - """Data structure for holding a coupler and its two-qubits on a pair of qubits. - - Qubits are sorted according to ``qubit.name`` such that - ``qubit1.name < qubit2.name``. - """ - - coupler: Coupler - qubit1: Qubit - qubit2: Qubit - native_gates: TwoQubitNatives = field(default_factory=TwoQubitNatives) diff --git a/src/qibolab/dummy.py b/src/qibolab/dummy.py index 44b0f8948..1527426ac 100644 --- a/src/qibolab/dummy.py +++ b/src/qibolab/dummy.py @@ -1,35 +1,45 @@ +import itertools + from qibolab.channels import Channel, ChannelMap from qibolab.instruments.dummy import DummyInstrument from qibolab.platform import Platform -from qibolab.serialize import load_qubits, load_settings, register_gates +from qibolab.serialize import load_couplers, load_qubits, load_settings, register_gates NAME = "dummy" RUNCARD = { - "nqubits": 4, + "nqubits": 5, + "description": "Dummy2 5-qubits + couplers on star topology platform.", "qubits": [ 0, 1, 2, 3, + 4, + ], + "couplers": [ + 0, + 1, + 3, + 4, ], "settings": {"sampling_rate": 1000000000, "relaxation_time": 0, "nshots": 1024}, - "topology": [[0, 1], [1, 2], [0, 3]], + "topology": [[0, 2], [1, 2], [2, 3], [2, 4]], "native_gates": { "single_qubit": { 0: { "RX": { "duration": 40, - "amplitude": 0.005, - "frequency": 4700000000, + "amplitude": 0.1, + "frequency": 4.0e9, "shape": "Gaussian(5)", "type": "qd", "start": 0, "phase": 0, }, "MZ": { - "duration": 1000, - "amplitude": 0.0025, - "frequency": 7226500000, + "duration": 2000, + "amplitude": 0.1, + "frequency": 5.2e9, "shape": "Rectangular()", "type": "ro", "start": 0, @@ -39,17 +49,17 @@ 1: { "RX": { "duration": 40, - "amplitude": 0.0484, - "frequency": 4855663000, + "amplitude": 0.3, + "frequency": 4.2e9, "shape": "Drag(5, -0.02)", "type": "qd", "start": 0, "phase": 0, }, "MZ": { - "duration": 620, - "amplitude": 0.003575, - "frequency": 7453265000, + "duration": 2000, + "amplitude": 0.1, + "frequency": 4.9e9, "shape": "Rectangular()", "type": "ro", "start": 0, @@ -59,17 +69,17 @@ 2: { "RX": { "duration": 40, - "amplitude": 0.005, - "frequency": 2700000000, - "shape": "Gaussian(5)", + "amplitude": 0.3, + "frequency": 4.5e9, + "shape": "Drag(5, -0.02)", "type": "qd", "start": 0, "phase": 0, }, "MZ": { - "duration": 1000, - "amplitude": 0.0025, - "frequency": 5226500000, + "duration": 2000, + "amplitude": 0.1, + "frequency": 6.1e9, "shape": "Rectangular()", "type": "ro", "start": 0, @@ -79,17 +89,37 @@ 3: { "RX": { "duration": 40, - "amplitude": 0.0484, - "frequency": 5855663000, + "amplitude": 0.3, + "frequency": 4.15e9, + "shape": "Drag(5, -0.02)", + "type": "qd", + "start": 0, + "phase": 0, + }, + "MZ": { + "duration": 2000, + "amplitude": 0.1, + "frequency": 5.8e9, + "shape": "Rectangular()", + "type": "ro", + "start": 0, + "phase": 0, + }, + }, + 4: { + "RX": { + "duration": 40, + "amplitude": 0.3, + "frequency": 4155663000, "shape": "Drag(5, -0.02)", "type": "qd", "start": 0, "phase": 0, }, "MZ": { - "duration": 620, - "amplitude": 0.003575, - "frequency": 8453265000, + "duration": 2000, + "amplitude": 0.1, + "frequency": 5.5e9, "shape": "Rectangular()", "type": "ro", "start": 0, @@ -98,62 +128,92 @@ }, }, "two_qubit": { - "0-1": { + "0-2": { "CZ": [ { "duration": 30, - "amplitude": 0.055, + "amplitude": 0.05, "shape": "Rectangular()", - "qubit": 1, + "qubit": 2, "relative_start": 0, "type": "qf", }, - {"type": "virtual_z", "phase": -1.5707963267948966, "qubit": 1}, - {"type": "virtual_z", "phase": -1.5707963267948966, "qubit": 0}, + {"type": "virtual_z", "phase": 0.0, "qubit": 0}, + {"type": "virtual_z", "phase": 0.0, "qubit": 2}, + { + "type": "coupler", + "duration": 40, + "amplitude": 0.1, + "shape": "Rectangular()", + "coupler": 0, + "relative_start": 0, + }, ] }, "1-2": { "CZ": [ { "duration": 30, - "amplitude": 0.055, + "amplitude": 0.05, "shape": "Rectangular()", - "qubit": 1, + "qubit": 2, "relative_start": 0, "type": "qf", }, - {"type": "virtual_z", "phase": -1.5707963267948966, "qubit": 2}, - {"type": "virtual_z", "phase": -1.5707963267948966, "qubit": 1}, + {"type": "virtual_z", "phase": 0.0, "qubit": 1}, + {"type": "virtual_z", "phase": 0.0, "qubit": 2}, + { + "type": "coupler", + "duration": 40, + "amplitude": 0.1, + "shape": "Rectangular()", + "coupler": 1, + "relative_start": 0, + }, ] }, - "0-3": { + "3-2": { "CZ": [ { - "duration": 34, - "amplitude": 0.055, - "shape": "SNZ(1)", - "qubit": 3, + "duration": 30, + "amplitude": 0.05, + "shape": "Rectangular()", + "qubit": 2, "relative_start": 0, "type": "qf", }, + {"type": "virtual_z", "phase": 0.0, "qubit": 3}, + {"type": "virtual_z", "phase": 0.0, "qubit": 2}, + { + "type": "coupler", + "duration": 40, + "amplitude": 0.1, + "shape": "Rectangular()", + "coupler": 3, + "relative_start": 0, + }, + ] + }, + "4-2": { + "CZ": [ { - "duration": 4, - "amplitude": 0.055, - "shape": "SNZ(1)", - "qubit": 3, - "relative_start": 14, + "duration": 30, + "amplitude": 0.05, + "shape": "Rectangular()", + "qubit": 2, + "relative_start": 0, "type": "qf", }, + {"type": "virtual_z", "phase": 0.0, "qubit": 4}, + {"type": "virtual_z", "phase": 0.0, "qubit": 2}, { - "duration": 34, + "type": "coupler", + "duration": 40, "amplitude": 0.1, "shape": "Rectangular()", - "qubit": 3, + "coupler": 4, "relative_start": 0, - "type": "qf", }, - {"type": "virtual_z", "phase": -1.5707963267948966, "qubit": 3}, - {"type": "virtual_z", "phase": -1.5707963267948966, "qubit": 0}, ] }, }, @@ -161,60 +221,90 @@ "characterization": { "single_qubit": { 0: { - "readout_frequency": 7226500000, - "drive_frequency": 4700000000, + "readout_frequency": 5.2e9, + "drive_frequency": 4.0e9, "T1": 0.0, "T2": 0.0, "sweetspot": 0.0, + "mean_gnd_states": (0 + 1j), + "mean_exc_states": (1 + 0j), "threshold": 0.0, "iq_angle": 0.0, }, 1: { - "readout_frequency": 7453265000, - "drive_frequency": 4855663000, + "readout_frequency": 4.9e9, + "drive_frequency": 4.2e9, "T1": 0.0, "T2": 0.0, - "sweetspot": -0.047, - "threshold": 0.00028502261712637096, - "iq_angle": 1.283105298787488, + "sweetspot": 0.0, + "mean_gnd_states": (0.25 + 0j), + "mean_exc_states": (0 + 0.25j), + "threshold": 0.0, + "iq_angle": 0.0, }, 2: { - "readout_frequency": 5226500000, - "drive_frequency": 2700000000, + "readout_frequency": 6.1e9, + "drive_frequency": 4.5e9, "T1": 0.0, "T2": 0.0, "sweetspot": 0.0, + "mean_gnd_states": (0.5 + 0j), + "mean_exc_states": (0 + 0.5j), "threshold": 0.0, "iq_angle": 0.0, }, 3: { - "readout_frequency": 8453265000, - "drive_frequency": 5855663000, + "readout_frequency": 5.8e9, + "drive_frequency": 4.15e9, "T1": 0.0, "T2": 0.0, - "sweetspot": -0.047, - "threshold": 0.00028502261712637096, - "iq_angle": 1.283105298787488, + "sweetspot": 0.0, + "mean_gnd_states": (0.75 + 0j), + "mean_exc_states": (0 + 0.75j), + "threshold": 0.0, + "iq_angle": 0.0, + }, + 4: { + "readout_frequency": 5.5e9, + "drive_frequency": 4.1e9, + "T1": 0.0, + "T2": 0.0, + "sweetspot": 0.0, + "mean_gnd_states": (1 + 0j), + "mean_exc_states": (0 + 1j), + "threshold": 0.0, + "iq_angle": 0.0, }, - } + }, + "coupler": { + 0: {"sweetspot": 0.0}, + 1: {"sweetspot": 0.0}, + 3: {"sweetspot": 0.0}, + 4: {"sweetspot": 0.0}, + }, }, } def create_dummy(): - """Create a dummy platform on two qubits using the dummy instrument.""" + """Create a dummy platform using the dummy instrument.""" # Create dummy controller instrument = DummyInstrument(NAME, 0) - # Create channel objects nqubits = RUNCARD["nqubits"] channels = ChannelMap() channels |= Channel("readout", port=instrument["readout"]) channels |= (Channel(f"drive-{i}", port=instrument[f"drive-{i}"]) for i in range(nqubits)) channels |= (Channel(f"flux-{i}", port=instrument[f"flux-{i}"]) for i in range(nqubits)) + # FIXME: Issues with the names if they are strings maybe + channels |= ( + Channel(f"flux_coupler-{c}", port=instrument[f"flux_coupler-{c}"]) + for c in itertools.chain(range(0, 2), range(3, 5)) + ) channels["readout"].attenuation = 0 qubits, pairs = load_qubits(RUNCARD) + couplers = load_couplers(RUNCARD) settings = load_settings(RUNCARD) # map channels to qubits @@ -223,8 +313,25 @@ def create_dummy(): qubit.drive = channels[f"drive-{q}"] qubit.flux = channels[f"flux-{q}"] - qubits, pairs = register_gates(RUNCARD, qubits, pairs) + # map channels to couplers + for c, coupler in couplers.items(): + coupler.flux = channels[f"flux_coupler-{c}"] + + # FIXME: Call couplers by its name + # assign couplers to qubits + for c in itertools.chain(range(0, 2), range(3, 5)): + qubits[c].flux_coupler[c] = couplers[c].name + qubits[2].flux_coupler[c] = couplers[c].name + + # FIXME: Call couplers by its name + # assign qubits to couplers + for c in itertools.chain(range(0, 2), range(3, 5)): + couplers[c].qubits = [qubits[c].name] + couplers[c].qubits.append(qubits[2].name) + + qubits, pairs = register_gates(RUNCARD, qubits, pairs, couplers) instruments = {instrument.name: instrument} instrument.sampling_rate = settings.sampling_rate * 1e-9 - return Platform(NAME, qubits, pairs, instruments, settings, resonator_type="2D") + + return Platform(NAME, qubits, pairs, instruments, settings, resonator_type="2D", couplers=couplers) diff --git a/src/qibolab/dummy2.py b/src/qibolab/dummy2.py deleted file mode 100644 index b54306eef..000000000 --- a/src/qibolab/dummy2.py +++ /dev/null @@ -1,339 +0,0 @@ -import itertools - -from qibolab.channels import Channel, ChannelMap -from qibolab.instruments.dummy import DummyInstrument -from qibolab.platform import Platform -from qibolab.serialize import load_couplers, load_qubits, load_settings, register_gates - -NAME = "dummy2" -RUNCARD = { - "nqubits": 5, - "description": "Dummy2 5-qubits + couplers on star topology platform.", - "qubits": [ - 0, - 1, - 2, - 3, - 4, - ], - "couplers": [ - 0, - 1, - 3, - 4, - ], - "settings": {"sampling_rate": 1000000000, "relaxation_time": 0, "nshots": 1024}, - "topology": [[0, 2], [1, 2], [2, 3], [2, 4]], - "native_gates": { - "single_qubit": { - 0: { - "RX": { - "duration": 40, - "amplitude": 0.1, - "frequency": 4.0e9, - "shape": "Gaussian(5)", - "type": "qd", - "start": 0, - "phase": 0, - }, - "MZ": { - "duration": 2000, - "amplitude": 0.1, - "frequency": 5.2e9, - "shape": "Rectangular()", - "type": "ro", - "start": 0, - "phase": 0, - }, - }, - 1: { - "RX": { - "duration": 40, - "amplitude": 0.3, - "frequency": 4.2e9, - "shape": "Drag(5, -0.02)", - "type": "qd", - "start": 0, - "phase": 0, - }, - "MZ": { - "duration": 2000, - "amplitude": 0.1, - "frequency": 4.9e9, - "shape": "Rectangular()", - "type": "ro", - "start": 0, - "phase": 0, - }, - }, - 2: { - "RX": { - "duration": 40, - "amplitude": 0.3, - "frequency": 4.5e9, - "shape": "Drag(5, -0.02)", - "type": "qd", - "start": 0, - "phase": 0, - }, - "MZ": { - "duration": 2000, - "amplitude": 0.1, - "frequency": 6.1e9, - "shape": "Rectangular()", - "type": "ro", - "start": 0, - "phase": 0, - }, - }, - 3: { - "RX": { - "duration": 40, - "amplitude": 0.3, - "frequency": 4.15e9, - "shape": "Drag(5, -0.02)", - "type": "qd", - "start": 0, - "phase": 0, - }, - "MZ": { - "duration": 2000, - "amplitude": 0.1, - "frequency": 5.8e9, - "shape": "Rectangular()", - "type": "ro", - "start": 0, - "phase": 0, - }, - }, - 4: { - "RX": { - "duration": 40, - "amplitude": 0.3, - "frequency": 4155663000, - "shape": "Drag(5, -0.02)", - "type": "qd", - "start": 0, - "phase": 0, - }, - "MZ": { - "duration": 2000, - "amplitude": 0.1, - "frequency": 5.5e9, - "shape": "Rectangular()", - "type": "ro", - "start": 0, - "phase": 0, - }, - }, - }, - "two_qubit": { - "0-2": { - "CZ": [ - { - "duration": 30, - "amplitude": 0.05, - "shape": "Rectangular()", - "qubit": 2, - "relative_start": 0, - "type": "qf", - }, - {"type": "virtual_z", "phase": 0.0, "qubit": 0}, - {"type": "virtual_z", "phase": 0.0, "qubit": 2}, - { - "type": "coupler", - "duration": 40, - "amplitude": 0.1, - "shape": "Rectangular()", - "coupler": 0, - "relative_start": 0, - }, - ] - }, - "1-2": { - "CZ": [ - { - "duration": 30, - "amplitude": 0.05, - "shape": "Rectangular()", - "qubit": 2, - "relative_start": 0, - "type": "qf", - }, - {"type": "virtual_z", "phase": 0.0, "qubit": 1}, - {"type": "virtual_z", "phase": 0.0, "qubit": 2}, - { - "type": "coupler", - "duration": 40, - "amplitude": 0.1, - "shape": "Rectangular()", - "coupler": 1, - "relative_start": 0, - }, - ] - }, - "3-2": { - "CZ": [ - { - "duration": 30, - "amplitude": 0.05, - "shape": "Rectangular()", - "qubit": 2, - "relative_start": 0, - "type": "qf", - }, - {"type": "virtual_z", "phase": 0.0, "qubit": 3}, - {"type": "virtual_z", "phase": 0.0, "qubit": 2}, - { - "type": "coupler", - "duration": 40, - "amplitude": 0.1, - "shape": "Rectangular()", - "coupler": 3, - "relative_start": 0, - }, - ] - }, - "4-2": { - "CZ": [ - { - "duration": 30, - "amplitude": 0.05, - "shape": "Rectangular()", - "qubit": 2, - "relative_start": 0, - "type": "qf", - }, - {"type": "virtual_z", "phase": 0.0, "qubit": 4}, - {"type": "virtual_z", "phase": 0.0, "qubit": 2}, - { - "type": "coupler", - "duration": 40, - "amplitude": 0.1, - "shape": "Rectangular()", - "coupler": 4, - "relative_start": 0, - }, - ] - }, - }, - }, - "characterization": { - "single_qubit": { - 0: { - "readout_frequency": 5.2e9, - "drive_frequency": 4.0e9, - "T1": 0.0, - "T2": 0.0, - "sweetspot": 0.0, - "mean_gnd_states": (0 + 1j), - "mean_exc_states": (1 + 0j), - "threshold": 0.0, - "iq_angle": 0.0, - }, - 1: { - "readout_frequency": 4.9e9, - "drive_frequency": 4.2e9, - "T1": 0.0, - "T2": 0.0, - "sweetspot": 0.0, - "mean_gnd_states": (0.25 + 0j), - "mean_exc_states": (0 + 0.25j), - "threshold": 0.0, - "iq_angle": 0.0, - }, - 2: { - "readout_frequency": 6.1e9, - "drive_frequency": 4.5e9, - "T1": 0.0, - "T2": 0.0, - "sweetspot": 0.0, - "mean_gnd_states": (0.5 + 0j), - "mean_exc_states": (0 + 0.5j), - "threshold": 0.0, - "iq_angle": 0.0, - }, - 3: { - "readout_frequency": 5.8e9, - "drive_frequency": 4.15e9, - "T1": 0.0, - "T2": 0.0, - "sweetspot": 0.0, - "mean_gnd_states": (0.75 + 0j), - "mean_exc_states": (0 + 0.75j), - "threshold": 0.0, - "iq_angle": 0.0, - }, - 4: { - "readout_frequency": 5.5e9, - "drive_frequency": 4.1e9, - "T1": 0.0, - "T2": 0.0, - "sweetspot": 0.0, - "mean_gnd_states": (1 + 0j), - "mean_exc_states": (0 + 1j), - "threshold": 0.0, - "iq_angle": 0.0, - }, - }, - "coupler": { - 0: {"sweetspot": 0.0}, - 1: {"sweetspot": 0.0}, - 3: {"sweetspot": 0.0}, - 4: {"sweetspot": 0.0}, - }, - }, -} - - -def create_dummy2(): - """Create a dummy platform using the dummy instrument.""" - # Create dummy controller - instrument = DummyInstrument(NAME, 0) - # Create channel objects - nqubits = RUNCARD["nqubits"] - channels = ChannelMap() - channels |= Channel("readout", port=instrument["readout"]) - channels |= (Channel(f"drive-{i}", port=instrument[f"drive-{i}"]) for i in range(nqubits)) - channels |= (Channel(f"flux-{i}", port=instrument[f"flux-{i}"]) for i in range(nqubits)) - # FIXME: Issues with the names if they are strings maybe - channels |= ( - Channel(f"flux_coupler-{c}", port=instrument[f"flux_coupler-{c}"]) - for c in itertools.chain(range(0, 2), range(3, 5)) - ) - channels["readout"].attenuation = 0 - - qubits, pairs = load_qubits(RUNCARD) - couplers, coupler_pairs = load_couplers(RUNCARD) - settings = load_settings(RUNCARD) - - # map channels to qubits - for q, qubit in qubits.items(): - qubit.readout = channels["readout"] - qubit.drive = channels[f"drive-{q}"] - qubit.flux = channels[f"flux-{q}"] - - # map channels to couplers - for c, coupler in couplers.items(): - coupler.flux = channels[f"flux_coupler-{c}"] - - # FIXME: Call couplers by its name - # assign couplers to qubits - for c in itertools.chain(range(0, 2), range(3, 5)): - qubits[c].flux_coupler[c] = couplers[c].name - qubits[2].flux_coupler[c] = couplers[c].name - - # FIXME: Call couplers by its name - # assign qubits to couplers - for c in itertools.chain(range(0, 2), range(3, 5)): - couplers[c].qubits = [qubits[c].name] - couplers[c].qubits.append(qubits[2].name) - - qubits, pairs = register_gates(RUNCARD, qubits, pairs, couplers) - - instruments = {instrument.name: instrument} - instrument.sampling_rate = settings.sampling_rate * 1e-9 - - return Platform( - NAME, qubits, pairs, instruments, settings, resonator_type="2D", couplers=couplers, coupler_pairs=coupler_pairs - ) diff --git a/src/qibolab/platform.py b/src/qibolab/platform.py index baac6b1cc..91e3d10e4 100644 --- a/src/qibolab/platform.py +++ b/src/qibolab/platform.py @@ -8,7 +8,7 @@ import networkx as nx from qibo.config import log, raise_error -from qibolab.couplers import Coupler, CouplerId, CouplerPair, CouplerPairId +from qibolab.couplers import Coupler, CouplerId from qibolab.execution_parameters import ExecutionParameters from qibolab.instruments.abstract import Controller, Instrument, InstrumentId from qibolab.native import NativeType @@ -20,7 +20,6 @@ QubitMap = Dict[QubitId, Qubit] CouplerMap = Dict[CouplerId, Coupler] QubitPairMap = Dict[QubitPairId, QubitPair] -CouplerPairMap = Dict[CouplerPairId, CouplerPair] @dataclass @@ -57,8 +56,6 @@ class Platform: couplers: Optional[CouplerMap] = None """Dictionary mapping coupler names to :class:`qibolab.couplers.Coupler` objects.""" - coupler_pairs: Optional[CouplerPairMap] = None - """Dictionary mapping sorted tuples of coupler names to :class:`qibolab.qubits.QubitPair` objects.""" is_connected: bool = False """Flag for whether we are connected to the physical instruments.""" diff --git a/src/qibolab/serialize.py b/src/qibolab/serialize.py index b83bdac16..20e111e91 100644 --- a/src/qibolab/serialize.py +++ b/src/qibolab/serialize.py @@ -10,16 +10,9 @@ import yaml -from qibolab.couplers import Coupler, CouplerPair +from qibolab.couplers import Coupler from qibolab.native import SingleQubitNatives, TwoQubitNatives -from qibolab.platform import ( - CouplerMap, - CouplerPairMap, - Platform, - QubitMap, - QubitPairMap, - Settings, -) +from qibolab.platform import CouplerMap, Platform, QubitMap, QubitPairMap, Settings from qibolab.qubits import Qubit, QubitPair @@ -50,24 +43,17 @@ def load_qubits(runcard: dict) -> Tuple[QubitMap, QubitPairMap]: return qubits, pairs -def load_couplers(runcard: dict) -> Tuple[CouplerMap, CouplerPairMap]: +def load_couplers(runcard: dict) -> CouplerMap: """Load couplers and pairs from the runcard. Uses the native gate and characterization sections of the runcard to parse the :class:`qibolab.qubits.Qubit` and :class:`qibolab.qubits.QubitPair` - and the the :class:`qibolab.coupler.Coupler` and :class:`qibolab.coupler.CouplerPair` + and the the :class:`qibolab.coupler.Coupler` objects. """ - qubits = {q: Qubit(q, **char) for q, char in runcard["characterization"]["single_qubit"].items()} couplers = {c: Coupler(c, **char) for c, char in runcard["characterization"]["coupler"].items()} - coupler_pairs = {} - for pair, coupler in zip(runcard["topology"], runcard["couplers"]): - pair = tuple(sorted(pair)) - # Fancier ordering for couplers - coupler_pairs[pair] = CouplerPair(couplers[coupler], qubits[pair[0]], qubits[pair[1]]) - - return couplers, coupler_pairs + return couplers # This creates the compiler error @@ -92,7 +78,7 @@ def register_gates( return qubits, pairs -def dump_qubits(qubits: QubitMap, pairs: QubitPairMap) -> dict: +def dump_qubits(qubits: QubitMap, pairs: QubitPairMap, couplers: CouplerMap = None) -> dict: """Dump qubit and pair objects to a dictionary following the runcard format.""" native_gates = { "single_qubit": {q: qubit.native_gates.raw for q, qubit in qubits.items()}, @@ -104,17 +90,25 @@ def dump_qubits(qubits: QubitMap, pairs: QubitPairMap) -> dict: if len(natives) > 0: native_gates["two_qubit"][f"{p[0]}-{p[1]}"] = natives # add qubit characterization section + characterization = { + "single_qubit": {q: qubit.characterization for q, qubit in qubits.items()}, + "coupler": {}, + } + if couplers: + for coupler in couplers.values(): + characterization["coupler"][coupler.name] = 1 + return { "native_gates": native_gates, - "characterization": {"single_qubit": {q: qubit.characterization for q, qubit in qubits.items()}}, + "characterization": characterization, } -# TODO: Couplers would need to be associated to qubits in the runcard -def dump_couplers(couplers: CouplerMap, coupler_pairs: CouplerPairMap) -> dict: - """Dump coupler and coupler_pair objects to a dictionary following the runcard format.""" - # TODO: - return {"couplers": couplers, "coupler_qubits": coupler_pairs} +# # TODO: Couplers would need to be associated to qubits in the runcard +# def dump_couplers(couplers: CouplerMap) -> dict: +# """Dump coupler and coupler_pair objects to a dictionary following the runcard format.""" + +# return {"couplers": couplers} def dump_runcard(platform: Platform, path: Path): @@ -132,5 +126,8 @@ def dump_runcard(platform: Platform, path: Path): "settings": asdict(platform.settings), "topology": [list(pair) for pair in platform.pairs], } - settings.update(dump_qubits(platform.qubits, platform.pairs)) + if platform.couplers: + settings["couplers"] = list(platform.couplers) + + settings.update(dump_qubits(platform.qubits, platform.pairs, platform.couplers)) path.write_text(yaml.dump(settings, sort_keys=False, indent=4, default_flow_style=None)) diff --git a/src/qibolab/sweeper.py b/src/qibolab/sweeper.py index 766013233..44c9c1ed4 100644 --- a/src/qibolab/sweeper.py +++ b/src/qibolab/sweeper.py @@ -93,7 +93,7 @@ def __post_init__(self): raise ValueError("Cannot use a sweeper on both pulses and qubits.") if self.pulses is not None and self.parameter in QubitParameter: raise ValueError(f"Cannot sweep {self.parameter} without specifying qubits or couplers.") - if self.qubits and self.couplers is not None and self.parameter not in QubitParameter: + if self.parameter not in QubitParameter and self.qubits is not None or self.couplers is not None: raise ValueError(f"Cannot sweep {self.parameter} without specifying pulses.") if self.pulses is None and self.qubits is None and self.couplers is None: raise ValueError("Cannot use a sweeper without specifying pulses, qubits or couplers.") diff --git a/tests/dummy_qrc/zurich.py b/tests/dummy_qrc/zurich.py index 0ed774e09..e9153aedc 100644 --- a/tests/dummy_qrc/zurich.py +++ b/tests/dummy_qrc/zurich.py @@ -139,7 +139,7 @@ def create(runcard_path=RUNCARD): # create qubit objects from runcard runcard = load_runcard(runcard_path) qubits, pairs = load_qubits(runcard) - couplers, coupler_pairs = load_couplers(runcard) + couplers = load_couplers(runcard) settings = load_settings(runcard) # assign channels to qubits and sweetspots(operating points) @@ -176,5 +176,4 @@ def create(runcard_path=RUNCARD): settings, resonator_type="2D", couplers=couplers, - coupler_pairs=coupler_pairs, ) diff --git a/tests/dummy_qrc/zurich.yml b/tests/dummy_qrc/zurich.yml index 39d577548..ed3cfd1ab 100644 --- a/tests/dummy_qrc/zurich.yml +++ b/tests/dummy_qrc/zurich.yml @@ -1,15 +1,12 @@ nqubits: 5 - +qubits: [0, 1, 2, 3, 4] +couplers: [0, 1, 3, 4] +topology: [[0, 2], [1, 2], [2, 3], [2, 4]] settings: nshots: 4096 sampling_rate: 2.e+9 relaxation_time: 300_000 -qubits: [0, 1, 2, 3, 4] -couplers: [0, 1, 3, 4] - -topology: [[0, 2], [1, 2], [2, 3], [2, 4]] - native_gates: single_qubit: 0: # qubit number diff --git a/tests/test_dummy.py b/tests/test_dummy.py index 6bca16a5e..33038556f 100644 --- a/tests/test_dummy.py +++ b/tests/test_dummy.py @@ -26,6 +26,25 @@ def test_dummy_execute_pulse_sequence(acquisition): result = platform.execute_pulse_sequence(sequence, options) +def test_dummy_execute_pulse_sequence_couplers(): + platform = create_platform("dummy") + ordered_pair = (1, 2) + sequence = PulseSequence() + + cz, _ = platform.create_CZ_pulse_sequence( + qubits=(ordered_pair[1], ordered_pair[0]), + start=0, + ) + sequence.add(cz.get_qubit_pulses(ordered_pair[0])) + sequence.add(cz.get_qubit_pulses(ordered_pair[1])) + sequence.add(cz.get_coupler_pulses(platform.get_coupler_pair(ordered_pair))) + sequence.add(platform.create_qubit_readout_pulse(0, 40)) + sequence.add(platform.create_qubit_readout_pulse(2, 40)) + options = ExecutionParameters(nshots=None) + result = platform.execute_pulse_sequence(sequence, options) + assert len(sequence.get_coupler_pulses(1)) == 1 + + def test_dummy_execute_pulse_sequence_fast_reset(): platform = create_platform("dummy") sequence = PulseSequence() diff --git a/tests/test_dummy2.py b/tests/test_dummy2.py deleted file mode 100644 index 356a43c44..000000000 --- a/tests/test_dummy2.py +++ /dev/null @@ -1,237 +0,0 @@ -import numpy as np -import pytest - -from qibolab import AcquisitionType, AveragingMode, ExecutionParameters, create_platform -from qibolab.pulses import PulseSequence -from qibolab.sweeper import Parameter, QubitParameter, Sweeper - -SWEPT_POINTS = 5 - - -def test_dummy_initialization(): - platform = create_platform("dummy2") - platform.connect() - platform.setup() - platform.start() - platform.stop() - platform.disconnect() - - -@pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.RAW]) -def test_dummy_execute_pulse_sequence(acquisition): - platform = create_platform("dummy2") - sequence = PulseSequence() - sequence.add(platform.create_qubit_readout_pulse(0, 0)) - options = ExecutionParameters(nshots=None, acquisition_type=acquisition) - result = platform.execute_pulse_sequence(sequence, options) - - -def test_dummy_execute_pulse_sequence_couplers(): - platform = create_platform("dummy2") - ordered_pair = (1, 2) - sequence = PulseSequence() - - cz, _ = platform.create_CZ_pulse_sequence( - qubits=(ordered_pair[1], ordered_pair[0]), - start=0, - ) - sequence.add(cz.get_qubit_pulses(ordered_pair[0])) - sequence.add(cz.get_qubit_pulses(ordered_pair[1])) - sequence.add(cz.get_coupler_pulses(platform.get_coupler_pair(ordered_pair))) - sequence.add(platform.create_qubit_readout_pulse(0, 40)) - sequence.add(platform.create_qubit_readout_pulse(2, 40)) - options = ExecutionParameters(nshots=None) - result = platform.execute_pulse_sequence(sequence, options) - assert len(sequence.get_coupler_pulses(1)) == 1 - - -def test_dummy_execute_pulse_sequence_fast_reset(): - platform = create_platform("dummy2") - sequence = PulseSequence() - sequence.add(platform.create_qubit_readout_pulse(0, 0)) - options = ExecutionParameters(nshots=None, fast_reset=True) - result = platform.execute_pulse_sequence(sequence, options) - - -@pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.DISCRIMINATION]) -def test_dummy_execute_pulse_sequence_unrolling(acquisition): - platform = create_platform("dummy2") - sequences = [] - sequence = PulseSequence() - sequence.add(platform.create_qubit_readout_pulse(0, 0)) - for _ in range(5): - sequences.append(sequence) - options = ExecutionParameters(nshots=None, acquisition_type=acquisition) - result = platform.execute_pulse_sequences(sequences, options) - - -def test_dummy_single_sweep_RAW(): - platform = create_platform("dummy2") - sequence = PulseSequence() - pulse = platform.create_qubit_readout_pulse(qubit=0, start=0) - - parameter_range = np.random.randint(SWEPT_POINTS, size=SWEPT_POINTS) - sequence.add(pulse) - sweeper = Sweeper(Parameter.frequency, parameter_range, pulses=[pulse]) - options = ExecutionParameters( - nshots=10, - averaging_mode=AveragingMode.CYCLIC, - acquisition_type=AcquisitionType.RAW, - ) - results = platform.sweep(sequence, options, sweeper) - assert pulse.serial and pulse.qubit in results - shape = results[pulse.qubit].magnitude.shape - samples = platform.settings.sampling_rate * 1e-9 * pulse.duration - - assert shape == (samples * SWEPT_POINTS,) - - -@pytest.mark.parametrize("fast_reset", [True, False]) -@pytest.mark.parametrize("parameter", Parameter) -@pytest.mark.parametrize("average", [AveragingMode.SINGLESHOT, AveragingMode.CYCLIC]) -@pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.DISCRIMINATION]) -@pytest.mark.parametrize("nshots", [10, 20]) -def test_dummy_single_sweep(fast_reset, parameter, average, acquisition, nshots): - platform = create_platform("dummy2") - sequence = PulseSequence() - pulse = platform.create_qubit_readout_pulse(qubit=0, start=0) - if parameter is Parameter.amplitude: - parameter_range = np.random.rand(SWEPT_POINTS) - else: - parameter_range = np.random.randint(SWEPT_POINTS, size=SWEPT_POINTS) - sequence.add(pulse) - if parameter in QubitParameter: - sweeper = Sweeper(parameter, parameter_range, qubits=[platform.qubits[0]]) - else: - sweeper = Sweeper(parameter, parameter_range, pulses=[pulse]) - options = ExecutionParameters( - nshots=nshots, - averaging_mode=average, - acquisition_type=acquisition, - fast_reset=fast_reset, - ) - average = not options.averaging_mode is AveragingMode.SINGLESHOT - results = platform.sweep(sequence, options, sweeper) - - assert pulse.serial and pulse.qubit in results - if average: - results_shape = ( - results[pulse.qubit].magnitude.shape - if acquisition is AcquisitionType.INTEGRATION - else results[pulse.qubit].statistical_frequency.shape - ) - else: - results_shape = ( - results[pulse.qubit].magnitude.shape - if acquisition is AcquisitionType.INTEGRATION - else results[pulse.qubit].samples.shape - ) - assert results_shape == (SWEPT_POINTS,) if average else (nshots, SWEPT_POINTS) - - -@pytest.mark.parametrize("parameter1", Parameter) -@pytest.mark.parametrize("parameter2", Parameter) -@pytest.mark.parametrize("average", [AveragingMode.SINGLESHOT, AveragingMode.CYCLIC]) -@pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.DISCRIMINATION]) -@pytest.mark.parametrize("nshots", [10, 20]) -def test_dummy_double_sweep(parameter1, parameter2, average, acquisition, nshots): - platform = create_platform("dummy2") - sequence = PulseSequence() - pulse = platform.create_qubit_drive_pulse(qubit=0, start=0, duration=1000) - ro_pulse = platform.create_qubit_readout_pulse(qubit=0, start=pulse.finish) - sequence.add(pulse) - sequence.add(ro_pulse) - parameter_range_1 = ( - np.random.rand(SWEPT_POINTS) - if parameter1 is Parameter.amplitude - else np.random.randint(SWEPT_POINTS, size=SWEPT_POINTS) - ) - parameter_range_2 = ( - np.random.rand(SWEPT_POINTS) - if parameter2 is Parameter.amplitude - else np.random.randint(SWEPT_POINTS, size=SWEPT_POINTS) - ) - - if parameter1 in QubitParameter: - sweeper1 = Sweeper(parameter1, parameter_range_1, qubits=[platform.qubits[0]]) - else: - sweeper1 = Sweeper(parameter1, parameter_range_1, pulses=[ro_pulse]) - if parameter2 in QubitParameter: - sweeper2 = Sweeper(parameter2, parameter_range_2, qubits=[platform.qubits[0]]) - else: - sweeper2 = Sweeper(parameter2, parameter_range_2, pulses=[pulse]) - - options = ExecutionParameters( - nshots=nshots, - averaging_mode=average, - acquisition_type=acquisition, - ) - average = not options.averaging_mode is AveragingMode.SINGLESHOT - results = platform.sweep(sequence, options, sweeper1, sweeper2) - - assert ro_pulse.serial and ro_pulse.qubit in results - - if average: - results_shape = ( - results[pulse.qubit].magnitude.shape - if acquisition is AcquisitionType.INTEGRATION - else results[pulse.qubit].statistical_frequency.shape - ) - else: - results_shape = ( - results[pulse.qubit].magnitude.shape - if acquisition is AcquisitionType.INTEGRATION - else results[pulse.qubit].samples.shape - ) - - assert results_shape == (SWEPT_POINTS, SWEPT_POINTS) if average else (nshots, SWEPT_POINTS, SWEPT_POINTS) - - -@pytest.mark.parametrize("parameter", Parameter) -@pytest.mark.parametrize("average", [AveragingMode.SINGLESHOT, AveragingMode.CYCLIC]) -@pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.DISCRIMINATION]) -@pytest.mark.parametrize("nshots", [10, 20]) -def test_dummy_single_sweep_multiplex(parameter, average, acquisition, nshots): - platform = create_platform("dummy2") - sequence = PulseSequence() - ro_pulses = {} - for qubit in platform.qubits: - ro_pulses[qubit] = platform.create_qubit_readout_pulse(qubit=qubit, start=0) - sequence.add(ro_pulses[qubit]) - parameter_range = ( - np.random.rand(SWEPT_POINTS) - if parameter is Parameter.amplitude - else np.random.randint(SWEPT_POINTS, size=SWEPT_POINTS) - ) - - if parameter in QubitParameter: - sweeper1 = Sweeper(parameter, parameter_range, qubits=[platform.qubits[qubit] for qubit in platform.qubits]) - else: - sweeper1 = Sweeper(parameter, parameter_range, pulses=[ro_pulses[qubit] for qubit in platform.qubits]) - - options = ExecutionParameters( - nshots=nshots, - averaging_mode=average, - acquisition_type=acquisition, - ) - average = not options.averaging_mode is AveragingMode.SINGLESHOT - results = platform.sweep(sequence, options, sweeper1) - - for ro_pulse in ro_pulses.values(): - assert ro_pulse.serial and ro_pulse.qubit in results - if average: - results_shape = ( - results[ro_pulse.qubit].magnitude.shape - if acquisition is AcquisitionType.INTEGRATION - else results[ro_pulse.qubit].statistical_frequency.shape - ) - else: - results_shape = ( - results[ro_pulse.qubit].magnitude.shape - if acquisition is AcquisitionType.INTEGRATION - else results[ro_pulse.qubit].samples.shape - ) - assert results_shape == (SWEPT_POINTS,) if average else (nshots, SWEPT_POINTS) - - -# TODO: add test_dummy_double_sweep_multiplex diff --git a/tests/test_sweeper.py b/tests/test_sweeper.py index 6b0512a09..a699e71d2 100644 --- a/tests/test_sweeper.py +++ b/tests/test_sweeper.py @@ -25,6 +25,7 @@ def test_sweeper_pulses(parameter): def test_sweeper_qubits(parameter): qubit = Qubit(0) parameter_range = np.random.randint(10, size=10) + print(parameter) if parameter in QubitParameter: sweeper = Sweeper(parameter, parameter_range, qubits=[qubit]) assert sweeper.parameter is parameter From dbb9c859228a02c1e368e1d83746df200cee3807 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 5 Sep 2023 13:48:44 +0400 Subject: [PATCH 25/52] remove print --- tests/test_sweeper.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_sweeper.py b/tests/test_sweeper.py index a699e71d2..6b0512a09 100644 --- a/tests/test_sweeper.py +++ b/tests/test_sweeper.py @@ -25,7 +25,6 @@ def test_sweeper_pulses(parameter): def test_sweeper_qubits(parameter): qubit = Qubit(0) parameter_range = np.random.randint(10, size=10) - print(parameter) if parameter in QubitParameter: sweeper = Sweeper(parameter, parameter_range, qubits=[qubit]) assert sweeper.parameter is parameter From ef822f4496faa2c3af331e352bfb40114cfd254c Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 5 Sep 2023 13:57:08 +0400 Subject: [PATCH 26/52] fix tests --- src/qibolab/couplers.py | 24 +-- src/qibolab/dummy.py | 241 ++++++++++++++++++++-------- src/qibolab/dummy2.py | 339 --------------------------------------- src/qibolab/platform.py | 5 +- src/qibolab/serialize.py | 51 +++--- src/qibolab/sweeper.py | 9 +- tests/test_dummy.py | 19 +++ tests/test_dummy2.py | 237 --------------------------- 8 files changed, 225 insertions(+), 700 deletions(-) delete mode 100644 src/qibolab/dummy2.py delete mode 100644 tests/test_dummy2.py diff --git a/src/qibolab/couplers.py b/src/qibolab/couplers.py index cd0ea7a03..3c670f7cb 100644 --- a/src/qibolab/couplers.py +++ b/src/qibolab/couplers.py @@ -1,9 +1,8 @@ from dataclasses import dataclass, field -from typing import List, Optional, Tuple, Union +from typing import List, Optional, Union from qibolab.channels import Channel -from qibolab.native import TwoQubitNatives -from qibolab.qubits import Qubit, QubitId +from qibolab.qubits import Qubit CouplerId = Union[str, int] """Type for Coupler names.""" @@ -45,22 +44,3 @@ def channels(self): for channel in [self.flux]: if channel is not None: yield channel - - -CouplerPairId = Tuple[CouplerId, QubitId, QubitId] -"""Type for holding ``QubitPair``s in the ``platform.pairs`` dictionary.""" - - -# Maybe this one is not needed -@dataclass -class CouplerPair: - """Data structure for holding a coupler and its two-qubits on a pair of qubits. - - Qubits are sorted according to ``qubit.name`` such that - ``qubit1.name < qubit2.name``. - """ - - coupler: Coupler - qubit1: Qubit - qubit2: Qubit - native_gates: TwoQubitNatives = field(default_factory=TwoQubitNatives) diff --git a/src/qibolab/dummy.py b/src/qibolab/dummy.py index 44b0f8948..1527426ac 100644 --- a/src/qibolab/dummy.py +++ b/src/qibolab/dummy.py @@ -1,35 +1,45 @@ +import itertools + from qibolab.channels import Channel, ChannelMap from qibolab.instruments.dummy import DummyInstrument from qibolab.platform import Platform -from qibolab.serialize import load_qubits, load_settings, register_gates +from qibolab.serialize import load_couplers, load_qubits, load_settings, register_gates NAME = "dummy" RUNCARD = { - "nqubits": 4, + "nqubits": 5, + "description": "Dummy2 5-qubits + couplers on star topology platform.", "qubits": [ 0, 1, 2, 3, + 4, + ], + "couplers": [ + 0, + 1, + 3, + 4, ], "settings": {"sampling_rate": 1000000000, "relaxation_time": 0, "nshots": 1024}, - "topology": [[0, 1], [1, 2], [0, 3]], + "topology": [[0, 2], [1, 2], [2, 3], [2, 4]], "native_gates": { "single_qubit": { 0: { "RX": { "duration": 40, - "amplitude": 0.005, - "frequency": 4700000000, + "amplitude": 0.1, + "frequency": 4.0e9, "shape": "Gaussian(5)", "type": "qd", "start": 0, "phase": 0, }, "MZ": { - "duration": 1000, - "amplitude": 0.0025, - "frequency": 7226500000, + "duration": 2000, + "amplitude": 0.1, + "frequency": 5.2e9, "shape": "Rectangular()", "type": "ro", "start": 0, @@ -39,17 +49,17 @@ 1: { "RX": { "duration": 40, - "amplitude": 0.0484, - "frequency": 4855663000, + "amplitude": 0.3, + "frequency": 4.2e9, "shape": "Drag(5, -0.02)", "type": "qd", "start": 0, "phase": 0, }, "MZ": { - "duration": 620, - "amplitude": 0.003575, - "frequency": 7453265000, + "duration": 2000, + "amplitude": 0.1, + "frequency": 4.9e9, "shape": "Rectangular()", "type": "ro", "start": 0, @@ -59,17 +69,17 @@ 2: { "RX": { "duration": 40, - "amplitude": 0.005, - "frequency": 2700000000, - "shape": "Gaussian(5)", + "amplitude": 0.3, + "frequency": 4.5e9, + "shape": "Drag(5, -0.02)", "type": "qd", "start": 0, "phase": 0, }, "MZ": { - "duration": 1000, - "amplitude": 0.0025, - "frequency": 5226500000, + "duration": 2000, + "amplitude": 0.1, + "frequency": 6.1e9, "shape": "Rectangular()", "type": "ro", "start": 0, @@ -79,17 +89,37 @@ 3: { "RX": { "duration": 40, - "amplitude": 0.0484, - "frequency": 5855663000, + "amplitude": 0.3, + "frequency": 4.15e9, + "shape": "Drag(5, -0.02)", + "type": "qd", + "start": 0, + "phase": 0, + }, + "MZ": { + "duration": 2000, + "amplitude": 0.1, + "frequency": 5.8e9, + "shape": "Rectangular()", + "type": "ro", + "start": 0, + "phase": 0, + }, + }, + 4: { + "RX": { + "duration": 40, + "amplitude": 0.3, + "frequency": 4155663000, "shape": "Drag(5, -0.02)", "type": "qd", "start": 0, "phase": 0, }, "MZ": { - "duration": 620, - "amplitude": 0.003575, - "frequency": 8453265000, + "duration": 2000, + "amplitude": 0.1, + "frequency": 5.5e9, "shape": "Rectangular()", "type": "ro", "start": 0, @@ -98,62 +128,92 @@ }, }, "two_qubit": { - "0-1": { + "0-2": { "CZ": [ { "duration": 30, - "amplitude": 0.055, + "amplitude": 0.05, "shape": "Rectangular()", - "qubit": 1, + "qubit": 2, "relative_start": 0, "type": "qf", }, - {"type": "virtual_z", "phase": -1.5707963267948966, "qubit": 1}, - {"type": "virtual_z", "phase": -1.5707963267948966, "qubit": 0}, + {"type": "virtual_z", "phase": 0.0, "qubit": 0}, + {"type": "virtual_z", "phase": 0.0, "qubit": 2}, + { + "type": "coupler", + "duration": 40, + "amplitude": 0.1, + "shape": "Rectangular()", + "coupler": 0, + "relative_start": 0, + }, ] }, "1-2": { "CZ": [ { "duration": 30, - "amplitude": 0.055, + "amplitude": 0.05, "shape": "Rectangular()", - "qubit": 1, + "qubit": 2, "relative_start": 0, "type": "qf", }, - {"type": "virtual_z", "phase": -1.5707963267948966, "qubit": 2}, - {"type": "virtual_z", "phase": -1.5707963267948966, "qubit": 1}, + {"type": "virtual_z", "phase": 0.0, "qubit": 1}, + {"type": "virtual_z", "phase": 0.0, "qubit": 2}, + { + "type": "coupler", + "duration": 40, + "amplitude": 0.1, + "shape": "Rectangular()", + "coupler": 1, + "relative_start": 0, + }, ] }, - "0-3": { + "3-2": { "CZ": [ { - "duration": 34, - "amplitude": 0.055, - "shape": "SNZ(1)", - "qubit": 3, + "duration": 30, + "amplitude": 0.05, + "shape": "Rectangular()", + "qubit": 2, "relative_start": 0, "type": "qf", }, + {"type": "virtual_z", "phase": 0.0, "qubit": 3}, + {"type": "virtual_z", "phase": 0.0, "qubit": 2}, + { + "type": "coupler", + "duration": 40, + "amplitude": 0.1, + "shape": "Rectangular()", + "coupler": 3, + "relative_start": 0, + }, + ] + }, + "4-2": { + "CZ": [ { - "duration": 4, - "amplitude": 0.055, - "shape": "SNZ(1)", - "qubit": 3, - "relative_start": 14, + "duration": 30, + "amplitude": 0.05, + "shape": "Rectangular()", + "qubit": 2, + "relative_start": 0, "type": "qf", }, + {"type": "virtual_z", "phase": 0.0, "qubit": 4}, + {"type": "virtual_z", "phase": 0.0, "qubit": 2}, { - "duration": 34, + "type": "coupler", + "duration": 40, "amplitude": 0.1, "shape": "Rectangular()", - "qubit": 3, + "coupler": 4, "relative_start": 0, - "type": "qf", }, - {"type": "virtual_z", "phase": -1.5707963267948966, "qubit": 3}, - {"type": "virtual_z", "phase": -1.5707963267948966, "qubit": 0}, ] }, }, @@ -161,60 +221,90 @@ "characterization": { "single_qubit": { 0: { - "readout_frequency": 7226500000, - "drive_frequency": 4700000000, + "readout_frequency": 5.2e9, + "drive_frequency": 4.0e9, "T1": 0.0, "T2": 0.0, "sweetspot": 0.0, + "mean_gnd_states": (0 + 1j), + "mean_exc_states": (1 + 0j), "threshold": 0.0, "iq_angle": 0.0, }, 1: { - "readout_frequency": 7453265000, - "drive_frequency": 4855663000, + "readout_frequency": 4.9e9, + "drive_frequency": 4.2e9, "T1": 0.0, "T2": 0.0, - "sweetspot": -0.047, - "threshold": 0.00028502261712637096, - "iq_angle": 1.283105298787488, + "sweetspot": 0.0, + "mean_gnd_states": (0.25 + 0j), + "mean_exc_states": (0 + 0.25j), + "threshold": 0.0, + "iq_angle": 0.0, }, 2: { - "readout_frequency": 5226500000, - "drive_frequency": 2700000000, + "readout_frequency": 6.1e9, + "drive_frequency": 4.5e9, "T1": 0.0, "T2": 0.0, "sweetspot": 0.0, + "mean_gnd_states": (0.5 + 0j), + "mean_exc_states": (0 + 0.5j), "threshold": 0.0, "iq_angle": 0.0, }, 3: { - "readout_frequency": 8453265000, - "drive_frequency": 5855663000, + "readout_frequency": 5.8e9, + "drive_frequency": 4.15e9, "T1": 0.0, "T2": 0.0, - "sweetspot": -0.047, - "threshold": 0.00028502261712637096, - "iq_angle": 1.283105298787488, + "sweetspot": 0.0, + "mean_gnd_states": (0.75 + 0j), + "mean_exc_states": (0 + 0.75j), + "threshold": 0.0, + "iq_angle": 0.0, + }, + 4: { + "readout_frequency": 5.5e9, + "drive_frequency": 4.1e9, + "T1": 0.0, + "T2": 0.0, + "sweetspot": 0.0, + "mean_gnd_states": (1 + 0j), + "mean_exc_states": (0 + 1j), + "threshold": 0.0, + "iq_angle": 0.0, }, - } + }, + "coupler": { + 0: {"sweetspot": 0.0}, + 1: {"sweetspot": 0.0}, + 3: {"sweetspot": 0.0}, + 4: {"sweetspot": 0.0}, + }, }, } def create_dummy(): - """Create a dummy platform on two qubits using the dummy instrument.""" + """Create a dummy platform using the dummy instrument.""" # Create dummy controller instrument = DummyInstrument(NAME, 0) - # Create channel objects nqubits = RUNCARD["nqubits"] channels = ChannelMap() channels |= Channel("readout", port=instrument["readout"]) channels |= (Channel(f"drive-{i}", port=instrument[f"drive-{i}"]) for i in range(nqubits)) channels |= (Channel(f"flux-{i}", port=instrument[f"flux-{i}"]) for i in range(nqubits)) + # FIXME: Issues with the names if they are strings maybe + channels |= ( + Channel(f"flux_coupler-{c}", port=instrument[f"flux_coupler-{c}"]) + for c in itertools.chain(range(0, 2), range(3, 5)) + ) channels["readout"].attenuation = 0 qubits, pairs = load_qubits(RUNCARD) + couplers = load_couplers(RUNCARD) settings = load_settings(RUNCARD) # map channels to qubits @@ -223,8 +313,25 @@ def create_dummy(): qubit.drive = channels[f"drive-{q}"] qubit.flux = channels[f"flux-{q}"] - qubits, pairs = register_gates(RUNCARD, qubits, pairs) + # map channels to couplers + for c, coupler in couplers.items(): + coupler.flux = channels[f"flux_coupler-{c}"] + + # FIXME: Call couplers by its name + # assign couplers to qubits + for c in itertools.chain(range(0, 2), range(3, 5)): + qubits[c].flux_coupler[c] = couplers[c].name + qubits[2].flux_coupler[c] = couplers[c].name + + # FIXME: Call couplers by its name + # assign qubits to couplers + for c in itertools.chain(range(0, 2), range(3, 5)): + couplers[c].qubits = [qubits[c].name] + couplers[c].qubits.append(qubits[2].name) + + qubits, pairs = register_gates(RUNCARD, qubits, pairs, couplers) instruments = {instrument.name: instrument} instrument.sampling_rate = settings.sampling_rate * 1e-9 - return Platform(NAME, qubits, pairs, instruments, settings, resonator_type="2D") + + return Platform(NAME, qubits, pairs, instruments, settings, resonator_type="2D", couplers=couplers) diff --git a/src/qibolab/dummy2.py b/src/qibolab/dummy2.py deleted file mode 100644 index b54306eef..000000000 --- a/src/qibolab/dummy2.py +++ /dev/null @@ -1,339 +0,0 @@ -import itertools - -from qibolab.channels import Channel, ChannelMap -from qibolab.instruments.dummy import DummyInstrument -from qibolab.platform import Platform -from qibolab.serialize import load_couplers, load_qubits, load_settings, register_gates - -NAME = "dummy2" -RUNCARD = { - "nqubits": 5, - "description": "Dummy2 5-qubits + couplers on star topology platform.", - "qubits": [ - 0, - 1, - 2, - 3, - 4, - ], - "couplers": [ - 0, - 1, - 3, - 4, - ], - "settings": {"sampling_rate": 1000000000, "relaxation_time": 0, "nshots": 1024}, - "topology": [[0, 2], [1, 2], [2, 3], [2, 4]], - "native_gates": { - "single_qubit": { - 0: { - "RX": { - "duration": 40, - "amplitude": 0.1, - "frequency": 4.0e9, - "shape": "Gaussian(5)", - "type": "qd", - "start": 0, - "phase": 0, - }, - "MZ": { - "duration": 2000, - "amplitude": 0.1, - "frequency": 5.2e9, - "shape": "Rectangular()", - "type": "ro", - "start": 0, - "phase": 0, - }, - }, - 1: { - "RX": { - "duration": 40, - "amplitude": 0.3, - "frequency": 4.2e9, - "shape": "Drag(5, -0.02)", - "type": "qd", - "start": 0, - "phase": 0, - }, - "MZ": { - "duration": 2000, - "amplitude": 0.1, - "frequency": 4.9e9, - "shape": "Rectangular()", - "type": "ro", - "start": 0, - "phase": 0, - }, - }, - 2: { - "RX": { - "duration": 40, - "amplitude": 0.3, - "frequency": 4.5e9, - "shape": "Drag(5, -0.02)", - "type": "qd", - "start": 0, - "phase": 0, - }, - "MZ": { - "duration": 2000, - "amplitude": 0.1, - "frequency": 6.1e9, - "shape": "Rectangular()", - "type": "ro", - "start": 0, - "phase": 0, - }, - }, - 3: { - "RX": { - "duration": 40, - "amplitude": 0.3, - "frequency": 4.15e9, - "shape": "Drag(5, -0.02)", - "type": "qd", - "start": 0, - "phase": 0, - }, - "MZ": { - "duration": 2000, - "amplitude": 0.1, - "frequency": 5.8e9, - "shape": "Rectangular()", - "type": "ro", - "start": 0, - "phase": 0, - }, - }, - 4: { - "RX": { - "duration": 40, - "amplitude": 0.3, - "frequency": 4155663000, - "shape": "Drag(5, -0.02)", - "type": "qd", - "start": 0, - "phase": 0, - }, - "MZ": { - "duration": 2000, - "amplitude": 0.1, - "frequency": 5.5e9, - "shape": "Rectangular()", - "type": "ro", - "start": 0, - "phase": 0, - }, - }, - }, - "two_qubit": { - "0-2": { - "CZ": [ - { - "duration": 30, - "amplitude": 0.05, - "shape": "Rectangular()", - "qubit": 2, - "relative_start": 0, - "type": "qf", - }, - {"type": "virtual_z", "phase": 0.0, "qubit": 0}, - {"type": "virtual_z", "phase": 0.0, "qubit": 2}, - { - "type": "coupler", - "duration": 40, - "amplitude": 0.1, - "shape": "Rectangular()", - "coupler": 0, - "relative_start": 0, - }, - ] - }, - "1-2": { - "CZ": [ - { - "duration": 30, - "amplitude": 0.05, - "shape": "Rectangular()", - "qubit": 2, - "relative_start": 0, - "type": "qf", - }, - {"type": "virtual_z", "phase": 0.0, "qubit": 1}, - {"type": "virtual_z", "phase": 0.0, "qubit": 2}, - { - "type": "coupler", - "duration": 40, - "amplitude": 0.1, - "shape": "Rectangular()", - "coupler": 1, - "relative_start": 0, - }, - ] - }, - "3-2": { - "CZ": [ - { - "duration": 30, - "amplitude": 0.05, - "shape": "Rectangular()", - "qubit": 2, - "relative_start": 0, - "type": "qf", - }, - {"type": "virtual_z", "phase": 0.0, "qubit": 3}, - {"type": "virtual_z", "phase": 0.0, "qubit": 2}, - { - "type": "coupler", - "duration": 40, - "amplitude": 0.1, - "shape": "Rectangular()", - "coupler": 3, - "relative_start": 0, - }, - ] - }, - "4-2": { - "CZ": [ - { - "duration": 30, - "amplitude": 0.05, - "shape": "Rectangular()", - "qubit": 2, - "relative_start": 0, - "type": "qf", - }, - {"type": "virtual_z", "phase": 0.0, "qubit": 4}, - {"type": "virtual_z", "phase": 0.0, "qubit": 2}, - { - "type": "coupler", - "duration": 40, - "amplitude": 0.1, - "shape": "Rectangular()", - "coupler": 4, - "relative_start": 0, - }, - ] - }, - }, - }, - "characterization": { - "single_qubit": { - 0: { - "readout_frequency": 5.2e9, - "drive_frequency": 4.0e9, - "T1": 0.0, - "T2": 0.0, - "sweetspot": 0.0, - "mean_gnd_states": (0 + 1j), - "mean_exc_states": (1 + 0j), - "threshold": 0.0, - "iq_angle": 0.0, - }, - 1: { - "readout_frequency": 4.9e9, - "drive_frequency": 4.2e9, - "T1": 0.0, - "T2": 0.0, - "sweetspot": 0.0, - "mean_gnd_states": (0.25 + 0j), - "mean_exc_states": (0 + 0.25j), - "threshold": 0.0, - "iq_angle": 0.0, - }, - 2: { - "readout_frequency": 6.1e9, - "drive_frequency": 4.5e9, - "T1": 0.0, - "T2": 0.0, - "sweetspot": 0.0, - "mean_gnd_states": (0.5 + 0j), - "mean_exc_states": (0 + 0.5j), - "threshold": 0.0, - "iq_angle": 0.0, - }, - 3: { - "readout_frequency": 5.8e9, - "drive_frequency": 4.15e9, - "T1": 0.0, - "T2": 0.0, - "sweetspot": 0.0, - "mean_gnd_states": (0.75 + 0j), - "mean_exc_states": (0 + 0.75j), - "threshold": 0.0, - "iq_angle": 0.0, - }, - 4: { - "readout_frequency": 5.5e9, - "drive_frequency": 4.1e9, - "T1": 0.0, - "T2": 0.0, - "sweetspot": 0.0, - "mean_gnd_states": (1 + 0j), - "mean_exc_states": (0 + 1j), - "threshold": 0.0, - "iq_angle": 0.0, - }, - }, - "coupler": { - 0: {"sweetspot": 0.0}, - 1: {"sweetspot": 0.0}, - 3: {"sweetspot": 0.0}, - 4: {"sweetspot": 0.0}, - }, - }, -} - - -def create_dummy2(): - """Create a dummy platform using the dummy instrument.""" - # Create dummy controller - instrument = DummyInstrument(NAME, 0) - # Create channel objects - nqubits = RUNCARD["nqubits"] - channels = ChannelMap() - channels |= Channel("readout", port=instrument["readout"]) - channels |= (Channel(f"drive-{i}", port=instrument[f"drive-{i}"]) for i in range(nqubits)) - channels |= (Channel(f"flux-{i}", port=instrument[f"flux-{i}"]) for i in range(nqubits)) - # FIXME: Issues with the names if they are strings maybe - channels |= ( - Channel(f"flux_coupler-{c}", port=instrument[f"flux_coupler-{c}"]) - for c in itertools.chain(range(0, 2), range(3, 5)) - ) - channels["readout"].attenuation = 0 - - qubits, pairs = load_qubits(RUNCARD) - couplers, coupler_pairs = load_couplers(RUNCARD) - settings = load_settings(RUNCARD) - - # map channels to qubits - for q, qubit in qubits.items(): - qubit.readout = channels["readout"] - qubit.drive = channels[f"drive-{q}"] - qubit.flux = channels[f"flux-{q}"] - - # map channels to couplers - for c, coupler in couplers.items(): - coupler.flux = channels[f"flux_coupler-{c}"] - - # FIXME: Call couplers by its name - # assign couplers to qubits - for c in itertools.chain(range(0, 2), range(3, 5)): - qubits[c].flux_coupler[c] = couplers[c].name - qubits[2].flux_coupler[c] = couplers[c].name - - # FIXME: Call couplers by its name - # assign qubits to couplers - for c in itertools.chain(range(0, 2), range(3, 5)): - couplers[c].qubits = [qubits[c].name] - couplers[c].qubits.append(qubits[2].name) - - qubits, pairs = register_gates(RUNCARD, qubits, pairs, couplers) - - instruments = {instrument.name: instrument} - instrument.sampling_rate = settings.sampling_rate * 1e-9 - - return Platform( - NAME, qubits, pairs, instruments, settings, resonator_type="2D", couplers=couplers, coupler_pairs=coupler_pairs - ) diff --git a/src/qibolab/platform.py b/src/qibolab/platform.py index baac6b1cc..91e3d10e4 100644 --- a/src/qibolab/platform.py +++ b/src/qibolab/platform.py @@ -8,7 +8,7 @@ import networkx as nx from qibo.config import log, raise_error -from qibolab.couplers import Coupler, CouplerId, CouplerPair, CouplerPairId +from qibolab.couplers import Coupler, CouplerId from qibolab.execution_parameters import ExecutionParameters from qibolab.instruments.abstract import Controller, Instrument, InstrumentId from qibolab.native import NativeType @@ -20,7 +20,6 @@ QubitMap = Dict[QubitId, Qubit] CouplerMap = Dict[CouplerId, Coupler] QubitPairMap = Dict[QubitPairId, QubitPair] -CouplerPairMap = Dict[CouplerPairId, CouplerPair] @dataclass @@ -57,8 +56,6 @@ class Platform: couplers: Optional[CouplerMap] = None """Dictionary mapping coupler names to :class:`qibolab.couplers.Coupler` objects.""" - coupler_pairs: Optional[CouplerPairMap] = None - """Dictionary mapping sorted tuples of coupler names to :class:`qibolab.qubits.QubitPair` objects.""" is_connected: bool = False """Flag for whether we are connected to the physical instruments.""" diff --git a/src/qibolab/serialize.py b/src/qibolab/serialize.py index b83bdac16..20e111e91 100644 --- a/src/qibolab/serialize.py +++ b/src/qibolab/serialize.py @@ -10,16 +10,9 @@ import yaml -from qibolab.couplers import Coupler, CouplerPair +from qibolab.couplers import Coupler from qibolab.native import SingleQubitNatives, TwoQubitNatives -from qibolab.platform import ( - CouplerMap, - CouplerPairMap, - Platform, - QubitMap, - QubitPairMap, - Settings, -) +from qibolab.platform import CouplerMap, Platform, QubitMap, QubitPairMap, Settings from qibolab.qubits import Qubit, QubitPair @@ -50,24 +43,17 @@ def load_qubits(runcard: dict) -> Tuple[QubitMap, QubitPairMap]: return qubits, pairs -def load_couplers(runcard: dict) -> Tuple[CouplerMap, CouplerPairMap]: +def load_couplers(runcard: dict) -> CouplerMap: """Load couplers and pairs from the runcard. Uses the native gate and characterization sections of the runcard to parse the :class:`qibolab.qubits.Qubit` and :class:`qibolab.qubits.QubitPair` - and the the :class:`qibolab.coupler.Coupler` and :class:`qibolab.coupler.CouplerPair` + and the the :class:`qibolab.coupler.Coupler` objects. """ - qubits = {q: Qubit(q, **char) for q, char in runcard["characterization"]["single_qubit"].items()} couplers = {c: Coupler(c, **char) for c, char in runcard["characterization"]["coupler"].items()} - coupler_pairs = {} - for pair, coupler in zip(runcard["topology"], runcard["couplers"]): - pair = tuple(sorted(pair)) - # Fancier ordering for couplers - coupler_pairs[pair] = CouplerPair(couplers[coupler], qubits[pair[0]], qubits[pair[1]]) - - return couplers, coupler_pairs + return couplers # This creates the compiler error @@ -92,7 +78,7 @@ def register_gates( return qubits, pairs -def dump_qubits(qubits: QubitMap, pairs: QubitPairMap) -> dict: +def dump_qubits(qubits: QubitMap, pairs: QubitPairMap, couplers: CouplerMap = None) -> dict: """Dump qubit and pair objects to a dictionary following the runcard format.""" native_gates = { "single_qubit": {q: qubit.native_gates.raw for q, qubit in qubits.items()}, @@ -104,17 +90,25 @@ def dump_qubits(qubits: QubitMap, pairs: QubitPairMap) -> dict: if len(natives) > 0: native_gates["two_qubit"][f"{p[0]}-{p[1]}"] = natives # add qubit characterization section + characterization = { + "single_qubit": {q: qubit.characterization for q, qubit in qubits.items()}, + "coupler": {}, + } + if couplers: + for coupler in couplers.values(): + characterization["coupler"][coupler.name] = 1 + return { "native_gates": native_gates, - "characterization": {"single_qubit": {q: qubit.characterization for q, qubit in qubits.items()}}, + "characterization": characterization, } -# TODO: Couplers would need to be associated to qubits in the runcard -def dump_couplers(couplers: CouplerMap, coupler_pairs: CouplerPairMap) -> dict: - """Dump coupler and coupler_pair objects to a dictionary following the runcard format.""" - # TODO: - return {"couplers": couplers, "coupler_qubits": coupler_pairs} +# # TODO: Couplers would need to be associated to qubits in the runcard +# def dump_couplers(couplers: CouplerMap) -> dict: +# """Dump coupler and coupler_pair objects to a dictionary following the runcard format.""" + +# return {"couplers": couplers} def dump_runcard(platform: Platform, path: Path): @@ -132,5 +126,8 @@ def dump_runcard(platform: Platform, path: Path): "settings": asdict(platform.settings), "topology": [list(pair) for pair in platform.pairs], } - settings.update(dump_qubits(platform.qubits, platform.pairs)) + if platform.couplers: + settings["couplers"] = list(platform.couplers) + + settings.update(dump_qubits(platform.qubits, platform.pairs, platform.couplers)) path.write_text(yaml.dump(settings, sort_keys=False, indent=4, default_flow_style=None)) diff --git a/src/qibolab/sweeper.py b/src/qibolab/sweeper.py index 4bfe4563d..44c9c1ed4 100644 --- a/src/qibolab/sweeper.py +++ b/src/qibolab/sweeper.py @@ -85,17 +85,18 @@ class Sweeper: values: npt.NDArray pulses: Optional[list] = None qubits: Optional[list] = None + couplers: Optional[list] = None type: Optional[SweeperType] = SweeperType.ABSOLUTE def __post_init__(self): if self.pulses is not None and self.qubits is not None: raise ValueError("Cannot use a sweeper on both pulses and qubits.") if self.pulses is not None and self.parameter in QubitParameter: - raise ValueError(f"Cannot sweep {self.parameter} without specifying qubits.") - if self.qubits is not None and self.parameter not in QubitParameter: + raise ValueError(f"Cannot sweep {self.parameter} without specifying qubits or couplers.") + if self.parameter not in QubitParameter and self.qubits is not None or self.couplers is not None: raise ValueError(f"Cannot sweep {self.parameter} without specifying pulses.") - if self.pulses is None and self.qubits is None: - raise ValueError("Cannot use a sweeper without specifying pulses or qubits.") + if self.pulses is None and self.qubits is None and self.couplers is None: + raise ValueError("Cannot use a sweeper without specifying pulses, qubits or couplers.") def get_values(self, base_value): """Convert sweeper values depending on the sweeper type""" diff --git a/tests/test_dummy.py b/tests/test_dummy.py index 6bca16a5e..33038556f 100644 --- a/tests/test_dummy.py +++ b/tests/test_dummy.py @@ -26,6 +26,25 @@ def test_dummy_execute_pulse_sequence(acquisition): result = platform.execute_pulse_sequence(sequence, options) +def test_dummy_execute_pulse_sequence_couplers(): + platform = create_platform("dummy") + ordered_pair = (1, 2) + sequence = PulseSequence() + + cz, _ = platform.create_CZ_pulse_sequence( + qubits=(ordered_pair[1], ordered_pair[0]), + start=0, + ) + sequence.add(cz.get_qubit_pulses(ordered_pair[0])) + sequence.add(cz.get_qubit_pulses(ordered_pair[1])) + sequence.add(cz.get_coupler_pulses(platform.get_coupler_pair(ordered_pair))) + sequence.add(platform.create_qubit_readout_pulse(0, 40)) + sequence.add(platform.create_qubit_readout_pulse(2, 40)) + options = ExecutionParameters(nshots=None) + result = platform.execute_pulse_sequence(sequence, options) + assert len(sequence.get_coupler_pulses(1)) == 1 + + def test_dummy_execute_pulse_sequence_fast_reset(): platform = create_platform("dummy") sequence = PulseSequence() diff --git a/tests/test_dummy2.py b/tests/test_dummy2.py deleted file mode 100644 index 356a43c44..000000000 --- a/tests/test_dummy2.py +++ /dev/null @@ -1,237 +0,0 @@ -import numpy as np -import pytest - -from qibolab import AcquisitionType, AveragingMode, ExecutionParameters, create_platform -from qibolab.pulses import PulseSequence -from qibolab.sweeper import Parameter, QubitParameter, Sweeper - -SWEPT_POINTS = 5 - - -def test_dummy_initialization(): - platform = create_platform("dummy2") - platform.connect() - platform.setup() - platform.start() - platform.stop() - platform.disconnect() - - -@pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.RAW]) -def test_dummy_execute_pulse_sequence(acquisition): - platform = create_platform("dummy2") - sequence = PulseSequence() - sequence.add(platform.create_qubit_readout_pulse(0, 0)) - options = ExecutionParameters(nshots=None, acquisition_type=acquisition) - result = platform.execute_pulse_sequence(sequence, options) - - -def test_dummy_execute_pulse_sequence_couplers(): - platform = create_platform("dummy2") - ordered_pair = (1, 2) - sequence = PulseSequence() - - cz, _ = platform.create_CZ_pulse_sequence( - qubits=(ordered_pair[1], ordered_pair[0]), - start=0, - ) - sequence.add(cz.get_qubit_pulses(ordered_pair[0])) - sequence.add(cz.get_qubit_pulses(ordered_pair[1])) - sequence.add(cz.get_coupler_pulses(platform.get_coupler_pair(ordered_pair))) - sequence.add(platform.create_qubit_readout_pulse(0, 40)) - sequence.add(platform.create_qubit_readout_pulse(2, 40)) - options = ExecutionParameters(nshots=None) - result = platform.execute_pulse_sequence(sequence, options) - assert len(sequence.get_coupler_pulses(1)) == 1 - - -def test_dummy_execute_pulse_sequence_fast_reset(): - platform = create_platform("dummy2") - sequence = PulseSequence() - sequence.add(platform.create_qubit_readout_pulse(0, 0)) - options = ExecutionParameters(nshots=None, fast_reset=True) - result = platform.execute_pulse_sequence(sequence, options) - - -@pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.DISCRIMINATION]) -def test_dummy_execute_pulse_sequence_unrolling(acquisition): - platform = create_platform("dummy2") - sequences = [] - sequence = PulseSequence() - sequence.add(platform.create_qubit_readout_pulse(0, 0)) - for _ in range(5): - sequences.append(sequence) - options = ExecutionParameters(nshots=None, acquisition_type=acquisition) - result = platform.execute_pulse_sequences(sequences, options) - - -def test_dummy_single_sweep_RAW(): - platform = create_platform("dummy2") - sequence = PulseSequence() - pulse = platform.create_qubit_readout_pulse(qubit=0, start=0) - - parameter_range = np.random.randint(SWEPT_POINTS, size=SWEPT_POINTS) - sequence.add(pulse) - sweeper = Sweeper(Parameter.frequency, parameter_range, pulses=[pulse]) - options = ExecutionParameters( - nshots=10, - averaging_mode=AveragingMode.CYCLIC, - acquisition_type=AcquisitionType.RAW, - ) - results = platform.sweep(sequence, options, sweeper) - assert pulse.serial and pulse.qubit in results - shape = results[pulse.qubit].magnitude.shape - samples = platform.settings.sampling_rate * 1e-9 * pulse.duration - - assert shape == (samples * SWEPT_POINTS,) - - -@pytest.mark.parametrize("fast_reset", [True, False]) -@pytest.mark.parametrize("parameter", Parameter) -@pytest.mark.parametrize("average", [AveragingMode.SINGLESHOT, AveragingMode.CYCLIC]) -@pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.DISCRIMINATION]) -@pytest.mark.parametrize("nshots", [10, 20]) -def test_dummy_single_sweep(fast_reset, parameter, average, acquisition, nshots): - platform = create_platform("dummy2") - sequence = PulseSequence() - pulse = platform.create_qubit_readout_pulse(qubit=0, start=0) - if parameter is Parameter.amplitude: - parameter_range = np.random.rand(SWEPT_POINTS) - else: - parameter_range = np.random.randint(SWEPT_POINTS, size=SWEPT_POINTS) - sequence.add(pulse) - if parameter in QubitParameter: - sweeper = Sweeper(parameter, parameter_range, qubits=[platform.qubits[0]]) - else: - sweeper = Sweeper(parameter, parameter_range, pulses=[pulse]) - options = ExecutionParameters( - nshots=nshots, - averaging_mode=average, - acquisition_type=acquisition, - fast_reset=fast_reset, - ) - average = not options.averaging_mode is AveragingMode.SINGLESHOT - results = platform.sweep(sequence, options, sweeper) - - assert pulse.serial and pulse.qubit in results - if average: - results_shape = ( - results[pulse.qubit].magnitude.shape - if acquisition is AcquisitionType.INTEGRATION - else results[pulse.qubit].statistical_frequency.shape - ) - else: - results_shape = ( - results[pulse.qubit].magnitude.shape - if acquisition is AcquisitionType.INTEGRATION - else results[pulse.qubit].samples.shape - ) - assert results_shape == (SWEPT_POINTS,) if average else (nshots, SWEPT_POINTS) - - -@pytest.mark.parametrize("parameter1", Parameter) -@pytest.mark.parametrize("parameter2", Parameter) -@pytest.mark.parametrize("average", [AveragingMode.SINGLESHOT, AveragingMode.CYCLIC]) -@pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.DISCRIMINATION]) -@pytest.mark.parametrize("nshots", [10, 20]) -def test_dummy_double_sweep(parameter1, parameter2, average, acquisition, nshots): - platform = create_platform("dummy2") - sequence = PulseSequence() - pulse = platform.create_qubit_drive_pulse(qubit=0, start=0, duration=1000) - ro_pulse = platform.create_qubit_readout_pulse(qubit=0, start=pulse.finish) - sequence.add(pulse) - sequence.add(ro_pulse) - parameter_range_1 = ( - np.random.rand(SWEPT_POINTS) - if parameter1 is Parameter.amplitude - else np.random.randint(SWEPT_POINTS, size=SWEPT_POINTS) - ) - parameter_range_2 = ( - np.random.rand(SWEPT_POINTS) - if parameter2 is Parameter.amplitude - else np.random.randint(SWEPT_POINTS, size=SWEPT_POINTS) - ) - - if parameter1 in QubitParameter: - sweeper1 = Sweeper(parameter1, parameter_range_1, qubits=[platform.qubits[0]]) - else: - sweeper1 = Sweeper(parameter1, parameter_range_1, pulses=[ro_pulse]) - if parameter2 in QubitParameter: - sweeper2 = Sweeper(parameter2, parameter_range_2, qubits=[platform.qubits[0]]) - else: - sweeper2 = Sweeper(parameter2, parameter_range_2, pulses=[pulse]) - - options = ExecutionParameters( - nshots=nshots, - averaging_mode=average, - acquisition_type=acquisition, - ) - average = not options.averaging_mode is AveragingMode.SINGLESHOT - results = platform.sweep(sequence, options, sweeper1, sweeper2) - - assert ro_pulse.serial and ro_pulse.qubit in results - - if average: - results_shape = ( - results[pulse.qubit].magnitude.shape - if acquisition is AcquisitionType.INTEGRATION - else results[pulse.qubit].statistical_frequency.shape - ) - else: - results_shape = ( - results[pulse.qubit].magnitude.shape - if acquisition is AcquisitionType.INTEGRATION - else results[pulse.qubit].samples.shape - ) - - assert results_shape == (SWEPT_POINTS, SWEPT_POINTS) if average else (nshots, SWEPT_POINTS, SWEPT_POINTS) - - -@pytest.mark.parametrize("parameter", Parameter) -@pytest.mark.parametrize("average", [AveragingMode.SINGLESHOT, AveragingMode.CYCLIC]) -@pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.DISCRIMINATION]) -@pytest.mark.parametrize("nshots", [10, 20]) -def test_dummy_single_sweep_multiplex(parameter, average, acquisition, nshots): - platform = create_platform("dummy2") - sequence = PulseSequence() - ro_pulses = {} - for qubit in platform.qubits: - ro_pulses[qubit] = platform.create_qubit_readout_pulse(qubit=qubit, start=0) - sequence.add(ro_pulses[qubit]) - parameter_range = ( - np.random.rand(SWEPT_POINTS) - if parameter is Parameter.amplitude - else np.random.randint(SWEPT_POINTS, size=SWEPT_POINTS) - ) - - if parameter in QubitParameter: - sweeper1 = Sweeper(parameter, parameter_range, qubits=[platform.qubits[qubit] for qubit in platform.qubits]) - else: - sweeper1 = Sweeper(parameter, parameter_range, pulses=[ro_pulses[qubit] for qubit in platform.qubits]) - - options = ExecutionParameters( - nshots=nshots, - averaging_mode=average, - acquisition_type=acquisition, - ) - average = not options.averaging_mode is AveragingMode.SINGLESHOT - results = platform.sweep(sequence, options, sweeper1) - - for ro_pulse in ro_pulses.values(): - assert ro_pulse.serial and ro_pulse.qubit in results - if average: - results_shape = ( - results[ro_pulse.qubit].magnitude.shape - if acquisition is AcquisitionType.INTEGRATION - else results[ro_pulse.qubit].statistical_frequency.shape - ) - else: - results_shape = ( - results[ro_pulse.qubit].magnitude.shape - if acquisition is AcquisitionType.INTEGRATION - else results[ro_pulse.qubit].samples.shape - ) - assert results_shape == (SWEPT_POINTS,) if average else (nshots, SWEPT_POINTS) - - -# TODO: add test_dummy_double_sweep_multiplex From 67bbfe894cc4baa8232b045b009de7bcff55b034 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 5 Sep 2023 14:16:23 +0400 Subject: [PATCH 27/52] comments --- src/qibolab/couplers.py | 11 ++--------- src/qibolab/qubits.py | 10 ++-------- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/src/qibolab/couplers.py b/src/qibolab/couplers.py index 3c670f7cb..9f6631a2c 100644 --- a/src/qibolab/couplers.py +++ b/src/qibolab/couplers.py @@ -33,14 +33,7 @@ class Coupler: flux: Optional[Channel] = None qubits: Optional[List["Qubit"]] = field(default_factory=dict) - def __post_init__(self): - # register qubit in ``flux`` channel so that we can access - # ``sweetspot`` and ``filters`` at the channel level - if self.flux: - self.flux.coupler = self - @property def channels(self): - for channel in [self.flux]: - if channel is not None: - yield channel + if self.flux is not None: + yield self.flux diff --git a/src/qibolab/qubits.py b/src/qibolab/qubits.py index cd6b1735f..66f1ae9c9 100644 --- a/src/qibolab/qubits.py +++ b/src/qibolab/qubits.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field, fields -from typing import List, Optional, Tuple, Union +from typing import Dict, List, Optional, Tuple, Union from qibolab.channels import Channel from qibolab.native import SingleQubitNatives, TwoQubitNatives @@ -71,17 +71,11 @@ class Qubit: twpa: Optional[Channel] = None drive: Optional[Channel] = None flux: Optional[Channel] = None - flux_coupler: Optional[List["Qubit"]] = field(default_factory=dict) + flux_coupler: Optional[Dict["Qubit"]] = field(default_factory=dict) classifiers_hpars: dict = field(default_factory=dict) native_gates: SingleQubitNatives = field(default_factory=SingleQubitNatives) - def __post_init__(self): - # register qubit in ``flux`` channel so that we can access - # ``sweetspot`` and ``filters`` at the channel level - if self.flux: - self.flux.qubit = self - @property def channels(self): for name in CHANNEL_NAMES: From 85984753b0b3be4aa8ba0f5bf3310e1ee38a97db Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 5 Sep 2023 14:32:32 +0400 Subject: [PATCH 28/52] fix typing --- src/qibolab/couplers.py | 6 +++--- src/qibolab/qubits.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/qibolab/couplers.py b/src/qibolab/couplers.py index 9f6631a2c..8b90e7259 100644 --- a/src/qibolab/couplers.py +++ b/src/qibolab/couplers.py @@ -1,8 +1,8 @@ from dataclasses import dataclass, field -from typing import List, Optional, Union +from typing import Dict, Optional, Union from qibolab.channels import Channel -from qibolab.qubits import Qubit +from qibolab.qubits import Qubit, QubitId CouplerId = Union[str, int] """Type for Coupler names.""" @@ -31,7 +31,7 @@ class Coupler: sweetspot: float = 0 flux: Optional[Channel] = None - qubits: Optional[List["Qubit"]] = field(default_factory=dict) + qubits: Optional[Dict[QubitId, Qubit]] = field(default_factory=dict) @property def channels(self): diff --git a/src/qibolab/qubits.py b/src/qibolab/qubits.py index 66f1ae9c9..5f69c158e 100644 --- a/src/qibolab/qubits.py +++ b/src/qibolab/qubits.py @@ -71,7 +71,7 @@ class Qubit: twpa: Optional[Channel] = None drive: Optional[Channel] = None flux: Optional[Channel] = None - flux_coupler: Optional[Dict["Qubit"]] = field(default_factory=dict) + flux_coupler: Optional[Dict[QubitId, "Qubit"]] = field(default_factory=dict) classifiers_hpars: dict = field(default_factory=dict) native_gates: SingleQubitNatives = field(default_factory=SingleQubitNatives) From 27addd28cdf7457404494b6499bc6438d86461bb Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 5 Sep 2023 14:33:27 +0400 Subject: [PATCH 29/52] fix typing --- src/qibolab/couplers.py | 6 +++--- src/qibolab/qubits.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/qibolab/couplers.py b/src/qibolab/couplers.py index 9f6631a2c..8b90e7259 100644 --- a/src/qibolab/couplers.py +++ b/src/qibolab/couplers.py @@ -1,8 +1,8 @@ from dataclasses import dataclass, field -from typing import List, Optional, Union +from typing import Dict, Optional, Union from qibolab.channels import Channel -from qibolab.qubits import Qubit +from qibolab.qubits import Qubit, QubitId CouplerId = Union[str, int] """Type for Coupler names.""" @@ -31,7 +31,7 @@ class Coupler: sweetspot: float = 0 flux: Optional[Channel] = None - qubits: Optional[List["Qubit"]] = field(default_factory=dict) + qubits: Optional[Dict[QubitId, Qubit]] = field(default_factory=dict) @property def channels(self): diff --git a/src/qibolab/qubits.py b/src/qibolab/qubits.py index 66f1ae9c9..5f69c158e 100644 --- a/src/qibolab/qubits.py +++ b/src/qibolab/qubits.py @@ -71,7 +71,7 @@ class Qubit: twpa: Optional[Channel] = None drive: Optional[Channel] = None flux: Optional[Channel] = None - flux_coupler: Optional[Dict["Qubit"]] = field(default_factory=dict) + flux_coupler: Optional[Dict[QubitId, "Qubit"]] = field(default_factory=dict) classifiers_hpars: dict = field(default_factory=dict) native_gates: SingleQubitNatives = field(default_factory=SingleQubitNatives) From d57949cb203747ca0639bd77251b94c8ce715fa1 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 5 Sep 2023 15:06:27 +0400 Subject: [PATCH 30/52] remove dead code --- src/qibolab/serialize.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/qibolab/serialize.py b/src/qibolab/serialize.py index 20e111e91..9c5d944ea 100644 --- a/src/qibolab/serialize.py +++ b/src/qibolab/serialize.py @@ -103,14 +103,6 @@ def dump_qubits(qubits: QubitMap, pairs: QubitPairMap, couplers: CouplerMap = No "characterization": characterization, } - -# # TODO: Couplers would need to be associated to qubits in the runcard -# def dump_couplers(couplers: CouplerMap) -> dict: -# """Dump coupler and coupler_pair objects to a dictionary following the runcard format.""" - -# return {"couplers": couplers} - - def dump_runcard(platform: Platform, path: Path): """Serializes the platform and saves it as a yaml runcard file. From 7a1d171b6f0db550ede8e011bd1f9477ade98aab Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 5 Sep 2023 11:07:09 +0000 Subject: [PATCH 31/52] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/qibolab/serialize.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/qibolab/serialize.py b/src/qibolab/serialize.py index 9c5d944ea..41c8211ce 100644 --- a/src/qibolab/serialize.py +++ b/src/qibolab/serialize.py @@ -103,6 +103,7 @@ def dump_qubits(qubits: QubitMap, pairs: QubitPairMap, couplers: CouplerMap = No "characterization": characterization, } + def dump_runcard(platform: Platform, path: Path): """Serializes the platform and saves it as a yaml runcard file. From 45890e8b616239080d21ac42db4f2c6e55f67d1d Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 12 Sep 2023 19:15:11 +0400 Subject: [PATCH 32/52] fix qblox --- src/qibolab/platform.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/qibolab/platform.py b/src/qibolab/platform.py index 742f9ec61..e3f96adb1 100644 --- a/src/qibolab/platform.py +++ b/src/qibolab/platform.py @@ -266,14 +266,19 @@ def _execute(self, method, sequences, options, **kwargs): log.info(f"Minimal execution time (seq): {time}") result = {} + for instrument in self.instruments.values(): if isinstance(instrument, Controller): - new_result = getattr(instrument, method)(self.qubits, self.couplers, sequences, options) + if self.couplers: + new_result = getattr(instrument, method)(self.qubits, self.couplers, sequences, options) + else: + new_result = getattr(instrument, method)(self.qubits, sequences, options) if isinstance(new_result, dict): result.update(new_result) elif new_result is not None: # currently the result of QMSim is not a dict result = new_result + return result def execute_pulse_sequence(self, sequences: PulseSequence, options: ExecutionParameters, **kwargs): @@ -342,12 +347,16 @@ def sweep(self, sequence: PulseSequence, options: ExecutionParameters, *sweepers result = {} for instrument in self.instruments.values(): if isinstance(instrument, Controller): - new_result = instrument.sweep(self.qubits, self.couplers, sequence, options, *sweepers) + if self.couplers: + new_result = instrument.sweep(self.qubits, self.couplers, sequence, options, *sweepers) + else: + new_result = instrument.sweep(self.qubits, sequence, options, *sweepers) if isinstance(new_result, dict): result.update(new_result) elif new_result is not None: # currently the result of QMSim is not a dict result = new_result + return result def __call__(self, sequence, options): From be5b029ac73614d3914a851100d2962896cfa192 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Wed, 13 Sep 2023 20:24:20 +0400 Subject: [PATCH 33/52] fix --- src/qibolab/instruments/zhinst.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/qibolab/instruments/zhinst.py b/src/qibolab/instruments/zhinst.py index 8e849743f..afde5a5f3 100644 --- a/src/qibolab/instruments/zhinst.py +++ b/src/qibolab/instruments/zhinst.py @@ -322,7 +322,7 @@ def connect(self): self.create_device_setup() # To fully remove logging #configure_logging=False # I strongly advise to set it to 20 to have time estimates of the experiment duration! - self.session = lo.Session(self.device_setup, log_level=30) + self.session = lo.Session(self.device_setup, log_level=20) self.device = self.session.connect(do_emulation=self.emulation) self.is_connected = True @@ -503,7 +503,7 @@ def experiment_flow(self, qubits, couplers, sequence, options, sweepers=[]): self.create_exp(qubits, couplers, options) # pylint: disable=W0221 - def play(self, qubits, sequence, options): + def play(self, qubits, couplers, sequence, options): """Play pulse sequence""" self.signal_map = {} dimensions = [] @@ -512,7 +512,7 @@ def play(self, qubits, sequence, options): self.frequency_from_pulses(qubits, sequence) - self.experiment_flow(qubits, sequence, options) + self.experiment_flow(qubits, couplers, sequence, options) self.run_exp() # Get the results back From 292770ae76cfc183310c06fbbccbefc3e749e149 Mon Sep 17 00:00:00 2001 From: Alessandro Candido Date: Wed, 20 Sep 2023 15:30:35 +0400 Subject: [PATCH 34/52] Remove dummy2 --- src/qibolab/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/qibolab/__init__.py b/src/qibolab/__init__.py index 540bfcf98..0ff1ed770 100644 --- a/src/qibolab/__init__.py +++ b/src/qibolab/__init__.py @@ -42,10 +42,10 @@ def create_platform(name, runcard=None): from qibolab.dummy import create_dummy return create_dummy() - if name == "dummy2": - from qibolab.dummy2 import create_dummy2 + if name == "dummy": + from qibolab.dummy import create_dummy - return create_dummy2() + return create_dummy() platform = get_platforms_path() / f"{name}.py" if not platform.exists(): From d37333fa6b60d74f1e644a6989d8e5395da3aaf2 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Fri, 22 Sep 2023 13:29:27 +0400 Subject: [PATCH 35/52] lock file --- poetry.lock | 1333 ++++++++++++++++++++++++++------------------------- 1 file changed, 669 insertions(+), 664 deletions(-) diff --git a/poetry.lock b/poetry.lock index ed70fa4f7..7d3ee55e1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "alabaster" @@ -22,21 +22,6 @@ files = [ {file = "annotated_types-0.5.0.tar.gz", hash = "sha256:47cdc3490d9ac1506ce92c7aaa76c579dc3509ff11e098fc867e5130ab7be802"}, ] -[[package]] -name = "ansi2html" -version = "1.8.0" -description = "" -optional = false -python-versions = ">=3.6" -files = [ - {file = "ansi2html-1.8.0-py3-none-any.whl", hash = "sha256:ef9cc9682539dbe524fbf8edad9c9462a308e04bce1170c32daa8fdfd0001785"}, - {file = "ansi2html-1.8.0.tar.gz", hash = "sha256:38b82a298482a1fa2613f0f9c9beb3db72a8f832eeac58eb2e47bf32cd37f6d5"}, -] - -[package.extras] -docs = ["Sphinx", "setuptools-scm", "sphinx-rtd-theme"] -test = ["pytest", "pytest-cov"] - [[package]] name = "antlr4-python3-runtime" version = "4.11.1" @@ -80,17 +65,17 @@ wrapt = [ [[package]] name = "asttokens" -version = "2.2.1" +version = "2.4.0" description = "Annotate AST trees with source code positions" optional = false python-versions = "*" files = [ - {file = "asttokens-2.2.1-py2.py3-none-any.whl", hash = "sha256:6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c"}, - {file = "asttokens-2.2.1.tar.gz", hash = "sha256:4622110b2a6f30b77e1473affaa97e711bc2f07d3f10848420ff1898edbe94f3"}, + {file = "asttokens-2.4.0-py2.py3-none-any.whl", hash = "sha256:cf8fc9e61a86461aa9fb161a14a0841a03c405fa829ac6b202670b3495d2ce69"}, + {file = "asttokens-2.4.0.tar.gz", hash = "sha256:2e0171b991b2c959acc6c49318049236844a5da1d65ba2672c4880c1c894834e"}, ] [package.dependencies] -six = "*" +six = ">=1.12.0" [package.extras] test = ["astroid", "pytest"] @@ -115,13 +100,13 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "azure-core" -version = "1.29.3" +version = "1.29.4" description = "Microsoft Azure Core Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "azure-core-1.29.3.tar.gz", hash = "sha256:c92700af982e71c8c73de9f4c20da8b3f03ce2c22d13066e4d416b4629c87903"}, - {file = "azure_core-1.29.3-py3-none-any.whl", hash = "sha256:f8b2910f92b66293d93bd00564924ad20ad48f4a1e150577cf18d1e7d4f9263c"}, + {file = "azure-core-1.29.4.tar.gz", hash = "sha256:500b3aa9bf2e90c5ccc88bb105d056114ca0ce7d0ce73afb8bc4d714b2fc7568"}, + {file = "azure_core-1.29.4-py3-none-any.whl", hash = "sha256:b03261bcba22c0b9290faf9999cedd23e849ed2577feee90515694cea6bc74bf"}, ] [package.dependencies] @@ -225,6 +210,17 @@ webencodings = "*" [package.extras] css = ["tinycss2 (>=1.1.0,<1.2)"] +[[package]] +name = "blinker" +version = "1.6.2" +description = "Fast, simple object-to-object and broadcast signaling" +optional = false +python-versions = ">=3.7" +files = [ + {file = "blinker-1.6.2-py3-none-any.whl", hash = "sha256:c3d739772abb7bc2860abf5f2ec284223d9ad5c76da018234f6f50d6f31ab1f0"}, + {file = "blinker-1.6.2.tar.gz", hash = "sha256:4afd3de66ef3a9f8067559fb7a1cbe555c17dcbe15971b05d1b625c3e7abe213"}, +] + [[package]] name = "broadbean" version = "0.11.0" @@ -516,121 +512,134 @@ files = [ [[package]] name = "contourpy" -version = "1.1.0" +version = "1.1.1" description = "Python library for calculating contours of 2D quadrilateral grids" optional = false python-versions = ">=3.8" files = [ - {file = "contourpy-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:89f06eff3ce2f4b3eb24c1055a26981bffe4e7264acd86f15b97e40530b794bc"}, - {file = "contourpy-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dffcc2ddec1782dd2f2ce1ef16f070861af4fb78c69862ce0aab801495dda6a3"}, - {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25ae46595e22f93592d39a7eac3d638cda552c3e1160255258b695f7b58e5655"}, - {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:17cfaf5ec9862bc93af1ec1f302457371c34e688fbd381f4035a06cd47324f48"}, - {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18a64814ae7bce73925131381603fff0116e2df25230dfc80d6d690aa6e20b37"}, - {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c81f22b4f572f8a2110b0b741bb64e5a6427e0a198b2cdc1fbaf85f352a3aa"}, - {file = "contourpy-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53cc3a40635abedbec7f1bde60f8c189c49e84ac180c665f2cd7c162cc454baa"}, - {file = "contourpy-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:1f795597073b09d631782e7245016a4323cf1cf0b4e06eef7ea6627e06a37ff2"}, - {file = "contourpy-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0b7b04ed0961647691cfe5d82115dd072af7ce8846d31a5fac6c142dcce8b882"}, - {file = "contourpy-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27bc79200c742f9746d7dd51a734ee326a292d77e7d94c8af6e08d1e6c15d545"}, - {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052cc634bf903c604ef1a00a5aa093c54f81a2612faedaa43295809ffdde885e"}, - {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9382a1c0bc46230fb881c36229bfa23d8c303b889b788b939365578d762b5c18"}, - {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5cec36c5090e75a9ac9dbd0ff4a8cf7cecd60f1b6dc23a374c7d980a1cd710e"}, - {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f0cbd657e9bde94cd0e33aa7df94fb73c1ab7799378d3b3f902eb8eb2e04a3a"}, - {file = "contourpy-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:181cbace49874f4358e2929aaf7ba84006acb76694102e88dd15af861996c16e"}, - {file = "contourpy-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fb3b7d9e6243bfa1efb93ccfe64ec610d85cfe5aec2c25f97fbbd2e58b531256"}, - {file = "contourpy-1.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bcb41692aa09aeb19c7c213411854402f29f6613845ad2453d30bf421fe68fed"}, - {file = "contourpy-1.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5d123a5bc63cd34c27ff9c7ac1cd978909e9c71da12e05be0231c608048bb2ae"}, - {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62013a2cf68abc80dadfd2307299bfa8f5aa0dcaec5b2954caeb5fa094171103"}, - {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b6616375d7de55797d7a66ee7d087efe27f03d336c27cf1f32c02b8c1a5ac70"}, - {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:317267d915490d1e84577924bd61ba71bf8681a30e0d6c545f577363157e5e94"}, - {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d551f3a442655f3dcc1285723f9acd646ca5858834efeab4598d706206b09c9f"}, - {file = "contourpy-1.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e7a117ce7df5a938fe035cad481b0189049e8d92433b4b33aa7fc609344aafa1"}, - {file = "contourpy-1.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:d4f26b25b4f86087e7d75e63212756c38546e70f2a92d2be44f80114826e1cd4"}, - {file = "contourpy-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc00bb4225d57bff7ebb634646c0ee2a1298402ec10a5fe7af79df9a51c1bfd9"}, - {file = "contourpy-1.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:189ceb1525eb0655ab8487a9a9c41f42a73ba52d6789754788d1883fb06b2d8a"}, - {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f2931ed4741f98f74b410b16e5213f71dcccee67518970c42f64153ea9313b9"}, - {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30f511c05fab7f12e0b1b7730ebdc2ec8deedcfb505bc27eb570ff47c51a8f15"}, - {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:143dde50520a9f90e4a2703f367cf8ec96a73042b72e68fcd184e1279962eb6f"}, - {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e94bef2580e25b5fdb183bf98a2faa2adc5b638736b2c0a4da98691da641316a"}, - {file = "contourpy-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ed614aea8462735e7d70141374bd7650afd1c3f3cb0c2dbbcbe44e14331bf002"}, - {file = "contourpy-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:438ba416d02f82b692e371858143970ed2eb6337d9cdbbede0d8ad9f3d7dd17d"}, - {file = "contourpy-1.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a698c6a7a432789e587168573a864a7ea374c6be8d4f31f9d87c001d5a843493"}, - {file = "contourpy-1.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:397b0ac8a12880412da3551a8cb5a187d3298a72802b45a3bd1805e204ad8439"}, - {file = "contourpy-1.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:a67259c2b493b00e5a4d0f7bfae51fb4b3371395e47d079a4446e9b0f4d70e76"}, - {file = "contourpy-1.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2b836d22bd2c7bb2700348e4521b25e077255ebb6ab68e351ab5aa91ca27e027"}, - {file = "contourpy-1.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084eaa568400cfaf7179b847ac871582199b1b44d5699198e9602ecbbb5f6104"}, - {file = "contourpy-1.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:911ff4fd53e26b019f898f32db0d4956c9d227d51338fb3b03ec72ff0084ee5f"}, - {file = "contourpy-1.1.0.tar.gz", hash = "sha256:e53046c3863828d21d531cc3b53786e6580eb1ba02477e8681009b6aa0870b21"}, + {file = "contourpy-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:46e24f5412c948d81736509377e255f6040e94216bf1a9b5ea1eaa9d29f6ec1b"}, + {file = "contourpy-1.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e48694d6a9c5a26ee85b10130c77a011a4fedf50a7279fa0bdaf44bafb4299d"}, + {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a66045af6cf00e19d02191ab578a50cb93b2028c3eefed999793698e9ea768ae"}, + {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ebf42695f75ee1a952f98ce9775c873e4971732a87334b099dde90b6af6a916"}, + {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6aec19457617ef468ff091669cca01fa7ea557b12b59a7908b9474bb9674cf0"}, + {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:462c59914dc6d81e0b11f37e560b8a7c2dbab6aca4f38be31519d442d6cde1a1"}, + {file = "contourpy-1.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6d0a8efc258659edc5299f9ef32d8d81de8b53b45d67bf4bfa3067f31366764d"}, + {file = "contourpy-1.1.1-cp310-cp310-win32.whl", hash = "sha256:d6ab42f223e58b7dac1bb0af32194a7b9311065583cc75ff59dcf301afd8a431"}, + {file = "contourpy-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:549174b0713d49871c6dee90a4b499d3f12f5e5f69641cd23c50a4542e2ca1eb"}, + {file = "contourpy-1.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:407d864db716a067cc696d61fa1ef6637fedf03606e8417fe2aeed20a061e6b2"}, + {file = "contourpy-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe80c017973e6a4c367e037cb31601044dd55e6bfacd57370674867d15a899b"}, + {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e30aaf2b8a2bac57eb7e1650df1b3a4130e8d0c66fc2f861039d507a11760e1b"}, + {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3de23ca4f381c3770dee6d10ead6fff524d540c0f662e763ad1530bde5112532"}, + {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:566f0e41df06dfef2431defcfaa155f0acfa1ca4acbf8fd80895b1e7e2ada40e"}, + {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b04c2f0adaf255bf756cf08ebef1be132d3c7a06fe6f9877d55640c5e60c72c5"}, + {file = "contourpy-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d0c188ae66b772d9d61d43c6030500344c13e3f73a00d1dc241da896f379bb62"}, + {file = "contourpy-1.1.1-cp311-cp311-win32.whl", hash = "sha256:0683e1ae20dc038075d92e0e0148f09ffcefab120e57f6b4c9c0f477ec171f33"}, + {file = "contourpy-1.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:8636cd2fc5da0fb102a2504fa2c4bea3cbc149533b345d72cdf0e7a924decc45"}, + {file = "contourpy-1.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:560f1d68a33e89c62da5da4077ba98137a5e4d3a271b29f2f195d0fba2adcb6a"}, + {file = "contourpy-1.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24216552104ae8f3b34120ef84825400b16eb6133af2e27a190fdc13529f023e"}, + {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56de98a2fb23025882a18b60c7f0ea2d2d70bbbcfcf878f9067234b1c4818442"}, + {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:07d6f11dfaf80a84c97f1a5ba50d129d9303c5b4206f776e94037332e298dda8"}, + {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1eaac5257a8f8a047248d60e8f9315c6cff58f7803971170d952555ef6344a7"}, + {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19557fa407e70f20bfaba7d55b4d97b14f9480856c4fb65812e8a05fe1c6f9bf"}, + {file = "contourpy-1.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:081f3c0880712e40effc5f4c3b08feca6d064cb8cfbb372ca548105b86fd6c3d"}, + {file = "contourpy-1.1.1-cp312-cp312-win32.whl", hash = "sha256:059c3d2a94b930f4dafe8105bcdc1b21de99b30b51b5bce74c753686de858cb6"}, + {file = "contourpy-1.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:f44d78b61740e4e8c71db1cf1fd56d9050a4747681c59ec1094750a658ceb970"}, + {file = "contourpy-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:70e5a10f8093d228bb2b552beeb318b8928b8a94763ef03b858ef3612b29395d"}, + {file = "contourpy-1.1.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8394e652925a18ef0091115e3cc191fef350ab6dc3cc417f06da66bf98071ae9"}, + {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5bd5680f844c3ff0008523a71949a3ff5e4953eb7701b28760805bc9bcff217"}, + {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66544f853bfa85c0d07a68f6c648b2ec81dafd30f272565c37ab47a33b220684"}, + {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0c02b75acfea5cab07585d25069207e478d12309557f90a61b5a3b4f77f46ce"}, + {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41339b24471c58dc1499e56783fedc1afa4bb018bcd035cfb0ee2ad2a7501ef8"}, + {file = "contourpy-1.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f29fb0b3f1217dfe9362ec55440d0743fe868497359f2cf93293f4b2701b8251"}, + {file = "contourpy-1.1.1-cp38-cp38-win32.whl", hash = "sha256:f9dc7f933975367251c1b34da882c4f0e0b2e24bb35dc906d2f598a40b72bfc7"}, + {file = "contourpy-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:498e53573e8b94b1caeb9e62d7c2d053c263ebb6aa259c81050766beb50ff8d9"}, + {file = "contourpy-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ba42e3810999a0ddd0439e6e5dbf6d034055cdc72b7c5c839f37a7c274cb4eba"}, + {file = "contourpy-1.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c06e4c6e234fcc65435223c7b2a90f286b7f1b2733058bdf1345d218cc59e34"}, + {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca6fab080484e419528e98624fb5c4282148b847e3602dc8dbe0cb0669469887"}, + {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93df44ab351119d14cd1e6b52a5063d3336f0754b72736cc63db59307dabb718"}, + {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eafbef886566dc1047d7b3d4b14db0d5b7deb99638d8e1be4e23a7c7ac59ff0f"}, + {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efe0fab26d598e1ec07d72cf03eaeeba8e42b4ecf6b9ccb5a356fde60ff08b85"}, + {file = "contourpy-1.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f08e469821a5e4751c97fcd34bcb586bc243c39c2e39321822060ba902eac49e"}, + {file = "contourpy-1.1.1-cp39-cp39-win32.whl", hash = "sha256:bfc8a5e9238232a45ebc5cb3bfee71f1167064c8d382cadd6076f0d51cff1da0"}, + {file = "contourpy-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:c84fdf3da00c2827d634de4fcf17e3e067490c4aea82833625c4c8e6cdea0887"}, + {file = "contourpy-1.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:229a25f68046c5cf8067d6d6351c8b99e40da11b04d8416bf8d2b1d75922521e"}, + {file = "contourpy-1.1.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a10dab5ea1bd4401c9483450b5b0ba5416be799bbd50fc7a6cc5e2a15e03e8a3"}, + {file = "contourpy-1.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4f9147051cb8fdb29a51dc2482d792b3b23e50f8f57e3720ca2e3d438b7adf23"}, + {file = "contourpy-1.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a75cc163a5f4531a256f2c523bd80db509a49fc23721b36dd1ef2f60ff41c3cb"}, + {file = "contourpy-1.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b53d5769aa1f2d4ea407c65f2d1d08002952fac1d9e9d307aa2e1023554a163"}, + {file = "contourpy-1.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11b836b7dbfb74e049c302bbf74b4b8f6cb9d0b6ca1bf86cfa8ba144aedadd9c"}, + {file = "contourpy-1.1.1.tar.gz", hash = "sha256:96ba37c2e24b7212a77da85004c38e7c4d155d3e72a45eeaf22c1f03f607e8ab"}, ] [package.dependencies] -numpy = ">=1.16" +numpy = {version = ">=1.16,<2.0", markers = "python_version <= \"3.11\""} [package.extras] bokeh = ["bokeh", "selenium"] -docs = ["furo", "sphinx-copybutton"] -mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.2.0)", "types-Pillow"] +docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"] +mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.4.1)", "types-Pillow"] test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] test-no-images = ["pytest", "pytest-cov", "wurlitzer"] [[package]] name = "coverage" -version = "7.3.0" +version = "7.3.1" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db76a1bcb51f02b2007adacbed4c88b6dee75342c37b05d1822815eed19edee5"}, - {file = "coverage-7.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c02cfa6c36144ab334d556989406837336c1d05215a9bdf44c0bc1d1ac1cb637"}, - {file = "coverage-7.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:477c9430ad5d1b80b07f3c12f7120eef40bfbf849e9e7859e53b9c93b922d2af"}, - {file = "coverage-7.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce2ee86ca75f9f96072295c5ebb4ef2a43cecf2870b0ca5e7a1cbdd929cf67e1"}, - {file = "coverage-7.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68d8a0426b49c053013e631c0cdc09b952d857efa8f68121746b339912d27a12"}, - {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b3eb0c93e2ea6445b2173da48cb548364f8f65bf68f3d090404080d338e3a689"}, - {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:90b6e2f0f66750c5a1178ffa9370dec6c508a8ca5265c42fbad3ccac210a7977"}, - {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:96d7d761aea65b291a98c84e1250cd57b5b51726821a6f2f8df65db89363be51"}, - {file = "coverage-7.3.0-cp310-cp310-win32.whl", hash = "sha256:63c5b8ecbc3b3d5eb3a9d873dec60afc0cd5ff9d9f1c75981d8c31cfe4df8527"}, - {file = "coverage-7.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:97c44f4ee13bce914272589b6b41165bbb650e48fdb7bd5493a38bde8de730a1"}, - {file = "coverage-7.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:74c160285f2dfe0acf0f72d425f3e970b21b6de04157fc65adc9fd07ee44177f"}, - {file = "coverage-7.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b543302a3707245d454fc49b8ecd2c2d5982b50eb63f3535244fd79a4be0c99d"}, - {file = "coverage-7.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad0f87826c4ebd3ef484502e79b39614e9c03a5d1510cfb623f4a4a051edc6fd"}, - {file = "coverage-7.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:13c6cbbd5f31211d8fdb477f0f7b03438591bdd077054076eec362cf2207b4a7"}, - {file = "coverage-7.3.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fac440c43e9b479d1241fe9d768645e7ccec3fb65dc3a5f6e90675e75c3f3e3a"}, - {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3c9834d5e3df9d2aba0275c9f67989c590e05732439b3318fa37a725dff51e74"}, - {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4c8e31cf29b60859876474034a83f59a14381af50cbe8a9dbaadbf70adc4b214"}, - {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7a9baf8e230f9621f8e1d00c580394a0aa328fdac0df2b3f8384387c44083c0f"}, - {file = "coverage-7.3.0-cp311-cp311-win32.whl", hash = "sha256:ccc51713b5581e12f93ccb9c5e39e8b5d4b16776d584c0f5e9e4e63381356482"}, - {file = "coverage-7.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:887665f00ea4e488501ba755a0e3c2cfd6278e846ada3185f42d391ef95e7e70"}, - {file = "coverage-7.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d000a739f9feed900381605a12a61f7aaced6beae832719ae0d15058a1e81c1b"}, - {file = "coverage-7.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:59777652e245bb1e300e620ce2bef0d341945842e4eb888c23a7f1d9e143c446"}, - {file = "coverage-7.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9737bc49a9255d78da085fa04f628a310c2332b187cd49b958b0e494c125071"}, - {file = "coverage-7.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5247bab12f84a1d608213b96b8af0cbb30d090d705b6663ad794c2f2a5e5b9fe"}, - {file = "coverage-7.3.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2ac9a1de294773b9fa77447ab7e529cf4fe3910f6a0832816e5f3d538cfea9a"}, - {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:85b7335c22455ec12444cec0d600533a238d6439d8d709d545158c1208483873"}, - {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:36ce5d43a072a036f287029a55b5c6a0e9bd73db58961a273b6dc11a2c6eb9c2"}, - {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:211a4576e984f96d9fce61766ffaed0115d5dab1419e4f63d6992b480c2bd60b"}, - {file = "coverage-7.3.0-cp312-cp312-win32.whl", hash = "sha256:56afbf41fa4a7b27f6635bc4289050ac3ab7951b8a821bca46f5b024500e6321"}, - {file = "coverage-7.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:7f297e0c1ae55300ff688568b04ff26b01c13dfbf4c9d2b7d0cb688ac60df479"}, - {file = "coverage-7.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac0dec90e7de0087d3d95fa0533e1d2d722dcc008bc7b60e1143402a04c117c1"}, - {file = "coverage-7.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:438856d3f8f1e27f8e79b5410ae56650732a0dcfa94e756df88c7e2d24851fcd"}, - {file = "coverage-7.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1084393c6bda8875c05e04fce5cfe1301a425f758eb012f010eab586f1f3905e"}, - {file = "coverage-7.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49ab200acf891e3dde19e5aa4b0f35d12d8b4bd805dc0be8792270c71bd56c54"}, - {file = "coverage-7.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a67e6bbe756ed458646e1ef2b0778591ed4d1fcd4b146fc3ba2feb1a7afd4254"}, - {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f39c49faf5344af36042b293ce05c0d9004270d811c7080610b3e713251c9b0"}, - {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7df91fb24c2edaabec4e0eee512ff3bc6ec20eb8dccac2e77001c1fe516c0c84"}, - {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:34f9f0763d5fa3035a315b69b428fe9c34d4fc2f615262d6be3d3bf3882fb985"}, - {file = "coverage-7.3.0-cp38-cp38-win32.whl", hash = "sha256:bac329371d4c0d456e8d5f38a9b0816b446581b5f278474e416ea0c68c47dcd9"}, - {file = "coverage-7.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:b859128a093f135b556b4765658d5d2e758e1fae3e7cc2f8c10f26fe7005e543"}, - {file = "coverage-7.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fc0ed8d310afe013db1eedd37176d0839dc66c96bcfcce8f6607a73ffea2d6ba"}, - {file = "coverage-7.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61260ec93f99f2c2d93d264b564ba912bec502f679793c56f678ba5251f0393"}, - {file = "coverage-7.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97af9554a799bd7c58c0179cc8dbf14aa7ab50e1fd5fa73f90b9b7215874ba28"}, - {file = "coverage-7.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3558e5b574d62f9c46b76120a5c7c16c4612dc2644c3d48a9f4064a705eaee95"}, - {file = "coverage-7.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37d5576d35fcb765fca05654f66aa71e2808d4237d026e64ac8b397ffa66a56a"}, - {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07ea61bcb179f8f05ffd804d2732b09d23a1238642bf7e51dad62082b5019b34"}, - {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:80501d1b2270d7e8daf1b64b895745c3e234289e00d5f0e30923e706f110334e"}, - {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4eddd3153d02204f22aef0825409091a91bf2a20bce06fe0f638f5c19a85de54"}, - {file = "coverage-7.3.0-cp39-cp39-win32.whl", hash = "sha256:2d22172f938455c156e9af2612650f26cceea47dc86ca048fa4e0b2d21646ad3"}, - {file = "coverage-7.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:60f64e2007c9144375dd0f480a54d6070f00bb1a28f65c408370544091c9bc9e"}, - {file = "coverage-7.3.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:5492a6ce3bdb15c6ad66cb68a0244854d9917478877a25671d70378bdc8562d0"}, - {file = "coverage-7.3.0.tar.gz", hash = "sha256:49dbb19cdcafc130f597d9e04a29d0a032ceedf729e41b181f51cd170e6ee865"}, + {file = "coverage-7.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cd0f7429ecfd1ff597389907045ff209c8fdb5b013d38cfa7c60728cb484b6e3"}, + {file = "coverage-7.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:966f10df9b2b2115da87f50f6a248e313c72a668248be1b9060ce935c871f276"}, + {file = "coverage-7.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0575c37e207bb9b98b6cf72fdaaa18ac909fb3d153083400c2d48e2e6d28bd8e"}, + {file = "coverage-7.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:245c5a99254e83875c7fed8b8b2536f040997a9b76ac4c1da5bff398c06e860f"}, + {file = "coverage-7.3.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c96dd7798d83b960afc6c1feb9e5af537fc4908852ef025600374ff1a017392"}, + {file = "coverage-7.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:de30c1aa80f30af0f6b2058a91505ea6e36d6535d437520067f525f7df123887"}, + {file = "coverage-7.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:50dd1e2dd13dbbd856ffef69196781edff26c800a74f070d3b3e3389cab2600d"}, + {file = "coverage-7.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9c0c19f70d30219113b18fe07e372b244fb2a773d4afde29d5a2f7930765136"}, + {file = "coverage-7.3.1-cp310-cp310-win32.whl", hash = "sha256:770f143980cc16eb601ccfd571846e89a5fe4c03b4193f2e485268f224ab602f"}, + {file = "coverage-7.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:cdd088c00c39a27cfa5329349cc763a48761fdc785879220d54eb785c8a38520"}, + {file = "coverage-7.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:74bb470399dc1989b535cb41f5ca7ab2af561e40def22d7e188e0a445e7639e3"}, + {file = "coverage-7.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:025ded371f1ca280c035d91b43252adbb04d2aea4c7105252d3cbc227f03b375"}, + {file = "coverage-7.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6191b3a6ad3e09b6cfd75b45c6aeeffe7e3b0ad46b268345d159b8df8d835f9"}, + {file = "coverage-7.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7eb0b188f30e41ddd659a529e385470aa6782f3b412f860ce22b2491c89b8593"}, + {file = "coverage-7.3.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c8f0df9dfd8ff745bccff75867d63ef336e57cc22b2908ee725cc552689ec8"}, + {file = "coverage-7.3.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7eb3cd48d54b9bd0e73026dedce44773214064be93611deab0b6a43158c3d5a0"}, + {file = "coverage-7.3.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ac3c5b7e75acac31e490b7851595212ed951889918d398b7afa12736c85e13ce"}, + {file = "coverage-7.3.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5b4ee7080878077af0afa7238df1b967f00dc10763f6e1b66f5cced4abebb0a3"}, + {file = "coverage-7.3.1-cp311-cp311-win32.whl", hash = "sha256:229c0dd2ccf956bf5aeede7e3131ca48b65beacde2029f0361b54bf93d36f45a"}, + {file = "coverage-7.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:c6f55d38818ca9596dc9019eae19a47410d5322408140d9a0076001a3dcb938c"}, + {file = "coverage-7.3.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5289490dd1c3bb86de4730a92261ae66ea8d44b79ed3cc26464f4c2cde581fbc"}, + {file = "coverage-7.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca833941ec701fda15414be400c3259479bfde7ae6d806b69e63b3dc423b1832"}, + {file = "coverage-7.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd694e19c031733e446c8024dedd12a00cda87e1c10bd7b8539a87963685e969"}, + {file = "coverage-7.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aab8e9464c00da5cb9c536150b7fbcd8850d376d1151741dd0d16dfe1ba4fd26"}, + {file = "coverage-7.3.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87d38444efffd5b056fcc026c1e8d862191881143c3aa80bb11fcf9dca9ae204"}, + {file = "coverage-7.3.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8a07b692129b8a14ad7a37941a3029c291254feb7a4237f245cfae2de78de037"}, + {file = "coverage-7.3.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:2829c65c8faaf55b868ed7af3c7477b76b1c6ebeee99a28f59a2cb5907a45760"}, + {file = "coverage-7.3.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1f111a7d85658ea52ffad7084088277135ec5f368457275fc57f11cebb15607f"}, + {file = "coverage-7.3.1-cp312-cp312-win32.whl", hash = "sha256:c397c70cd20f6df7d2a52283857af622d5f23300c4ca8e5bd8c7a543825baa5a"}, + {file = "coverage-7.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:5ae4c6da8b3d123500f9525b50bf0168023313963e0e2e814badf9000dd6ef92"}, + {file = "coverage-7.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ca70466ca3a17460e8fc9cea7123c8cbef5ada4be3140a1ef8f7b63f2f37108f"}, + {file = "coverage-7.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f2781fd3cabc28278dc982a352f50c81c09a1a500cc2086dc4249853ea96b981"}, + {file = "coverage-7.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6407424621f40205bbe6325686417e5e552f6b2dba3535dd1f90afc88a61d465"}, + {file = "coverage-7.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:04312b036580ec505f2b77cbbdfb15137d5efdfade09156961f5277149f5e344"}, + {file = "coverage-7.3.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9ad38204887349853d7c313f53a7b1c210ce138c73859e925bc4e5d8fc18e7"}, + {file = "coverage-7.3.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:53669b79f3d599da95a0afbef039ac0fadbb236532feb042c534fbb81b1a4e40"}, + {file = "coverage-7.3.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:614f1f98b84eb256e4f35e726bfe5ca82349f8dfa576faabf8a49ca09e630086"}, + {file = "coverage-7.3.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f1a317fdf5c122ad642db8a97964733ab7c3cf6009e1a8ae8821089993f175ff"}, + {file = "coverage-7.3.1-cp38-cp38-win32.whl", hash = "sha256:defbbb51121189722420a208957e26e49809feafca6afeef325df66c39c4fdb3"}, + {file = "coverage-7.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:f4f456590eefb6e1b3c9ea6328c1e9fa0f1006e7481179d749b3376fc793478e"}, + {file = "coverage-7.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f12d8b11a54f32688b165fd1a788c408f927b0960984b899be7e4c190ae758f1"}, + {file = "coverage-7.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f09195dda68d94a53123883de75bb97b0e35f5f6f9f3aa5bf6e496da718f0cb6"}, + {file = "coverage-7.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6601a60318f9c3945be6ea0f2a80571f4299b6801716f8a6e4846892737ebe4"}, + {file = "coverage-7.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07d156269718670d00a3b06db2288b48527fc5f36859425ff7cec07c6b367745"}, + {file = "coverage-7.3.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:636a8ac0b044cfeccae76a36f3b18264edcc810a76a49884b96dd744613ec0b7"}, + {file = "coverage-7.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5d991e13ad2ed3aced177f524e4d670f304c8233edad3210e02c465351f785a0"}, + {file = "coverage-7.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:586649ada7cf139445da386ab6f8ef00e6172f11a939fc3b2b7e7c9082052fa0"}, + {file = "coverage-7.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4aba512a15a3e1e4fdbfed2f5392ec221434a614cc68100ca99dcad7af29f3f8"}, + {file = "coverage-7.3.1-cp39-cp39-win32.whl", hash = "sha256:6bc6f3f4692d806831c136c5acad5ccedd0262aa44c087c46b7101c77e139140"}, + {file = "coverage-7.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:553d7094cb27db58ea91332e8b5681bac107e7242c23f7629ab1316ee73c4981"}, + {file = "coverage-7.3.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:220eb51f5fb38dfdb7e5d54284ca4d0cd70ddac047d750111a68ab1798945194"}, + {file = "coverage-7.3.1.tar.gz", hash = "sha256:6cb7fe1581deb67b782c153136541e20901aa312ceedaf1467dcb35255787952"}, ] [package.dependencies] @@ -641,34 +650,34 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "41.0.3" +version = "41.0.4" 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.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:652627a055cb52a84f8c448185922241dd5217443ca194d5739b44612c5e6507"}, - {file = "cryptography-41.0.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:8f09daa483aedea50d249ef98ed500569841d6498aa9c9f4b0531b9964658922"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4fd871184321100fb400d759ad0cddddf284c4b696568204d281c902fc7b0d81"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84537453d57f55a50a5b6835622ee405816999a7113267739a1b4581f83535bd"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3fb248989b6363906827284cd20cca63bb1a757e0a2864d4c1682a985e3dca47"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:42cb413e01a5d36da9929baa9d70ca90d90b969269e5a12d39c1e0d475010116"}, - {file = "cryptography-41.0.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:aeb57c421b34af8f9fe830e1955bf493a86a7996cc1338fe41b30047d16e962c"}, - {file = "cryptography-41.0.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6af1c6387c531cd364b72c28daa29232162010d952ceb7e5ca8e2827526aceae"}, - {file = "cryptography-41.0.3-cp37-abi3-win32.whl", hash = "sha256:0d09fb5356f975974dbcb595ad2d178305e5050656affb7890a1583f5e02a306"}, - {file = "cryptography-41.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:a983e441a00a9d57a4d7c91b3116a37ae602907a7618b882c8013b5762e80574"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5259cb659aa43005eb55a0e4ff2c825ca111a0da1814202c64d28a985d33b087"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:67e120e9a577c64fe1f611e53b30b3e69744e5910ff3b6e97e935aeb96005858"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:7efe8041897fe7a50863e51b77789b657a133c75c3b094e51b5e4b5cec7bf906"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ce785cf81a7bdade534297ef9e490ddff800d956625020ab2ec2780a556c313e"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:57a51b89f954f216a81c9d057bf1a24e2f36e764a1ca9a501a6964eb4a6800dd"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c2f0d35703d61002a2bbdcf15548ebb701cfdd83cdc12471d2bae80878a4207"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:23c2d778cf829f7d0ae180600b17e9fceea3c2ef8b31a99e3c694cbbf3a24b84"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:95dd7f261bb76948b52a5330ba5202b91a26fbac13ad0e9fc8a3ac04752058c7"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:41d7aa7cdfded09b3d73a47f429c298e80796c8e825ddfadc84c8a7f12df212d"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d0d651aa754ef58d75cec6edfbd21259d93810b73f6ec246436a21b7841908de"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ab8de0d091acbf778f74286f4989cf3d1528336af1b59f3e5d2ebca8b5fe49e1"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a74fbcdb2a0d46fe00504f571a2a540532f4c188e6ccf26f1f178480117b33c4"}, - {file = "cryptography-41.0.3.tar.gz", hash = "sha256:6d192741113ef5e30d89dcb5b956ef4e1578f304708701b8b73d38e3e1461f34"}, + {file = "cryptography-41.0.4-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:80907d3faa55dc5434a16579952ac6da800935cd98d14dbd62f6f042c7f5e839"}, + {file = "cryptography-41.0.4-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:35c00f637cd0b9d5b6c6bd11b6c3359194a8eba9c46d4e875a3660e3b400005f"}, + {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cecfefa17042941f94ab54f769c8ce0fe14beff2694e9ac684176a2535bf9714"}, + {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e40211b4923ba5a6dc9769eab704bdb3fbb58d56c5b336d30996c24fcf12aadb"}, + {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:23a25c09dfd0d9f28da2352503b23e086f8e78096b9fd585d1d14eca01613e13"}, + {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2ed09183922d66c4ec5fdaa59b4d14e105c084dd0febd27452de8f6f74704143"}, + {file = "cryptography-41.0.4-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5a0f09cefded00e648a127048119f77bc2b2ec61e736660b5789e638f43cc397"}, + {file = "cryptography-41.0.4-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:9eeb77214afae972a00dee47382d2591abe77bdae166bda672fb1e24702a3860"}, + {file = "cryptography-41.0.4-cp37-abi3-win32.whl", hash = "sha256:3b224890962a2d7b57cf5eeb16ccaafba6083f7b811829f00476309bce2fe0fd"}, + {file = "cryptography-41.0.4-cp37-abi3-win_amd64.whl", hash = "sha256:c880eba5175f4307129784eca96f4e70b88e57aa3f680aeba3bab0e980b0f37d"}, + {file = "cryptography-41.0.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:004b6ccc95943f6a9ad3142cfabcc769d7ee38a3f60fb0dddbfb431f818c3a67"}, + {file = "cryptography-41.0.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:86defa8d248c3fa029da68ce61fe735432b047e32179883bdb1e79ed9bb8195e"}, + {file = "cryptography-41.0.4-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:37480760ae08065437e6573d14be973112c9e6dcaf5f11d00147ee74f37a3829"}, + {file = "cryptography-41.0.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b5f4dfe950ff0479f1f00eda09c18798d4f49b98f4e2006d644b3301682ebdca"}, + {file = "cryptography-41.0.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7e53db173370dea832190870e975a1e09c86a879b613948f09eb49324218c14d"}, + {file = "cryptography-41.0.4-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5b72205a360f3b6176485a333256b9bcd48700fc755fef51c8e7e67c4b63e3ac"}, + {file = "cryptography-41.0.4-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:93530900d14c37a46ce3d6c9e6fd35dbe5f5601bf6b3a5c325c7bffc030344d9"}, + {file = "cryptography-41.0.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efc8ad4e6fc4f1752ebfb58aefece8b4e3c4cae940b0994d43649bdfce8d0d4f"}, + {file = "cryptography-41.0.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c3391bd8e6de35f6f1140e50aaeb3e2b3d6a9012536ca23ab0d9c35ec18c8a91"}, + {file = "cryptography-41.0.4-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:0d9409894f495d465fe6fda92cb70e8323e9648af912d5b9141d616df40a87b8"}, + {file = "cryptography-41.0.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:8ac4f9ead4bbd0bc8ab2d318f97d85147167a488be0e08814a37eb2f439d5cf6"}, + {file = "cryptography-41.0.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:047c4603aeb4bbd8db2756e38f5b8bd7e94318c047cfe4efeb5d715e08b49311"}, + {file = "cryptography-41.0.4.tar.gz", hash = "sha256:7febc3094125fc126a7f6fb1f420d0da639f3f32cb15c8ff0dc3997c4549f51a"}, ] [package.dependencies] @@ -697,32 +706,25 @@ files = [ [[package]] name = "dash" -version = "2.13.0" +version = "2.9.3" description = "A Python framework for building reactive web-apps. Developed by Plotly." optional = false python-versions = ">=3.6" files = [ - {file = "dash-2.13.0-py3-none-any.whl", hash = "sha256:ca21f01f720652c7e2d16d04d4e27803c2b60c4c2a382e750c3d8d778c06e209"}, - {file = "dash-2.13.0.tar.gz", hash = "sha256:07c192db694b9bb4c87d57b6da877413f2695bfcb1d5c51f08995de7dcdd1e92"}, + {file = "dash-2.9.3-py3-none-any.whl", hash = "sha256:a749ae1ea9de3fe7b785353a818ec9b629d39c6b7e02462954203bd1e296fd0e"}, + {file = "dash-2.9.3.tar.gz", hash = "sha256:47392f8d6455dc989a697407eb5941f3bad80604df985ab1ac9d4244568ffb34"}, ] [package.dependencies] -ansi2html = "*" dash-core-components = "2.0.0" dash-html-components = "2.0.0" dash-table = "5.0.0" -Flask = ">=1.0.4,<2.3.0" -nest-asyncio = "*" +Flask = ">=1.0.4" plotly = ">=5.0.0" -requests = "*" -retrying = "*" -setuptools = "*" -typing-extensions = ">=4.1.1" -Werkzeug = "<2.3.0" [package.extras] celery = ["celery[redis] (>=5.1.2)", "importlib-metadata (<5)", "redis (>=3.5.3)"] -ci = ["black (==21.6b0)", "black (==22.3.0)", "dash-dangerously-set-inner-html", "dash-flow-example (==0.0.5)", "flake8 (==3.9.2)", "flaky (==3.7.0)", "flask-talisman (==1.0.0)", "isort (==4.3.21)", "jupyterlab (<4.0.0)", "mimesis", "mock (==4.0.3)", "numpy", "openpyxl", "orjson (==3.5.4)", "orjson (==3.6.7)", "pandas (==1.1.5)", "pandas (>=1.4.0)", "preconditions", "pyarrow", "pyarrow (<3)", "pylint (==2.13.5)", "pytest-mock", "pytest-rerunfailures", "pytest-sugar (==0.9.6)", "xlrd (<2)", "xlrd (>=2.0.1)"] +ci = ["black (==21.6b0)", "black (==22.3.0)", "dash-dangerously-set-inner-html", "dash-flow-example (==0.0.5)", "flake8 (==3.9.2)", "flaky (==3.7.0)", "flask-talisman (==1.0.0)", "isort (==4.3.21)", "mimesis", "mock (==4.0.3)", "numpy", "openpyxl", "orjson (==3.5.4)", "orjson (==3.6.7)", "pandas (==1.1.5)", "pandas (>=1.4.0)", "preconditions", "pyarrow", "pyarrow (<3)", "pylint (==2.13.5)", "pytest-mock", "pytest-rerunfailures", "pytest-sugar (==0.9.6)", "xlrd (<2)", "xlrd (>=2.0.1)"] compress = ["flask-compress"] dev = ["PyYAML (>=5.4.1)", "coloredlogs (>=15.0.1)", "fire (>=0.4.0)"] diskcache = ["diskcache (>=5.2.1)", "multiprocess (>=0.70.12)", "psutil (>=5.8.0)"] @@ -730,13 +732,13 @@ testing = ["beautifulsoup4 (>=4.8.2)", "cryptography (<3.4)", "dash-testing-stub [[package]] name = "dash-bootstrap-components" -version = "1.4.2" +version = "1.5.0" description = "Bootstrap themed components for use in Plotly Dash" optional = false python-versions = ">=3.7, <4" files = [ - {file = "dash-bootstrap-components-1.4.2.tar.gz", hash = "sha256:b7514be30e229a1701db5010a47d275882a94d1efff4c803ac42a9d222ed86e0"}, - {file = "dash_bootstrap_components-1.4.2-py3-none-any.whl", hash = "sha256:4f59352a2f81cb0c41ae75dd3e0814f64049a4520f935397298e9a093ace727c"}, + {file = "dash-bootstrap-components-1.5.0.tar.gz", hash = "sha256:083158c07434b9965e2d6c3e8ca72dbbe47dab23e676258cef9bf0ad47d2e250"}, + {file = "dash_bootstrap_components-1.5.0-py3-none-any.whl", hash = "sha256:b487fec1a85e3d6a8564fe04c0a9cd9e846f75ea9e563456ed3879592889c591"}, ] [package.dependencies] @@ -804,13 +806,13 @@ files = [ [[package]] name = "datadog-api-client" -version = "2.16.0" +version = "2.17.0" description = "Collection of all Datadog Public endpoints" optional = false python-versions = ">=3.7" files = [ - {file = "datadog-api-client-2.16.0.tar.gz", hash = "sha256:47724b24966a8acb0c75905dba651c50d8831a133e762cd6338bb84f74e0c9cc"}, - {file = "datadog_api_client-2.16.0-py3-none-any.whl", hash = "sha256:f25271a91530e4d2a39c0ec83c262d75e050d1b935e27a29ebe47bb1abe76d91"}, + {file = "datadog-api-client-2.17.0.tar.gz", hash = "sha256:b487ace26a5165ba981b70f0705401319fa70fa92372ecce48b668191494d7fb"}, + {file = "datadog_api_client-2.17.0-py3-none-any.whl", hash = "sha256:ec1b8ab9f85e9984099299e117a5bccd21b49163484dfc460da05cb80558f1f9"}, ] [package.dependencies] @@ -827,29 +829,29 @@ zstandard = ["zstandard"] [[package]] name = "debugpy" -version = "1.6.7.post1" +version = "1.8.0" description = "An implementation of the Debug Adapter Protocol for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "debugpy-1.6.7.post1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:903bd61d5eb433b6c25b48eae5e23821d4c1a19e25c9610205f5aeaccae64e32"}, - {file = "debugpy-1.6.7.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d16882030860081e7dd5aa619f30dec3c2f9a421e69861125f83cc372c94e57d"}, - {file = "debugpy-1.6.7.post1-cp310-cp310-win32.whl", hash = "sha256:eea8d8cfb9965ac41b99a61f8e755a8f50e9a20330938ad8271530210f54e09c"}, - {file = "debugpy-1.6.7.post1-cp310-cp310-win_amd64.whl", hash = "sha256:85969d864c45f70c3996067cfa76a319bae749b04171f2cdeceebe4add316155"}, - {file = "debugpy-1.6.7.post1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:890f7ab9a683886a0f185786ffbda3b46495c4b929dab083b8c79d6825832a52"}, - {file = "debugpy-1.6.7.post1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4ac7a4dba28801d184b7fc0e024da2635ca87d8b0a825c6087bb5168e3c0d28"}, - {file = "debugpy-1.6.7.post1-cp37-cp37m-win32.whl", hash = "sha256:3370ef1b9951d15799ef7af41f8174194f3482ee689988379763ef61a5456426"}, - {file = "debugpy-1.6.7.post1-cp37-cp37m-win_amd64.whl", hash = "sha256:65b28435a17cba4c09e739621173ff90c515f7b9e8ea469b92e3c28ef8e5cdfb"}, - {file = "debugpy-1.6.7.post1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:92b6dae8bfbd497c90596bbb69089acf7954164aea3228a99d7e43e5267f5b36"}, - {file = "debugpy-1.6.7.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72f5d2ecead8125cf669e62784ef1e6300f4067b0f14d9f95ee00ae06fc7c4f7"}, - {file = "debugpy-1.6.7.post1-cp38-cp38-win32.whl", hash = "sha256:f0851403030f3975d6e2eaa4abf73232ab90b98f041e3c09ba33be2beda43fcf"}, - {file = "debugpy-1.6.7.post1-cp38-cp38-win_amd64.whl", hash = "sha256:3de5d0f97c425dc49bce4293df6a04494309eedadd2b52c22e58d95107e178d9"}, - {file = "debugpy-1.6.7.post1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:38651c3639a4e8bbf0ca7e52d799f6abd07d622a193c406be375da4d510d968d"}, - {file = "debugpy-1.6.7.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:038c51268367c9c935905a90b1c2d2dbfe304037c27ba9d19fe7409f8cdc710c"}, - {file = "debugpy-1.6.7.post1-cp39-cp39-win32.whl", hash = "sha256:4b9eba71c290852f959d2cf8a03af28afd3ca639ad374d393d53d367f7f685b2"}, - {file = "debugpy-1.6.7.post1-cp39-cp39-win_amd64.whl", hash = "sha256:973a97ed3b434eab0f792719a484566c35328196540676685c975651266fccf9"}, - {file = "debugpy-1.6.7.post1-py2.py3-none-any.whl", hash = "sha256:1093a5c541af079c13ac8c70ab8b24d1d35c8cacb676306cf11e57f699c02926"}, - {file = "debugpy-1.6.7.post1.zip", hash = "sha256:fe87ec0182ef624855d05e6ed7e0b7cb1359d2ffa2a925f8ec2d22e98b75d0ca"}, + {file = "debugpy-1.8.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7fb95ca78f7ac43393cd0e0f2b6deda438ec7c5e47fa5d38553340897d2fbdfb"}, + {file = "debugpy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef9ab7df0b9a42ed9c878afd3eaaff471fce3fa73df96022e1f5c9f8f8c87ada"}, + {file = "debugpy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:a8b7a2fd27cd9f3553ac112f356ad4ca93338feadd8910277aff71ab24d8775f"}, + {file = "debugpy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:5d9de202f5d42e62f932507ee8b21e30d49aae7e46d5b1dd5c908db1d7068637"}, + {file = "debugpy-1.8.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:ef54404365fae8d45cf450d0544ee40cefbcb9cb85ea7afe89a963c27028261e"}, + {file = "debugpy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60009b132c91951354f54363f8ebdf7457aeb150e84abba5ae251b8e9f29a8a6"}, + {file = "debugpy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:8cd0197141eb9e8a4566794550cfdcdb8b3db0818bdf8c49a8e8f8053e56e38b"}, + {file = "debugpy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:a64093656c4c64dc6a438e11d59369875d200bd5abb8f9b26c1f5f723622e153"}, + {file = "debugpy-1.8.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b05a6b503ed520ad58c8dc682749113d2fd9f41ffd45daec16e558ca884008cd"}, + {file = "debugpy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c6fb41c98ec51dd010d7ed650accfd07a87fe5e93eca9d5f584d0578f28f35f"}, + {file = "debugpy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:46ab6780159eeabb43c1495d9c84cf85d62975e48b6ec21ee10c95767c0590aa"}, + {file = "debugpy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:bdc5ef99d14b9c0fcb35351b4fbfc06ac0ee576aeab6b2511702e5a648a2e595"}, + {file = "debugpy-1.8.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:61eab4a4c8b6125d41a34bad4e5fe3d2cc145caecd63c3fe953be4cc53e65bf8"}, + {file = "debugpy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:125b9a637e013f9faac0a3d6a82bd17c8b5d2c875fb6b7e2772c5aba6d082332"}, + {file = "debugpy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:57161629133113c97b387382045649a2b985a348f0c9366e22217c87b68b73c6"}, + {file = "debugpy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:e3412f9faa9ade82aa64a50b602544efcba848c91384e9f93497a458767e6926"}, + {file = "debugpy-1.8.0-py2.py3-none-any.whl", hash = "sha256:9c9b0ac1ce2a42888199df1a1906e45e6f3c9555497643a85e0bf2406e3ffbc4"}, + {file = "debugpy-1.8.0.zip", hash = "sha256:12af2c55b419521e33d5fb21bd022df0b5eb267c3e178f1d374a63a2a6bdccd0"}, ] [[package]] @@ -1055,21 +1057,22 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc [[package]] name = "flask" -version = "2.2.5" +version = "2.3.3" description = "A simple framework for building complex web applications." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Flask-2.2.5-py3-none-any.whl", hash = "sha256:58107ed83443e86067e41eff4631b058178191a355886f8e479e347fa1285fdf"}, - {file = "Flask-2.2.5.tar.gz", hash = "sha256:edee9b0a7ff26621bd5a8c10ff484ae28737a2410d99b0bb9a6850c7fb977aa0"}, + {file = "flask-2.3.3-py3-none-any.whl", hash = "sha256:f69fcd559dc907ed196ab9df0e48471709175e696d6e698dd4dbe940f96ce66b"}, + {file = "flask-2.3.3.tar.gz", hash = "sha256:09c347a92aa7ff4a8e7f3206795f30d826654baf38b873d0744cd571ca609efc"}, ] [package.dependencies] -click = ">=8.0" +blinker = ">=1.6.2" +click = ">=8.1.3" importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} -itsdangerous = ">=2.0" -Jinja2 = ">=3.0" -Werkzeug = ">=2.2.2" +itsdangerous = ">=2.1.2" +Jinja2 = ">=3.1.2" +Werkzeug = ">=2.3.7" [package.extras] async = ["asgiref (>=3.2)"] @@ -1134,13 +1137,13 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] [[package]] name = "furo" -version = "2023.8.19" +version = "2023.9.10" description = "A clean customisable Sphinx documentation theme." optional = false python-versions = ">=3.8" files = [ - {file = "furo-2023.8.19-py3-none-any.whl", hash = "sha256:12f99f87a1873b6746228cfde18f77244e6c1ffb85d7fed95e638aae70d80590"}, - {file = "furo-2023.8.19.tar.gz", hash = "sha256:e671ee638ab3f1b472f4033b0167f502ab407830e0db0f843b1c1028119c9cd1"}, + {file = "furo-2023.9.10-py3-none-any.whl", hash = "sha256:513092538537dc5c596691da06e3c370714ec99bc438680edc1debffb73e5bfc"}, + {file = "furo-2023.9.10.tar.gz", hash = "sha256:5707530a476d2a63b8cad83b4f961f3739a69f4b058bcf38a03a39fa537195b2"}, ] [package.dependencies] @@ -1224,60 +1227,60 @@ grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] [[package]] name = "grpcio" -version = "1.57.0" +version = "1.58.0" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.7" files = [ - {file = "grpcio-1.57.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:092fa155b945015754bdf988be47793c377b52b88d546e45c6a9f9579ac7f7b6"}, - {file = "grpcio-1.57.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:2f7349786da979a94690cc5c2b804cab4e8774a3cf59be40d037c4342c906649"}, - {file = "grpcio-1.57.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:82640e57fb86ea1d71ea9ab54f7e942502cf98a429a200b2e743d8672171734f"}, - {file = "grpcio-1.57.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40b72effd4c789de94ce1be2b5f88d7b9b5f7379fe9645f198854112a6567d9a"}, - {file = "grpcio-1.57.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f708a6a17868ad8bf586598bee69abded4996b18adf26fd2d91191383b79019"}, - {file = "grpcio-1.57.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:60fe15288a0a65d5c1cb5b4a62b1850d07336e3ba728257a810317be14f0c527"}, - {file = "grpcio-1.57.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6907b1cf8bb29b058081d2aad677b15757a44ef2d4d8d9130271d2ad5e33efca"}, - {file = "grpcio-1.57.0-cp310-cp310-win32.whl", hash = "sha256:57b183e8b252825c4dd29114d6c13559be95387aafc10a7be645462a0fc98bbb"}, - {file = "grpcio-1.57.0-cp310-cp310-win_amd64.whl", hash = "sha256:7b400807fa749a9eb286e2cd893e501b110b4d356a218426cb9c825a0474ca56"}, - {file = "grpcio-1.57.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:c6ebecfb7a31385393203eb04ed8b6a08f5002f53df3d59e5e795edb80999652"}, - {file = "grpcio-1.57.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:00258cbe3f5188629828363ae8ff78477ce976a6f63fb2bb5e90088396faa82e"}, - {file = "grpcio-1.57.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:23e7d8849a0e58b806253fd206ac105b328171e01b8f18c7d5922274958cc87e"}, - {file = "grpcio-1.57.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5371bcd861e679d63b8274f73ac281751d34bd54eccdbfcd6aa00e692a82cd7b"}, - {file = "grpcio-1.57.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aed90d93b731929e742967e236f842a4a2174dc5db077c8f9ad2c5996f89f63e"}, - {file = "grpcio-1.57.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:fe752639919aad9ffb0dee0d87f29a6467d1ef764f13c4644d212a9a853a078d"}, - {file = "grpcio-1.57.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fada6b07ec4f0befe05218181f4b85176f11d531911b64c715d1875c4736d73a"}, - {file = "grpcio-1.57.0-cp311-cp311-win32.whl", hash = "sha256:bb396952cfa7ad2f01061fbc7dc1ad91dd9d69243bcb8110cf4e36924785a0fe"}, - {file = "grpcio-1.57.0-cp311-cp311-win_amd64.whl", hash = "sha256:e503cb45ed12b924b5b988ba9576dc9949b2f5283b8e33b21dcb6be74a7c58d0"}, - {file = "grpcio-1.57.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:fd173b4cf02b20f60860dc2ffe30115c18972d7d6d2d69df97ac38dee03be5bf"}, - {file = "grpcio-1.57.0-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:d7f8df114d6b4cf5a916b98389aeaf1e3132035420a88beea4e3d977e5f267a5"}, - {file = "grpcio-1.57.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:76c44efa4ede1f42a9d5b2fed1fe9377e73a109bef8675fb0728eb80b0b8e8f2"}, - {file = "grpcio-1.57.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4faea2cfdf762a664ab90589b66f416274887641ae17817de510b8178356bf73"}, - {file = "grpcio-1.57.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c60b83c43faeb6d0a9831f0351d7787a0753f5087cc6fa218d78fdf38e5acef0"}, - {file = "grpcio-1.57.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b363bbb5253e5f9c23d8a0a034dfdf1b7c9e7f12e602fc788c435171e96daccc"}, - {file = "grpcio-1.57.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:f1fb0fd4a1e9b11ac21c30c169d169ef434c6e9344ee0ab27cfa6f605f6387b2"}, - {file = "grpcio-1.57.0-cp37-cp37m-win_amd64.whl", hash = "sha256:34950353539e7d93f61c6796a007c705d663f3be41166358e3d88c45760c7d98"}, - {file = "grpcio-1.57.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:871f9999e0211f9551f368612460442a5436d9444606184652117d6a688c9f51"}, - {file = "grpcio-1.57.0-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:a8a8e560e8dbbdf29288872e91efd22af71e88b0e5736b0daf7773c1fecd99f0"}, - {file = "grpcio-1.57.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:2313b124e475aa9017a9844bdc5eafb2d5abdda9d456af16fc4535408c7d6da6"}, - {file = "grpcio-1.57.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4098b6b638d9e0ca839a81656a2fd4bc26c9486ea707e8b1437d6f9d61c3941"}, - {file = "grpcio-1.57.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e5b58e32ae14658085c16986d11e99abd002ddbf51c8daae8a0671fffb3467f"}, - {file = "grpcio-1.57.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0f80bf37f09e1caba6a8063e56e2b87fa335add314cf2b78ebf7cb45aa7e3d06"}, - {file = "grpcio-1.57.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5b7a4ce8f862fe32b2a10b57752cf3169f5fe2915acfe7e6a1e155db3da99e79"}, - {file = "grpcio-1.57.0-cp38-cp38-win32.whl", hash = "sha256:9338bacf172e942e62e5889b6364e56657fbf8ac68062e8b25c48843e7b202bb"}, - {file = "grpcio-1.57.0-cp38-cp38-win_amd64.whl", hash = "sha256:e1cb52fa2d67d7f7fab310b600f22ce1ff04d562d46e9e0ac3e3403c2bb4cc16"}, - {file = "grpcio-1.57.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:fee387d2fab144e8a34e0e9c5ca0f45c9376b99de45628265cfa9886b1dbe62b"}, - {file = "grpcio-1.57.0-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:b53333627283e7241fcc217323f225c37783b5f0472316edcaa4479a213abfa6"}, - {file = "grpcio-1.57.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:f19ac6ac0a256cf77d3cc926ef0b4e64a9725cc612f97228cd5dc4bd9dbab03b"}, - {file = "grpcio-1.57.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3fdf04e402f12e1de8074458549337febb3b45f21076cc02ef4ff786aff687e"}, - {file = "grpcio-1.57.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5613a2fecc82f95d6c51d15b9a72705553aa0d7c932fad7aed7afb51dc982ee5"}, - {file = "grpcio-1.57.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:b670c2faa92124b7397b42303e4d8eb64a4cd0b7a77e35a9e865a55d61c57ef9"}, - {file = "grpcio-1.57.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7a635589201b18510ff988161b7b573f50c6a48fae9cb567657920ca82022b37"}, - {file = "grpcio-1.57.0-cp39-cp39-win32.whl", hash = "sha256:d78d8b86fcdfa1e4c21f8896614b6cc7ee01a2a758ec0c4382d662f2a62cf766"}, - {file = "grpcio-1.57.0-cp39-cp39-win_amd64.whl", hash = "sha256:20ec6fc4ad47d1b6e12deec5045ec3cd5402d9a1597f738263e98f490fe07056"}, - {file = "grpcio-1.57.0.tar.gz", hash = "sha256:4b089f7ad1eb00a104078bab8015b0ed0ebcb3b589e527ab009c53893fd4e613"}, + {file = "grpcio-1.58.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:3e6bebf1dfdbeb22afd95650e4f019219fef3ab86d3fca8ebade52e4bc39389a"}, + {file = "grpcio-1.58.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:cde11577d5b6fd73a00e6bfa3cf5f428f3f33c2d2878982369b5372bbc4acc60"}, + {file = "grpcio-1.58.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:a2d67ff99e70e86b2be46c1017ae40b4840d09467d5455b2708de6d4c127e143"}, + {file = "grpcio-1.58.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1ed979b273a81de36fc9c6716d9fb09dd3443efa18dcc8652501df11da9583e9"}, + {file = "grpcio-1.58.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:458899d2ebd55d5ca2350fd3826dfd8fcb11fe0f79828ae75e2b1e6051d50a29"}, + {file = "grpcio-1.58.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bc7ffef430b80345729ff0a6825e9d96ac87efe39216e87ac58c6c4ef400de93"}, + {file = "grpcio-1.58.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5b23d75e5173faa3d1296a7bedffb25afd2fddb607ef292dfc651490c7b53c3d"}, + {file = "grpcio-1.58.0-cp310-cp310-win32.whl", hash = "sha256:fad9295fe02455d4f158ad72c90ef8b4bcaadfdb5efb5795f7ab0786ad67dd58"}, + {file = "grpcio-1.58.0-cp310-cp310-win_amd64.whl", hash = "sha256:bc325fed4d074367bebd465a20763586e5e1ed5b943e9d8bc7c162b1f44fd602"}, + {file = "grpcio-1.58.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:652978551af02373a5a313e07bfef368f406b5929cf2d50fa7e4027f913dbdb4"}, + {file = "grpcio-1.58.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:9f13a171281ebb4d7b1ba9f06574bce2455dcd3f2f6d1fbe0fd0d84615c74045"}, + {file = "grpcio-1.58.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:8774219e21b05f750eef8adc416e9431cf31b98f6ce9def288e4cea1548cbd22"}, + {file = "grpcio-1.58.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09206106848462763f7f273ca93d2d2d4d26cab475089e0de830bb76be04e9e8"}, + {file = "grpcio-1.58.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62831d5e251dd7561d9d9e83a0b8655084b2a1f8ea91e4bd6b3cedfefd32c9d2"}, + {file = "grpcio-1.58.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:212f38c6a156862098f6bdc9a79bf850760a751d259d8f8f249fc6d645105855"}, + {file = "grpcio-1.58.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4b12754af201bb993e6e2efd7812085ddaaef21d0a6f0ff128b97de1ef55aa4a"}, + {file = "grpcio-1.58.0-cp311-cp311-win32.whl", hash = "sha256:3886b4d56bd4afeac518dbc05933926198aa967a7d1d237a318e6fbc47141577"}, + {file = "grpcio-1.58.0-cp311-cp311-win_amd64.whl", hash = "sha256:002f228d197fea12797a14e152447044e14fb4fdb2eb5d6cfa496f29ddbf79ef"}, + {file = "grpcio-1.58.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:b5e8db0aff0a4819946215f156bd722b6f6c8320eb8419567ffc74850c9fd205"}, + {file = "grpcio-1.58.0-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:201e550b7e2ede113b63e718e7ece93cef5b0fbf3c45e8fe4541a5a4305acd15"}, + {file = "grpcio-1.58.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:d79b660681eb9bc66cc7cbf78d1b1b9e335ee56f6ea1755d34a31108b80bd3c8"}, + {file = "grpcio-1.58.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ef8d4a76d2c7d8065aba829f8d0bc0055495c998dce1964ca5b302d02514fb3"}, + {file = "grpcio-1.58.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6cba491c638c76d3dc6c191d9c75041ca5b8f5c6de4b8327ecdcab527f130bb4"}, + {file = "grpcio-1.58.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6801ff6652ecd2aae08ef994a3e49ff53de29e69e9cd0fd604a79ae4e545a95c"}, + {file = "grpcio-1.58.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:24edec346e69e672daf12b2c88e95c6f737f3792d08866101d8c5f34370c54fd"}, + {file = "grpcio-1.58.0-cp37-cp37m-win_amd64.whl", hash = "sha256:7e473a7abad9af48e3ab5f3b5d237d18208024d28ead65a459bd720401bd2f8f"}, + {file = "grpcio-1.58.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:4891bbb4bba58acd1d620759b3be11245bfe715eb67a4864c8937b855b7ed7fa"}, + {file = "grpcio-1.58.0-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:e9f995a8a421405958ff30599b4d0eec244f28edc760de82f0412c71c61763d2"}, + {file = "grpcio-1.58.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:2f85f87e2f087d9f632c085b37440a3169fda9cdde80cb84057c2fc292f8cbdf"}, + {file = "grpcio-1.58.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb6b92036ff312d5b4182fa72e8735d17aceca74d0d908a7f08e375456f03e07"}, + {file = "grpcio-1.58.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d81c2b2b24c32139dd2536972f1060678c6b9fbd106842a9fcdecf07b233eccd"}, + {file = "grpcio-1.58.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:fbcecb6aedd5c1891db1d70efbfbdc126c986645b5dd616a045c07d6bd2dfa86"}, + {file = "grpcio-1.58.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:92ae871a902cf19833328bd6498ec007b265aabf2fda845ab5bd10abcaf4c8c6"}, + {file = "grpcio-1.58.0-cp38-cp38-win32.whl", hash = "sha256:dc72e04620d49d3007771c0e0348deb23ca341c0245d610605dddb4ac65a37cb"}, + {file = "grpcio-1.58.0-cp38-cp38-win_amd64.whl", hash = "sha256:1c1c5238c6072470c7f1614bf7c774ffde6b346a100521de9ce791d1e4453afe"}, + {file = "grpcio-1.58.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:fe643af248442221db027da43ed43e53b73e11f40c9043738de9a2b4b6ca7697"}, + {file = "grpcio-1.58.0-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:128eb1f8e70676d05b1b0c8e6600320fc222b3f8c985a92224248b1367122188"}, + {file = "grpcio-1.58.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:039003a5e0ae7d41c86c768ef8b3ee2c558aa0a23cf04bf3c23567f37befa092"}, + {file = "grpcio-1.58.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8f061722cad3f9aabb3fbb27f3484ec9d4667b7328d1a7800c3c691a98f16bb0"}, + {file = "grpcio-1.58.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba0af11938acf8cd4cf815c46156bcde36fa5850518120920d52620cc3ec1830"}, + {file = "grpcio-1.58.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d4cef77ad2fed42b1ba9143465856d7e737279854e444925d5ba45fc1f3ba727"}, + {file = "grpcio-1.58.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:24765a627eb4d9288ace32d5104161c3654128fe27f2808ecd6e9b0cfa7fc8b9"}, + {file = "grpcio-1.58.0-cp39-cp39-win32.whl", hash = "sha256:f0241f7eb0d2303a545136c59bc565a35c4fc3b924ccbd69cb482f4828d6f31c"}, + {file = "grpcio-1.58.0-cp39-cp39-win_amd64.whl", hash = "sha256:dcfba7befe3a55dab6fe1eb7fc9359dc0c7f7272b30a70ae0af5d5b063842f28"}, + {file = "grpcio-1.58.0.tar.gz", hash = "sha256:532410c51ccd851b706d1fbc00a87be0f5312bd6f8e5dbf89d4e99c7f79d7499"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.57.0)"] +protobuf = ["grpcio-tools (>=1.58.0)"] [[package]] name = "grpclib" @@ -1438,21 +1441,21 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs [[package]] name = "importlib-resources" -version = "6.0.1" +version = "6.1.0" description = "Read resources from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_resources-6.0.1-py3-none-any.whl", hash = "sha256:134832a506243891221b88b4ae1213327eea96ceb4e407a00d790bb0626f45cf"}, - {file = "importlib_resources-6.0.1.tar.gz", hash = "sha256:4359457e42708462b9626a04657c6208ad799ceb41e5c58c57ffa0e6a098a5d4"}, + {file = "importlib_resources-6.1.0-py3-none-any.whl", hash = "sha256:aa50258bbfa56d4e33fbd8aa3ef48ded10d1735f11532b8df95388cc6bdb7e83"}, + {file = "importlib_resources-6.1.0.tar.gz", hash = "sha256:9d48dcccc213325e810fd723e7fbb45ccb39f6cf5c31f00cf2b965f5f10f3cb9"}, ] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"] [[package]] name = "iniconfig" @@ -1480,13 +1483,13 @@ sortedcontainers = ">=2.0,<3.0" [[package]] name = "ipykernel" -version = "6.25.1" +version = "6.25.2" description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.8" files = [ - {file = "ipykernel-6.25.1-py3-none-any.whl", hash = "sha256:c8a2430b357073b37c76c21c52184db42f6b4b0e438e1eb7df3c4440d120497c"}, - {file = "ipykernel-6.25.1.tar.gz", hash = "sha256:050391364c0977e768e354bdb60cbbfbee7cbb943b1af1618382021136ffd42f"}, + {file = "ipykernel-6.25.2-py3-none-any.whl", hash = "sha256:2e2ee359baba19f10251b99415bb39de1e97d04e1fab385646f24f0596510b77"}, + {file = "ipykernel-6.25.2.tar.gz", hash = "sha256:f468ddd1f17acb48c8ce67fcfa49ba6d46d4f9ac0438c1f441be7c3d1372230b"}, ] [package.dependencies] @@ -1513,13 +1516,13 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio" [[package]] name = "ipython" -version = "8.14.0" +version = "8.15.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.9" files = [ - {file = "ipython-8.14.0-py3-none-any.whl", hash = "sha256:248aca623f5c99a6635bc3857677b7320b9b8039f99f070ee0d20a5ca5a8e6bf"}, - {file = "ipython-8.14.0.tar.gz", hash = "sha256:1d197b907b6ba441b692c48cf2a3a2de280dc0ac91a3405b39349a50272ca0a1"}, + {file = "ipython-8.15.0-py3-none-any.whl", hash = "sha256:45a2c3a529296870a97b7de34eda4a31bee16bc7bf954e07d39abe49caf8f887"}, + {file = "ipython-8.15.0.tar.gz", hash = "sha256:2baeb5be6949eeebf532150f81746f8333e2ccce02de1c7eedde3f23ed5e9f1e"}, ] [package.dependencies] @@ -1527,6 +1530,7 @@ appnope = {version = "*", markers = "sys_platform == \"darwin\""} backcall = "*" colorama = {version = "*", markers = "sys_platform == \"win32\""} decorator = "*" +exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} @@ -1538,9 +1542,9 @@ traitlets = ">=5" typing-extensions = {version = "*", markers = "python_version < \"3.10\""} [package.extras] -all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] +all = ["black", "curio", "docrepr", "exceptiongroup", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] black = ["black"] -doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] +doc = ["docrepr", "exceptiongroup", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] kernel = ["ipykernel"] nbconvert = ["nbconvert"] nbformat = ["nbformat"] @@ -1552,21 +1556,21 @@ test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pa [[package]] name = "ipywidgets" -version = "8.1.0" +version = "8.1.1" description = "Jupyter interactive widgets" optional = false python-versions = ">=3.7" files = [ - {file = "ipywidgets-8.1.0-py3-none-any.whl", hash = "sha256:6c8396cc7b8c95dfb4e9ab0054f48c002f045e7e5d7ae523f559d64e525a98ab"}, - {file = "ipywidgets-8.1.0.tar.gz", hash = "sha256:ce97dd90525b3066fd00094690964e7eac14cf9b7745d35565b5eeac20cce687"}, + {file = "ipywidgets-8.1.1-py3-none-any.whl", hash = "sha256:2b88d728656aea3bbfd05d32c747cfd0078f9d7e159cf982433b58ad717eed7f"}, + {file = "ipywidgets-8.1.1.tar.gz", hash = "sha256:40211efb556adec6fa450ccc2a77d59ca44a060f4f9f136833df59c9f538e6e8"}, ] [package.dependencies] comm = ">=0.1.3" ipython = ">=6.1.0" -jupyterlab-widgets = ">=3.0.7,<3.1.0" +jupyterlab-widgets = ">=3.0.9,<3.1.0" traitlets = ">=4.3.1" -widgetsnbextension = ">=4.0.7,<4.1.0" +widgetsnbextension = ">=4.0.9,<4.1.0" [package.extras] test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] @@ -1659,13 +1663,13 @@ files = [ [[package]] name = "jsonschema" -version = "4.19.0" +version = "4.19.1" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.19.0-py3-none-any.whl", hash = "sha256:043dc26a3845ff09d20e4420d6012a9c91c9aa8999fa184e7efcfeccb41e32cb"}, - {file = "jsonschema-4.19.0.tar.gz", hash = "sha256:6e1e7569ac13be8139b2dd2c21a55d350066ee3f80df06c608b398cdc6f30e8f"}, + {file = "jsonschema-4.19.1-py3-none-any.whl", hash = "sha256:cd5f1f9ed9444e554b38ba003af06c0a8c2868131e56bfbef0550fb450c0330e"}, + {file = "jsonschema-4.19.1.tar.gz", hash = "sha256:ec84cc37cfa703ef7cd4928db24f9cb31428a5d0fa77747b8b51a847458e0bbf"}, ] [package.dependencies] @@ -1694,13 +1698,13 @@ referencing = ">=0.28.0" [[package]] name = "jupyter-client" -version = "8.3.0" +version = "8.3.1" description = "Jupyter protocol implementation and client libraries" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_client-8.3.0-py3-none-any.whl", hash = "sha256:7441af0c0672edc5d28035e92ba5e32fadcfa8a4e608a434c228836a89df6158"}, - {file = "jupyter_client-8.3.0.tar.gz", hash = "sha256:3af69921fe99617be1670399a0b857ad67275eefcfa291e2c81a160b7b650f5f"}, + {file = "jupyter_client-8.3.1-py3-none-any.whl", hash = "sha256:5eb9f55eb0650e81de6b7e34308d8b92d04fe4ec41cd8193a913979e33d8e1a5"}, + {file = "jupyter_client-8.3.1.tar.gz", hash = "sha256:60294b2d5b869356c893f57b1a877ea6510d60d45cf4b38057f1672d85699ac9"}, ] [package.dependencies] @@ -1748,13 +1752,13 @@ files = [ [[package]] name = "jupyterlab-widgets" -version = "3.0.8" +version = "3.0.9" description = "Jupyter interactive widgets for JupyterLab" optional = false python-versions = ">=3.7" files = [ - {file = "jupyterlab_widgets-3.0.8-py3-none-any.whl", hash = "sha256:4715912d6ceab839c9db35953c764b3214ebbc9161c809f6e0510168845dfdf5"}, - {file = "jupyterlab_widgets-3.0.8.tar.gz", hash = "sha256:d428ab97b8d87cc7c54cbf37644d6e0f0e662f23876e05fa460a73ec3257252a"}, + {file = "jupyterlab_widgets-3.0.9-py3-none-any.whl", hash = "sha256:3cf5bdf5b897bf3bccf1c11873aa4afd776d7430200f765e0686bd352487b58d"}, + {file = "jupyterlab_widgets-3.0.9.tar.gz", hash = "sha256:6005a4e974c7beee84060fdfba341a3218495046de8ae3ec64888e5fe19fdb4c"}, ] [[package]] @@ -2120,52 +2124,39 @@ marshmallow = ">=3.0.0" [[package]] name = "matplotlib" -version = "3.7.2" +version = "3.8.0" description = "Python plotting package" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "matplotlib-3.7.2-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:2699f7e73a76d4c110f4f25be9d2496d6ab4f17345307738557d345f099e07de"}, - {file = "matplotlib-3.7.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a8035ba590658bae7562786c9cc6ea1a84aa49d3afab157e414c9e2ea74f496d"}, - {file = "matplotlib-3.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2f8e4a49493add46ad4a8c92f63e19d548b2b6ebbed75c6b4c7f46f57d36cdd1"}, - {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71667eb2ccca4c3537d9414b1bc00554cb7f91527c17ee4ec38027201f8f1603"}, - {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:152ee0b569a37630d8628534c628456b28686e085d51394da6b71ef84c4da201"}, - {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:070f8dddd1f5939e60aacb8fa08f19551f4b0140fab16a3669d5cd6e9cb28fc8"}, - {file = "matplotlib-3.7.2-cp310-cp310-win32.whl", hash = "sha256:fdbb46fad4fb47443b5b8ac76904b2e7a66556844f33370861b4788db0f8816a"}, - {file = "matplotlib-3.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:23fb1750934e5f0128f9423db27c474aa32534cec21f7b2153262b066a581fd1"}, - {file = "matplotlib-3.7.2-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:30e1409b857aa8a747c5d4f85f63a79e479835f8dffc52992ac1f3f25837b544"}, - {file = "matplotlib-3.7.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:50e0a55ec74bf2d7a0ebf50ac580a209582c2dd0f7ab51bc270f1b4a0027454e"}, - {file = "matplotlib-3.7.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ac60daa1dc83e8821eed155796b0f7888b6b916cf61d620a4ddd8200ac70cd64"}, - {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:305e3da477dc8607336ba10bac96986d6308d614706cae2efe7d3ffa60465b24"}, - {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c308b255efb9b06b23874236ec0f10f026673ad6515f602027cc8ac7805352d"}, - {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60c521e21031632aa0d87ca5ba0c1c05f3daacadb34c093585a0be6780f698e4"}, - {file = "matplotlib-3.7.2-cp311-cp311-win32.whl", hash = "sha256:26bede320d77e469fdf1bde212de0ec889169b04f7f1179b8930d66f82b30cbc"}, - {file = "matplotlib-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:af4860132c8c05261a5f5f8467f1b269bf1c7c23902d75f2be57c4a7f2394b3e"}, - {file = "matplotlib-3.7.2-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:a1733b8e84e7e40a9853e505fe68cc54339f97273bdfe6f3ed980095f769ddc7"}, - {file = "matplotlib-3.7.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d9881356dc48e58910c53af82b57183879129fa30492be69058c5b0d9fddf391"}, - {file = "matplotlib-3.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f081c03f413f59390a80b3e351cc2b2ea0205839714dbc364519bcf51f4b56ca"}, - {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1cd120fca3407a225168238b790bd5c528f0fafde6172b140a2f3ab7a4ea63e9"}, - {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2c1590b90aa7bd741b54c62b78de05d4186271e34e2377e0289d943b3522273"}, - {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d2ff3c984b8a569bc1383cd468fc06b70d7b59d5c2854ca39f1436ae8394117"}, - {file = "matplotlib-3.7.2-cp38-cp38-win32.whl", hash = "sha256:5dea00b62d28654b71ca92463656d80646675628d0828e08a5f3b57e12869e13"}, - {file = "matplotlib-3.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:0f506a1776ee94f9e131af1ac6efa6e5bc7cb606a3e389b0ccb6e657f60bb676"}, - {file = "matplotlib-3.7.2-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:6515e878f91894c2e4340d81f0911857998ccaf04dbc1bba781e3d89cbf70608"}, - {file = "matplotlib-3.7.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:71f7a8c6b124e904db550f5b9fe483d28b896d4135e45c4ea381ad3b8a0e3256"}, - {file = "matplotlib-3.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12f01b92ecd518e0697da4d97d163b2b3aa55eb3eb4e2c98235b3396d7dad55f"}, - {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7e28d6396563955f7af437894a36bf2b279462239a41028323e04b85179058b"}, - {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbcf59334ff645e6a67cd5f78b4b2cdb76384cdf587fa0d2dc85f634a72e1a3e"}, - {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:318c89edde72ff95d8df67d82aca03861240512994a597a435a1011ba18dbc7f"}, - {file = "matplotlib-3.7.2-cp39-cp39-win32.whl", hash = "sha256:ce55289d5659b5b12b3db4dc9b7075b70cef5631e56530f14b2945e8836f2d20"}, - {file = "matplotlib-3.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:2ecb5be2b2815431c81dc115667e33da0f5a1bcf6143980d180d09a717c4a12e"}, - {file = "matplotlib-3.7.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fdcd28360dbb6203fb5219b1a5658df226ac9bebc2542a9e8f457de959d713d0"}, - {file = "matplotlib-3.7.2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c3cca3e842b11b55b52c6fb8bd6a4088693829acbfcdb3e815fa9b7d5c92c1b"}, - {file = "matplotlib-3.7.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebf577c7a6744e9e1bd3fee45fc74a02710b214f94e2bde344912d85e0c9af7c"}, - {file = "matplotlib-3.7.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:936bba394682049919dda062d33435b3be211dc3dcaa011e09634f060ec878b2"}, - {file = "matplotlib-3.7.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bc221ffbc2150458b1cd71cdd9ddd5bb37962b036e41b8be258280b5b01da1dd"}, - {file = "matplotlib-3.7.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35d74ebdb3f71f112b36c2629cf32323adfbf42679e2751252acd468f5001c07"}, - {file = "matplotlib-3.7.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:717157e61b3a71d3d26ad4e1770dc85156c9af435659a25ee6407dc866cb258d"}, - {file = "matplotlib-3.7.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:20f844d6be031948148ba49605c8b96dfe7d3711d1b63592830d650622458c11"}, - {file = "matplotlib-3.7.2.tar.gz", hash = "sha256:a8cdb91dddb04436bd2f098b8fdf4b81352e68cf4d2c6756fcc414791076569b"}, + {file = "matplotlib-3.8.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:c4940bad88a932ddc69734274f6fb047207e008389489f2b6f77d9ca485f0e7a"}, + {file = "matplotlib-3.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a33bd3045c7452ca1fa65676d88ba940867880e13e2546abb143035fa9072a9d"}, + {file = "matplotlib-3.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ea6886e93401c22e534bbfd39201ce8931b75502895cfb115cbdbbe2d31f287"}, + {file = "matplotlib-3.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d670b9348e712ec176de225d425f150dc8e37b13010d85233c539b547da0be39"}, + {file = "matplotlib-3.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7b37b74f00c4cb6af908cb9a00779d97d294e89fd2145ad43f0cdc23f635760c"}, + {file = "matplotlib-3.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:0e723f5b96f3cd4aad99103dc93e9e3cdc4f18afdcc76951f4857b46f8e39d2d"}, + {file = "matplotlib-3.8.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5dc945a9cb2deb7d197ba23eb4c210e591d52d77bf0ba27c35fc82dec9fa78d4"}, + {file = "matplotlib-3.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8b5a1bf27d078453aa7b5b27f52580e16360d02df6d3dc9504f3d2ce11f6309"}, + {file = "matplotlib-3.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f25ffb6ad972cdffa7df8e5be4b1e3cadd2f8d43fc72085feb1518006178394"}, + {file = "matplotlib-3.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee482731c8c17d86d9ddb5194d38621f9b0f0d53c99006275a12523ab021732"}, + {file = "matplotlib-3.8.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:36eafe2128772195b373e1242df28d1b7ec6c04c15b090b8d9e335d55a323900"}, + {file = "matplotlib-3.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:061ee58facb3580cd2d046a6d227fb77e9295599c5ec6ad069f06b5821ad1cfc"}, + {file = "matplotlib-3.8.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3cc3776836d0f4f22654a7f2d2ec2004618d5cf86b7185318381f73b80fd8a2d"}, + {file = "matplotlib-3.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6c49a2bd6981264bddcb8c317b6bd25febcece9e2ebfcbc34e7f4c0c867c09dc"}, + {file = "matplotlib-3.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23ed11654fc83cd6cfdf6170b453e437674a050a452133a064d47f2f1371f8d3"}, + {file = "matplotlib-3.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dae97fdd6996b3a25da8ee43e3fc734fff502f396801063c6b76c20b56683196"}, + {file = "matplotlib-3.8.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:87df75f528020a6299f76a1d986c0ed4406e3b2bd44bc5e306e46bca7d45e53e"}, + {file = "matplotlib-3.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:90d74a95fe055f73a6cd737beecc1b81c26f2893b7a3751d52b53ff06ca53f36"}, + {file = "matplotlib-3.8.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c3499c312f5def8f362a2bf761d04fa2d452b333f3a9a3f58805273719bf20d9"}, + {file = "matplotlib-3.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31e793c8bd4ea268cc5d3a695c27b30650ec35238626961d73085d5e94b6ab68"}, + {file = "matplotlib-3.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d5ee602ef517a89d1f2c508ca189cfc395dd0b4a08284fb1b97a78eec354644"}, + {file = "matplotlib-3.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5de39dc61ca35342cf409e031f70f18219f2c48380d3886c1cf5ad9f17898e06"}, + {file = "matplotlib-3.8.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:dd386c80a98b5f51571b9484bf6c6976de383cd2a8cd972b6a9562d85c6d2087"}, + {file = "matplotlib-3.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:f691b4ef47c7384d0936b2e8ebdeb5d526c81d004ad9403dfb9d4c76b9979a93"}, + {file = "matplotlib-3.8.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0b11f354aae62a2aa53ec5bb09946f5f06fc41793e351a04ff60223ea9162955"}, + {file = "matplotlib-3.8.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f54b9fb87ca5acbcdd0f286021bedc162e1425fa5555ebf3b3dfc167b955ad9"}, + {file = "matplotlib-3.8.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:60a6e04dfd77c0d3bcfee61c3cd335fff1b917c2f303b32524cd1235e194ef99"}, + {file = "matplotlib-3.8.0.tar.gz", hash = "sha256:df8505e1c19d5c2c26aff3497a7cbd3ccfc2e97043d1e4db3e76afa399164b69"}, ] [package.dependencies] @@ -2174,11 +2165,12 @@ cycler = ">=0.10" fonttools = ">=4.22.0" importlib-resources = {version = ">=3.2.0", markers = "python_version < \"3.10\""} kiwisolver = ">=1.0.1" -numpy = ">=1.20" +numpy = ">=1.21,<2" packaging = ">=20.0" pillow = ">=6.2.0" -pyparsing = ">=2.3.1,<3.1" +pyparsing = ">=2.3.1" python-dateutil = ">=2.7" +setuptools_scm = ">=7" [[package]] name = "matplotlib-inline" @@ -2246,13 +2238,13 @@ tests = ["pytest (>=4.6)"] [[package]] name = "msal" -version = "1.23.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." +version = "1.24.0" +description = "The Microsoft Authentication Library (MSAL) for Python library" optional = false -python-versions = "*" +python-versions = ">=2.7" files = [ - {file = "msal-1.23.0-py2.py3-none-any.whl", hash = "sha256:3342e0837a047007f9d479e814b559c3219767453d57920dc40a31986862048b"}, - {file = "msal-1.23.0.tar.gz", hash = "sha256:25c9a33acf84301f93d1fdbe9f1a9c60cd38af0d5fffdbfa378138fc7bc1e86b"}, + {file = "msal-1.24.0-py2.py3-none-any.whl", hash = "sha256:a7f2f342b80ba3fe168218003b6798cc81b83c9745284bf63fb8d4ec8e2dbc50"}, + {file = "msal-1.24.0.tar.gz", hash = "sha256:7d2ecdad41a5f73bb2b813f3061a4cf47c924621105a8ed137586fcb9d8f827e"}, ] [package.dependencies] @@ -2388,13 +2380,13 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= [[package]] name = "nbconvert" -version = "7.7.4" +version = "7.8.0" description = "Converting Jupyter Notebooks" optional = false python-versions = ">=3.8" files = [ - {file = "nbconvert-7.7.4-py3-none-any.whl", hash = "sha256:ace26f4386d08eb5c55833596a942048c5502a95e05590cb523826a749a40a37"}, - {file = "nbconvert-7.7.4.tar.gz", hash = "sha256:1113d039fa3fc3a846ffa5a3b0a019e85aaa94c566a09fa0c400fb7638e46087"}, + {file = "nbconvert-7.8.0-py3-none-any.whl", hash = "sha256:aec605e051fa682ccc7934ccc338ba1e8b626cfadbab0db592106b630f63f0f2"}, + {file = "nbconvert-7.8.0.tar.gz", hash = "sha256:f5bc15a1247e14dd41ceef0c0a3bc70020e016576eb0578da62f1c5b4f950479"}, ] [package.dependencies] @@ -2466,13 +2458,13 @@ traitlets = ">=5" [[package]] name = "nest-asyncio" -version = "1.5.7" +version = "1.5.8" description = "Patch asyncio to allow nested event loops" optional = false python-versions = ">=3.5" files = [ - {file = "nest_asyncio-1.5.7-py3-none-any.whl", hash = "sha256:5301c82941b550b3123a1ea772ba9a1c80bad3a182be8c1a5ae6ad3be57a9657"}, - {file = "nest_asyncio-1.5.7.tar.gz", hash = "sha256:6a80f7b98f24d9083ed24608977c09dd608d83f91cccc24c9d2cba6d10e01c10"}, + {file = "nest_asyncio-1.5.8-py3-none-any.whl", hash = "sha256:accda7a339a70599cb08f9dd09a67e0c2ef8d8d6f4c07f96ab203f2ae254e48d"}, + {file = "nest_asyncio-1.5.8.tar.gz", hash = "sha256:25aa2ca0d2a5b5531956b9e273b45cf664cae2b145101d73b86b199978d48fdb"}, ] [[package]] @@ -2495,47 +2487,54 @@ test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] [[package]] name = "numpy" -version = "1.25.2" +version = "1.26.0" description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.9" +python-versions = "<3.13,>=3.9" files = [ - {file = "numpy-1.25.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db3ccc4e37a6873045580d413fe79b68e47a681af8db2e046f1dacfa11f86eb3"}, - {file = "numpy-1.25.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:90319e4f002795ccfc9050110bbbaa16c944b1c37c0baeea43c5fb881693ae1f"}, - {file = "numpy-1.25.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfe4a913e29b418d096e696ddd422d8a5d13ffba4ea91f9f60440a3b759b0187"}, - {file = "numpy-1.25.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f08f2e037bba04e707eebf4bc934f1972a315c883a9e0ebfa8a7756eabf9e357"}, - {file = "numpy-1.25.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bec1e7213c7cb00d67093247f8c4db156fd03075f49876957dca4711306d39c9"}, - {file = "numpy-1.25.2-cp310-cp310-win32.whl", hash = "sha256:7dc869c0c75988e1c693d0e2d5b26034644399dd929bc049db55395b1379e044"}, - {file = "numpy-1.25.2-cp310-cp310-win_amd64.whl", hash = "sha256:834b386f2b8210dca38c71a6e0f4fd6922f7d3fcff935dbe3a570945acb1b545"}, - {file = "numpy-1.25.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5462d19336db4560041517dbb7759c21d181a67cb01b36ca109b2ae37d32418"}, - {file = "numpy-1.25.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c5652ea24d33585ea39eb6a6a15dac87a1206a692719ff45d53c5282e66d4a8f"}, - {file = "numpy-1.25.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d60fbae8e0019865fc4784745814cff1c421df5afee233db6d88ab4f14655a2"}, - {file = "numpy-1.25.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e7f0f7f6d0eee8364b9a6304c2845b9c491ac706048c7e8cf47b83123b8dbf"}, - {file = "numpy-1.25.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bb33d5a1cf360304754913a350edda36d5b8c5331a8237268c48f91253c3a364"}, - {file = "numpy-1.25.2-cp311-cp311-win32.whl", hash = "sha256:5883c06bb92f2e6c8181df7b39971a5fb436288db58b5a1c3967702d4278691d"}, - {file = "numpy-1.25.2-cp311-cp311-win_amd64.whl", hash = "sha256:5c97325a0ba6f9d041feb9390924614b60b99209a71a69c876f71052521d42a4"}, - {file = "numpy-1.25.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b79e513d7aac42ae918db3ad1341a015488530d0bb2a6abcbdd10a3a829ccfd3"}, - {file = "numpy-1.25.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eb942bfb6f84df5ce05dbf4b46673ffed0d3da59f13635ea9b926af3deb76926"}, - {file = "numpy-1.25.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e0746410e73384e70d286f93abf2520035250aad8c5714240b0492a7302fdca"}, - {file = "numpy-1.25.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7806500e4f5bdd04095e849265e55de20d8cc4b661b038957354327f6d9b295"}, - {file = "numpy-1.25.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8b77775f4b7df768967a7c8b3567e309f617dd5e99aeb886fa14dc1a0791141f"}, - {file = "numpy-1.25.2-cp39-cp39-win32.whl", hash = "sha256:2792d23d62ec51e50ce4d4b7d73de8f67a2fd3ea710dcbc8563a51a03fb07b01"}, - {file = "numpy-1.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:76b4115d42a7dfc5d485d358728cdd8719be33cc5ec6ec08632a5d6fca2ed380"}, - {file = "numpy-1.25.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1a1329e26f46230bf77b02cc19e900db9b52f398d6722ca853349a782d4cff55"}, - {file = "numpy-1.25.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c3abc71e8b6edba80a01a52e66d83c5d14433cbcd26a40c329ec7ed09f37901"}, - {file = "numpy-1.25.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1b9735c27cea5d995496f46a8b1cd7b408b3f34b6d50459d9ac8fe3a20cc17bf"}, - {file = "numpy-1.25.2.tar.gz", hash = "sha256:fd608e19c8d7c55021dffd43bfe5492fab8cc105cc8986f813f8c3c048b38760"}, + {file = "numpy-1.26.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8db2f125746e44dce707dd44d4f4efeea8d7e2b43aace3f8d1f235cfa2733dd"}, + {file = "numpy-1.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0621f7daf973d34d18b4e4bafb210bbaf1ef5e0100b5fa750bd9cde84c7ac292"}, + {file = "numpy-1.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51be5f8c349fdd1a5568e72713a21f518e7d6707bcf8503b528b88d33b57dc68"}, + {file = "numpy-1.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:767254ad364991ccfc4d81b8152912e53e103ec192d1bb4ea6b1f5a7117040be"}, + {file = "numpy-1.26.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:436c8e9a4bdeeee84e3e59614d38c3dbd3235838a877af8c211cfcac8a80b8d3"}, + {file = "numpy-1.26.0-cp310-cp310-win32.whl", hash = "sha256:c2e698cb0c6dda9372ea98a0344245ee65bdc1c9dd939cceed6bb91256837896"}, + {file = "numpy-1.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:09aaee96c2cbdea95de76ecb8a586cb687d281c881f5f17bfc0fb7f5890f6b91"}, + {file = "numpy-1.26.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:637c58b468a69869258b8ae26f4a4c6ff8abffd4a8334c830ffb63e0feefe99a"}, + {file = "numpy-1.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:306545e234503a24fe9ae95ebf84d25cba1fdc27db971aa2d9f1ab6bba19a9dd"}, + {file = "numpy-1.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c6adc33561bd1d46f81131d5352348350fc23df4d742bb246cdfca606ea1208"}, + {file = "numpy-1.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e062aa24638bb5018b7841977c360d2f5917268d125c833a686b7cbabbec496c"}, + {file = "numpy-1.26.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:546b7dd7e22f3c6861463bebb000646fa730e55df5ee4a0224408b5694cc6148"}, + {file = "numpy-1.26.0-cp311-cp311-win32.whl", hash = "sha256:c0b45c8b65b79337dee5134d038346d30e109e9e2e9d43464a2970e5c0e93229"}, + {file = "numpy-1.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:eae430ecf5794cb7ae7fa3808740b015aa80747e5266153128ef055975a72b99"}, + {file = "numpy-1.26.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:166b36197e9debc4e384e9c652ba60c0bacc216d0fc89e78f973a9760b503388"}, + {file = "numpy-1.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f042f66d0b4ae6d48e70e28d487376204d3cbf43b84c03bac57e28dac6151581"}, + {file = "numpy-1.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5e18e5b14a7560d8acf1c596688f4dfd19b4f2945b245a71e5af4ddb7422feb"}, + {file = "numpy-1.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f6bad22a791226d0a5c7c27a80a20e11cfe09ad5ef9084d4d3fc4a299cca505"}, + {file = "numpy-1.26.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4acc65dd65da28060e206c8f27a573455ed724e6179941edb19f97e58161bb69"}, + {file = "numpy-1.26.0-cp312-cp312-win32.whl", hash = "sha256:bb0d9a1aaf5f1cb7967320e80690a1d7ff69f1d47ebc5a9bea013e3a21faec95"}, + {file = "numpy-1.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:ee84ca3c58fe48b8ddafdeb1db87388dce2c3c3f701bf447b05e4cfcc3679112"}, + {file = "numpy-1.26.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4a873a8180479bc829313e8d9798d5234dfacfc2e8a7ac188418189bb8eafbd2"}, + {file = "numpy-1.26.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:914b28d3215e0c721dc75db3ad6d62f51f630cb0c277e6b3bcb39519bed10bd8"}, + {file = "numpy-1.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c78a22e95182fb2e7874712433eaa610478a3caf86f28c621708d35fa4fd6e7f"}, + {file = "numpy-1.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86f737708b366c36b76e953c46ba5827d8c27b7a8c9d0f471810728e5a2fe57c"}, + {file = "numpy-1.26.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b44e6a09afc12952a7d2a58ca0a2429ee0d49a4f89d83a0a11052da696440e49"}, + {file = "numpy-1.26.0-cp39-cp39-win32.whl", hash = "sha256:5671338034b820c8d58c81ad1dafc0ed5a00771a82fccc71d6438df00302094b"}, + {file = "numpy-1.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:020cdbee66ed46b671429c7265cf00d8ac91c046901c55684954c3958525dab2"}, + {file = "numpy-1.26.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0792824ce2f7ea0c82ed2e4fecc29bb86bee0567a080dacaf2e0a01fe7654369"}, + {file = "numpy-1.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d484292eaeb3e84a51432a94f53578689ffdea3f90e10c8b203a99be5af57d8"}, + {file = "numpy-1.26.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:186ba67fad3c60dbe8a3abff3b67a91351100f2661c8e2a80364ae6279720299"}, + {file = "numpy-1.26.0.tar.gz", hash = "sha256:f93fc78fe8bf15afe2b8d6b6499f1c73953169fad1e9a8dd086cdff3190e7fdf"}, ] [[package]] name = "opencensus" -version = "0.11.2" +version = "0.11.3" description = "A stats collection and distributed tracing framework" optional = false python-versions = "*" files = [ - {file = "opencensus-0.11.2-py2.py3-none-any.whl", hash = "sha256:7a1a34b87c8db3d9984e97ff05739058342f24de1d700766d59044eee8fb3b3f"}, - {file = "opencensus-0.11.2.tar.gz", hash = "sha256:6154042a236b9ecdd55a23dfbb2743bb3deacd0687e3e0391ec2e0c74950d66f"}, + {file = "opencensus-0.11.3-py2.py3-none-any.whl", hash = "sha256:9c33d572059f0f0e874fc34c697a39a4193aa9cf3203f7e777df42e9edeea56a"}, + {file = "opencensus-0.11.3.tar.gz", hash = "sha256:af7a98bd51e63968144d772f346d696ed498a32dbdc4be267cd6011c4ce05da8"}, ] [package.dependencies] @@ -2555,19 +2554,19 @@ files = [ [[package]] name = "opencensus-ext-azure" -version = "1.1.9" +version = "1.1.10" description = "OpenCensus Azure Monitor Exporter" optional = false python-versions = "*" files = [ - {file = "opencensus-ext-azure-1.1.9.tar.gz", hash = "sha256:507608b77e9d8eaab6ffd5ff11b7ceb87f54e4a6a940c4b814331b4d1b034151"}, - {file = "opencensus_ext_azure-1.1.9-py2.py3-none-any.whl", hash = "sha256:166c858e70fb7b39d01ff7d9f745588c521070ff2cfe177f77b63ee87f5076ac"}, + {file = "opencensus-ext-azure-1.1.10.tar.gz", hash = "sha256:c3fa3472bfbc71d7442375f2c78c1c9b6046cf0d6d2c9408b3944c84f86a30bd"}, + {file = "opencensus_ext_azure-1.1.10-py2.py3-none-any.whl", hash = "sha256:321730b42ee8b93b932edf4d9207bb3481d7a6f125e9410a5ea6e75b5a13f3a8"}, ] [package.dependencies] azure-core = ">=1.12.0,<2.0.0" azure-identity = ">=1.5.0,<2.0.0" -opencensus = ">=0.11.2,<1.0.0" +opencensus = ">=0.11.3,<1.0.0" psutil = ">=5.6.3" requests = ">=2.19.0" @@ -2613,71 +2612,71 @@ tests = ["pytest (>=6.0)", "pyyaml"] [[package]] name = "orjson" -version = "3.9.5" +version = "3.9.7" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.7" files = [ - {file = "orjson-3.9.5-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ad6845912a71adcc65df7c8a7f2155eba2096cf03ad2c061c93857de70d699ad"}, - {file = "orjson-3.9.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e298e0aacfcc14ef4476c3f409e85475031de24e5b23605a465e9bf4b2156273"}, - {file = "orjson-3.9.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:83c9939073281ef7dd7c5ca7f54cceccb840b440cec4b8a326bda507ff88a0a6"}, - {file = "orjson-3.9.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e174cc579904a48ee1ea3acb7045e8a6c5d52c17688dfcb00e0e842ec378cabf"}, - {file = "orjson-3.9.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f8d51702f42c785b115401e1d64a27a2ea767ae7cf1fb8edaa09c7cf1571c660"}, - {file = "orjson-3.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f13d61c0c7414ddee1ef4d0f303e2222f8cced5a2e26d9774751aecd72324c9e"}, - {file = "orjson-3.9.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d748cc48caf5a91c883d306ab648df1b29e16b488c9316852844dd0fd000d1c2"}, - {file = "orjson-3.9.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bd19bc08fa023e4c2cbf8294ad3f2b8922f4de9ba088dbc71e6b268fdf54591c"}, - {file = "orjson-3.9.5-cp310-none-win32.whl", hash = "sha256:5793a21a21bf34e1767e3d61a778a25feea8476dcc0bdf0ae1bc506dc34561ea"}, - {file = "orjson-3.9.5-cp310-none-win_amd64.whl", hash = "sha256:2bcec0b1024d0031ab3eab7a8cb260c8a4e4a5e35993878a2da639d69cdf6a65"}, - {file = "orjson-3.9.5-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:8547b95ca0e2abd17e1471973e6d676f1d8acedd5f8fb4f739e0612651602d66"}, - {file = "orjson-3.9.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87ce174d6a38d12b3327f76145acbd26f7bc808b2b458f61e94d83cd0ebb4d76"}, - {file = "orjson-3.9.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a960bb1bc9a964d16fcc2d4af5a04ce5e4dfddca84e3060c35720d0a062064fe"}, - {file = "orjson-3.9.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a7aa5573a949760d6161d826d34dc36db6011926f836851fe9ccb55b5a7d8e8"}, - {file = "orjson-3.9.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8b2852afca17d7eea85f8e200d324e38c851c96598ac7b227e4f6c4e59fbd3df"}, - {file = "orjson-3.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa185959c082475288da90f996a82e05e0c437216b96f2a8111caeb1d54ef926"}, - {file = "orjson-3.9.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:89c9332695b838438ea4b9a482bce8ffbfddde4df92750522d928fb00b7b8dce"}, - {file = "orjson-3.9.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2493f1351a8f0611bc26e2d3d407efb873032b4f6b8926fed8cfed39210ca4ba"}, - {file = "orjson-3.9.5-cp311-none-win32.whl", hash = "sha256:ffc544e0e24e9ae69301b9a79df87a971fa5d1c20a6b18dca885699709d01be0"}, - {file = "orjson-3.9.5-cp311-none-win_amd64.whl", hash = "sha256:89670fe2732e3c0c54406f77cad1765c4c582f67b915c74fda742286809a0cdc"}, - {file = "orjson-3.9.5-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:15df211469625fa27eced4aa08dc03e35f99c57d45a33855cc35f218ea4071b8"}, - {file = "orjson-3.9.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9f17c59fe6c02bc5f89ad29edb0253d3059fe8ba64806d789af89a45c35269a"}, - {file = "orjson-3.9.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ca6b96659c7690773d8cebb6115c631f4a259a611788463e9c41e74fa53bf33f"}, - {file = "orjson-3.9.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a26fafe966e9195b149950334bdbe9026eca17fe8ffe2d8fa87fdc30ca925d30"}, - {file = "orjson-3.9.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9006b1eb645ecf460da067e2dd17768ccbb8f39b01815a571bfcfab7e8da5e52"}, - {file = "orjson-3.9.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebfdbf695734b1785e792a1315e41835ddf2a3e907ca0e1c87a53f23006ce01d"}, - {file = "orjson-3.9.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4a3943234342ab37d9ed78fb0a8f81cd4b9532f67bf2ac0d3aa45fa3f0a339f3"}, - {file = "orjson-3.9.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e6762755470b5c82f07b96b934af32e4d77395a11768b964aaa5eb092817bc31"}, - {file = "orjson-3.9.5-cp312-none-win_amd64.whl", hash = "sha256:c74df28749c076fd6e2157190df23d43d42b2c83e09d79b51694ee7315374ad5"}, - {file = "orjson-3.9.5-cp37-cp37m-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:88e18a74d916b74f00d0978d84e365c6bf0e7ab846792efa15756b5fb2f7d49d"}, - {file = "orjson-3.9.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d28514b5b6dfaf69097be70d0cf4f1407ec29d0f93e0b4131bf9cc8fd3f3e374"}, - {file = "orjson-3.9.5-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25b81aca8c7be61e2566246b6a0ca49f8aece70dd3f38c7f5c837f398c4cb142"}, - {file = "orjson-3.9.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:385c1c713b1e47fd92e96cf55fd88650ac6dfa0b997e8aa7ecffd8b5865078b1"}, - {file = "orjson-3.9.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9850c03a8e42fba1a508466e6a0f99472fd2b4a5f30235ea49b2a1b32c04c11"}, - {file = "orjson-3.9.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4449f84bbb13bcef493d8aa669feadfced0f7c5eea2d0d88b5cc21f812183af8"}, - {file = "orjson-3.9.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:86127bf194f3b873135e44ce5dc9212cb152b7e06798d5667a898a00f0519be4"}, - {file = "orjson-3.9.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0abcd039f05ae9ab5b0ff11624d0b9e54376253b7d3217a358d09c3edf1d36f7"}, - {file = "orjson-3.9.5-cp37-none-win32.whl", hash = "sha256:10cc8ad5ff7188efcb4bec196009d61ce525a4e09488e6d5db41218c7fe4f001"}, - {file = "orjson-3.9.5-cp37-none-win_amd64.whl", hash = "sha256:ff27e98532cb87379d1a585837d59b187907228268e7b0a87abe122b2be6968e"}, - {file = "orjson-3.9.5-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:5bfa79916ef5fef75ad1f377e54a167f0de334c1fa4ebb8d0224075f3ec3d8c0"}, - {file = "orjson-3.9.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e87dfa6ac0dae764371ab19b35eaaa46dfcb6ef2545dfca03064f21f5d08239f"}, - {file = "orjson-3.9.5-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:50ced24a7b23058b469ecdb96e36607fc611cbaee38b58e62a55c80d1b3ad4e1"}, - {file = "orjson-3.9.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b1b74ea2a3064e1375da87788897935832e806cc784de3e789fd3c4ab8eb3fa5"}, - {file = "orjson-3.9.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7cb961efe013606913d05609f014ad43edfaced82a576e8b520a5574ce3b2b9"}, - {file = "orjson-3.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1225d2d5ee76a786bda02f8c5e15017462f8432bb960de13d7c2619dba6f0275"}, - {file = "orjson-3.9.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f39f4b99199df05c7ecdd006086259ed25886cdbd7b14c8cdb10c7675cfcca7d"}, - {file = "orjson-3.9.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a461dc9fb60cac44f2d3218c36a0c1c01132314839a0e229d7fb1bba69b810d8"}, - {file = "orjson-3.9.5-cp38-none-win32.whl", hash = "sha256:dedf1a6173748202df223aea29de814b5836732a176b33501375c66f6ab7d822"}, - {file = "orjson-3.9.5-cp38-none-win_amd64.whl", hash = "sha256:fa504082f53efcbacb9087cc8676c163237beb6e999d43e72acb4bb6f0db11e6"}, - {file = "orjson-3.9.5-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6900f0248edc1bec2a2a3095a78a7e3ef4e63f60f8ddc583687eed162eedfd69"}, - {file = "orjson-3.9.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17404333c40047888ac40bd8c4d49752a787e0a946e728a4e5723f111b6e55a5"}, - {file = "orjson-3.9.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0eefb7cfdd9c2bc65f19f974a5d1dfecbac711dae91ed635820c6b12da7a3c11"}, - {file = "orjson-3.9.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:68c78b2a3718892dc018adbc62e8bab6ef3c0d811816d21e6973dee0ca30c152"}, - {file = "orjson-3.9.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:591ad7d9e4a9f9b104486ad5d88658c79ba29b66c5557ef9edf8ca877a3f8d11"}, - {file = "orjson-3.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6cc2cbf302fbb2d0b2c3c142a663d028873232a434d89ce1b2604ebe5cc93ce8"}, - {file = "orjson-3.9.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b26b5aa5e9ee1bad2795b925b3adb1b1b34122cb977f30d89e0a1b3f24d18450"}, - {file = "orjson-3.9.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ef84724f7d29dcfe3aafb1fc5fc7788dca63e8ae626bb9298022866146091a3e"}, - {file = "orjson-3.9.5-cp39-none-win32.whl", hash = "sha256:664cff27f85939059472afd39acff152fbac9a091b7137092cb651cf5f7747b5"}, - {file = "orjson-3.9.5-cp39-none-win_amd64.whl", hash = "sha256:91dda66755795ac6100e303e206b636568d42ac83c156547634256a2e68de694"}, - {file = "orjson-3.9.5.tar.gz", hash = "sha256:6daf5ee0b3cf530b9978cdbf71024f1c16ed4a67d05f6ec435c6e7fe7a52724c"}, + {file = "orjson-3.9.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b6df858e37c321cefbf27fe7ece30a950bcc3a75618a804a0dcef7ed9dd9c92d"}, + {file = "orjson-3.9.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5198633137780d78b86bb54dafaaa9baea698b4f059456cd4554ab7009619221"}, + {file = "orjson-3.9.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e736815b30f7e3c9044ec06a98ee59e217a833227e10eb157f44071faddd7c5"}, + {file = "orjson-3.9.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a19e4074bc98793458b4b3ba35a9a1d132179345e60e152a1bb48c538ab863c4"}, + {file = "orjson-3.9.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80acafe396ab689a326ab0d80f8cc61dec0dd2c5dca5b4b3825e7b1e0132c101"}, + {file = "orjson-3.9.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:355efdbbf0cecc3bd9b12589b8f8e9f03c813a115efa53f8dc2a523bfdb01334"}, + {file = "orjson-3.9.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3aab72d2cef7f1dd6104c89b0b4d6b416b0db5ca87cc2fac5f79c5601f549cc2"}, + {file = "orjson-3.9.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:36b1df2e4095368ee388190687cb1b8557c67bc38400a942a1a77713580b50ae"}, + {file = "orjson-3.9.7-cp310-none-win32.whl", hash = "sha256:e94b7b31aa0d65f5b7c72dd8f8227dbd3e30354b99e7a9af096d967a77f2a580"}, + {file = "orjson-3.9.7-cp310-none-win_amd64.whl", hash = "sha256:82720ab0cf5bb436bbd97a319ac529aee06077ff7e61cab57cee04a596c4f9b4"}, + {file = "orjson-3.9.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1f8b47650f90e298b78ecf4df003f66f54acdba6a0f763cc4df1eab048fe3738"}, + {file = "orjson-3.9.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f738fee63eb263530efd4d2e9c76316c1f47b3bbf38c1bf45ae9625feed0395e"}, + {file = "orjson-3.9.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:38e34c3a21ed41a7dbd5349e24c3725be5416641fdeedf8f56fcbab6d981c900"}, + {file = "orjson-3.9.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21a3344163be3b2c7e22cef14fa5abe957a892b2ea0525ee86ad8186921b6cf0"}, + {file = "orjson-3.9.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23be6b22aab83f440b62a6f5975bcabeecb672bc627face6a83bc7aeb495dc7e"}, + {file = "orjson-3.9.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5205ec0dfab1887dd383597012199f5175035e782cdb013c542187d280ca443"}, + {file = "orjson-3.9.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8769806ea0b45d7bf75cad253fba9ac6700b7050ebb19337ff6b4e9060f963fa"}, + {file = "orjson-3.9.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f9e01239abea2f52a429fe9d95c96df95f078f0172489d691b4a848ace54a476"}, + {file = "orjson-3.9.7-cp311-none-win32.whl", hash = "sha256:8bdb6c911dae5fbf110fe4f5cba578437526334df381b3554b6ab7f626e5eeca"}, + {file = "orjson-3.9.7-cp311-none-win_amd64.whl", hash = "sha256:9d62c583b5110e6a5cf5169ab616aa4ec71f2c0c30f833306f9e378cf51b6c86"}, + {file = "orjson-3.9.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1c3cee5c23979deb8d1b82dc4cc49be59cccc0547999dbe9adb434bb7af11cf7"}, + {file = "orjson-3.9.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a347d7b43cb609e780ff8d7b3107d4bcb5b6fd09c2702aa7bdf52f15ed09fa09"}, + {file = "orjson-3.9.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:154fd67216c2ca38a2edb4089584504fbb6c0694b518b9020ad35ecc97252bb9"}, + {file = "orjson-3.9.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ea3e63e61b4b0beeb08508458bdff2daca7a321468d3c4b320a758a2f554d31"}, + {file = "orjson-3.9.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eb0b0b2476f357eb2975ff040ef23978137aa674cd86204cfd15d2d17318588"}, + {file = "orjson-3.9.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b9a20a03576c6b7022926f614ac5a6b0914486825eac89196adf3267c6489d"}, + {file = "orjson-3.9.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:915e22c93e7b7b636240c5a79da5f6e4e84988d699656c8e27f2ac4c95b8dcc0"}, + {file = "orjson-3.9.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f26fb3e8e3e2ee405c947ff44a3e384e8fa1843bc35830fe6f3d9a95a1147b6e"}, + {file = "orjson-3.9.7-cp312-none-win_amd64.whl", hash = "sha256:d8692948cada6ee21f33db5e23460f71c8010d6dfcfe293c9b96737600a7df78"}, + {file = "orjson-3.9.7-cp37-cp37m-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7bab596678d29ad969a524823c4e828929a90c09e91cc438e0ad79b37ce41166"}, + {file = "orjson-3.9.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63ef3d371ea0b7239ace284cab9cd00d9c92b73119a7c274b437adb09bda35e6"}, + {file = "orjson-3.9.7-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f8fcf696bbbc584c0c7ed4adb92fd2ad7d153a50258842787bc1524e50d7081"}, + {file = "orjson-3.9.7-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:90fe73a1f0321265126cbba13677dcceb367d926c7a65807bd80916af4c17047"}, + {file = "orjson-3.9.7-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:45a47f41b6c3beeb31ac5cf0ff7524987cfcce0a10c43156eb3ee8d92d92bf22"}, + {file = "orjson-3.9.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a2937f528c84e64be20cb80e70cea76a6dfb74b628a04dab130679d4454395c"}, + {file = "orjson-3.9.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b4fb306c96e04c5863d52ba8d65137917a3d999059c11e659eba7b75a69167bd"}, + {file = "orjson-3.9.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:410aa9d34ad1089898f3db461b7b744d0efcf9252a9415bbdf23540d4f67589f"}, + {file = "orjson-3.9.7-cp37-none-win32.whl", hash = "sha256:26ffb398de58247ff7bde895fe30817a036f967b0ad0e1cf2b54bda5f8dcfdd9"}, + {file = "orjson-3.9.7-cp37-none-win_amd64.whl", hash = "sha256:bcb9a60ed2101af2af450318cd89c6b8313e9f8df4e8fb12b657b2e97227cf08"}, + {file = "orjson-3.9.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:5da9032dac184b2ae2da4bce423edff7db34bfd936ebd7d4207ea45840f03905"}, + {file = "orjson-3.9.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7951af8f2998045c656ba8062e8edf5e83fd82b912534ab1de1345de08a41d2b"}, + {file = "orjson-3.9.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b8e59650292aa3a8ea78073fc84184538783966528e442a1b9ed653aa282edcf"}, + {file = "orjson-3.9.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9274ba499e7dfb8a651ee876d80386b481336d3868cba29af839370514e4dce0"}, + {file = "orjson-3.9.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca1706e8b8b565e934c142db6a9592e6401dc430e4b067a97781a997070c5378"}, + {file = "orjson-3.9.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83cc275cf6dcb1a248e1876cdefd3f9b5f01063854acdfd687ec360cd3c9712a"}, + {file = "orjson-3.9.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:11c10f31f2c2056585f89d8229a56013bc2fe5de51e095ebc71868d070a8dd81"}, + {file = "orjson-3.9.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cf334ce1d2fadd1bf3e5e9bf15e58e0c42b26eb6590875ce65bd877d917a58aa"}, + {file = "orjson-3.9.7-cp38-none-win32.whl", hash = "sha256:76a0fc023910d8a8ab64daed8d31d608446d2d77c6474b616b34537aa7b79c7f"}, + {file = "orjson-3.9.7-cp38-none-win_amd64.whl", hash = "sha256:7a34a199d89d82d1897fd4a47820eb50947eec9cda5fd73f4578ff692a912f89"}, + {file = "orjson-3.9.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e7e7f44e091b93eb39db88bb0cb765db09b7a7f64aea2f35e7d86cbf47046c65"}, + {file = "orjson-3.9.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01d647b2a9c45a23a84c3e70e19d120011cba5f56131d185c1b78685457320bb"}, + {file = "orjson-3.9.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0eb850a87e900a9c484150c414e21af53a6125a13f6e378cf4cc11ae86c8f9c5"}, + {file = "orjson-3.9.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f4b0042d8388ac85b8330b65406c84c3229420a05068445c13ca28cc222f1f7"}, + {file = "orjson-3.9.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd3e7aae977c723cc1dbb82f97babdb5e5fbce109630fbabb2ea5053523c89d3"}, + {file = "orjson-3.9.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c616b796358a70b1f675a24628e4823b67d9e376df2703e893da58247458956"}, + {file = "orjson-3.9.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c3ba725cf5cf87d2d2d988d39c6a2a8b6fc983d78ff71bc728b0be54c869c884"}, + {file = "orjson-3.9.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4891d4c934f88b6c29b56395dfc7014ebf7e10b9e22ffd9877784e16c6b2064f"}, + {file = "orjson-3.9.7-cp39-none-win32.whl", hash = "sha256:14d3fb6cd1040a4a4a530b28e8085131ed94ebc90d72793c59a713de34b60838"}, + {file = "orjson-3.9.7-cp39-none-win_amd64.whl", hash = "sha256:9ef82157bbcecd75d6296d5d8b2d792242afcd064eb1ac573f8847b52e58f677"}, + {file = "orjson-3.9.7.tar.gz", hash = "sha256:85e39198f78e2f7e054d296395f6c96f5e02892337746ef5b6a1bf3ed5910142"}, ] [[package]] @@ -2730,7 +2729,7 @@ files = [ [package.dependencies] numpy = [ {version = ">=1.20.3", markers = "python_version < \"3.10\""}, - {version = ">=1.21.0", 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\""}, ] python-dateutil = ">=2.8.1" @@ -2792,67 +2791,65 @@ files = [ [[package]] name = "pillow" -version = "10.0.0" +version = "10.0.1" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" files = [ - {file = "Pillow-10.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1f62406a884ae75fb2f818694469519fb685cc7eaff05d3451a9ebe55c646891"}, - {file = "Pillow-10.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d5db32e2a6ccbb3d34d87c87b432959e0db29755727afb37290e10f6e8e62614"}, - {file = "Pillow-10.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edf4392b77bdc81f36e92d3a07a5cd072f90253197f4a52a55a8cec48a12483b"}, - {file = "Pillow-10.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:520f2a520dc040512699f20fa1c363eed506e94248d71f85412b625026f6142c"}, - {file = "Pillow-10.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:8c11160913e3dd06c8ffdb5f233a4f254cb449f4dfc0f8f4549eda9e542c93d1"}, - {file = "Pillow-10.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a74ba0c356aaa3bb8e3eb79606a87669e7ec6444be352870623025d75a14a2bf"}, - {file = "Pillow-10.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5d0dae4cfd56969d23d94dc8e89fb6a217be461c69090768227beb8ed28c0a3"}, - {file = "Pillow-10.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22c10cc517668d44b211717fd9775799ccec4124b9a7f7b3635fc5386e584992"}, - {file = "Pillow-10.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:dffe31a7f47b603318c609f378ebcd57f1554a3a6a8effbc59c3c69f804296de"}, - {file = "Pillow-10.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:9fb218c8a12e51d7ead2a7c9e101a04982237d4855716af2e9499306728fb485"}, - {file = "Pillow-10.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d35e3c8d9b1268cbf5d3670285feb3528f6680420eafe35cccc686b73c1e330f"}, - {file = "Pillow-10.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ed64f9ca2f0a95411e88a4efbd7a29e5ce2cea36072c53dd9d26d9c76f753b3"}, - {file = "Pillow-10.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b6eb5502f45a60a3f411c63187db83a3d3107887ad0d036c13ce836f8a36f1d"}, - {file = "Pillow-10.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:c1fbe7621c167ecaa38ad29643d77a9ce7311583761abf7836e1510c580bf3dd"}, - {file = "Pillow-10.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:cd25d2a9d2b36fcb318882481367956d2cf91329f6892fe5d385c346c0649629"}, - {file = "Pillow-10.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3b08d4cc24f471b2c8ca24ec060abf4bebc6b144cb89cba638c720546b1cf538"}, - {file = "Pillow-10.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d737a602fbd82afd892ca746392401b634e278cb65d55c4b7a8f48e9ef8d008d"}, - {file = "Pillow-10.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3a82c40d706d9aa9734289740ce26460a11aeec2d9c79b7af87bb35f0073c12f"}, - {file = "Pillow-10.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:bc2ec7c7b5d66b8ec9ce9f720dbb5fa4bace0f545acd34870eff4a369b44bf37"}, - {file = "Pillow-10.0.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:d80cf684b541685fccdd84c485b31ce73fc5c9b5d7523bf1394ce134a60c6883"}, - {file = "Pillow-10.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76de421f9c326da8f43d690110f0e79fe3ad1e54be811545d7d91898b4c8493e"}, - {file = "Pillow-10.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81ff539a12457809666fef6624684c008e00ff6bf455b4b89fd00a140eecd640"}, - {file = "Pillow-10.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce543ed15570eedbb85df19b0a1a7314a9c8141a36ce089c0a894adbfccb4568"}, - {file = "Pillow-10.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:685ac03cc4ed5ebc15ad5c23bc555d68a87777586d970c2c3e216619a5476223"}, - {file = "Pillow-10.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d72e2ecc68a942e8cf9739619b7f408cc7b272b279b56b2c83c6123fcfa5cdff"}, - {file = "Pillow-10.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d50b6aec14bc737742ca96e85d6d0a5f9bfbded018264b3b70ff9d8c33485551"}, - {file = "Pillow-10.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:00e65f5e822decd501e374b0650146063fbb30a7264b4d2744bdd7b913e0cab5"}, - {file = "Pillow-10.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:f31f9fdbfecb042d046f9d91270a0ba28368a723302786c0009ee9b9f1f60199"}, - {file = "Pillow-10.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:1ce91b6ec08d866b14413d3f0bbdea7e24dfdc8e59f562bb77bc3fe60b6144ca"}, - {file = "Pillow-10.0.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:349930d6e9c685c089284b013478d6f76e3a534e36ddfa912cde493f235372f3"}, - {file = "Pillow-10.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3a684105f7c32488f7153905a4e3015a3b6c7182e106fe3c37fbb5ef3e6994c3"}, - {file = "Pillow-10.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4f69b3700201b80bb82c3a97d5e9254084f6dd5fb5b16fc1a7b974260f89f43"}, - {file = "Pillow-10.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f07ea8d2f827d7d2a49ecf1639ec02d75ffd1b88dcc5b3a61bbb37a8759ad8d"}, - {file = "Pillow-10.0.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:040586f7d37b34547153fa383f7f9aed68b738992380ac911447bb78f2abe530"}, - {file = "Pillow-10.0.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:f88a0b92277de8e3ca715a0d79d68dc82807457dae3ab8699c758f07c20b3c51"}, - {file = "Pillow-10.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c7cf14a27b0d6adfaebb3ae4153f1e516df54e47e42dcc073d7b3d76111a8d86"}, - {file = "Pillow-10.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3400aae60685b06bb96f99a21e1ada7bc7a413d5f49bce739828ecd9391bb8f7"}, - {file = "Pillow-10.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:dbc02381779d412145331789b40cc7b11fdf449e5d94f6bc0b080db0a56ea3f0"}, - {file = "Pillow-10.0.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:9211e7ad69d7c9401cfc0e23d49b69ca65ddd898976d660a2fa5904e3d7a9baa"}, - {file = "Pillow-10.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:faaf07ea35355b01a35cb442dd950d8f1bb5b040a7787791a535de13db15ed90"}, - {file = "Pillow-10.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9f72a021fbb792ce98306ffb0c348b3c9cb967dce0f12a49aa4c3d3fdefa967"}, - {file = "Pillow-10.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f7c16705f44e0504a3a2a14197c1f0b32a95731d251777dcb060aa83022cb2d"}, - {file = "Pillow-10.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:76edb0a1fa2b4745fb0c99fb9fb98f8b180a1bbceb8be49b087e0b21867e77d3"}, - {file = "Pillow-10.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:368ab3dfb5f49e312231b6f27b8820c823652b7cd29cfbd34090565a015e99ba"}, - {file = "Pillow-10.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:608bfdee0d57cf297d32bcbb3c728dc1da0907519d1784962c5f0c68bb93e5a3"}, - {file = "Pillow-10.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5c6e3df6bdd396749bafd45314871b3d0af81ff935b2d188385e970052091017"}, - {file = "Pillow-10.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:7be600823e4c8631b74e4a0d38384c73f680e6105a7d3c6824fcf226c178c7e6"}, - {file = "Pillow-10.0.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:92be919bbc9f7d09f7ae343c38f5bb21c973d2576c1d45600fce4b74bafa7ac0"}, - {file = "Pillow-10.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8182b523b2289f7c415f589118228d30ac8c355baa2f3194ced084dac2dbba"}, - {file = "Pillow-10.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:38250a349b6b390ee6047a62c086d3817ac69022c127f8a5dc058c31ccef17f3"}, - {file = "Pillow-10.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:88af2003543cc40c80f6fca01411892ec52b11021b3dc22ec3bc9d5afd1c5334"}, - {file = "Pillow-10.0.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:c189af0545965fa8d3b9613cfdb0cd37f9d71349e0f7750e1fd704648d475ed2"}, - {file = "Pillow-10.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce7b031a6fc11365970e6a5686d7ba8c63e4c1cf1ea143811acbb524295eabed"}, - {file = "Pillow-10.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:db24668940f82321e746773a4bc617bfac06ec831e5c88b643f91f122a785684"}, - {file = "Pillow-10.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:efe8c0681042536e0d06c11f48cebe759707c9e9abf880ee213541c5b46c5bf3"}, - {file = "Pillow-10.0.0.tar.gz", hash = "sha256:9c82b5b3e043c7af0d95792d0d20ccf68f61a1fec6b3530e718b688422727396"}, + {file = "Pillow-10.0.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:8f06be50669087250f319b706decf69ca71fdecd829091a37cc89398ca4dc17a"}, + {file = "Pillow-10.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:50bd5f1ebafe9362ad622072a1d2f5850ecfa44303531ff14353a4059113b12d"}, + {file = "Pillow-10.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6a90167bcca1216606223a05e2cf991bb25b14695c518bc65639463d7db722d"}, + {file = "Pillow-10.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f11c9102c56ffb9ca87134bd025a43d2aba3f1155f508eff88f694b33a9c6d19"}, + {file = "Pillow-10.0.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:186f7e04248103482ea6354af6d5bcedb62941ee08f7f788a1c7707bc720c66f"}, + {file = "Pillow-10.0.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0462b1496505a3462d0f35dc1c4d7b54069747d65d00ef48e736acda2c8cbdff"}, + {file = "Pillow-10.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d889b53ae2f030f756e61a7bff13684dcd77e9af8b10c6048fb2c559d6ed6eaf"}, + {file = "Pillow-10.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:552912dbca585b74d75279a7570dd29fa43b6d93594abb494ebb31ac19ace6bd"}, + {file = "Pillow-10.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:787bb0169d2385a798888e1122c980c6eff26bf941a8ea79747d35d8f9210ca0"}, + {file = "Pillow-10.0.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:fd2a5403a75b54661182b75ec6132437a181209b901446ee5724b589af8edef1"}, + {file = "Pillow-10.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2d7e91b4379f7a76b31c2dda84ab9e20c6220488e50f7822e59dac36b0cd92b1"}, + {file = "Pillow-10.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19e9adb3f22d4c416e7cd79b01375b17159d6990003633ff1d8377e21b7f1b21"}, + {file = "Pillow-10.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93139acd8109edcdeffd85e3af8ae7d88b258b3a1e13a038f542b79b6d255c54"}, + {file = "Pillow-10.0.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:92a23b0431941a33242b1f0ce6c88a952e09feeea9af4e8be48236a68ffe2205"}, + {file = "Pillow-10.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:cbe68deb8580462ca0d9eb56a81912f59eb4542e1ef8f987405e35a0179f4ea2"}, + {file = "Pillow-10.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:522ff4ac3aaf839242c6f4e5b406634bfea002469656ae8358644fc6c4856a3b"}, + {file = "Pillow-10.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:84efb46e8d881bb06b35d1d541aa87f574b58e87f781cbba8d200daa835b42e1"}, + {file = "Pillow-10.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:898f1d306298ff40dc1b9ca24824f0488f6f039bc0e25cfb549d3195ffa17088"}, + {file = "Pillow-10.0.1-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:bcf1207e2f2385a576832af02702de104be71301c2696d0012b1b93fe34aaa5b"}, + {file = "Pillow-10.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5d6c9049c6274c1bb565021367431ad04481ebb54872edecfcd6088d27edd6ed"}, + {file = "Pillow-10.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28444cb6ad49726127d6b340217f0627abc8732f1194fd5352dec5e6a0105635"}, + {file = "Pillow-10.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de596695a75496deb3b499c8c4f8e60376e0516e1a774e7bc046f0f48cd620ad"}, + {file = "Pillow-10.0.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:2872f2d7846cf39b3dbff64bc1104cc48c76145854256451d33c5faa55c04d1a"}, + {file = "Pillow-10.0.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4ce90f8a24e1c15465048959f1e94309dfef93af272633e8f37361b824532e91"}, + {file = "Pillow-10.0.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ee7810cf7c83fa227ba9125de6084e5e8b08c59038a7b2c9045ef4dde61663b4"}, + {file = "Pillow-10.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b1be1c872b9b5fcc229adeadbeb51422a9633abd847c0ff87dc4ef9bb184ae08"}, + {file = "Pillow-10.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:98533fd7fa764e5f85eebe56c8e4094db912ccbe6fbf3a58778d543cadd0db08"}, + {file = "Pillow-10.0.1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:764d2c0daf9c4d40ad12fbc0abd5da3af7f8aa11daf87e4fa1b834000f4b6b0a"}, + {file = "Pillow-10.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fcb59711009b0168d6ee0bd8fb5eb259c4ab1717b2f538bbf36bacf207ef7a68"}, + {file = "Pillow-10.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:697a06bdcedd473b35e50a7e7506b1d8ceb832dc238a336bd6f4f5aa91a4b500"}, + {file = "Pillow-10.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f665d1e6474af9f9da5e86c2a3a2d2d6204e04d5af9c06b9d42afa6ebde3f21"}, + {file = "Pillow-10.0.1-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:2fa6dd2661838c66f1a5473f3b49ab610c98a128fc08afbe81b91a1f0bf8c51d"}, + {file = "Pillow-10.0.1-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:3a04359f308ebee571a3127fdb1bd01f88ba6f6fb6d087f8dd2e0d9bff43f2a7"}, + {file = "Pillow-10.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:723bd25051454cea9990203405fa6b74e043ea76d4968166dfd2569b0210886a"}, + {file = "Pillow-10.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:71671503e3015da1b50bd18951e2f9daf5b6ffe36d16f1eb2c45711a301521a7"}, + {file = "Pillow-10.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:44e7e4587392953e5e251190a964675f61e4dae88d1e6edbe9f36d6243547ff3"}, + {file = "Pillow-10.0.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:3855447d98cced8670aaa63683808df905e956f00348732448b5a6df67ee5849"}, + {file = "Pillow-10.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ed2d9c0704f2dc4fa980b99d565c0c9a543fe5101c25b3d60488b8ba80f0cce1"}, + {file = "Pillow-10.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5bb289bb835f9fe1a1e9300d011eef4d69661bb9b34d5e196e5e82c4cb09b37"}, + {file = "Pillow-10.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a0d3e54ab1df9df51b914b2233cf779a5a10dfd1ce339d0421748232cea9876"}, + {file = "Pillow-10.0.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:2cc6b86ece42a11f16f55fe8903595eff2b25e0358dec635d0a701ac9586588f"}, + {file = "Pillow-10.0.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:ca26ba5767888c84bf5a0c1a32f069e8204ce8c21d00a49c90dabeba00ce0145"}, + {file = "Pillow-10.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f0b4b06da13275bc02adfeb82643c4a6385bd08d26f03068c2796f60d125f6f2"}, + {file = "Pillow-10.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bc2e3069569ea9dbe88d6b8ea38f439a6aad8f6e7a6283a38edf61ddefb3a9bf"}, + {file = "Pillow-10.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:8b451d6ead6e3500b6ce5c7916a43d8d8d25ad74b9102a629baccc0808c54971"}, + {file = "Pillow-10.0.1-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:32bec7423cdf25c9038fef614a853c9d25c07590e1a870ed471f47fb80b244db"}, + {file = "Pillow-10.0.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7cf63d2c6928b51d35dfdbda6f2c1fddbe51a6bc4a9d4ee6ea0e11670dd981e"}, + {file = "Pillow-10.0.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f6d3d4c905e26354e8f9d82548475c46d8e0889538cb0657aa9c6f0872a37aa4"}, + {file = "Pillow-10.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:847e8d1017c741c735d3cd1883fa7b03ded4f825a6e5fcb9378fd813edee995f"}, + {file = "Pillow-10.0.1-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:7f771e7219ff04b79e231d099c0a28ed83aa82af91fd5fa9fdb28f5b8d5addaf"}, + {file = "Pillow-10.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:459307cacdd4138edee3875bbe22a2492519e060660eaf378ba3b405d1c66317"}, + {file = "Pillow-10.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b059ac2c4c7a97daafa7dc850b43b2d3667def858a4f112d1aa082e5c3d6cf7d"}, + {file = "Pillow-10.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d6caf3cd38449ec3cd8a68b375e0c6fe4b6fd04edb6c9766b55ef84a6e8ddf2d"}, + {file = "Pillow-10.0.1.tar.gz", hash = "sha256:d72967b06be9300fed5cfbc8b5bafceec48bf7cdc7dab66b1d2549035287191d"}, ] [package.extras] @@ -2876,13 +2873,13 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co [[package]] name = "plotly" -version = "5.16.1" +version = "5.17.0" description = "An open-source, interactive data visualization library for Python" optional = false python-versions = ">=3.6" files = [ - {file = "plotly-5.16.1-py2.py3-none-any.whl", hash = "sha256:19cc34f339acd4e624177806c14df22f388f23fb70658b03aad959a0e650a0dc"}, - {file = "plotly-5.16.1.tar.gz", hash = "sha256:295ac25edeb18c893abb71dcadcea075b78fd6fdf07cee4217a4e1009667925b"}, + {file = "plotly-5.17.0-py2.py3-none-any.whl", hash = "sha256:7c84cdf11da162423da957bb093287134f2d6f170eb9a74f1459f825892247c3"}, + {file = "plotly-5.17.0.tar.gz", hash = "sha256:290d796bf7bab87aad184fe24b86096234c4c95dcca6ecbca02d02bdf17d3d97"}, ] [package.dependencies] @@ -2906,13 +2903,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "portalocker" -version = "2.7.0" +version = "2.8.2" description = "Wraps the portalocker recipe for easy usage" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" files = [ - {file = "portalocker-2.7.0-py2.py3-none-any.whl", hash = "sha256:a07c5b4f3985c3cf4798369631fb7011adb498e2a46d8440efc75a8f29a0f983"}, - {file = "portalocker-2.7.0.tar.gz", hash = "sha256:032e81d534a88ec1736d03f780ba073f047a06c478b06e2937486f334e955c51"}, + {file = "portalocker-2.8.2-py3-none-any.whl", hash = "sha256:cfb86acc09b9aa7c3b43594e19be1345b9d16af3feb08bf92f23d4dce513a28e"}, + {file = "portalocker-2.8.2.tar.gz", hash = "sha256:2b035aa7828e46c58e9b31390ee1f169b98e1066ab10b9a6a861fe7e25ee4f33"}, ] [package.dependencies] @@ -2921,7 +2918,7 @@ pywin32 = {version = ">=226", markers = "platform_system == \"Windows\""} [package.extras] docs = ["sphinx (>=1.7.1)"] redis = ["redis"] -tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "pytest-timeout (>=2.1.0)", "redis", "sphinx (>=6.0.0)"] +tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "pytest-timeout (>=2.1.0)", "redis", "sphinx (>=6.0.0)", "types-redis"] [[package]] name = "pretty-errors" @@ -3372,13 +3369,13 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pyelftools" -version = "0.29" +version = "0.30" description = "Library for analyzing ELF files and DWARF debugging information" optional = false python-versions = "*" files = [ - {file = "pyelftools-0.29-py2.py3-none-any.whl", hash = "sha256:519f38cf412f073b2d7393aa4682b0190fa901f7c3fa0bff2b82d537690c7fc1"}, - {file = "pyelftools-0.29.tar.gz", hash = "sha256:ec761596aafa16e282a31de188737e5485552469ac63b60cfcccf22263fd24ff"}, + {file = "pyelftools-0.30-py2.py3-none-any.whl", hash = "sha256:544c3440eddb9a0dce70b6611de0b28163d71def759d2ed57a0d00118fc5da86"}, + {file = "pyelftools-0.30.tar.gz", hash = "sha256:2fc92b0d534f8b081f58c7c370967379123d8e00984deb53c209364efd575b40"}, ] [[package]] @@ -3496,13 +3493,13 @@ tqdm = "*" [[package]] name = "pyparsing" -version = "3.0.9" +version = "3.1.1" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.6.8" files = [ - {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, - {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, + {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, + {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, ] [package.extras] @@ -3524,13 +3521,13 @@ cp2110 = ["hidapi"] [[package]] name = "pytest" -version = "7.4.0" +version = "7.4.2" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"}, - {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"}, + {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"}, + {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"}, ] [package.dependencies] @@ -3655,13 +3652,13 @@ files = [ [[package]] name = "pytz" -version = "2023.3" +version = "2023.3.post1" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2023.3-py2.py3-none-any.whl", hash = "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb"}, - {file = "pytz-2023.3.tar.gz", hash = "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588"}, + {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, + {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, ] [[package]] @@ -4143,124 +4140,110 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] -[[package]] -name = "retrying" -version = "1.3.4" -description = "Retrying" -optional = false -python-versions = "*" -files = [ - {file = "retrying-1.3.4-py3-none-any.whl", hash = "sha256:8cc4d43cb8e1125e0ff3344e9de678fefd85db3b750b81b2240dc0183af37b35"}, - {file = "retrying-1.3.4.tar.gz", hash = "sha256:345da8c5765bd982b1d1915deb9102fd3d1f7ad16bd84a9700b85f64d24e8f3e"}, -] - -[package.dependencies] -six = ">=1.7.0" - [[package]] name = "rpds-py" -version = "0.10.0" +version = "0.10.3" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.10.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:c1e0e9916301e3b3d970814b1439ca59487f0616d30f36a44cead66ee1748c31"}, - {file = "rpds_py-0.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ce8caa29ebbdcde67e5fd652c811d34bc01f249dbc0d61e5cc4db05ae79a83b"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad277f74b1c164f7248afa968700e410651eb858d7c160d109fb451dc45a2f09"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8e1c68303ccf7fceb50fbab79064a2636119fd9aca121f28453709283dbca727"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:780fcb855be29153901c67fc9c5633d48aebef21b90aa72812fa181d731c6b00"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bbd7b24d108509a1b9b6679fcc1166a7dd031dbef1f3c2c73788f42e3ebb3beb"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0700c2133ba203c4068aaecd6a59bda22e06a5e46255c9da23cbf68c6942215d"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:576da63eae7809f375932bfcbca2cf20620a1915bf2fedce4b9cc8491eceefe3"}, - {file = "rpds_py-0.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:23750a9b8a329844ba1fe267ca456bb3184984da2880ed17ae641c5af8de3fef"}, - {file = "rpds_py-0.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d08395595c42bcd82c3608762ce734504c6d025eef1c06f42326a6023a584186"}, - {file = "rpds_py-0.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1d7b7b71bcb82d8713c7c2e9c5f061415598af5938666beded20d81fa23e7640"}, - {file = "rpds_py-0.10.0-cp310-none-win32.whl", hash = "sha256:97f5811df21703446b42303475b8b855ee07d6ab6cdf8565eff115540624f25d"}, - {file = "rpds_py-0.10.0-cp310-none-win_amd64.whl", hash = "sha256:cdbed8f21204398f47de39b0a9b180d7e571f02dfb18bf5f1b618e238454b685"}, - {file = "rpds_py-0.10.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:7a3a3d3e4f1e3cd2a67b93a0b6ed0f2499e33f47cc568e3a0023e405abdc0ff1"}, - {file = "rpds_py-0.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fc72ae476732cdb7b2c1acb5af23b478b8a0d4b6fcf19b90dd150291e0d5b26b"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0583f69522732bdd79dca4cd3873e63a29acf4a299769c7541f2ca1e4dd4bc6"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f8b9a7cd381970e64849070aca7c32d53ab7d96c66db6c2ef7aa23c6e803f514"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0d292cabd7c8335bdd3237ded442480a249dbcdb4ddfac5218799364a01a0f5c"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6903cdca64f1e301af9be424798328c1fe3b4b14aede35f04510989fc72f012"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bed57543c99249ab3a4586ddc8786529fbc33309e5e8a1351802a06ca2baf4c2"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15932ec5f224b0e35764dc156514533a4fca52dcfda0dfbe462a1a22b37efd59"}, - {file = "rpds_py-0.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eb2d59bc196e6d3b1827c7db06c1a898bfa0787c0574af398e65ccf2e97c0fbe"}, - {file = "rpds_py-0.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f99d74ddf9d3b6126b509e81865f89bd1283e3fc1b568b68cd7bd9dfa15583d7"}, - {file = "rpds_py-0.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f70bec8a14a692be6dbe7ce8aab303e88df891cbd4a39af091f90b6702e28055"}, - {file = "rpds_py-0.10.0-cp311-none-win32.whl", hash = "sha256:5f7487be65b9c2c510819e744e375bd41b929a97e5915c4852a82fbb085df62c"}, - {file = "rpds_py-0.10.0-cp311-none-win_amd64.whl", hash = "sha256:748e472345c3a82cfb462d0dff998a7bf43e621eed73374cb19f307e97e08a83"}, - {file = "rpds_py-0.10.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:d4639111e73997567343df6551da9dd90d66aece1b9fc26c786d328439488103"}, - {file = "rpds_py-0.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f4760e1b02173f4155203054f77a5dc0b4078de7645c922b208d28e7eb99f3e2"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a6420a36975e0073acaeee44ead260c1f6ea56812cfc6c31ec00c1c48197173"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:58fc4d66ee349a23dbf08c7e964120dc9027059566e29cf0ce6205d590ed7eca"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:063411228b852fb2ed7485cf91f8e7d30893e69b0acb207ec349db04cccc8225"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65af12f70355de29e1092f319f85a3467f4005e959ab65129cb697169ce94b86"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:298e8b5d8087e0330aac211c85428c8761230ef46a1f2c516d6a2f67fb8803c5"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5b9bf77008f2c55dabbd099fd3ac87009471d223a1c7ebea36873d39511b780a"}, - {file = "rpds_py-0.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c7853f27195598e550fe089f78f0732c66ee1d1f0eaae8ad081589a5a2f5d4af"}, - {file = "rpds_py-0.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:75dbfd41a61bc1fb0536bf7b1abf272dc115c53d4d77db770cd65d46d4520882"}, - {file = "rpds_py-0.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b25136212a3d064a8f0b9ebbb6c57094c5229e0de76d15c79b76feff26aeb7b8"}, - {file = "rpds_py-0.10.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:9affee8cb1ec453382c27eb9043378ab32f49cd4bc24a24275f5c39bf186c279"}, - {file = "rpds_py-0.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4d55528ef13af4b4e074d067977b1f61408602f53ae4537dccf42ba665c2c7bd"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7865df1fb564092bcf46dac61b5def25342faf6352e4bc0e61a286e3fa26a3d"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f5cc8c7bc99d2bbcd704cef165ca7d155cd6464c86cbda8339026a42d219397"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cbae50d352e4717ffc22c566afc2d0da744380e87ed44a144508e3fb9114a3f4"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fccbf0cd3411719e4c9426755df90bf3449d9fc5a89f077f4a7f1abd4f70c910"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d10c431073dc6ebceed35ab22948a016cc2b5120963c13a41e38bdde4a7212"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1b401e8b9aece651512e62c431181e6e83048a651698a727ea0eb0699e9f9b74"}, - {file = "rpds_py-0.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:7618a082c55cf038eede4a918c1001cc8a4411dfe508dc762659bcd48d8f4c6e"}, - {file = "rpds_py-0.10.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:b3226b246facae14909b465061ddcfa2dfeadb6a64f407f24300d42d69bcb1a1"}, - {file = "rpds_py-0.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a8edd467551c1102dc0f5754ab55cd0703431cd3044edf8c8e7d9208d63fa453"}, - {file = "rpds_py-0.10.0-cp38-none-win32.whl", hash = "sha256:71333c22f7cf5f0480b59a0aef21f652cf9bbaa9679ad261b405b65a57511d1e"}, - {file = "rpds_py-0.10.0-cp38-none-win_amd64.whl", hash = "sha256:a8ab1adf04ae2d6d65835995218fd3f3eb644fe20655ca8ee233e2c7270ff53b"}, - {file = "rpds_py-0.10.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:87c93b25d538c433fb053da6228c6290117ba53ff6a537c133b0f2087948a582"}, - {file = "rpds_py-0.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7996aed3f65667c6dcc8302a69368435a87c2364079a066750a2eac75ea01e"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8856aa76839dc234d3469f1e270918ce6bec1d6a601eba928f45d68a15f04fc3"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00215f6a9058fbf84f9d47536902558eb61f180a6b2a0fa35338d06ceb9a2e5a"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23a059143c1393015c68936370cce11690f7294731904bdae47cc3e16d0b2474"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e5c26905aa651cc8c0ddc45e0e5dea2a1296f70bdc96af17aee9d0493280a17"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c651847545422c8131660704c58606d841e228ed576c8f1666d98b3d318f89da"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:80992eb20755701753e30a6952a96aa58f353d12a65ad3c9d48a8da5ec4690cf"}, - {file = "rpds_py-0.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ffcf18ad3edf1c170e27e88b10282a2c449aa0358659592462448d71b2000cfc"}, - {file = "rpds_py-0.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:08e08ccf5b10badb7d0a5c84829b914c6e1e1f3a716fdb2bf294e2bd01562775"}, - {file = "rpds_py-0.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7150b83b3e3ddaac81a8bb6a9b5f93117674a0e7a2b5a5b32ab31fdfea6df27f"}, - {file = "rpds_py-0.10.0-cp39-none-win32.whl", hash = "sha256:3455ecc46ea443b5f7d9c2f946ce4017745e017b0d0f8b99c92564eff97e97f5"}, - {file = "rpds_py-0.10.0-cp39-none-win_amd64.whl", hash = "sha256:afe6b5a04b2ab1aa89bad32ca47bf71358e7302a06fdfdad857389dca8fb5f04"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:b1cb078f54af0abd835ca76f93a3152565b73be0f056264da45117d0adf5e99c"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8e7e2b3577e97fa43c2c2b12a16139b2cedbd0770235d5179c0412b4794efd9b"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae46a50d235f1631d9ec4670503f7b30405103034830bc13df29fd947207f795"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f869e34d2326e417baee430ae998e91412cc8e7fdd83d979277a90a0e79a5b47"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d544a614055b131111bed6edfa1cb0fb082a7265761bcb03321f2dd7b5c6c48"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ee9c2f6ca9774c2c24bbf7b23086264e6b5fa178201450535ec0859739e6f78d"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2da4a8c6d465fde36cea7d54bf47b5cf089073452f0e47c8632ecb9dec23c07"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac00c41dd315d147b129976204839ca9de699d83519ff1272afbe4fb9d362d12"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:0155c33af0676fc38e1107679be882077680ad1abb6303956b97259c3177e85e"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:db6585b600b2e76e98131e0ac0e5195759082b51687ad0c94505970c90718f4a"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:7b6975d3763d0952c111700c0634968419268e6bbc0b55fe71138987fa66f309"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:6388e4e95a26717b94a05ced084e19da4d92aca883f392dffcf8e48c8e221a24"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:18f87baa20e02e9277ad8960cd89b63c79c05caf106f4c959a9595c43f2a34a5"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92f05fc7d832e970047662b3440b190d24ea04f8d3c760e33e7163b67308c878"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:291c9ce3929a75b45ce8ddde2aa7694fc8449f2bc8f5bd93adf021efaae2d10b"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:861d25ae0985a1dd5297fee35f476b60c6029e2e6e19847d5b4d0a43a390b696"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:668d2b45d62c68c7a370ac3dce108ffda482b0a0f50abd8b4c604a813a59e08f"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:344b89384c250ba6a4ce1786e04d01500e4dac0f4137ceebcaad12973c0ac0b3"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:885e023e73ce09b11b89ab91fc60f35d80878d2c19d6213a32b42ff36543c291"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:841128a22e6ac04070a0f84776d07e9c38c4dcce8e28792a95e45fc621605517"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:899b5e7e2d5a8bc92aa533c2d4e55e5ebba095c485568a5e4bedbc163421259a"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e7947d9a6264c727a556541b1630296bbd5d0a05068d21c38dde8e7a1c703ef0"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4992266817169997854f81df7f6db7bdcda1609972d8ffd6919252f09ec3c0f6"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:26d9fd624649a10e4610fab2bc820e215a184d193e47d0be7fe53c1c8f67f370"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0028eb0967942d0d2891eae700ae1a27b7fd18604cfcb16a1ef486a790fee99e"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f9e7e493ded7042712a374471203dd43ae3fff5b81e3de1a0513fa241af9fd41"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2d68a8e8a3a816629283faf82358d8c93fe5bd974dd2704152394a3de4cec22a"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6d5f061f6a2aa55790b9e64a23dfd87b6664ab56e24cd06c78eb43986cb260b"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c7c4266c1b61eb429e8aeb7d8ed6a3bfe6c890a1788b18dbec090c35c6b93fa"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:80772e3bda6787510d9620bc0c7572be404a922f8ccdfd436bf6c3778119464c"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b98e75b21fc2ba5285aef8efaf34131d16af1c38df36bdca2f50634bea2d3060"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:d63787f289944cc4bde518ad2b5e70a4f0d6e2ce76324635359c74c113fd188f"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:872f3dcaa8bf2245944861d7311179d2c0c9b2aaa7d3b464d99a7c2e401f01fa"}, - {file = "rpds_py-0.10.0.tar.gz", hash = "sha256:e36d7369363d2707d5f68950a64c4e025991eb0177db01ccb6aa6facae48b69f"}, + {file = "rpds_py-0.10.3-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:485747ee62da83366a44fbba963c5fe017860ad408ccd6cd99aa66ea80d32b2e"}, + {file = "rpds_py-0.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c55f9821f88e8bee4b7a72c82cfb5ecd22b6aad04033334f33c329b29bfa4da0"}, + {file = "rpds_py-0.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3b52a67ac66a3a64a7e710ba629f62d1e26ca0504c29ee8cbd99b97df7079a8"}, + {file = "rpds_py-0.10.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3aed39db2f0ace76faa94f465d4234aac72e2f32b009f15da6492a561b3bbebd"}, + {file = "rpds_py-0.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:271c360fdc464fe6a75f13ea0c08ddf71a321f4c55fc20a3fe62ea3ef09df7d9"}, + {file = "rpds_py-0.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef5fddfb264e89c435be4adb3953cef5d2936fdeb4463b4161a6ba2f22e7b740"}, + {file = "rpds_py-0.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a771417c9c06c56c9d53d11a5b084d1de75de82978e23c544270ab25e7c066ff"}, + {file = "rpds_py-0.10.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:52b5cbc0469328e58180021138207e6ec91d7ca2e037d3549cc9e34e2187330a"}, + {file = "rpds_py-0.10.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6ac3fefb0d168c7c6cab24fdfc80ec62cd2b4dfd9e65b84bdceb1cb01d385c33"}, + {file = "rpds_py-0.10.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:8d54bbdf5d56e2c8cf81a1857250f3ea132de77af543d0ba5dce667183b61fec"}, + {file = "rpds_py-0.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cd2163f42868865597d89399a01aa33b7594ce8e2c4a28503127c81a2f17784e"}, + {file = "rpds_py-0.10.3-cp310-none-win32.whl", hash = "sha256:ea93163472db26ac6043e8f7f93a05d9b59e0505c760da2a3cd22c7dd7111391"}, + {file = "rpds_py-0.10.3-cp310-none-win_amd64.whl", hash = "sha256:7cd020b1fb41e3ab7716d4d2c3972d4588fdfbab9bfbbb64acc7078eccef8860"}, + {file = "rpds_py-0.10.3-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:1d9b5ee46dcb498fa3e46d4dfabcb531e1f2e76b477e0d99ef114f17bbd38453"}, + {file = "rpds_py-0.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:563646d74a4b4456d0cf3b714ca522e725243c603e8254ad85c3b59b7c0c4bf0"}, + {file = "rpds_py-0.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e626b864725680cd3904414d72e7b0bd81c0e5b2b53a5b30b4273034253bb41f"}, + {file = "rpds_py-0.10.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:485301ee56ce87a51ccb182a4b180d852c5cb2b3cb3a82f7d4714b4141119d8c"}, + {file = "rpds_py-0.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:42f712b4668831c0cd85e0a5b5a308700fe068e37dcd24c0062904c4e372b093"}, + {file = "rpds_py-0.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c9141af27a4e5819d74d67d227d5047a20fa3c7d4d9df43037a955b4c748ec5"}, + {file = "rpds_py-0.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef750a20de1b65657a1425f77c525b0183eac63fe7b8f5ac0dd16f3668d3e64f"}, + {file = "rpds_py-0.10.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e1a0ffc39f51aa5f5c22114a8f1906b3c17eba68c5babb86c5f77d8b1bba14d1"}, + {file = "rpds_py-0.10.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f4c179a7aeae10ddf44c6bac87938134c1379c49c884529f090f9bf05566c836"}, + {file = "rpds_py-0.10.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:176287bb998fd1e9846a9b666e240e58f8d3373e3bf87e7642f15af5405187b8"}, + {file = "rpds_py-0.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6446002739ca29249f0beaaf067fcbc2b5aab4bc7ee8fb941bd194947ce19aff"}, + {file = "rpds_py-0.10.3-cp311-none-win32.whl", hash = "sha256:c7aed97f2e676561416c927b063802c8a6285e9b55e1b83213dfd99a8f4f9e48"}, + {file = "rpds_py-0.10.3-cp311-none-win_amd64.whl", hash = "sha256:8bd01ff4032abaed03f2db702fa9a61078bee37add0bd884a6190b05e63b028c"}, + {file = "rpds_py-0.10.3-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:4cf0855a842c5b5c391dd32ca273b09e86abf8367572073bd1edfc52bc44446b"}, + {file = "rpds_py-0.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:69b857a7d8bd4f5d6e0db4086da8c46309a26e8cefdfc778c0c5cc17d4b11e08"}, + {file = "rpds_py-0.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:975382d9aa90dc59253d6a83a5ca72e07f4ada3ae3d6c0575ced513db322b8ec"}, + {file = "rpds_py-0.10.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35fbd23c1c8732cde7a94abe7fb071ec173c2f58c0bd0d7e5b669fdfc80a2c7b"}, + {file = "rpds_py-0.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:106af1653007cc569d5fbb5f08c6648a49fe4de74c2df814e234e282ebc06957"}, + {file = "rpds_py-0.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ce5e7504db95b76fc89055c7f41e367eaadef5b1d059e27e1d6eabf2b55ca314"}, + {file = "rpds_py-0.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aca759ada6b1967fcfd4336dcf460d02a8a23e6abe06e90ea7881e5c22c4de6"}, + {file = "rpds_py-0.10.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b5d4bdd697195f3876d134101c40c7d06d46c6ab25159ed5cbd44105c715278a"}, + {file = "rpds_py-0.10.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a657250807b6efd19b28f5922520ae002a54cb43c2401e6f3d0230c352564d25"}, + {file = "rpds_py-0.10.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:177c9dd834cdf4dc39c27436ade6fdf9fe81484758885f2d616d5d03c0a83bd2"}, + {file = "rpds_py-0.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e22491d25f97199fc3581ad8dd8ce198d8c8fdb8dae80dea3512e1ce6d5fa99f"}, + {file = "rpds_py-0.10.3-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:2f3e1867dd574014253b4b8f01ba443b9c914e61d45f3674e452a915d6e929a3"}, + {file = "rpds_py-0.10.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c22211c165166de6683de8136229721f3d5c8606cc2c3d1562da9a3a5058049c"}, + {file = "rpds_py-0.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40bc802a696887b14c002edd43c18082cb7b6f9ee8b838239b03b56574d97f71"}, + {file = "rpds_py-0.10.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e271dd97c7bb8eefda5cca38cd0b0373a1fea50f71e8071376b46968582af9b"}, + {file = "rpds_py-0.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:95cde244e7195b2c07ec9b73fa4c5026d4a27233451485caa1cd0c1b55f26dbd"}, + {file = "rpds_py-0.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08a80cf4884920863623a9ee9a285ee04cef57ebedc1cc87b3e3e0f24c8acfe5"}, + {file = "rpds_py-0.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:763ad59e105fca09705d9f9b29ecffb95ecdc3b0363be3bb56081b2c6de7977a"}, + {file = "rpds_py-0.10.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:187700668c018a7e76e89424b7c1042f317c8df9161f00c0c903c82b0a8cac5c"}, + {file = "rpds_py-0.10.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:5267cfda873ad62591b9332fd9472d2409f7cf02a34a9c9cb367e2c0255994bf"}, + {file = "rpds_py-0.10.3-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:2ed83d53a8c5902ec48b90b2ac045e28e1698c0bea9441af9409fc844dc79496"}, + {file = "rpds_py-0.10.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:255f1a10ae39b52122cce26ce0781f7a616f502feecce9e616976f6a87992d6b"}, + {file = "rpds_py-0.10.3-cp38-none-win32.whl", hash = "sha256:a019a344312d0b1f429c00d49c3be62fa273d4a1094e1b224f403716b6d03be1"}, + {file = "rpds_py-0.10.3-cp38-none-win_amd64.whl", hash = "sha256:efb9ece97e696bb56e31166a9dd7919f8f0c6b31967b454718c6509f29ef6fee"}, + {file = "rpds_py-0.10.3-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:570cc326e78ff23dec7f41487aa9c3dffd02e5ee9ab43a8f6ccc3df8f9327623"}, + {file = "rpds_py-0.10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cff7351c251c7546407827b6a37bcef6416304fc54d12d44dbfecbb717064717"}, + {file = "rpds_py-0.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:177914f81f66c86c012311f8c7f46887ec375cfcfd2a2f28233a3053ac93a569"}, + {file = "rpds_py-0.10.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:448a66b8266de0b581246ca7cd6a73b8d98d15100fb7165974535fa3b577340e"}, + {file = "rpds_py-0.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bbac1953c17252f9cc675bb19372444aadf0179b5df575ac4b56faaec9f6294"}, + {file = "rpds_py-0.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dd9d9d9e898b9d30683bdd2b6c1849449158647d1049a125879cb397ee9cd12"}, + {file = "rpds_py-0.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8c71ea77536149e36c4c784f6d420ffd20bea041e3ba21ed021cb40ce58e2c9"}, + {file = "rpds_py-0.10.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:16a472300bc6c83fe4c2072cc22b3972f90d718d56f241adabc7ae509f53f154"}, + {file = "rpds_py-0.10.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:b9255e7165083de7c1d605e818025e8860636348f34a79d84ec533546064f07e"}, + {file = "rpds_py-0.10.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:53d7a3cd46cdc1689296348cb05ffd4f4280035770aee0c8ead3bbd4d6529acc"}, + {file = "rpds_py-0.10.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22da15b902f9f8e267020d1c8bcfc4831ca646fecb60254f7bc71763569f56b1"}, + {file = "rpds_py-0.10.3-cp39-none-win32.whl", hash = "sha256:850c272e0e0d1a5c5d73b1b7871b0a7c2446b304cec55ccdb3eaac0d792bb065"}, + {file = "rpds_py-0.10.3-cp39-none-win_amd64.whl", hash = "sha256:de61e424062173b4f70eec07e12469edde7e17fa180019a2a0d75c13a5c5dc57"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:af247fd4f12cca4129c1b82090244ea5a9d5bb089e9a82feb5a2f7c6a9fe181d"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ad59efe24a4d54c2742929001f2d02803aafc15d6d781c21379e3f7f66ec842"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642ed0a209ced4be3a46f8cb094f2d76f1f479e2a1ceca6de6346a096cd3409d"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:37d0c59548ae56fae01c14998918d04ee0d5d3277363c10208eef8c4e2b68ed6"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aad6ed9e70ddfb34d849b761fb243be58c735be6a9265b9060d6ddb77751e3e8"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f94fdd756ba1f79f988855d948ae0bad9ddf44df296770d9a58c774cfbcca72"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77076bdc8776a2b029e1e6ffbe6d7056e35f56f5e80d9dc0bad26ad4a024a762"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:87d9b206b1bd7a0523375dc2020a6ce88bca5330682ae2fe25e86fd5d45cea9c"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:8efaeb08ede95066da3a3e3c420fcc0a21693fcd0c4396d0585b019613d28515"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a4d9bfda3f84fc563868fe25ca160c8ff0e69bc4443c5647f960d59400ce6557"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:d27aa6bbc1f33be920bb7adbb95581452cdf23005d5611b29a12bb6a3468cc95"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ed8313809571a5463fd7db43aaca68ecb43ca7a58f5b23b6e6c6c5d02bdc7882"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:e10e6a1ed2b8661201e79dff5531f8ad4cdd83548a0f81c95cf79b3184b20c33"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:015de2ce2af1586ff5dc873e804434185199a15f7d96920ce67e50604592cae9"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae87137951bb3dc08c7d8bfb8988d8c119f3230731b08a71146e84aaa919a7a9"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0bb4f48bd0dd18eebe826395e6a48b7331291078a879295bae4e5d053be50d4c"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:09362f86ec201288d5687d1dc476b07bf39c08478cde837cb710b302864e7ec9"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:821392559d37759caa67d622d0d2994c7a3f2fb29274948ac799d496d92bca73"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7170cbde4070dc3c77dec82abf86f3b210633d4f89550fa0ad2d4b549a05572a"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:5de11c041486681ce854c814844f4ce3282b6ea1656faae19208ebe09d31c5b8"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:4ed172d0c79f156c1b954e99c03bc2e3033c17efce8dd1a7c781bc4d5793dfac"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:11fdd1192240dda8d6c5d18a06146e9045cb7e3ba7c06de6973000ff035df7c6"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:f602881d80ee4228a2355c68da6b296a296cd22bbb91e5418d54577bbf17fa7c"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:691d50c99a937709ac4c4cd570d959a006bd6a6d970a484c84cc99543d4a5bbb"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24cd91a03543a0f8d09cb18d1cb27df80a84b5553d2bd94cba5979ef6af5c6e7"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fc2200e79d75b5238c8d69f6a30f8284290c777039d331e7340b6c17cad24a5a"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea65b59882d5fa8c74a23f8960db579e5e341534934f43f3b18ec1839b893e41"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:829e91f3a8574888b73e7a3feb3b1af698e717513597e23136ff4eba0bc8387a"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eab75a8569a095f2ad470b342f2751d9902f7944704f0571c8af46bede438475"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:061c3ff1f51ecec256e916cf71cc01f9975af8fb3af9b94d3c0cc8702cfea637"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:39d05e65f23a0fe897b6ac395f2a8d48c56ac0f583f5d663e0afec1da89b95da"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:4eca20917a06d2fca7628ef3c8b94a8c358f6b43f1a621c9815243462dcccf97"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e8d0f0eca087630d58b8c662085529781fd5dc80f0a54eda42d5c9029f812599"}, + {file = "rpds_py-0.10.3.tar.gz", hash = "sha256:fcc1ebb7561a3e24a6588f7c6ded15d80aec22c66a070c757559b57b17ffd1cb"}, ] [[package]] @@ -4415,37 +4398,37 @@ contextlib2 = ">=0.5.5" [[package]] name = "scikit-learn" -version = "1.3.0" +version = "1.3.1" description = "A set of python modules for machine learning and data mining" optional = false python-versions = ">=3.8" files = [ - {file = "scikit-learn-1.3.0.tar.gz", hash = "sha256:8be549886f5eda46436b6e555b0e4873b4f10aa21c07df45c4bc1735afbccd7a"}, - {file = "scikit_learn-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:981287869e576d42c682cf7ca96af0c6ac544ed9316328fd0d9292795c742cf5"}, - {file = "scikit_learn-1.3.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:436aaaae2c916ad16631142488e4c82f4296af2404f480e031d866863425d2a2"}, - {file = "scikit_learn-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7e28d8fa47a0b30ae1bd7a079519dd852764e31708a7804da6cb6f8b36e3630"}, - {file = "scikit_learn-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae80c08834a473d08a204d966982a62e11c976228d306a2648c575e3ead12111"}, - {file = "scikit_learn-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:552fd1b6ee22900cf1780d7386a554bb96949e9a359999177cf30211e6b20df6"}, - {file = "scikit_learn-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79970a6d759eb00a62266a31e2637d07d2d28446fca8079cf9afa7c07b0427f8"}, - {file = "scikit_learn-1.3.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:850a00b559e636b23901aabbe79b73dc604b4e4248ba9e2d6e72f95063765603"}, - {file = "scikit_learn-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee04835fb016e8062ee9fe9074aef9b82e430504e420bff51e3e5fffe72750ca"}, - {file = "scikit_learn-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d953531f5d9f00c90c34fa3b7d7cfb43ecff4c605dac9e4255a20b114a27369"}, - {file = "scikit_learn-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:151ac2bf65ccf363664a689b8beafc9e6aae36263db114b4ca06fbbbf827444a"}, - {file = "scikit_learn-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6a885a9edc9c0a341cab27ec4f8a6c58b35f3d449c9d2503a6fd23e06bbd4f6a"}, - {file = "scikit_learn-1.3.0-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:9877af9c6d1b15486e18a94101b742e9d0d2f343d35a634e337411ddb57783f3"}, - {file = "scikit_learn-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c470f53cea065ff3d588050955c492793bb50c19a92923490d18fcb637f6383a"}, - {file = "scikit_learn-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd6e2d7389542eae01077a1ee0318c4fec20c66c957f45c7aac0c6eb0fe3c612"}, - {file = "scikit_learn-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:3a11936adbc379a6061ea32fa03338d4ca7248d86dd507c81e13af428a5bc1db"}, - {file = "scikit_learn-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:998d38fcec96584deee1e79cd127469b3ad6fefd1ea6c2dfc54e8db367eb396b"}, - {file = "scikit_learn-1.3.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:ded35e810438a527e17623ac6deae3b360134345b7c598175ab7741720d7ffa7"}, - {file = "scikit_learn-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e8102d5036e28d08ab47166b48c8d5e5810704daecf3a476a4282d562be9a28"}, - {file = "scikit_learn-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7617164951c422747e7c32be4afa15d75ad8044f42e7d70d3e2e0429a50e6718"}, - {file = "scikit_learn-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:1d54fb9e6038284548072df22fd34777e434153f7ffac72c8596f2d6987110dd"}, + {file = "scikit-learn-1.3.1.tar.gz", hash = "sha256:1a231cced3ee3fa04756b4a7ab532dc9417acd581a330adff5f2c01ac2831fcf"}, + {file = "scikit_learn-1.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3153612ff8d36fa4e35ef8b897167119213698ea78f3fd130b4068e6f8d2da5a"}, + {file = "scikit_learn-1.3.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:6bb9490fdb8e7e00f1354621689187bef3cab289c9b869688f805bf724434755"}, + {file = "scikit_learn-1.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7135a03af71138669f19bc96e7d0cc8081aed4b3565cc3b131135d65fc642ba"}, + {file = "scikit_learn-1.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d8dee8c1f40eeba49a85fe378bdf70a07bb64aba1a08fda1e0f48d27edfc3e6"}, + {file = "scikit_learn-1.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:4d379f2b34096105a96bd857b88601dffe7389bd55750f6f29aaa37bc6272eb5"}, + {file = "scikit_learn-1.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:14e8775eba072ab10866a7e0596bc9906873e22c4c370a651223372eb62de180"}, + {file = "scikit_learn-1.3.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:58b0c2490eff8355dc26e884487bf8edaccf2ba48d09b194fb2f3a026dd64f9d"}, + {file = "scikit_learn-1.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f66eddfda9d45dd6cadcd706b65669ce1df84b8549875691b1f403730bdef217"}, + {file = "scikit_learn-1.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6448c37741145b241eeac617028ba6ec2119e1339b1385c9720dae31367f2be"}, + {file = "scikit_learn-1.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:c413c2c850241998168bbb3bd1bb59ff03b1195a53864f0b80ab092071af6028"}, + {file = "scikit_learn-1.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:52b77cc08bd555969ec5150788ed50276f5ef83abb72e6f469c5b91a0009bbca"}, + {file = "scikit_learn-1.3.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a683394bc3f80b7c312c27f9b14ebea7766b1f0a34faf1a2e9158d80e860ec26"}, + {file = "scikit_learn-1.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a15d964d9eb181c79c190d3dbc2fff7338786bf017e9039571418a1d53dab236"}, + {file = "scikit_learn-1.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ce9233cdf0cdcf0858a5849d306490bf6de71fa7603a3835124e386e62f2311"}, + {file = "scikit_learn-1.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:1ec668ce003a5b3d12d020d2cde0abd64b262ac5f098b5c84cf9657deb9996a8"}, + {file = "scikit_learn-1.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ccbbedae99325628c1d1cbe3916b7ef58a1ce949672d8d39c8b190e10219fd32"}, + {file = "scikit_learn-1.3.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:845f81c7ceb4ea6bac64ab1c9f2ce8bef0a84d0f21f3bece2126adcc213dfecd"}, + {file = "scikit_learn-1.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8454d57a22d856f1fbf3091bd86f9ebd4bff89088819886dc0c72f47a6c30652"}, + {file = "scikit_learn-1.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d993fb70a1d78c9798b8f2f28705bfbfcd546b661f9e2e67aa85f81052b9c53"}, + {file = "scikit_learn-1.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:66f7bb1fec37d65f4ef85953e1df5d3c98a0f0141d394dcdaead5a6de9170347"}, ] [package.dependencies] joblib = ">=1.1.1" -numpy = ">=1.17.3" +numpy = ">=1.17.3,<2.0" scipy = ">=1.5.0" threadpoolctl = ">=2.0.0" @@ -4499,19 +4482,41 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo [[package]] name = "setuptools" -version = "68.1.2" +version = "68.2.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-68.1.2-py3-none-any.whl", hash = "sha256:3d8083eed2d13afc9426f227b24fd1659489ec107c0e86cec2ffdde5c92e790b"}, - {file = "setuptools-68.1.2.tar.gz", hash = "sha256:3d4dfa6d95f1b101d695a6160a7626e15583af71a5f52176efa5d39a054d475d"}, + {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, + {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5,<=7.1.2)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "setuptools-scm" +version = "8.0.3" +description = "the blessed package to manage your versions by scm tags" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-scm-8.0.3.tar.gz", hash = "sha256:0169fd70197efda2f8c4d0b2a7a3d614431b488116f37b79d031e9e7ec884d8c"}, + {file = "setuptools_scm-8.0.3-py3-none-any.whl", hash = "sha256:813822234453438a13c78d05c8af29918fbc06f88efb33d38f065340bbb48c39"}, +] + +[package.dependencies] +packaging = ">=20" +setuptools = "*" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} +typing-extensions = {version = "*", markers = "python_version < \"3.11\""} + +[package.extras] +docs = ["entangled-cli[rich]", "mkdocs", "mkdocs-entangled-plugin", "mkdocs-material", "mkdocstrings[python]", "pygments"] +rich = ["rich"] +test = ["pytest", "rich", "virtualenv (>20)"] [[package]] name = "six" @@ -4562,13 +4567,13 @@ files = [ [[package]] name = "soupsieve" -version = "2.4.1" +version = "2.5" description = "A modern CSS selector implementation for Beautiful Soup." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "soupsieve-2.4.1-py3-none-any.whl", hash = "sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8"}, - {file = "soupsieve-2.4.1.tar.gz", hash = "sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea"}, + {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, + {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, ] [[package]] @@ -4957,28 +4962,28 @@ telegram = ["requests"] [[package]] name = "traitlets" -version = "5.9.0" +version = "5.10.0" description = "Traitlets Python configuration system" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "traitlets-5.9.0-py3-none-any.whl", hash = "sha256:9e6ec080259b9a5940c797d58b613b5e31441c2257b87c2e795c5228ae80d2d8"}, - {file = "traitlets-5.9.0.tar.gz", hash = "sha256:f6cde21a9c68cf756af02035f72d5a723bf607e862e7be33ece505abf4a3bad9"}, + {file = "traitlets-5.10.0-py3-none-any.whl", hash = "sha256:417745a96681fbb358e723d5346a547521f36e9bd0d50ba7ab368fff5d67aa54"}, + {file = "traitlets-5.10.0.tar.gz", hash = "sha256:f584ea209240466e66e91f3c81aa7d004ba4cf794990b0c775938a1544217cd1"}, ] [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=2.0)", "pre-commit", "pytest", "pytest-mock"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.5.1)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"] [[package]] name = "typing-extensions" -version = "4.7.1" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.8.0" +description = "Backported and Experimental Type Hints for Python 3.8+" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, - {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, + {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, + {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, ] [[package]] @@ -5003,13 +5008,13 @@ tests = ["nose", "numpy"] [[package]] name = "urllib3" -version = "2.0.4" +version = "2.0.5" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.7" files = [ - {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, - {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, + {file = "urllib3-2.0.5-py3-none-any.whl", hash = "sha256:ef16afa8ba34a1f989db38e1dbbe0c302e4289a47856990d0682e374563ce35e"}, + {file = "urllib3-2.0.5.tar.gz", hash = "sha256:13abf37382ea2ce6fb744d4dad67838eec857c9f4f57009891805e0b5e123594"}, ] [package.extras] @@ -5152,30 +5157,30 @@ files = [ [[package]] name = "werkzeug" -version = "2.2.3" +version = "2.3.7" description = "The comprehensive WSGI web application library." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Werkzeug-2.2.3-py3-none-any.whl", hash = "sha256:56433961bc1f12533306c624f3be5e744389ac61d722175d543e1751285da612"}, - {file = "Werkzeug-2.2.3.tar.gz", hash = "sha256:2e1ccc9417d4da358b9de6f174e3ac094391ea1d4fbef2d667865d819dfd0afe"}, + {file = "werkzeug-2.3.7-py3-none-any.whl", hash = "sha256:effc12dba7f3bd72e605ce49807bbe692bd729c3bb122a3b91747a6ae77df528"}, + {file = "werkzeug-2.3.7.tar.gz", hash = "sha256:2b8c0e447b4b9dbcc85dd97b6eeb4dcbaf6c8b6c3be0bd654e25553e0a2157d8"}, ] [package.dependencies] MarkupSafe = ">=2.1.1" [package.extras] -watchdog = ["watchdog"] +watchdog = ["watchdog (>=2.3)"] [[package]] name = "widgetsnbextension" -version = "4.0.8" +version = "4.0.9" description = "Jupyter interactive widgets for Jupyter Notebook" optional = false python-versions = ">=3.7" files = [ - {file = "widgetsnbextension-4.0.8-py3-none-any.whl", hash = "sha256:2e37f0ce9da11651056280c7efe96f2db052fe8fc269508e3724f5cbd6c93018"}, - {file = "widgetsnbextension-4.0.8.tar.gz", hash = "sha256:9ec291ba87c2dfad42c3d5b6f68713fa18be1acd7476569516b2431682315c17"}, + {file = "widgetsnbextension-4.0.9-py3-none-any.whl", hash = "sha256:91452ca8445beb805792f206e560c1769284267a30ceb1cec9f5bcc887d15175"}, + {file = "widgetsnbextension-4.0.9.tar.gz", hash = "sha256:3c1f5e46dc1166dfd40a42d685e6a51396fd34ff878742a3e47c6f0cc4a2a385"}, ] [[package]] @@ -5358,17 +5363,17 @@ zhinst-core = ">=23.02" [[package]] name = "zipp" -version = "3.16.2" +version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, - {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] From 357913bad49ac0610f8fc0763d896bb3c6e65902 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Mon, 25 Sep 2023 13:20:28 +0400 Subject: [PATCH 36/52] Comments + 1st fixes --- src/qibolab/couplers.py | 24 +++++------ src/qibolab/dummy.py | 24 +++-------- src/qibolab/instruments/dummy.py | 7 ++-- src/qibolab/instruments/zhinst.py | 21 ++++++---- src/qibolab/native.py | 14 ++----- src/qibolab/platform.py | 19 +++++---- src/qibolab/pulses.py | 69 ++++--------------------------- src/qibolab/qubits.py | 9 ++-- src/qibolab/serialize.py | 43 +++++++++++-------- tests/dummy_qrc/qblox.py | 5 +-- tests/dummy_qrc/qm.py | 5 +-- tests/dummy_qrc/rfsoc.py | 2 +- tests/dummy_qrc/zurich.py | 18 +------- tests/test_dummy.py | 2 +- tests/test_instruments_zhinst.py | 1 - 15 files changed, 94 insertions(+), 169 deletions(-) diff --git a/src/qibolab/couplers.py b/src/qibolab/couplers.py index 8b90e7259..0efe93b0e 100644 --- a/src/qibolab/couplers.py +++ b/src/qibolab/couplers.py @@ -2,9 +2,8 @@ from typing import Dict, Optional, Union from qibolab.channels import Channel -from qibolab.qubits import Qubit, QubitId -CouplerId = Union[str, int] +QubitId = Union[str, int] """Type for Coupler names.""" @@ -14,24 +13,21 @@ class Coupler: Coupler objects are instantiated by :class:`qibolab.platforms.platform.Platform` but they are passed to instrument designs in order to play pulses. - - Args: - name (int, str): Qubit number or name. - - flux (:class:`qibolab.platforms.utils.Channel`): Channel used to - send flux pulses to the qubit. - Other characterization parameters for the coupler, loaded from the runcard. """ - name: CouplerId - - # TODO: I think is not needed - frequency: int = 0 + name: QubitId + "Coupler number or name." sweetspot: float = 0 + "Coupler sweetspot to turn it on/off or off/on." flux: Optional[Channel] = None - qubits: Optional[Dict[QubitId, Qubit]] = field(default_factory=dict) + "flux (:class:`qibolab.platforms.utils.Channel`): Channel used to send flux pulses to the qubit." + + # TODO: With topology or conectivity + # qubits: Optional[Dict[QubitId, Qubit]] = field(default_factory=dict) + qubits: Dict = field(default_factory=dict) + "Qubits the coupler acts on" @property def channels(self): diff --git a/src/qibolab/dummy.py b/src/qibolab/dummy.py index 82d0b9645..b8bca53d7 100644 --- a/src/qibolab/dummy.py +++ b/src/qibolab/dummy.py @@ -4,7 +4,7 @@ from qibolab.instruments.dummy import DummyInstrument from qibolab.instruments.oscillator import LocalOscillator from qibolab.platform import Platform -from qibolab.serialize import load_couplers, load_qubits, load_settings, register_gates +from qibolab.serialize import load_qubits, load_settings NAME = "dummy" RUNCARD = { @@ -24,7 +24,7 @@ 4, ], "settings": {"sampling_rate": 1000000000, "relaxation_time": 0, "nshots": 1024}, - "topology": [[0, 2], [1, 2], [2, 3], [2, 4]], + "topology": {0: [0, 2], 1: [1, 2], 3: [2, 3], 4: [2, 4]}, "native_gates": { "single_qubit": { 0: { @@ -287,6 +287,9 @@ } +COUPLER_DISTRIBUTION = itertools.chain(range(0, 2), range(3, 5)) + + def create_dummy(): """Create a dummy platform using the dummy instrument.""" # Create dummy controller @@ -312,8 +315,7 @@ def create_dummy(): channels["readout"].attenuation = 0 channels["twpa"].local_oscillator = twpa_pump - qubits, pairs = load_qubits(RUNCARD) - couplers = load_couplers(RUNCARD) + qubits, couplers, pairs = load_qubits(RUNCARD) settings = load_settings(RUNCARD) # map channels to qubits @@ -327,20 +329,6 @@ def create_dummy(): for c, coupler in couplers.items(): coupler.flux = channels[f"flux_coupler-{c}"] - # FIXME: Call couplers by its name - # assign couplers to qubits - for c in itertools.chain(range(0, 2), range(3, 5)): - qubits[c].flux_coupler[c] = couplers[c].name - qubits[2].flux_coupler[c] = couplers[c].name - - # FIXME: Call couplers by its name - # assign qubits to couplers - for c in itertools.chain(range(0, 2), range(3, 5)): - couplers[c].qubits = [qubits[c].name] - couplers[c].qubits.append(qubits[2].name) - - qubits, pairs = register_gates(RUNCARD, qubits, pairs, couplers) - instruments = {instrument.name: instrument, twpa_pump.name: twpa_pump} instrument.sampling_rate = settings.sampling_rate * 1e-9 diff --git a/src/qibolab/instruments/dummy.py b/src/qibolab/instruments/dummy.py index d97c87318..8f4d86f7c 100644 --- a/src/qibolab/instruments/dummy.py +++ b/src/qibolab/instruments/dummy.py @@ -6,7 +6,6 @@ from qibo.config import log from qibolab import AcquisitionType, AveragingMode, ExecutionParameters -from qibolab.couplers import CouplerId from qibolab.instruments.abstract import Controller from qibolab.instruments.port import Port from qibolab.platform import Coupler, Qubit @@ -76,7 +75,7 @@ def get_values(self, options, sequence, shape): def play( self, qubits: Dict[QubitId, Qubit], - couplers: Dict[CouplerId, Coupler], + couplers: Dict[QubitId, Coupler], sequence: PulseSequence, options: ExecutionParameters, ): @@ -93,7 +92,7 @@ def play( def play_sequences( self, qubits: Dict[QubitId, Qubit], - couplers: Dict[CouplerId, Coupler], + couplers: Dict[QubitId, Coupler], sequences: List[PulseSequence], options: ExecutionParameters, ): @@ -112,7 +111,7 @@ def play_sequences( def sweep( self, qubits: Dict[QubitId, Qubit], - couplers: Dict[CouplerId, Coupler], + couplers: Dict[QubitId, Coupler], sequence: PulseSequence, options: ExecutionParameters, *sweepers: List[Sweeper], diff --git a/src/qibolab/instruments/zhinst.py b/src/qibolab/instruments/zhinst.py index afde5a5f3..3e79c1c16 100644 --- a/src/qibolab/instruments/zhinst.py +++ b/src/qibolab/instruments/zhinst.py @@ -17,9 +17,11 @@ from qibo.config import log from qibolab import AcquisitionType, AveragingMode, ExecutionParameters +from qibolab.couplers import Coupler from qibolab.instruments.abstract import INSTRUMENTS_DATA_FOLDER, Controller from qibolab.instruments.port import Port -from qibolab.pulses import CouplerFluxPulse, FluxPulse, PulseSequence, PulseType +from qibolab.pulses import FluxPulse, PulseSequence, PulseType +from qibolab.qubits import Qubit from qibolab.sweeper import Parameter # this env var just needs to be set @@ -549,10 +551,9 @@ def sequence_zh(self, sequence, qubits, couplers, sweepers): self.sequence_qibo = sequence # Fill the sequences with pulses according to their lines in temporal order - # TODO: Recheck couplers for pulse in sequence: - if isinstance(pulse, CouplerFluxPulse): - zhsequence[f"{pulse.type.name.lower()}{pulse.coupler}"].append(ZhPulse(pulse)) + if isinstance(pulse, FluxPulse) and isinstance(pulse.qubit, Coupler): + zhsequence[f"{pulse.type.name.lower()}{pulse.qubit}"].append(ZhPulse(pulse)) else: zhsequence[f"{pulse.type.name.lower()}{pulse.qubit}"].append(ZhPulse(pulse)) @@ -577,11 +578,16 @@ def nt_loop(sweeper): nt_loop(sweeper) for element in aux_list: if pulse == element.pulse: - # TODO: Recheck couplers if isinstance(aux_list[aux_list.index(element)], ZhPulse): - aux_list[aux_list.index(element)] = ZhSweeper(pulse, sweeper, qubits[pulse.qubit]) + if isinstance(pulse.qubit, Qubit): + aux_list[aux_list.index(element)] = ZhSweeper(pulse, sweeper, qubits[pulse.qubit]) + else: + aux_list[aux_list.index(element)] = ZhSweeper(pulse, sweeper, couplers[pulse.qubit]) elif isinstance(aux_list[aux_list.index(element)], ZhSweeper): - aux_list[aux_list.index(element)].add_sweeper(sweeper, qubits[pulse.qubit]) + if isinstance(pulse.qubit, Qubit): + aux_list[aux_list.index(element)].add_sweeper(sweeper, qubits[pulse.qubit]) + else: + aux_list[aux_list.index(element)].add_sweeper(sweeper, couplers[pulse.qubit]) if sweeper.parameter.name in SWEEPER_BIAS: for qubit in sweeper.qubits: @@ -594,7 +600,6 @@ def nt_loop(sweeper): for element in aux_list: if pulse == element.pulse: if isinstance(aux_list[aux_list.index(element)], ZhPulse): - # TODO: Recheck couplers aux_list.insert( aux_list.index(element), ZhSweeperLine(sweeper, pulse.qubit, sequence), diff --git a/src/qibolab/native.py b/src/qibolab/native.py index 980a0e1c1..66d230c92 100644 --- a/src/qibolab/native.py +++ b/src/qibolab/native.py @@ -6,13 +6,7 @@ from qibo import gates from qibo.config import raise_error -from qibolab.pulses import ( - CouplerFluxPulse, - FluxPulse, - PulseConstructor, - PulseSequence, - PulseType, -) +from qibolab.pulses import FluxPulse, PulseConstructor, PulseSequence, PulseType class NativeType(Flag): @@ -150,7 +144,7 @@ def from_dict(cls, pulse, coupler): name (str): Name of the native gate (dictionary key). pulse (dict): Dictionary containing the parameters of the pulse implementing the gate, as loaded from the runcard. - qubits (:class:`qibolab.platforms.abstract.Qubit`): Qubit that the + coupler (:class:`qibolab.platforms.abstract.Coupler`): Coupler that the pulse is acting on """ kwargs = pulse.copy() @@ -179,13 +173,13 @@ def pulse(self, start): Returns: A :class:`qibolab.pulses.FluxPulse` with the pulse parameters of the gate. """ - return CouplerFluxPulse( + return FluxPulse( start + self.relative_start, self.duration, self.amplitude, self.shape, channel=self.coupler.flux.name, - coupler=self.coupler.name, + qubit=self.coupler.name, ) diff --git a/src/qibolab/platform.py b/src/qibolab/platform.py index e3f96adb1..6be867301 100644 --- a/src/qibolab/platform.py +++ b/src/qibolab/platform.py @@ -8,7 +8,7 @@ import networkx as nx from qibo.config import log, raise_error -from qibolab.couplers import Coupler, CouplerId +from qibolab.couplers import Coupler from qibolab.execution_parameters import ExecutionParameters from qibolab.instruments.abstract import Controller, Instrument, InstrumentId from qibolab.native import NativeType @@ -18,7 +18,7 @@ InstrumentMap = Dict[InstrumentId, Instrument] QubitMap = Dict[QubitId, Qubit] -CouplerMap = Dict[CouplerId, Coupler] +CouplerMap = Dict[QubitId, Coupler] QubitPairMap = Dict[QubitPairId, QubitPair] @@ -269,7 +269,7 @@ def _execute(self, method, sequences, options, **kwargs): for instrument in self.instruments.values(): if isinstance(instrument, Controller): - if self.couplers: + if self.couplers is not None: new_result = getattr(instrument, method)(self.qubits, self.couplers, sequences, options) else: new_result = getattr(instrument, method)(self.qubits, sequences, options) @@ -347,7 +347,7 @@ def sweep(self, sequence: PulseSequence, options: ExecutionParameters, *sweepers result = {} for instrument in self.instruments.values(): if isinstance(instrument, Controller): - if self.couplers: + if self.couplers is not None: new_result = instrument.sweep(self.qubits, self.couplers, sequence, options, *sweepers) else: new_result = instrument.sweep(self.qubits, sequence, options, *sweepers) @@ -385,12 +385,13 @@ def get_coupler(self, coupler): except KeyError: return list(self.couplers.keys())[coupler] - def get_coupler_pair(self, qubits): + def get_coupler_pair(self, qubit_pair): try: - for coupler in self.couplers.values(): - # I add this as a subset as it may appear on the future - if set(qubits).issubset(coupler.qubits): - return coupler.name + return qubit_pair.coupler.name + # for coupler in self.couplers.values(): + # # I add this as a subset as it may appear on the future + # if set(qubits).issubset(coupler.qubits): + # return coupler.name except AttributeError: return None diff --git a/src/qibolab/pulses.py b/src/qibolab/pulses.py index 6ab9a913c..7bc776b57 100644 --- a/src/qibolab/pulses.py +++ b/src/qibolab/pulses.py @@ -7,6 +7,7 @@ from qibo.config import log from scipy.signal import lfilter +from qibolab.couplers import Coupler from qibolab.symbolic import intSymbolicExpression as se_int @@ -21,7 +22,6 @@ class PulseType(Enum): READOUT = "ro" DRIVE = "qd" FLUX = "qf" - COUPLERFLUX = "cf" class Waveform: @@ -635,7 +635,7 @@ class Pulse: See :py:mod:`qibolab.pulses` for list of available shapes. channel (int | str): the channel on which the pulse should be synthesised. type (PulseType | str): {'ro', 'qd', 'qf'} type of pulse {ReadOut, Qubit Drive, Qubit Flux} - qubit (int): qubit associated with the pulse + qubit (int): qubit or coupler associated with the pulse Example: .. code-block:: python @@ -682,7 +682,6 @@ def __init__( channel, type=PulseType.DRIVE, qubit=0, - coupler=None, ): # def __init__(self, start:int | se_int, duration:int | se_int, amplitude:float, frequency:int, relative_phase:float, shape: PulseShape | str, # channel: int | str, type: PulseType | str = PulseType.DRIVE, qubit: int | str = 0): @@ -698,7 +697,6 @@ def __init__( # self._channel: int | str = None self._type: PulseType = None self._qubit = None - self._coupler = None # self._qubit: int | str = None self._id: int = Pulse.count Pulse.count += 1 @@ -712,7 +710,6 @@ def __init__( self.channel = channel self.type = type self.qubit = qubit - self.coupler = coupler self._if = 0 @@ -1404,58 +1401,10 @@ def modulated_waveforms(self): # -> tuple[Waveform, Waveform]: @property def serial(self): - return f"FluxPulse({self.start}, {self.duration}, {format(self.amplitude, '.6f').rstrip('0').rstrip('.')}, {self.shape}, {self.channel}, {self.qubit})" - - -class CouplerFluxPulse(Pulse): - """Describes a coupler flux pulse. - - Flux pulses have frequency and relative_phase equal to 0. Their i and q components are equal. - See :class:`qibolab.pulses.Pulse` for argument desciption. - """ - - def __init__(self, start, duration, amplitude, shape, channel, coupler=0): - # def __init__(self, start:int | se_int, duration:int | se_int, amplitude:float, frequency:int, relative_phase:float, shape: PulseShape | str, - # channel: int | str, coupler: int | str = 0): - super().__init__( - start, - duration, - amplitude, - 0, - 0, - shape, - channel, - type=PulseType.COUPLERFLUX, - coupler=coupler, - ) - - @property - def envelope_waveform_i(self) -> Waveform: - return self._shape.envelope_waveform_i - - @property - def envelope_waveform_q(self) -> Waveform: - return self._shape.envelope_waveform_i - - @property - def envelope_waveforms(self): # -> tuple[Waveform, Waveform]: - return (self._shape.envelope_waveform_i, self._shape.envelope_waveform_i) - - @property - def modulated_waveform_i(self) -> Waveform: - return self._shape.envelope_waveform_i - - @property - def modulated_waveform_q(self) -> Waveform: - return self._shape.envelope_waveform_i - - @property - def modulated_waveforms(self): # -> tuple[Waveform, Waveform]: - return (self._shape.envelope_waveform_i, self._shape.envelope_waveform_i) - - @property - def serial(self): - return f"CouplerFluxPulse({self.start}, {self.duration}, {format(self.amplitude, '.6f').rstrip('0').rstrip('.')}, {self.shape}, {self.channel}, {self.coupler})" + if isinstance(self.qubit, Coupler): + return f"Coupler_FluxPulse({self.start}, {self.duration}, {format(self.amplitude, '.6f').rstrip('0').rstrip('.')}, {self.shape}, {self.channel}, {self.qubit})" + else: + return f"FluxPulse({self.start}, {self.duration}, {format(self.amplitude, '.6f').rstrip('0').rstrip('.')}, {self.shape}, {self.channel}, {self.qubit})" class SplitPulse(Pulse): @@ -1860,7 +1809,7 @@ def get_qubit_pulses(self, *qubits): new_pc = PulseSequence() for pulse in self.pulses: - if not isinstance(pulse, CouplerFluxPulse): + if not "coupler" in pulse.channel: if pulse.qubit in qubits: new_pc.add(pulse) return new_pc @@ -1870,8 +1819,8 @@ def get_coupler_pulses(self, *couplers): new_pc = PulseSequence() for pulse in self.pulses: - if isinstance(pulse, CouplerFluxPulse): - if pulse.coupler in couplers: + if "coupler" in pulse.channel: + if pulse.qubit in couplers: new_pc.add(pulse) return new_pc diff --git a/src/qibolab/qubits.py b/src/qibolab/qubits.py index 5f69c158e..d62587c05 100644 --- a/src/qibolab/qubits.py +++ b/src/qibolab/qubits.py @@ -1,7 +1,8 @@ from dataclasses import dataclass, field, fields -from typing import Dict, List, Optional, Tuple, Union +from typing import List, Optional, Tuple, Union from qibolab.channels import Channel +from qibolab.couplers import Coupler from qibolab.native import SingleQubitNatives, TwoQubitNatives QubitId = Union[str, int] @@ -11,7 +12,7 @@ """Names of channels that belong to a qubit. Not all channels are required to operate a qubit. """ -EXCLUDED_FIELDS = CHANNEL_NAMES + ("name", "flux_coupler", "native_gates") +EXCLUDED_FIELDS = CHANNEL_NAMES + ("name", "native_gates") """Qubit dataclass fields that are excluded by the ``characterization`` property.""" @@ -71,7 +72,6 @@ class Qubit: twpa: Optional[Channel] = None drive: Optional[Channel] = None flux: Optional[Channel] = None - flux_coupler: Optional[Dict[QubitId, "Qubit"]] = field(default_factory=dict) classifiers_hpars: dict = field(default_factory=dict) native_gates: SingleQubitNatives = field(default_factory=SingleQubitNatives) @@ -106,4 +106,7 @@ class QubitPair: qubit1: Qubit qubit2: Qubit + + coupler: Optional[Coupler] + native_gates: TwoQubitNatives = field(default_factory=TwoQubitNatives) diff --git a/src/qibolab/serialize.py b/src/qibolab/serialize.py index 41c8211ce..668c5855a 100644 --- a/src/qibolab/serialize.py +++ b/src/qibolab/serialize.py @@ -26,7 +26,7 @@ def load_settings(runcard: dict) -> Settings: return Settings(**runcard["settings"]) -def load_qubits(runcard: dict) -> Tuple[QubitMap, QubitPairMap]: +def load_qubits(runcard: dict) -> Tuple[QubitMap, CouplerMap, QubitPairMap]: """Load qubits and pairs from the runcard. Uses the native gate and characterization sections of the runcard @@ -35,25 +35,34 @@ def load_qubits(runcard: dict) -> Tuple[QubitMap, QubitPairMap]: """ qubits = {q: Qubit(q, **char) for q, char in runcard["characterization"]["single_qubit"].items()} + couplers = None + if "coupler" in runcard["characterization"]: + couplers = {c: Coupler(c, **char) for c, char in runcard["characterization"]["coupler"].items()} + + COUPLER_DISTRIBUTION = list(runcard["topology"].keys()) + QUBIT_DISTRIBUTION = list(runcard["topology"].values()) + pairs = {} - for pair in runcard["topology"]: + coupler = None + for pair in QUBIT_DISTRIBUTION: + if couplers: + coupler = couplers[COUPLER_DISTRIBUTION[QUBIT_DISTRIBUTION.index(pair)]] pair = tuple(sorted(pair)) - pairs[pair] = QubitPair(qubits[pair[0]], qubits[pair[1]]) - - return qubits, pairs + pairs[pair] = QubitPair(qubits[pair[0]], qubits[pair[1]], coupler) + # # assign couplers to qubits_pairs + # for c in COUPLER_DISTRIBUTION: + # qubits[c].flux_coupler[c] = couplers[c].name + # qubits[2].flux_coupler[c] = couplers[c].name -def load_couplers(runcard: dict) -> CouplerMap: - """Load couplers and pairs from the runcard. + # # assign qubits_pairs to couplers + # for c in COUPLER_DISTRIBUTION: + # couplers[c].qubits = [qubits[c].name] + # couplers[c].qubits.append(qubits[2].name) - Uses the native gate and characterization sections of the runcard - to parse the :class:`qibolab.qubits.Qubit` and :class:`qibolab.qubits.QubitPair` - and the the :class:`qibolab.coupler.Coupler` - objects. - """ - couplers = {c: Coupler(c, **char) for c, char in runcard["characterization"]["coupler"].items()} + qubits, pairs = register_gates(runcard, qubits, pairs, couplers) - return couplers + return qubits, couplers, pairs # This creates the compiler error @@ -92,11 +101,9 @@ def dump_qubits(qubits: QubitMap, pairs: QubitPairMap, couplers: CouplerMap = No # add qubit characterization section characterization = { "single_qubit": {q: qubit.characterization for q, qubit in qubits.items()}, - "coupler": {}, } - if couplers: - for coupler in couplers.values(): - characterization["coupler"][coupler.name] = 1 + if couplers is not None: + characterization["coupler"] = {c.name: {"sweetspot": c.sweetspot} for c in couplers.values()} return { "native_gates": native_gates, diff --git a/tests/dummy_qrc/qblox.py b/tests/dummy_qrc/qblox.py index 606315baa..d0c42f17e 100644 --- a/tests/dummy_qrc/qblox.py +++ b/tests/dummy_qrc/qblox.py @@ -26,7 +26,7 @@ ) from qibolab.instruments.rohde_schwarz import SGS100A from qibolab.platform import Platform -from qibolab.serialize import load_qubits, load_runcard, load_settings, register_gates +from qibolab.serialize import load_qubits, load_runcard, load_settings NAME = "qblox" ADDRESS = "192.168.0.6" @@ -205,7 +205,7 @@ def instantiate_module(modules, cls, name, address, settings): # create qubit objects runcard = load_runcard(runcard_path) - qubits, pairs = load_qubits(runcard) + qubits, couplers, pairs = load_qubits(runcard) # assign channels to qubits for q in [0, 1]: @@ -229,7 +229,6 @@ def instantiate_module(modules, cls, name, address, settings): for q in range(5): qubits[q].flux.max_bias = 2.5 - qubits, pairs = register_gates(runcard, qubits, pairs) instruments = {controller.name: controller, twpa_pump.name: twpa_pump} settings = load_settings(runcard) return Platform("qblox", qubits, pairs, instruments, settings, resonator_type="2D") diff --git a/tests/dummy_qrc/qm.py b/tests/dummy_qrc/qm.py index 847916bfe..98acd3ff5 100644 --- a/tests/dummy_qrc/qm.py +++ b/tests/dummy_qrc/qm.py @@ -4,7 +4,7 @@ from qibolab.instruments.oscillator import LocalOscillator from qibolab.instruments.qm import QMSim from qibolab.platform import Platform -from qibolab.serialize import load_qubits, load_runcard, load_settings, register_gates +from qibolab.serialize import load_qubits, load_runcard, load_settings RUNCARD = pathlib.Path(__file__).parent / "qm.yml" @@ -68,7 +68,7 @@ def create(runcard_path=RUNCARD): # create qubit objects runcard = load_runcard(runcard_path) - qubits, pairs = load_qubits(runcard) + qubits, couplers, pairs = load_qubits(runcard) # assign channels to qubits for q in [0, 1]: @@ -92,7 +92,6 @@ def create(runcard_path=RUNCARD): for q in range(5): qubits[q].flux.max_bias = 0.2 - qubits, pairs = register_gates(runcard, qubits, pairs) instruments = {controller.name: controller} instruments.update({lo.name: lo for lo in local_oscillators}) settings = load_settings(runcard) diff --git a/tests/dummy_qrc/rfsoc.py b/tests/dummy_qrc/rfsoc.py index 79f6bd67c..c309cda00 100644 --- a/tests/dummy_qrc/rfsoc.py +++ b/tests/dummy_qrc/rfsoc.py @@ -5,7 +5,7 @@ from qibolab.instruments.rfsoc import RFSoC from qibolab.instruments.rohde_schwarz import SGS100A from qibolab.platform import Platform -from qibolab.serialize import load_qubits, load_runcard, load_settings, register_gates +from qibolab.serialize import load_qubits, load_runcard, load_settings RUNCARD = pathlib.Path(__file__).parent / "rfsoc.yml" diff --git a/tests/dummy_qrc/zurich.py b/tests/dummy_qrc/zurich.py index e9153aedc..7576f5819 100644 --- a/tests/dummy_qrc/zurich.py +++ b/tests/dummy_qrc/zurich.py @@ -7,13 +7,7 @@ from qibolab.instruments.oscillator import LocalOscillator from qibolab.instruments.zhinst import Zurich from qibolab.platform import Platform -from qibolab.serialize import ( - load_couplers, - load_qubits, - load_runcard, - load_settings, - register_gates, -) +from qibolab.serialize import load_qubits, load_runcard, load_settings RUNCARD = pathlib.Path(__file__).parent / "zurich.yml" @@ -138,8 +132,7 @@ def create(runcard_path=RUNCARD): # create qubit objects from runcard runcard = load_runcard(runcard_path) - qubits, pairs = load_qubits(runcard) - couplers = load_couplers(runcard) + qubits, couplers, pairs = load_qubits(runcard) settings = load_settings(runcard) # assign channels to qubits and sweetspots(operating points) @@ -158,13 +151,6 @@ def create(runcard_path=RUNCARD): # Is this needed ? # channels[f"L4-{11 + c}"].qubit = qubits[f"c{c}"] - # FIXME: Call couplers by its name - # assign couplers to qubits - for c in itertools.chain(range(0, 2), range(3, 5)): - qubits[c].flux_coupler[c] = couplers[c].name - qubits[2].flux_coupler[c] = couplers[c].name - - qubits, pairs = register_gates(runcard, qubits, pairs, couplers) instruments = {controller.name: controller} instruments.update({lo.name: lo for lo in local_oscillators}) settings = load_settings(runcard) diff --git a/tests/test_dummy.py b/tests/test_dummy.py index 33038556f..a9c060b3a 100644 --- a/tests/test_dummy.py +++ b/tests/test_dummy.py @@ -37,7 +37,7 @@ def test_dummy_execute_pulse_sequence_couplers(): ) sequence.add(cz.get_qubit_pulses(ordered_pair[0])) sequence.add(cz.get_qubit_pulses(ordered_pair[1])) - sequence.add(cz.get_coupler_pulses(platform.get_coupler_pair(ordered_pair))) + sequence.add(cz.get_coupler_pulses(platform.get_coupler_pair(platform.pairs[ordered_pair]))) sequence.add(platform.create_qubit_readout_pulse(0, 40)) sequence.add(platform.create_qubit_readout_pulse(2, 40)) options = ExecutionParameters(nshots=None) diff --git a/tests/test_instruments_zhinst.py b/tests/test_instruments_zhinst.py index 5622cd6f7..75bdc8278 100644 --- a/tests/test_instruments_zhinst.py +++ b/tests/test_instruments_zhinst.py @@ -6,7 +6,6 @@ from qibolab.pulses import ( IIR, SNZ, - CouplerFluxPulse, Drag, FluxPulse, Gaussian, From fd63acf4898be986cc44090719a352e9a30ed494 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 26 Sep 2023 18:23:33 +0400 Subject: [PATCH 37/52] CouplerFluxPulse is back --- src/qibolab/instruments/zhinst.py | 18 +++++----- src/qibolab/native.py | 12 +++++-- src/qibolab/pulses.py | 55 +++++++++++++++++++++++++++++-- src/qibolab/serialize.py | 31 ++++++++--------- tests/dummy_qrc/rfsoc.py | 3 +- tests/dummy_qrc/zurich.yml | 2 +- tests/test_instruments_zhinst.py | 7 ++-- 7 files changed, 89 insertions(+), 39 deletions(-) diff --git a/src/qibolab/instruments/zhinst.py b/src/qibolab/instruments/zhinst.py index 3e79c1c16..b622cb554 100644 --- a/src/qibolab/instruments/zhinst.py +++ b/src/qibolab/instruments/zhinst.py @@ -17,11 +17,9 @@ from qibo.config import log from qibolab import AcquisitionType, AveragingMode, ExecutionParameters -from qibolab.couplers import Coupler from qibolab.instruments.abstract import INSTRUMENTS_DATA_FOLDER, Controller from qibolab.instruments.port import Port -from qibolab.pulses import FluxPulse, PulseSequence, PulseType -from qibolab.qubits import Qubit +from qibolab.pulses import CouplerFluxPulse, FluxPulse, PulseSequence, PulseType from qibolab.sweeper import Parameter # this env var just needs to be set @@ -552,7 +550,7 @@ def sequence_zh(self, sequence, qubits, couplers, sweepers): # Fill the sequences with pulses according to their lines in temporal order for pulse in sequence: - if isinstance(pulse, FluxPulse) and isinstance(pulse.qubit, Coupler): + if isinstance(pulse, CouplerFluxPulse): zhsequence[f"{pulse.type.name.lower()}{pulse.qubit}"].append(ZhPulse(pulse)) else: zhsequence[f"{pulse.type.name.lower()}{pulse.qubit}"].append(ZhPulse(pulse)) @@ -579,15 +577,15 @@ def nt_loop(sweeper): for element in aux_list: if pulse == element.pulse: if isinstance(aux_list[aux_list.index(element)], ZhPulse): - if isinstance(pulse.qubit, Qubit): - aux_list[aux_list.index(element)] = ZhSweeper(pulse, sweeper, qubits[pulse.qubit]) - else: + if isinstance(pulse, CouplerFluxPulse): aux_list[aux_list.index(element)] = ZhSweeper(pulse, sweeper, couplers[pulse.qubit]) - elif isinstance(aux_list[aux_list.index(element)], ZhSweeper): - if isinstance(pulse.qubit, Qubit): - aux_list[aux_list.index(element)].add_sweeper(sweeper, qubits[pulse.qubit]) else: + aux_list[aux_list.index(element)] = ZhSweeper(pulse, sweeper, qubits[pulse.qubit]) + elif isinstance(aux_list[aux_list.index(element)], ZhSweeper): + if isinstance(pulse, CouplerFluxPulse): aux_list[aux_list.index(element)].add_sweeper(sweeper, couplers[pulse.qubit]) + else: + aux_list[aux_list.index(element)].add_sweeper(sweeper, qubits[pulse.qubit]) if sweeper.parameter.name in SWEEPER_BIAS: for qubit in sweeper.qubits: diff --git a/src/qibolab/native.py b/src/qibolab/native.py index 66d230c92..c5de13cb7 100644 --- a/src/qibolab/native.py +++ b/src/qibolab/native.py @@ -6,7 +6,13 @@ from qibo import gates from qibo.config import raise_error -from qibolab.pulses import FluxPulse, PulseConstructor, PulseSequence, PulseType +from qibolab.pulses import ( + CouplerFluxPulse, + FluxPulse, + PulseConstructor, + PulseSequence, + PulseType, +) class NativeType(Flag): @@ -159,7 +165,7 @@ def raw(self): "duration": self.duration, "amplitude": self.amplitude, "shape": self.shape, - "coupler": self.coupler, + "qubit": self.coupler, "relative_start": self.relative_start, }, ) @@ -173,7 +179,7 @@ def pulse(self, start): Returns: A :class:`qibolab.pulses.FluxPulse` with the pulse parameters of the gate. """ - return FluxPulse( + return CouplerFluxPulse( start + self.relative_start, self.duration, self.amplitude, diff --git a/src/qibolab/pulses.py b/src/qibolab/pulses.py index 7bc776b57..0b1404cf1 100644 --- a/src/qibolab/pulses.py +++ b/src/qibolab/pulses.py @@ -22,6 +22,7 @@ class PulseType(Enum): READOUT = "ro" DRIVE = "qd" FLUX = "qf" + COUPLERFLUX = "cf" class Waveform: @@ -1407,6 +1408,56 @@ def serial(self): return f"FluxPulse({self.start}, {self.duration}, {format(self.amplitude, '.6f').rstrip('0').rstrip('.')}, {self.shape}, {self.channel}, {self.qubit})" +class CouplerFluxPulse(Pulse): + """Describes a coupler flux pulse. + Flux pulses have frequency and relative_phase equal to 0. Their i and q components are equal. + See :class:`qibolab.pulses.Pulse` for argument desciption. + """ + + def __init__(self, start, duration, amplitude, shape, channel, qubit=0): + # def __init__(self, start:int | se_int, duration:int | se_int, amplitude:float, frequency:int, relative_phase:float, shape: PulseShape | str, + # channel: int | str, coupler: int | str = 0): + super().__init__( + start, + duration, + amplitude, + 0, + 0, + shape, + channel, + type=PulseType.COUPLERFLUX, + qubit=qubit, + ) + + @property + def envelope_waveform_i(self) -> Waveform: + return self._shape.envelope_waveform_i + + @property + def envelope_waveform_q(self) -> Waveform: + return self._shape.envelope_waveform_i + + @property + def envelope_waveforms(self): # -> tuple[Waveform, Waveform]: + return (self._shape.envelope_waveform_i, self._shape.envelope_waveform_i) + + @property + def modulated_waveform_i(self) -> Waveform: + return self._shape.envelope_waveform_i + + @property + def modulated_waveform_q(self) -> Waveform: + return self._shape.envelope_waveform_i + + @property + def modulated_waveforms(self): # -> tuple[Waveform, Waveform]: + return (self._shape.envelope_waveform_i, self._shape.envelope_waveform_i) + + @property + def serial(self): + return f"CouplerFluxPulse({self.start}, {self.duration}, {format(self.amplitude, '.6f').rstrip('0').rstrip('.')}, {self.shape}, {self.channel}, {self.qubit})" + + class SplitPulse(Pulse): """A supporting class to represent sections or slices of a pulse.""" @@ -1809,7 +1860,7 @@ def get_qubit_pulses(self, *qubits): new_pc = PulseSequence() for pulse in self.pulses: - if not "coupler" in pulse.channel: + if not isinstance(pulse, CouplerFluxPulse): if pulse.qubit in qubits: new_pc.add(pulse) return new_pc @@ -1819,7 +1870,7 @@ def get_coupler_pulses(self, *couplers): new_pc = PulseSequence() for pulse in self.pulses: - if "coupler" in pulse.channel: + if isinstance(pulse, CouplerFluxPulse): if pulse.qubit in couplers: new_pc.add(pulse) return new_pc diff --git a/src/qibolab/serialize.py b/src/qibolab/serialize.py index 668c5855a..f767086dd 100644 --- a/src/qibolab/serialize.py +++ b/src/qibolab/serialize.py @@ -36,29 +36,22 @@ def load_qubits(runcard: dict) -> Tuple[QubitMap, CouplerMap, QubitPairMap]: qubits = {q: Qubit(q, **char) for q, char in runcard["characterization"]["single_qubit"].items()} couplers = None + pairs = {} if "coupler" in runcard["characterization"]: couplers = {c: Coupler(c, **char) for c, char in runcard["characterization"]["coupler"].items()} - COUPLER_DISTRIBUTION = list(runcard["topology"].keys()) - QUBIT_DISTRIBUTION = list(runcard["topology"].values()) + COUPLER_DISTRIBUTION = list(runcard["topology"].keys()) + QUBIT_DISTRIBUTION = list(runcard["topology"].values()) - pairs = {} - coupler = None - for pair in QUBIT_DISTRIBUTION: - if couplers: + coupler = None + for pair in QUBIT_DISTRIBUTION: coupler = couplers[COUPLER_DISTRIBUTION[QUBIT_DISTRIBUTION.index(pair)]] - pair = tuple(sorted(pair)) - pairs[pair] = QubitPair(qubits[pair[0]], qubits[pair[1]], coupler) - - # # assign couplers to qubits_pairs - # for c in COUPLER_DISTRIBUTION: - # qubits[c].flux_coupler[c] = couplers[c].name - # qubits[2].flux_coupler[c] = couplers[c].name - - # # assign qubits_pairs to couplers - # for c in COUPLER_DISTRIBUTION: - # couplers[c].qubits = [qubits[c].name] - # couplers[c].qubits.append(qubits[2].name) + pair = tuple(sorted(pair)) + pairs[pair] = QubitPair(qubits[pair[0]], qubits[pair[1]], coupler) + else: + for pair in runcard["topology"]: + pair = tuple(sorted(pair)) + pairs[pair] = QubitPair(qubits[pair[0]], qubits[pair[1]], None) qubits, pairs = register_gates(runcard, qubits, pairs, couplers) @@ -120,6 +113,7 @@ def dump_runcard(platform: Platform, path: Path): platform (qibolab.platform.Platform): The platform to be serialized. path (pathlib.Path): Path that the yaml file will be saved. """ + settings = { "nqubits": platform.nqubits, "qubits": list(platform.qubits), @@ -128,6 +122,7 @@ def dump_runcard(platform: Platform, path: Path): } if platform.couplers: settings["couplers"] = list(platform.couplers) + settings["topology"] = {coupler: list(pair) for pair, coupler in zip(platform.pairs, platform.couplers)} settings.update(dump_qubits(platform.qubits, platform.pairs, platform.couplers)) path.write_text(yaml.dump(settings, sort_keys=False, indent=4, default_flow_style=None)) diff --git a/tests/dummy_qrc/rfsoc.py b/tests/dummy_qrc/rfsoc.py index c309cda00..3a065ba3b 100644 --- a/tests/dummy_qrc/rfsoc.py +++ b/tests/dummy_qrc/rfsoc.py @@ -33,7 +33,7 @@ def create(runcard_path=RUNCARD): channels["L3-18_ro"].local_oscillator = lo_era runcard = load_runcard(runcard_path) - qubits, pairs = load_qubits(runcard) + qubits, couplers, pairs = load_qubits(runcard) # assign channels to qubits qubits[0].readout = channels["L3-18_ro"] @@ -41,7 +41,6 @@ def create(runcard_path=RUNCARD): qubits[0].drive = channels["L3-18_qd"] qubits[0].flux = channels["L2-22_qf"] - qubits, pairs = register_gates(runcard, qubits, pairs) instruments = {inst.name: inst for inst in [controller, lo_twpa, lo_era]} settings = load_settings(runcard) return Platform("rfsoc", qubits, pairs, instruments, settings, resonator_type="3D") diff --git a/tests/dummy_qrc/zurich.yml b/tests/dummy_qrc/zurich.yml index ed3cfd1ab..df5a0156a 100644 --- a/tests/dummy_qrc/zurich.yml +++ b/tests/dummy_qrc/zurich.yml @@ -1,7 +1,7 @@ nqubits: 5 qubits: [0, 1, 2, 3, 4] couplers: [0, 1, 3, 4] -topology: [[0, 2], [1, 2], [2, 3], [2, 4]] +topology: {0: [0, 2], 1: [1, 2], 3: [2, 3], 4: [2, 4]} settings: nshots: 4096 sampling_rate: 2.e+9 diff --git a/tests/test_instruments_zhinst.py b/tests/test_instruments_zhinst.py index 75bdc8278..0f6728e84 100644 --- a/tests/test_instruments_zhinst.py +++ b/tests/test_instruments_zhinst.py @@ -6,6 +6,7 @@ from qibolab.pulses import ( IIR, SNZ, + CouplerFluxPulse, Drag, FluxPulse, Gaussian, @@ -97,7 +98,7 @@ def test_zhsequence(dummy_qrc): def test_zhsequence_couplers(dummy_qrc): qd_pulse = Pulse(0, 40, 0.05, int(3e9), 0.0, Rectangular(), "ch0", qubit=0) ro_pulse = ReadoutPulse(0, 40, 0.05, int(3e9), 0.0, Rectangular(), "ch1", qubit=0) - qc_pulse = CouplerFluxPulse(0, 40, 0.05, Rectangular(), "ch_c0", coupler=3) + qc_pulse = CouplerFluxPulse(0, 40, 0.05, Rectangular(), "ch_c0", qubit=3) sequence = PulseSequence() sequence.add(qd_pulse) sequence.add(ro_pulse) @@ -248,7 +249,7 @@ def test_experiment_execute_pulse_sequence_coupler(dummy_qrc): amplitude=1, shape=Rectangular(), channel=platform.couplers[c].flux.name, - coupler=c, + qubit=c, ) sequence.add(cf_pulses[c]) @@ -418,7 +419,7 @@ def test_experiment_sweep_single_coupler(dummy_qrc, parameter1): amplitude=1, shape=Rectangular(), channel=platform.couplers[c].flux.name, - coupler=c, + qubit=c, ) sequence.add(cf_pulses[c]) From 0225704017c400b2eb629c6080529dac1c7b8a91 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 26 Sep 2023 14:32:26 +0000 Subject: [PATCH 38/52] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/qibolab/serialize.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/qibolab/serialize.py b/src/qibolab/serialize.py index b423e899d..4ee355285 100644 --- a/src/qibolab/serialize.py +++ b/src/qibolab/serialize.py @@ -12,7 +12,14 @@ from qibolab.couplers import Coupler from qibolab.native import SingleQubitNatives, TwoQubitNatives -from qibolab.platform import CouplerMap, InstrumentMap, Platform, QubitMap, QubitPairMap, Settings +from qibolab.platform import ( + CouplerMap, + InstrumentMap, + Platform, + QubitMap, + QubitPairMap, + Settings, +) from qibolab.qubits import Qubit, QubitPair @@ -86,6 +93,7 @@ def load_instrument_settings(runcard: dict, instruments: InstrumentMap) -> Instr instruments[name].setup(**settings) return instruments + def dump_qubits(qubits: QubitMap, pairs: QubitPairMap, couplers: CouplerMap = None) -> dict: """Dump qubit and pair objects to a dictionary following the runcard format.""" native_gates = { From 6cf00b21d48dd1a040c5d17d164bd44c4fecf3e9 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Wed, 27 Sep 2023 16:58:17 +0400 Subject: [PATCH 39/52] comments --- src/qibolab/native.py | 8 ++---- src/qibolab/platform.py | 22 --------------- src/qibolab/pulses.py | 58 +++++----------------------------------- src/qibolab/qubits.py | 2 +- src/qibolab/serialize.py | 19 +++++++------ tests/test_dummy.py | 12 ++++----- 6 files changed, 27 insertions(+), 94 deletions(-) diff --git a/src/qibolab/native.py b/src/qibolab/native.py index c5de13cb7..61ee33fce 100644 --- a/src/qibolab/native.py +++ b/src/qibolab/native.py @@ -226,12 +226,8 @@ def from_dict(cls, name, sequence, qubits, couplers): pulse = pulse.copy() pulse_type = pulse.pop("type") if pulse_type == "coupler": - coupler = couplers[pulse.pop("coupler")] - duration = pulse["duration"] - amplitude = pulse["amplitude"] - shape = pulse["shape"] - relative_start = pulse["relative_start"] - coupler_pulses.append(CouplerPulse(duration, amplitude, shape, coupler, relative_start)) + pulse["coupler"] = couplers[pulse.pop("coupler")] + coupler_pulses.append(CouplerPulse(**pulse)) else: qubit = qubits[pulse.pop("qubit")] if pulse_type == "virtual_z": diff --git a/src/qibolab/platform.py b/src/qibolab/platform.py index 6be867301..dfe45e5a4 100644 --- a/src/qibolab/platform.py +++ b/src/qibolab/platform.py @@ -373,28 +373,6 @@ def get_qubit(self, qubit): except KeyError: return list(self.qubits.keys())[qubit] - # TODO: Similar for couplers (I think this won't be needed) - def get_coupler(self, coupler): - """Return the name of the physical coupler corresponding to a logical coupler. - - Temporary fix for the compiler to work for platforms where the couplers - are not named as 0, 1, 2, ... - """ - try: - return self.couplers[coupler].name - except KeyError: - return list(self.couplers.keys())[coupler] - - def get_coupler_pair(self, qubit_pair): - try: - return qubit_pair.coupler.name - # for coupler in self.couplers.values(): - # # I add this as a subset as it may appear on the future - # if set(qubits).issubset(coupler.qubits): - # return coupler.name - except AttributeError: - return None - def create_RX90_pulse(self, qubit, start=0, relative_phase=0): qubit = self.get_qubit(qubit) return self.qubits[qubit].native_gates.RX90.pulse(start, relative_phase) diff --git a/src/qibolab/pulses.py b/src/qibolab/pulses.py index 8a3427dbd..2ea67c2e5 100644 --- a/src/qibolab/pulses.py +++ b/src/qibolab/pulses.py @@ -7,7 +7,6 @@ from qibo.config import log from scipy.signal import lfilter -from qibolab.couplers import Coupler from qibolab.symbolic import intSymbolicExpression as se_int @@ -1361,6 +1360,8 @@ class FluxPulse(Pulse): See :class:`qibolab.pulses.Pulse` for argument desciption. """ + PULSE_TYPE = PulseType.FLUX + def __init__(self, start, duration, amplitude, shape, channel=0, qubit=0): # def __init__(self, start:int | se_int, duration:int | se_int, amplitude:float, frequency:int, relative_phase:float, shape: PulseShape | str, # channel: int | str, qubit: int | str = 0): @@ -1372,7 +1373,7 @@ def __init__(self, start, duration, amplitude, shape, channel=0, qubit=0): 0, shape, channel, - type=PulseType.FLUX, + type=self.PULSE_TYPE, qubit=qubit, ) @@ -1402,60 +1403,15 @@ def modulated_waveforms(self): # -> tuple[Waveform, Waveform]: @property def serial(self): - if isinstance(self.qubit, Coupler): - return f"Coupler_FluxPulse({self.start}, {self.duration}, {format(self.amplitude, '.6f').rstrip('0').rstrip('.')}, {self.shape}, {self.channel}, {self.qubit})" - else: - return f"FluxPulse({self.start}, {self.duration}, {format(self.amplitude, '.6f').rstrip('0').rstrip('.')}, {self.shape}, {self.channel}, {self.qubit})" + return f"{self.__class__.__name__}({self.start}, {self.duration}, {format(self.amplitude, '.6f').rstrip('0').rstrip('.')}, {self.shape}, {self.channel}, {self.qubit})" -class CouplerFluxPulse(Pulse): +class CouplerFluxPulse(FluxPulse): """Describes a coupler flux pulse. - Flux pulses have frequency and relative_phase equal to 0. Their i and q components are equal. - See :class:`qibolab.pulses.Pulse` for argument desciption. + See :class:`qibolab.pulses.FluxPulse` for argument desciption. """ - def __init__(self, start, duration, amplitude, shape, channel, qubit=0): - # def __init__(self, start:int | se_int, duration:int | se_int, amplitude:float, frequency:int, relative_phase:float, shape: PulseShape | str, - # channel: int | str, coupler: int | str = 0): - super().__init__( - start, - duration, - amplitude, - 0, - 0, - shape, - channel, - type=PulseType.COUPLERFLUX, - qubit=qubit, - ) - - @property - def envelope_waveform_i(self) -> Waveform: - return self._shape.envelope_waveform_i - - @property - def envelope_waveform_q(self) -> Waveform: - return self._shape.envelope_waveform_i - - @property - def envelope_waveforms(self): # -> tuple[Waveform, Waveform]: - return (self._shape.envelope_waveform_i, self._shape.envelope_waveform_i) - - @property - def modulated_waveform_i(self) -> Waveform: - return self._shape.envelope_waveform_i - - @property - def modulated_waveform_q(self) -> Waveform: - return self._shape.envelope_waveform_i - - @property - def modulated_waveforms(self): # -> tuple[Waveform, Waveform]: - return (self._shape.envelope_waveform_i, self._shape.envelope_waveform_i) - - @property - def serial(self): - return f"CouplerFluxPulse({self.start}, {self.duration}, {format(self.amplitude, '.6f').rstrip('0').rstrip('.')}, {self.shape}, {self.channel}, {self.qubit})" + PULSE_TYPE = PulseType.COUPLERFLUX class SplitPulse(Pulse): diff --git a/src/qibolab/qubits.py b/src/qibolab/qubits.py index d62587c05..e99b38457 100644 --- a/src/qibolab/qubits.py +++ b/src/qibolab/qubits.py @@ -107,6 +107,6 @@ class QubitPair: qubit1: Qubit qubit2: Qubit - coupler: Optional[Coupler] + coupler: Optional[Coupler] = None native_gates: TwoQubitNatives = field(default_factory=TwoQubitNatives) diff --git a/src/qibolab/serialize.py b/src/qibolab/serialize.py index b423e899d..22f2c8bb0 100644 --- a/src/qibolab/serialize.py +++ b/src/qibolab/serialize.py @@ -12,7 +12,14 @@ from qibolab.couplers import Coupler from qibolab.native import SingleQubitNatives, TwoQubitNatives -from qibolab.platform import CouplerMap, InstrumentMap, Platform, QubitMap, QubitPairMap, Settings +from qibolab.platform import ( + CouplerMap, + InstrumentMap, + Platform, + QubitMap, + QubitPairMap, + Settings, +) from qibolab.qubits import Qubit, QubitPair @@ -40,14 +47,9 @@ def load_qubits(runcard: dict) -> Tuple[QubitMap, CouplerMap, QubitPairMap]: if "coupler" in runcard["characterization"]: couplers = {c: Coupler(c, **char) for c, char in runcard["characterization"]["coupler"].items()} - COUPLER_DISTRIBUTION = list(runcard["topology"].keys()) - QUBIT_DISTRIBUTION = list(runcard["topology"].values()) - - coupler = None - for pair in QUBIT_DISTRIBUTION: - coupler = couplers[COUPLER_DISTRIBUTION[QUBIT_DISTRIBUTION.index(pair)]] + for c, pair in runcard["topology"].items(): pair = tuple(sorted(pair)) - pairs[pair] = QubitPair(qubits[pair[0]], qubits[pair[1]], coupler) + pairs[pair] = QubitPair(qubits[pair[0]], qubits[pair[1]], couplers[c]) else: for pair in runcard["topology"]: pair = tuple(sorted(pair)) @@ -86,6 +88,7 @@ def load_instrument_settings(runcard: dict, instruments: InstrumentMap) -> Instr instruments[name].setup(**settings) return instruments + def dump_qubits(qubits: QubitMap, pairs: QubitPairMap, couplers: CouplerMap = None) -> dict: """Dump qubit and pair objects to a dictionary following the runcard format.""" native_gates = { diff --git a/tests/test_dummy.py b/tests/test_dummy.py index a9c060b3a..8f6339af1 100644 --- a/tests/test_dummy.py +++ b/tests/test_dummy.py @@ -3,6 +3,7 @@ from qibolab import AcquisitionType, AveragingMode, ExecutionParameters, create_platform from qibolab.pulses import PulseSequence +from qibolab.qubits import QubitPair from qibolab.sweeper import Parameter, QubitParameter, Sweeper SWEPT_POINTS = 5 @@ -28,21 +29,20 @@ def test_dummy_execute_pulse_sequence(acquisition): def test_dummy_execute_pulse_sequence_couplers(): platform = create_platform("dummy") - ordered_pair = (1, 2) + qubit_ordered_pair = QubitPair(platform.qubits[1], platform.qubits[2], platform.couplers[1]) sequence = PulseSequence() cz, _ = platform.create_CZ_pulse_sequence( - qubits=(ordered_pair[1], ordered_pair[0]), + qubits=(qubit_ordered_pair.qubit1.name, qubit_ordered_pair.qubit1.name), start=0, ) - sequence.add(cz.get_qubit_pulses(ordered_pair[0])) - sequence.add(cz.get_qubit_pulses(ordered_pair[1])) - sequence.add(cz.get_coupler_pulses(platform.get_coupler_pair(platform.pairs[ordered_pair]))) + sequence.add(cz.get_qubit_pulses(qubit_ordered_pair.qubit1.name)) + sequence.add(cz.get_qubit_pulses(qubit_ordered_pair.qubit2.name)) + sequence.add(cz.get_coupler_pulses(qubit_ordered_pair.coupler.name)) sequence.add(platform.create_qubit_readout_pulse(0, 40)) sequence.add(platform.create_qubit_readout_pulse(2, 40)) options = ExecutionParameters(nshots=None) result = platform.execute_pulse_sequence(sequence, options) - assert len(sequence.get_coupler_pulses(1)) == 1 def test_dummy_execute_pulse_sequence_fast_reset(): From b7a7d7a0dc1490d14f34320abf755e247b7e1189 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Wed, 27 Sep 2023 17:06:42 +0400 Subject: [PATCH 40/52] typo --- tests/test_dummy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_dummy.py b/tests/test_dummy.py index 8f6339af1..96db724f9 100644 --- a/tests/test_dummy.py +++ b/tests/test_dummy.py @@ -33,7 +33,7 @@ def test_dummy_execute_pulse_sequence_couplers(): sequence = PulseSequence() cz, _ = platform.create_CZ_pulse_sequence( - qubits=(qubit_ordered_pair.qubit1.name, qubit_ordered_pair.qubit1.name), + qubits=(qubit_ordered_pair.qubit1.name, qubit_ordered_pair.qubit2.name), start=0, ) sequence.add(cz.get_qubit_pulses(qubit_ordered_pair.qubit1.name)) From dea0a081dc447734c35ba89678d03000f5198d8f Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Thu, 28 Sep 2023 10:46:36 +0400 Subject: [PATCH 41/52] docs --- doc/source/tutorials/lab.rst | 128 ++++++++++++++++++++++++++++++++++- tests/dummy_qrc/zurich.py | 2 - 2 files changed, 125 insertions(+), 5 deletions(-) diff --git a/doc/source/tutorials/lab.rst b/doc/source/tutorials/lab.rst index 9429981a6..165c1ab73 100644 --- a/doc/source/tutorials/lab.rst +++ b/doc/source/tutorials/lab.rst @@ -171,8 +171,51 @@ hold the parameters of the two-qubit gates. ) ) +Some architectures may also have coupler qubits that mediate the interactions. +We can also interact with them defining the :class:`qibolab.couplers.Coupler` objects. +Then we add them to their corresping :class:`qibolab.qubits.QubitPair` objects according +to the chip topology. Again we neglected or characterization parameters associated to the +coupler but qibolab will take them into account when calling :class:`qibolab.native.TwoQubitNatives`. +.. code-block:: python + + from qibolab.couplers import Coupler + from qibolab.qubits import Qubit, QubitPair + from qibolab.pulses import PulseType + from qibolab.native import ( + NativePulse, + NativeSequence, + SingleQubitNatives, + TwoQubitNatives, + ) + + # create the qubit and coupler objects + qubit0 = Qubit(0) + qubit1 = Qubit(1) + coupler_01 = Coupler(0) + + # assign single-qubit native gates to each qubit + # Look above example + + # define the pair of qubits + pair = QubitPair(qubit0, qubit1, coupler01) + pair.native_gates = TwoQubitNatives( + CZ=NativeSequence( + name="CZ", + pulses=[ + NativePulse( + name="CZ1", + duration=30, + amplitude=0.005, + shape="Rectangular()", + pulse_type=PulseType.FLUX, + qubit=qubit1, + ) + ], + ) + ) + The platform automatically creates the connectivity graph of the given chip using the dictionary of :class:`qibolab.qubits.QubitPair` objects. @@ -299,12 +342,52 @@ a two-qubit system: threshold: 0.0002694329123116206 iq_angle: 4.912447775569025 +And in the case of having a chip with coupler qubits +we need to following changes to the previous runcard: + +.. code-block:: yaml + + qubits: [0, 1] + couplers: [0] + + topology: {0: [0, 1]} + + native_gates: + two_qubit: + 0-1: + CZ: + - duration: 30 + amplitude: 0.6025 + shape: Rectangular() + qubit: 2 + relative_start: 0 + type: qf + + - type: virtual_z + phase: -1 + qubit: 1 + - type: virtual_z + phase: -3 + qubit: 2 + + - type: coupler + phase: -3 + duration: 40 + amplitude: 0.1 + shape: Rectangular() + coupler: 1 + relative_start: 0 + + characterization: + coupler: + 0: + sweetspot: 0.0 This file contains different sections: ``qubits`` is a list with the qubit -names, ``settings`` defines default execution parameters, ``topology`` defines +names, ``couplers`` one with the coupler names , ``settings`` defines default execution parameters, ``topology`` defines the qubit connectivity (qubit pairs), ``native_gates`` specifies the calibrated pulse parameters for implementing single and two-qubit gates and -``characterization`` provides the physical parameters associated to each qubit. +``characterization`` provides the physical parameters associated to each qubit and coupler. Note that such parameters may slightly differ depending on the QPU architecture, however the pulses under ``native_gates`` should comply with the :class:`qibolab.pulses.Pulse` API and the parameters under ``characterization`` @@ -340,7 +423,7 @@ the above runcard: # create ``Qubit`` and ``QubitPair`` objects by loading the runcard runcard = load_runcard(Path(__file__).parent / "my_platform.yml") - qubits, pairs = load_qubits(runcard) + qubits, couplers, pairs = load_qubits(runcard) # assign channels to the qubit for q in range(2): @@ -357,6 +440,45 @@ the above runcard: "my_platform", qubits, pairs, instruments, settings, resonator_type="2D" ) +With the following additions for coupler architectures: + +.. code-block:: python + def create(): + # Create a controller instrument + instrument = DummyInstrument("my_instrument", "0.0.0.0:0") + + # Create channel objects and assign to them the controller ports + channels = ChannelMap() + channels |= Channel("ch1out", port=instrument["o1"]) + channels |= Channel("ch1in", port=instrument["i1"]) + channels |= Channel("ch2", port=instrument["o2"]) + channels |= Channel("ch3", port=instrument["o3"]) + channels |= Channel("chf1", port=instrument["o4"]) + channels |= Channel("chf2", port=instrument["o5"]) + channels |= Channel("chfc0", port=instrument["o6"]) + + # create ``Qubit`` and ``QubitPair`` objects by loading the runcard + runcard = load_runcard(Path(__file__).parent / "my_platform.yml") + qubits, couplers, pairs = load_qubits(runcard) + + # assign channels to the qubit + for q in range(2): + qubits[q].readout = channels["ch1out"] + qubits[q].feedback = channels["ch1in"] + qubits[q].drive = channels[f"ch{q + 2}"] + qubits[q].flux = channels[f"chf{q + 1}"] + + # assign channels to the coupler + couplers[0].flux = channels["chfc0"] + + # create dictionary of instruments + instruments = {instrument.name: instrument} + # load ``settings`` from the runcard + settings = load_settings(runcard) + return Platform( + "my_platform", qubits, pairs, instruments, settings, resonator_type="2D", 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()``. diff --git a/tests/dummy_qrc/zurich.py b/tests/dummy_qrc/zurich.py index 21c48bce3..47223008e 100644 --- a/tests/dummy_qrc/zurich.py +++ b/tests/dummy_qrc/zurich.py @@ -147,8 +147,6 @@ def create(runcard_path=RUNCARD): # assign channels to couplers and sweetspots(operating points) for c, coupler in couplers.items(): coupler.flux = channels[f"L4-{11 + c}"] - # Is this needed ? - # channels[f"L4-{11 + c}"].qubit = qubits[f"c{c}"] instruments = {controller.name: controller} instruments.update({lo.name: lo for lo in local_oscillators}) From 473cc2daa603085f8e1385f37b3fba41e029a4ae Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Thu, 28 Sep 2023 11:48:10 +0400 Subject: [PATCH 42/52] comments --- src/qibolab/dummy.py | 2 +- src/qibolab/pulses.py | 2 +- src/qibolab/sweeper.py | 6 +++-- tests/test_dummy.py | 51 ++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 55 insertions(+), 6 deletions(-) diff --git a/src/qibolab/dummy.py b/src/qibolab/dummy.py index b8bca53d7..8880aa6e5 100644 --- a/src/qibolab/dummy.py +++ b/src/qibolab/dummy.py @@ -9,7 +9,7 @@ NAME = "dummy" RUNCARD = { "nqubits": 5, - "description": "Dummy2 5-qubits + couplers on star topology platform.", + "description": "Dummy 5-qubits + couplers on star topology platform.", "qubits": [ 0, 1, diff --git a/src/qibolab/pulses.py b/src/qibolab/pulses.py index 2ea67c2e5..0a079d760 100644 --- a/src/qibolab/pulses.py +++ b/src/qibolab/pulses.py @@ -1818,7 +1818,7 @@ def get_qubit_pulses(self, *qubits): new_pc.add(pulse) return new_pc - def get_coupler_pulses(self, *couplers): + def coupler_pulses(self, *couplers): """Returns a new PulseSequence containing only the pulses on a specific set of couplers.""" new_pc = PulseSequence() diff --git a/src/qibolab/sweeper.py b/src/qibolab/sweeper.py index 44c9c1ed4..203b07a6e 100644 --- a/src/qibolab/sweeper.py +++ b/src/qibolab/sweeper.py @@ -89,11 +89,13 @@ class Sweeper: type: Optional[SweeperType] = SweeperType.ABSOLUTE def __post_init__(self): - if self.pulses is not None and self.qubits is not None: + if self.pulses is not None and self.qubits is not None and self.couplers is not None: raise ValueError("Cannot use a sweeper on both pulses and qubits.") if self.pulses is not None and self.parameter in QubitParameter: raise ValueError(f"Cannot sweep {self.parameter} without specifying qubits or couplers.") - if self.parameter not in QubitParameter and self.qubits is not None or self.couplers is not None: + if (self.parameter not in QubitParameter and self.qubits is not None) or ( + self.parameter not in QubitParameter and self.couplers is not None + ): raise ValueError(f"Cannot sweep {self.parameter} without specifying pulses.") if self.pulses is None and self.qubits is None and self.couplers is None: raise ValueError("Cannot use a sweeper without specifying pulses, qubits or couplers.") diff --git a/tests/test_dummy.py b/tests/test_dummy.py index 96db724f9..de9e88ac5 100644 --- a/tests/test_dummy.py +++ b/tests/test_dummy.py @@ -2,7 +2,7 @@ import pytest from qibolab import AcquisitionType, AveragingMode, ExecutionParameters, create_platform -from qibolab.pulses import PulseSequence +from qibolab.pulses import CouplerFluxPulse, PulseSequence from qibolab.qubits import QubitPair from qibolab.sweeper import Parameter, QubitParameter, Sweeper @@ -38,7 +38,7 @@ def test_dummy_execute_pulse_sequence_couplers(): ) sequence.add(cz.get_qubit_pulses(qubit_ordered_pair.qubit1.name)) sequence.add(cz.get_qubit_pulses(qubit_ordered_pair.qubit2.name)) - sequence.add(cz.get_coupler_pulses(qubit_ordered_pair.coupler.name)) + sequence.add(cz.coupler_pulses(qubit_ordered_pair.coupler.name)) sequence.add(platform.create_qubit_readout_pulse(0, 40)) sequence.add(platform.create_qubit_readout_pulse(2, 40)) options = ExecutionParameters(nshots=None) @@ -86,6 +86,53 @@ def test_dummy_single_sweep_RAW(): assert shape == (samples * SWEPT_POINTS,) +@pytest.mark.parametrize("fast_reset", [True, False]) +@pytest.mark.parametrize("parameter", [Parameter.amplitude, Parameter.duration, Parameter.bias]) +@pytest.mark.parametrize("average", [AveragingMode.SINGLESHOT, AveragingMode.CYCLIC]) +@pytest.mark.parametrize("acquisition", [AcquisitionType.INTEGRATION, AcquisitionType.DISCRIMINATION]) +@pytest.mark.parametrize("nshots", [10, 20]) +def test_dummy_single_sweep_coupler(fast_reset, parameter, average, acquisition, nshots): + platform = create_platform("dummy") + sequence = PulseSequence() + ro_pulse = platform.create_qubit_readout_pulse(qubit=0, start=0) + coupler_pulse = CouplerFluxPulse( + start=0, duration=40, amplitude=0.5, shape="Rectangular()", channel="flux_coupler-0", qubit=0 + ) + if parameter is Parameter.amplitude: + parameter_range = np.random.rand(SWEPT_POINTS) + else: + parameter_range = np.random.randint(SWEPT_POINTS, size=SWEPT_POINTS) + sequence.add(ro_pulse) + if parameter in QubitParameter: + 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, + acquisition_type=acquisition, + fast_reset=fast_reset, + ) + average = not options.averaging_mode is AveragingMode.SINGLESHOT + results = platform.sweep(sequence, options, sweeper) + + assert ro_pulse.serial and ro_pulse.qubit in results + if average: + results_shape = ( + results[ro_pulse.qubit].magnitude.shape + if acquisition is AcquisitionType.INTEGRATION + else results[ro_pulse.qubit].statistical_frequency.shape + ) + else: + results_shape = ( + results[ro_pulse.qubit].magnitude.shape + if acquisition is AcquisitionType.INTEGRATION + else results[ro_pulse.qubit].samples.shape + ) + assert results_shape == (SWEPT_POINTS,) if average else (nshots, SWEPT_POINTS) + + @pytest.mark.parametrize("fast_reset", [True, False]) @pytest.mark.parametrize("parameter", Parameter) @pytest.mark.parametrize("average", [AveragingMode.SINGLESHOT, AveragingMode.CYCLIC]) From 35f54fee9f049d1a4170adb5fe3dc5ce45fdf5c1 Mon Sep 17 00:00:00 2001 From: Juan Cereijo Date: Thu, 28 Sep 2023 12:46:11 +0400 Subject: [PATCH 43/52] Update doc/source/tutorials/lab.rst Co-authored-by: Stavros Efthymiou <35475381+stavros11@users.noreply.github.com> --- doc/source/tutorials/lab.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/source/tutorials/lab.rst b/doc/source/tutorials/lab.rst index 165c1ab73..bd340419a 100644 --- a/doc/source/tutorials/lab.rst +++ b/doc/source/tutorials/lab.rst @@ -173,8 +173,8 @@ hold the parameters of the two-qubit gates. Some architectures may also have coupler qubits that mediate the interactions. We can also interact with them defining the :class:`qibolab.couplers.Coupler` objects. -Then we add them to their corresping :class:`qibolab.qubits.QubitPair` objects according -to the chip topology. Again we neglected or characterization parameters associated to the +Then we add them to their corresponding :class:`qibolab.qubits.QubitPair` objects according +to the chip topology. We neglected characterization parameters associated to the coupler but qibolab will take them into account when calling :class:`qibolab.native.TwoQubitNatives`. From c13cca5a7608c1dfbd7cab4d1d19d6d2ce49ce69 Mon Sep 17 00:00:00 2001 From: Juan Cereijo Date: Thu, 28 Sep 2023 12:46:30 +0400 Subject: [PATCH 44/52] Update doc/source/tutorials/lab.rst Co-authored-by: Stavros Efthymiou <35475381+stavros11@users.noreply.github.com> --- doc/source/tutorials/lab.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/tutorials/lab.rst b/doc/source/tutorials/lab.rst index bd340419a..4d71d5648 100644 --- a/doc/source/tutorials/lab.rst +++ b/doc/source/tutorials/lab.rst @@ -343,7 +343,7 @@ a two-qubit system: iq_angle: 4.912447775569025 And in the case of having a chip with coupler qubits -we need to following changes to the previous runcard: +we need the following changes to the previous runcard: .. code-block:: yaml From b1553846cd72fe567d77977e99484555416420f6 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Thu, 28 Sep 2023 13:10:20 +0400 Subject: [PATCH 45/52] docs --- doc/source/main-documentation/qibolab.rst | 22 +++++++++++++- doc/source/tutorials/lab.rst | 37 ++++++++++++----------- 2 files changed, 41 insertions(+), 18 deletions(-) diff --git a/doc/source/main-documentation/qibolab.rst b/doc/source/main-documentation/qibolab.rst index 15affa76c..359082747 100644 --- a/doc/source/main-documentation/qibolab.rst +++ b/doc/source/main-documentation/qibolab.rst @@ -94,6 +94,7 @@ This instrument is also part of the dummy platform which is defined in :py:mod:` This platform is equivalent to real platforms in terms of attributes and functions, but returns just random numbers. It is useful for testing parts of the code that do not necessarily require access to an actual quantum hardware platform. +.. _main_doc_qubits: Qubits ------ @@ -113,11 +114,30 @@ They are optional and encompass distinct types, each serving a specific purpose: - twpa (pump to the TWPA) - drive - flux -- flux_coupler The Qubit class allows you to set and manage several key parameters that influence qubit behavior. These parameters are typically extracted from the runcard during platform initialization. +.. _main_doc_couplers: + +Couplers +------ + +The :class:`qibolab.couplers.Coupler` class serves as a comprehensive representation of a physical coupler qubit within the Qibolab framework. +It's a simplified :class:`qibolab.qubits.Qubit` to control couplers during 2q gate operation: + +- :ref:`Channels `: Physical Connection +- :class:`Parameters `: Configurable Properties +- :ref:`Qubits `: Qubits the coupler acts on + +We have a single required Channel for flux coupler control: + +- flux + +The Coupler class allows us to handle 2q interactions in coupler based architectures +in a simple way. They are usually associated with :class:`` +and usually extracted from the runcard during platform initialization. + .. _main_doc_channels: Channels diff --git a/doc/source/tutorials/lab.rst b/doc/source/tutorials/lab.rst index 165c1ab73..79c1c695d 100644 --- a/doc/source/tutorials/lab.rst +++ b/doc/source/tutorials/lab.rst @@ -343,13 +343,16 @@ a two-qubit system: iq_angle: 4.912447775569025 And in the case of having a chip with coupler qubits -we need to following changes to the previous runcard: +we need to following changes to the previous runcard. +We note how the topology now maps couplers to +qubit pairs using a dictionary instead of a list: .. code-block:: yaml qubits: [0, 1] couplers: [0] + # Mapping couplers to qubit pairs topology: {0: [0, 1]} native_gates: @@ -357,26 +360,25 @@ we need to following changes to the previous runcard: 0-1: CZ: - duration: 30 - amplitude: 0.6025 - shape: Rectangular() - qubit: 2 - relative_start: 0 - type: qf + amplitude: 0.6025 + shape: Rectangular() + qubit: 1 + relative_start: 0 + type: qf - type: virtual_z - phase: -1 - qubit: 1 + phase: -1 + qubit: 0 - type: virtual_z - phase: -3 - qubit: 2 + phase: -3 + qubit: 1 - type: coupler - phase: -3 - duration: 40 - amplitude: 0.1 - shape: Rectangular() - coupler: 1 - relative_start: 0 + duration: 40 + amplitude: 0.1 + shape: Rectangular() + coupler: 1 + relative_start: 0 characterization: coupler: @@ -443,6 +445,7 @@ the above runcard: With the following additions for coupler architectures: .. code-block:: python + def create(): # Create a controller instrument instrument = DummyInstrument("my_instrument", "0.0.0.0:0") @@ -476,7 +479,7 @@ With the following additions for coupler architectures: # load ``settings`` from the runcard settings = load_settings(runcard) return Platform( - "my_platform", qubits, pairs, instruments, settings, resonator_type="2D", couplers + "my_platform", qubits, pairs, instruments, settings, resonator_type="2D", couplers = couplers ) Note that this assumes that the runcard is saved as ``my_platform.yml`` in the From c0c60933425a0681d463228e42c7b71b1a2c2f21 Mon Sep 17 00:00:00 2001 From: Juan Cereijo Date: Thu, 28 Sep 2023 15:05:53 +0400 Subject: [PATCH 46/52] Update src/qibolab/sweeper.py Co-authored-by: Alessandro Candido --- src/qibolab/sweeper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/qibolab/sweeper.py b/src/qibolab/sweeper.py index 203b07a6e..17c63caca 100644 --- a/src/qibolab/sweeper.py +++ b/src/qibolab/sweeper.py @@ -93,8 +93,8 @@ def __post_init__(self): raise ValueError("Cannot use a sweeper on both pulses and qubits.") if self.pulses is not None and self.parameter in QubitParameter: raise ValueError(f"Cannot sweep {self.parameter} without specifying qubits or couplers.") - if (self.parameter not in QubitParameter and self.qubits is not None) or ( - self.parameter not in QubitParameter and self.couplers is not None + if self.parameter not in QubitParameter and (self.qubits is not None or + self.couplers is not None ): raise ValueError(f"Cannot sweep {self.parameter} without specifying pulses.") if self.pulses is None and self.qubits is None and self.couplers is None: From 483549c8d8911c40dc586af3836593d6f48dcdf5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 28 Sep 2023 11:06:06 +0000 Subject: [PATCH 47/52] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/qibolab/sweeper.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/qibolab/sweeper.py b/src/qibolab/sweeper.py index 17c63caca..cd16f7e42 100644 --- a/src/qibolab/sweeper.py +++ b/src/qibolab/sweeper.py @@ -93,9 +93,7 @@ def __post_init__(self): raise ValueError("Cannot use a sweeper on both pulses and qubits.") if self.pulses is not None and self.parameter in QubitParameter: raise ValueError(f"Cannot sweep {self.parameter} without specifying qubits or couplers.") - if self.parameter not in QubitParameter and (self.qubits is not None or - self.couplers is not None - ): + if self.parameter not in QubitParameter and (self.qubits is not None or self.couplers is not None): raise ValueError(f"Cannot sweep {self.parameter} without specifying pulses.") if self.pulses is None and self.qubits is None and self.couplers is None: raise ValueError("Cannot use a sweeper without specifying pulses, qubits or couplers.") From 4646c96f6bd17bda465b323adf2abf89bfe40cb1 Mon Sep 17 00:00:00 2001 From: Juan Cereijo Date: Thu, 28 Sep 2023 16:45:34 +0400 Subject: [PATCH 48/52] Update doc/source/main-documentation/qibolab.rst Co-authored-by: Stavros Efthymiou <35475381+stavros11@users.noreply.github.com> --- doc/source/main-documentation/qibolab.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/main-documentation/qibolab.rst b/doc/source/main-documentation/qibolab.rst index 359082747..ae47c595d 100644 --- a/doc/source/main-documentation/qibolab.rst +++ b/doc/source/main-documentation/qibolab.rst @@ -121,7 +121,7 @@ These parameters are typically extracted from the runcard during platform initia .. _main_doc_couplers: Couplers ------- +-------- The :class:`qibolab.couplers.Coupler` class serves as a comprehensive representation of a physical coupler qubit within the Qibolab framework. It's a simplified :class:`qibolab.qubits.Qubit` to control couplers during 2q gate operation: From a388fb4118de378d82a7b9b80804cd7b5fc20f12 Mon Sep 17 00:00:00 2001 From: Juan Cereijo Date: Thu, 28 Sep 2023 16:45:43 +0400 Subject: [PATCH 49/52] Update doc/source/tutorials/lab.rst Co-authored-by: Stavros Efthymiou <35475381+stavros11@users.noreply.github.com> --- doc/source/tutorials/lab.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/tutorials/lab.rst b/doc/source/tutorials/lab.rst index 9b8037ddc..3bd580095 100644 --- a/doc/source/tutorials/lab.rst +++ b/doc/source/tutorials/lab.rst @@ -375,7 +375,7 @@ we need the following changes to the previous runcard: duration: 40 amplitude: 0.1 shape: Rectangular() - coupler: 1 + coupler: 0 relative_start: 0 characterization: From 23eef845d3201db48edab105fc829110eea460f5 Mon Sep 17 00:00:00 2001 From: Juan Cereijo Date: Thu, 28 Sep 2023 16:45:52 +0400 Subject: [PATCH 50/52] Update doc/source/main-documentation/qibolab.rst Co-authored-by: Stavros Efthymiou <35475381+stavros11@users.noreply.github.com> --- doc/source/main-documentation/qibolab.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/main-documentation/qibolab.rst b/doc/source/main-documentation/qibolab.rst index ae47c595d..9bbac1809 100644 --- a/doc/source/main-documentation/qibolab.rst +++ b/doc/source/main-documentation/qibolab.rst @@ -135,7 +135,7 @@ We have a single required Channel for flux coupler control: - flux The Coupler class allows us to handle 2q interactions in coupler based architectures -in a simple way. They are usually associated with :class:`` +in a simple way. They are usually associated with :class:`qibolab.qubits.QubitPair` and usually extracted from the runcard during platform initialization. .. _main_doc_channels: From 3daa7ca4debd127520ecde9bf251caca37ae4d06 Mon Sep 17 00:00:00 2001 From: Jacfomg Date: Tue, 3 Oct 2023 18:02:31 +0400 Subject: [PATCH 51/52] updated laboneq, performance improvements --- poetry.lock | 1419 +++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 686 insertions(+), 735 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3026453c6..80c259c8d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -22,21 +22,6 @@ files = [ {file = "annotated_types-0.5.0.tar.gz", hash = "sha256:47cdc3490d9ac1506ce92c7aaa76c579dc3509ff11e098fc867e5130ab7be802"}, ] -[[package]] -name = "ansi2html" -version = "1.8.0" -description = "" -optional = false -python-versions = ">=3.6" -files = [ - {file = "ansi2html-1.8.0-py3-none-any.whl", hash = "sha256:ef9cc9682539dbe524fbf8edad9c9462a308e04bce1170c32daa8fdfd0001785"}, - {file = "ansi2html-1.8.0.tar.gz", hash = "sha256:38b82a298482a1fa2613f0f9c9beb3db72a8f832eeac58eb2e47bf32cd37f6d5"}, -] - -[package.extras] -docs = ["Sphinx", "setuptools-scm", "sphinx-rtd-theme"] -test = ["pytest", "pytest-cov"] - [[package]] name = "antlr4-python3-runtime" version = "4.11.1" @@ -61,22 +46,17 @@ files = [ [[package]] name = "astroid" -version = "2.15.6" +version = "3.0.0" description = "An abstract syntax tree for Python with inference support." optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.8.0" files = [ - {file = "astroid-2.15.6-py3-none-any.whl", hash = "sha256:389656ca57b6108f939cf5d2f9a2a825a3be50ba9d589670f393236e0a03b91c"}, - {file = "astroid-2.15.6.tar.gz", hash = "sha256:903f024859b7c7687d7a7f3a3f73b17301f8e42dfd9cc9df9d4418172d3e2dbd"}, + {file = "astroid-3.0.0-py3-none-any.whl", hash = "sha256:f2510e7fdcd6cfda4ec50014726d4857abf79acfc010084ce8c26091913f1b25"}, + {file = "astroid-3.0.0.tar.gz", hash = "sha256:1defdbca052635dd29657ea674edfc45e4b5be9cd53630c5b084fcfed94344a8"}, ] [package.dependencies] -lazy-object-proxy = ">=1.4.0" typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} -wrapt = [ - {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, -] [[package]] name = "asttokens" @@ -151,15 +131,18 @@ msal-extensions = ">=0.3.0,<2.0.0" [[package]] name = "babel" -version = "2.12.1" +version = "2.13.0" description = "Internationalization utilities" optional = false python-versions = ">=3.7" files = [ - {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, - {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, + {file = "Babel-2.13.0-py3-none-any.whl", hash = "sha256:fbfcae1575ff78e26c7449136f1abbefc3c13ce542eeb13d43d50d8b047216ec"}, + {file = "Babel-2.13.0.tar.gz", hash = "sha256:04c3e2d28d2b7681644508f836be388ae49e0cfe91465095340395b60d00f210"}, ] +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] + [[package]] name = "backcall" version = "0.2.0" @@ -225,6 +208,17 @@ webencodings = "*" [package.extras] css = ["tinycss2 (>=1.1.0,<1.2)"] +[[package]] +name = "blinker" +version = "1.6.2" +description = "Fast, simple object-to-object and broadcast signaling" +optional = false +python-versions = ">=3.7" +files = [ + {file = "blinker-1.6.2-py3-none-any.whl", hash = "sha256:c3d739772abb7bc2860abf5f2ec284223d9ad5c76da018234f6f50d6f31ab1f0"}, + {file = "blinker-1.6.2.tar.gz", hash = "sha256:4afd3de66ef3a9f8067559fb7a1cbe555c17dcbe15971b05d1b625c3e7abe213"}, +] + [[package]] name = "broadbean" version = "0.11.0" @@ -269,75 +263,63 @@ files = [ [[package]] name = "cffi" -version = "1.15.1" +version = "1.16.0" description = "Foreign Function Interface for Python calling C code." optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, - {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, - {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, - {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, - {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, - {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, - {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, - {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, - {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, - {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, - {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, - {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, - {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, - {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, - {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, - {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, - {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, - {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, - {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, + {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, + {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, + {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, + {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, + {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, + {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, + {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, + {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, + {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, ] [package.dependencies] @@ -345,86 +327,101 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "3.2.0" +version = "3.3.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, - {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, + {file = "charset-normalizer-3.3.0.tar.gz", hash = "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-win32.whl", hash = "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-win32.whl", hash = "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-win32.whl", hash = "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-win32.whl", hash = "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-win32.whl", hash = "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-win32.whl", hash = "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884"}, + {file = "charset_normalizer-3.3.0-py3-none-any.whl", hash = "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2"}, ] [[package]] @@ -587,63 +584,63 @@ test-no-images = ["pytest", "pytest-cov", "wurlitzer"] [[package]] name = "coverage" -version = "7.3.1" +version = "7.3.2" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cd0f7429ecfd1ff597389907045ff209c8fdb5b013d38cfa7c60728cb484b6e3"}, - {file = "coverage-7.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:966f10df9b2b2115da87f50f6a248e313c72a668248be1b9060ce935c871f276"}, - {file = "coverage-7.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0575c37e207bb9b98b6cf72fdaaa18ac909fb3d153083400c2d48e2e6d28bd8e"}, - {file = "coverage-7.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:245c5a99254e83875c7fed8b8b2536f040997a9b76ac4c1da5bff398c06e860f"}, - {file = "coverage-7.3.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c96dd7798d83b960afc6c1feb9e5af537fc4908852ef025600374ff1a017392"}, - {file = "coverage-7.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:de30c1aa80f30af0f6b2058a91505ea6e36d6535d437520067f525f7df123887"}, - {file = "coverage-7.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:50dd1e2dd13dbbd856ffef69196781edff26c800a74f070d3b3e3389cab2600d"}, - {file = "coverage-7.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9c0c19f70d30219113b18fe07e372b244fb2a773d4afde29d5a2f7930765136"}, - {file = "coverage-7.3.1-cp310-cp310-win32.whl", hash = "sha256:770f143980cc16eb601ccfd571846e89a5fe4c03b4193f2e485268f224ab602f"}, - {file = "coverage-7.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:cdd088c00c39a27cfa5329349cc763a48761fdc785879220d54eb785c8a38520"}, - {file = "coverage-7.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:74bb470399dc1989b535cb41f5ca7ab2af561e40def22d7e188e0a445e7639e3"}, - {file = "coverage-7.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:025ded371f1ca280c035d91b43252adbb04d2aea4c7105252d3cbc227f03b375"}, - {file = "coverage-7.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6191b3a6ad3e09b6cfd75b45c6aeeffe7e3b0ad46b268345d159b8df8d835f9"}, - {file = "coverage-7.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7eb0b188f30e41ddd659a529e385470aa6782f3b412f860ce22b2491c89b8593"}, - {file = "coverage-7.3.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c8f0df9dfd8ff745bccff75867d63ef336e57cc22b2908ee725cc552689ec8"}, - {file = "coverage-7.3.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7eb3cd48d54b9bd0e73026dedce44773214064be93611deab0b6a43158c3d5a0"}, - {file = "coverage-7.3.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ac3c5b7e75acac31e490b7851595212ed951889918d398b7afa12736c85e13ce"}, - {file = "coverage-7.3.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5b4ee7080878077af0afa7238df1b967f00dc10763f6e1b66f5cced4abebb0a3"}, - {file = "coverage-7.3.1-cp311-cp311-win32.whl", hash = "sha256:229c0dd2ccf956bf5aeede7e3131ca48b65beacde2029f0361b54bf93d36f45a"}, - {file = "coverage-7.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:c6f55d38818ca9596dc9019eae19a47410d5322408140d9a0076001a3dcb938c"}, - {file = "coverage-7.3.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5289490dd1c3bb86de4730a92261ae66ea8d44b79ed3cc26464f4c2cde581fbc"}, - {file = "coverage-7.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca833941ec701fda15414be400c3259479bfde7ae6d806b69e63b3dc423b1832"}, - {file = "coverage-7.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd694e19c031733e446c8024dedd12a00cda87e1c10bd7b8539a87963685e969"}, - {file = "coverage-7.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aab8e9464c00da5cb9c536150b7fbcd8850d376d1151741dd0d16dfe1ba4fd26"}, - {file = "coverage-7.3.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87d38444efffd5b056fcc026c1e8d862191881143c3aa80bb11fcf9dca9ae204"}, - {file = "coverage-7.3.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8a07b692129b8a14ad7a37941a3029c291254feb7a4237f245cfae2de78de037"}, - {file = "coverage-7.3.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:2829c65c8faaf55b868ed7af3c7477b76b1c6ebeee99a28f59a2cb5907a45760"}, - {file = "coverage-7.3.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1f111a7d85658ea52ffad7084088277135ec5f368457275fc57f11cebb15607f"}, - {file = "coverage-7.3.1-cp312-cp312-win32.whl", hash = "sha256:c397c70cd20f6df7d2a52283857af622d5f23300c4ca8e5bd8c7a543825baa5a"}, - {file = "coverage-7.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:5ae4c6da8b3d123500f9525b50bf0168023313963e0e2e814badf9000dd6ef92"}, - {file = "coverage-7.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ca70466ca3a17460e8fc9cea7123c8cbef5ada4be3140a1ef8f7b63f2f37108f"}, - {file = "coverage-7.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f2781fd3cabc28278dc982a352f50c81c09a1a500cc2086dc4249853ea96b981"}, - {file = "coverage-7.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6407424621f40205bbe6325686417e5e552f6b2dba3535dd1f90afc88a61d465"}, - {file = "coverage-7.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:04312b036580ec505f2b77cbbdfb15137d5efdfade09156961f5277149f5e344"}, - {file = "coverage-7.3.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9ad38204887349853d7c313f53a7b1c210ce138c73859e925bc4e5d8fc18e7"}, - {file = "coverage-7.3.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:53669b79f3d599da95a0afbef039ac0fadbb236532feb042c534fbb81b1a4e40"}, - {file = "coverage-7.3.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:614f1f98b84eb256e4f35e726bfe5ca82349f8dfa576faabf8a49ca09e630086"}, - {file = "coverage-7.3.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f1a317fdf5c122ad642db8a97964733ab7c3cf6009e1a8ae8821089993f175ff"}, - {file = "coverage-7.3.1-cp38-cp38-win32.whl", hash = "sha256:defbbb51121189722420a208957e26e49809feafca6afeef325df66c39c4fdb3"}, - {file = "coverage-7.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:f4f456590eefb6e1b3c9ea6328c1e9fa0f1006e7481179d749b3376fc793478e"}, - {file = "coverage-7.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f12d8b11a54f32688b165fd1a788c408f927b0960984b899be7e4c190ae758f1"}, - {file = "coverage-7.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f09195dda68d94a53123883de75bb97b0e35f5f6f9f3aa5bf6e496da718f0cb6"}, - {file = "coverage-7.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6601a60318f9c3945be6ea0f2a80571f4299b6801716f8a6e4846892737ebe4"}, - {file = "coverage-7.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07d156269718670d00a3b06db2288b48527fc5f36859425ff7cec07c6b367745"}, - {file = "coverage-7.3.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:636a8ac0b044cfeccae76a36f3b18264edcc810a76a49884b96dd744613ec0b7"}, - {file = "coverage-7.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5d991e13ad2ed3aced177f524e4d670f304c8233edad3210e02c465351f785a0"}, - {file = "coverage-7.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:586649ada7cf139445da386ab6f8ef00e6172f11a939fc3b2b7e7c9082052fa0"}, - {file = "coverage-7.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4aba512a15a3e1e4fdbfed2f5392ec221434a614cc68100ca99dcad7af29f3f8"}, - {file = "coverage-7.3.1-cp39-cp39-win32.whl", hash = "sha256:6bc6f3f4692d806831c136c5acad5ccedd0262aa44c087c46b7101c77e139140"}, - {file = "coverage-7.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:553d7094cb27db58ea91332e8b5681bac107e7242c23f7629ab1316ee73c4981"}, - {file = "coverage-7.3.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:220eb51f5fb38dfdb7e5d54284ca4d0cd70ddac047d750111a68ab1798945194"}, - {file = "coverage-7.3.1.tar.gz", hash = "sha256:6cb7fe1581deb67b782c153136541e20901aa312ceedaf1467dcb35255787952"}, + {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"}, ] [package.dependencies] @@ -699,43 +696,40 @@ test-randomorder = ["pytest-randomly"] [[package]] name = "cycler" -version = "0.11.0" +version = "0.12.0" description = "Composable style cycles" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, - {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, + {file = "cycler-0.12.0-py3-none-any.whl", hash = "sha256:7896994252d006771357777d0251f3e34d266f4fa5f2c572247a80ab01440947"}, + {file = "cycler-0.12.0.tar.gz", hash = "sha256:8cc3a7b4861f91b1095157f9916f748549a617046e67eb7619abed9b34d2c94a"}, ] +[package.extras] +docs = ["ipython", "matplotlib", "numpydoc", "sphinx"] +tests = ["pytest", "pytest-cov", "pytest-xdist"] + [[package]] name = "dash" -version = "2.13.0" +version = "2.9.3" description = "A Python framework for building reactive web-apps. Developed by Plotly." optional = false python-versions = ">=3.6" files = [ - {file = "dash-2.13.0-py3-none-any.whl", hash = "sha256:ca21f01f720652c7e2d16d04d4e27803c2b60c4c2a382e750c3d8d778c06e209"}, - {file = "dash-2.13.0.tar.gz", hash = "sha256:07c192db694b9bb4c87d57b6da877413f2695bfcb1d5c51f08995de7dcdd1e92"}, + {file = "dash-2.9.3-py3-none-any.whl", hash = "sha256:a749ae1ea9de3fe7b785353a818ec9b629d39c6b7e02462954203bd1e296fd0e"}, + {file = "dash-2.9.3.tar.gz", hash = "sha256:47392f8d6455dc989a697407eb5941f3bad80604df985ab1ac9d4244568ffb34"}, ] [package.dependencies] -ansi2html = "*" dash-core-components = "2.0.0" dash-html-components = "2.0.0" dash-table = "5.0.0" -Flask = ">=1.0.4,<2.3.0" -nest-asyncio = "*" +Flask = ">=1.0.4" plotly = ">=5.0.0" -requests = "*" -retrying = "*" -setuptools = "*" -typing-extensions = ">=4.1.1" -Werkzeug = "<2.3.0" [package.extras] celery = ["celery[redis] (>=5.1.2)", "importlib-metadata (<5)", "redis (>=3.5.3)"] -ci = ["black (==21.6b0)", "black (==22.3.0)", "dash-dangerously-set-inner-html", "dash-flow-example (==0.0.5)", "flake8 (==3.9.2)", "flaky (==3.7.0)", "flask-talisman (==1.0.0)", "isort (==4.3.21)", "jupyterlab (<4.0.0)", "mimesis", "mock (==4.0.3)", "numpy", "openpyxl", "orjson (==3.5.4)", "orjson (==3.6.7)", "pandas (==1.1.5)", "pandas (>=1.4.0)", "preconditions", "pyarrow", "pyarrow (<3)", "pylint (==2.13.5)", "pytest-mock", "pytest-rerunfailures", "pytest-sugar (==0.9.6)", "xlrd (<2)", "xlrd (>=2.0.1)"] +ci = ["black (==21.6b0)", "black (==22.3.0)", "dash-dangerously-set-inner-html", "dash-flow-example (==0.0.5)", "flake8 (==3.9.2)", "flaky (==3.7.0)", "flask-talisman (==1.0.0)", "isort (==4.3.21)", "mimesis", "mock (==4.0.3)", "numpy", "openpyxl", "orjson (==3.5.4)", "orjson (==3.6.7)", "pandas (==1.1.5)", "pandas (>=1.4.0)", "preconditions", "pyarrow", "pyarrow (<3)", "pylint (==2.13.5)", "pytest-mock", "pytest-rerunfailures", "pytest-sugar (==0.9.6)", "xlrd (<2)", "xlrd (>=2.0.1)"] compress = ["flask-compress"] dev = ["PyYAML (>=5.4.1)", "coloredlogs (>=15.0.1)", "fire (>=0.4.0)"] diskcache = ["diskcache (>=5.2.1)", "multiprocess (>=0.70.12)", "psutil (>=5.8.0)"] @@ -1013,27 +1007,27 @@ test = ["pytest (>=6)"] [[package]] name = "executing" -version = "1.2.0" +version = "2.0.0" description = "Get the currently executing AST node of a frame, and other information" optional = false python-versions = "*" files = [ - {file = "executing-1.2.0-py2.py3-none-any.whl", hash = "sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc"}, - {file = "executing-1.2.0.tar.gz", hash = "sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107"}, + {file = "executing-2.0.0-py2.py3-none-any.whl", hash = "sha256:06df6183df67389625f4e763921c6cf978944721abf3e714000200aab95b0657"}, + {file = "executing-2.0.0.tar.gz", hash = "sha256:0ff053696fdeef426cda5bd18eacd94f82c91f49823a2e9090124212ceea9b08"}, ] [package.extras] -tests = ["asttokens", "littleutils", "pytest", "rich"] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] [[package]] name = "fastjsonschema" -version = "2.18.0" +version = "2.18.1" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" files = [ - {file = "fastjsonschema-2.18.0-py3-none-any.whl", hash = "sha256:128039912a11a807068a7c87d0da36660afbfd7202780db26c4aa7153cfdc799"}, - {file = "fastjsonschema-2.18.0.tar.gz", hash = "sha256:e820349dd16f806e4bd1467a138dced9def4bc7d6213a34295272a6cac95b5bd"}, + {file = "fastjsonschema-2.18.1-py3-none-any.whl", hash = "sha256:aec6a19e9f66e9810ab371cc913ad5f4e9e479b63a7072a2cd060a9369e329a8"}, + {file = "fastjsonschema-2.18.1.tar.gz", hash = "sha256:06dc8680d937628e993fa0cd278f196d20449a1adc087640710846b324d422ea"}, ] [package.extras] @@ -1041,21 +1035,22 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc [[package]] name = "flask" -version = "2.2.5" +version = "3.0.0" description = "A simple framework for building complex web applications." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Flask-2.2.5-py3-none-any.whl", hash = "sha256:58107ed83443e86067e41eff4631b058178191a355886f8e479e347fa1285fdf"}, - {file = "Flask-2.2.5.tar.gz", hash = "sha256:edee9b0a7ff26621bd5a8c10ff484ae28737a2410d99b0bb9a6850c7fb977aa0"}, + {file = "flask-3.0.0-py3-none-any.whl", hash = "sha256:21128f47e4e3b9d597a3e8521a329bf56909b690fcc3fa3e477725aa81367638"}, + {file = "flask-3.0.0.tar.gz", hash = "sha256:cfadcdb638b609361d29ec22360d6070a77d7463dcb3ab08d2c2f2f168845f58"}, ] [package.dependencies] -click = ">=8.0" +blinker = ">=1.6.2" +click = ">=8.1.3" importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} -itsdangerous = ">=2.0" -Jinja2 = ">=3.0" -Werkzeug = ">=2.2.2" +itsdangerous = ">=2.1.2" +Jinja2 = ">=3.1.2" +Werkzeug = ">=3.0.0" [package.extras] async = ["asgiref (>=3.2)"] @@ -1063,45 +1058,53 @@ dotenv = ["python-dotenv"] [[package]] name = "fonttools" -version = "4.42.1" +version = "4.43.0" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.42.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ed1a13a27f59d1fc1920394a7f596792e9d546c9ca5a044419dca70c37815d7c"}, - {file = "fonttools-4.42.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c9b1ce7a45978b821a06d375b83763b27a3a5e8a2e4570b3065abad240a18760"}, - {file = "fonttools-4.42.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f720fa82a11c0f9042376fd509b5ed88dab7e3cd602eee63a1af08883b37342b"}, - {file = "fonttools-4.42.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db55cbaea02a20b49fefbd8e9d62bd481aaabe1f2301dabc575acc6b358874fa"}, - {file = "fonttools-4.42.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a35981d90feebeaef05e46e33e6b9e5b5e618504672ca9cd0ff96b171e4bfff"}, - {file = "fonttools-4.42.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:68a02bbe020dc22ee0540e040117535f06df9358106d3775e8817d826047f3fd"}, - {file = "fonttools-4.42.1-cp310-cp310-win32.whl", hash = "sha256:12a7c247d1b946829bfa2f331107a629ea77dc5391dfd34fdcd78efa61f354ca"}, - {file = "fonttools-4.42.1-cp310-cp310-win_amd64.whl", hash = "sha256:a398bdadb055f8de69f62b0fc70625f7cbdab436bbb31eef5816e28cab083ee8"}, - {file = "fonttools-4.42.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:689508b918332fb40ce117131633647731d098b1b10d092234aa959b4251add5"}, - {file = "fonttools-4.42.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9e36344e48af3e3bde867a1ca54f97c308735dd8697005c2d24a86054a114a71"}, - {file = "fonttools-4.42.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19b7db825c8adee96fac0692e6e1ecd858cae9affb3b4812cdb9d934a898b29e"}, - {file = "fonttools-4.42.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:113337c2d29665839b7d90b39f99b3cac731f72a0eda9306165a305c7c31d341"}, - {file = "fonttools-4.42.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:37983b6bdab42c501202500a2be3a572f50d4efe3237e0686ee9d5f794d76b35"}, - {file = "fonttools-4.42.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6ed2662a3d9c832afa36405f8748c250be94ae5dfc5283d668308391f2102861"}, - {file = "fonttools-4.42.1-cp311-cp311-win32.whl", hash = "sha256:179737095eb98332a2744e8f12037b2977f22948cf23ff96656928923ddf560a"}, - {file = "fonttools-4.42.1-cp311-cp311-win_amd64.whl", hash = "sha256:f2b82f46917d8722e6b5eafeefb4fb585d23babd15d8246c664cd88a5bddd19c"}, - {file = "fonttools-4.42.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:62f481ac772fd68901573956231aea3e4b1ad87b9b1089a61613a91e2b50bb9b"}, - {file = "fonttools-4.42.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f2f806990160d1ce42d287aa419df3ffc42dfefe60d473695fb048355fe0c6a0"}, - {file = "fonttools-4.42.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db372213d39fa33af667c2aa586a0c1235e88e9c850f5dd5c8e1f17515861868"}, - {file = "fonttools-4.42.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d18fc642fd0ac29236ff88ecfccff229ec0386090a839dd3f1162e9a7944a40"}, - {file = "fonttools-4.42.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8708b98c278012ad267ee8a7433baeb809948855e81922878118464b274c909d"}, - {file = "fonttools-4.42.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c95b0724a6deea2c8c5d3222191783ced0a2f09bd6d33f93e563f6f1a4b3b3a4"}, - {file = "fonttools-4.42.1-cp38-cp38-win32.whl", hash = "sha256:4aa79366e442dbca6e2c8595645a3a605d9eeabdb7a094d745ed6106816bef5d"}, - {file = "fonttools-4.42.1-cp38-cp38-win_amd64.whl", hash = "sha256:acb47f6f8680de24c1ab65ebde39dd035768e2a9b571a07c7b8da95f6c8815fd"}, - {file = "fonttools-4.42.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5fb289b7a815638a7613d46bcf324c9106804725b2bb8ad913c12b6958ffc4ec"}, - {file = "fonttools-4.42.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:53eb5091ddc8b1199330bb7b4a8a2e7995ad5d43376cadce84523d8223ef3136"}, - {file = "fonttools-4.42.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46a0ec8adbc6ff13494eb0c9c2e643b6f009ce7320cf640de106fb614e4d4360"}, - {file = "fonttools-4.42.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cc7d685b8eeca7ae69dc6416833fbfea61660684b7089bca666067cb2937dcf"}, - {file = "fonttools-4.42.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:be24fcb80493b2c94eae21df70017351851652a37de514de553435b256b2f249"}, - {file = "fonttools-4.42.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:515607ec756d7865f23070682622c49d922901943697871fc292277cf1e71967"}, - {file = "fonttools-4.42.1-cp39-cp39-win32.whl", hash = "sha256:0eb79a2da5eb6457a6f8ab904838454accc7d4cccdaff1fd2bd3a0679ea33d64"}, - {file = "fonttools-4.42.1-cp39-cp39-win_amd64.whl", hash = "sha256:7286aed4ea271df9eab8d7a9b29e507094b51397812f7ce051ecd77915a6e26b"}, - {file = "fonttools-4.42.1-py3-none-any.whl", hash = "sha256:9398f244e28e0596e2ee6024f808b06060109e33ed38dcc9bded452fd9bbb853"}, - {file = "fonttools-4.42.1.tar.gz", hash = "sha256:c391cd5af88aacaf41dd7cfb96eeedfad297b5899a39e12f4c2c3706d0a3329d"}, + {file = "fonttools-4.43.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ab80e7d6bb01316d5fc8161a2660ca2e9e597d0880db4927bc866c76474472ef"}, + {file = "fonttools-4.43.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:82d8e687a42799df5325e7ee12977b74738f34bf7fde1c296f8140efd699a213"}, + {file = "fonttools-4.43.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d08a694b280d615460563a6b4e2afb0b1b9df708c799ec212bf966652b94fc84"}, + {file = "fonttools-4.43.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d654d3e780e0ceabb1f4eff5a3c042c67d4428d0fe1ea3afd238a721cf171b3"}, + {file = "fonttools-4.43.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:20fc43783c432862071fa76da6fa714902ae587bc68441e12ff4099b94b1fcef"}, + {file = "fonttools-4.43.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:33c40a657fb87ff83185828c0323032d63a4df1279d5c1c38e21f3ec56327803"}, + {file = "fonttools-4.43.0-cp310-cp310-win32.whl", hash = "sha256:b3813f57f85bbc0e4011a0e1e9211f9ee52f87f402e41dc05bc5135f03fa51c1"}, + {file = "fonttools-4.43.0-cp310-cp310-win_amd64.whl", hash = "sha256:05056a8c9af048381fdb17e89b17d45f6c8394176d01e8c6fef5ac96ea950d38"}, + {file = "fonttools-4.43.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:da78f39b601ed0b4262929403186d65cf7a016f91ff349ab18fdc5a7080af465"}, + {file = "fonttools-4.43.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5056f69a18f3f28ab5283202d1efcfe011585d31de09d8560f91c6c88f041e92"}, + {file = "fonttools-4.43.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcc01cea0a121fb0c009993497bad93cae25e77db7dee5345fec9cce1aaa09cd"}, + {file = "fonttools-4.43.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee728d5af70f117581712966a21e2e07031e92c687ef1fdc457ac8d281016f64"}, + {file = "fonttools-4.43.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b5e760198f0b87e42478bb35a6eae385c636208f6f0d413e100b9c9c5efafb6a"}, + {file = "fonttools-4.43.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af38f5145258e9866da5881580507e6d17ff7756beef175d13213a43a84244e9"}, + {file = "fonttools-4.43.0-cp311-cp311-win32.whl", hash = "sha256:25620b738d4533cfc21fd2a4f4b667e481f7cb60e86b609799f7d98af657854e"}, + {file = "fonttools-4.43.0-cp311-cp311-win_amd64.whl", hash = "sha256:635658464dccff6fa5c3b43fe8f818ae2c386ee6a9e1abc27359d1e255528186"}, + {file = "fonttools-4.43.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a682fb5cbf8837d1822b80acc0be5ff2ea0c49ca836e468a21ffd388ef280fd3"}, + {file = "fonttools-4.43.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3d7adfa342e6b3a2b36960981f23f480969f833d565a4eba259c2e6f59d2674f"}, + {file = "fonttools-4.43.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aa67d1e720fdd902fde4a59d0880854ae9f19fc958f3e1538bceb36f7f4dc92"}, + {file = "fonttools-4.43.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77e5113233a2df07af9dbf493468ce526784c3b179c0e8b9c7838ced37c98b69"}, + {file = "fonttools-4.43.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:57c22e5f9f53630d458830f710424dce4f43c5f0d95cb3368c0f5178541e4db7"}, + {file = "fonttools-4.43.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:206808f9717c9b19117f461246372a2c160fa12b9b8dbdfb904ab50ca235ba0a"}, + {file = "fonttools-4.43.0-cp312-cp312-win32.whl", hash = "sha256:f19c2b1c65d57cbea25cabb80941fea3fbf2625ff0cdcae8900b5fb1c145704f"}, + {file = "fonttools-4.43.0-cp312-cp312-win_amd64.whl", hash = "sha256:7c76f32051159f8284f1a5f5b605152b5a530736fb8b55b09957db38dcae5348"}, + {file = "fonttools-4.43.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e3f8acc6ef4a627394021246e099faee4b343afd3ffe2e517d8195b4ebf20289"}, + {file = "fonttools-4.43.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a68b71adc3b3a90346e4ac92f0a69ab9caeba391f3b04ab6f1e98f2c8ebe88e3"}, + {file = "fonttools-4.43.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ace0fd5afb79849f599f76af5c6aa5e865bd042c811e4e047bbaa7752cc26126"}, + {file = "fonttools-4.43.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f9660e70a2430780e23830476332bc3391c3c8694769e2c0032a5038702a662"}, + {file = "fonttools-4.43.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:48078357984214ccd22d7fe0340cd6ff7286b2f74f173603a1a9a40b5dc25afe"}, + {file = "fonttools-4.43.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d27d960e10cf7617d70cf3104c32a69b008dde56f2d55a9bed4ba6e3df611544"}, + {file = "fonttools-4.43.0-cp38-cp38-win32.whl", hash = "sha256:a6a2e99bb9ea51e0974bbe71768df42c6dd189308c22f3f00560c3341b345646"}, + {file = "fonttools-4.43.0-cp38-cp38-win_amd64.whl", hash = "sha256:030355fbb0cea59cf75d076d04d3852900583d1258574ff2d7d719abf4513836"}, + {file = "fonttools-4.43.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:52e77f23a9c059f8be01a07300ba4c4d23dc271d33eed502aea5a01ab5d2f4c1"}, + {file = "fonttools-4.43.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6a530fa28c155538d32214eafa0964989098a662bd63e91e790e6a7a4e9c02da"}, + {file = "fonttools-4.43.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70f021a6b9eb10dfe7a411b78e63a503a06955dd6d2a4e130906d8760474f77c"}, + {file = "fonttools-4.43.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:812142a0e53cc853964d487e6b40963df62f522b1b571e19d1ff8467d7880ceb"}, + {file = "fonttools-4.43.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ace51902ab67ef5fe225e8b361039e996db153e467e24a28d35f74849b37b7ce"}, + {file = "fonttools-4.43.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8dfd8edfce34ad135bd69de20c77449c06e2c92b38f2a8358d0987737f82b49e"}, + {file = "fonttools-4.43.0-cp39-cp39-win32.whl", hash = "sha256:e5d53eddaf436fa131042f44a76ea1ead0a17c354ab9de0d80e818f0cb1629f1"}, + {file = "fonttools-4.43.0-cp39-cp39-win_amd64.whl", hash = "sha256:93c5b6d77baf28f306bc13fa987b0b13edca6a39dc2324eaca299a74ccc6316f"}, + {file = "fonttools-4.43.0-py3-none-any.whl", hash = "sha256:e4bc589d8da09267c7c4ceaaaa4fc01a7908ac5b43b286ac9279afe76407c384"}, + {file = "fonttools-4.43.0.tar.gz", hash = "sha256:b62a53a4ca83c32c6b78cac64464f88d02929779373c716f738af6968c8c821e"}, ] [package.extras] @@ -1147,13 +1150,13 @@ files = [ [[package]] name = "google-api-core" -version = "2.11.1" +version = "2.12.0" description = "Google API client core library" optional = false python-versions = ">=3.7" files = [ - {file = "google-api-core-2.11.1.tar.gz", hash = "sha256:25d29e05a0058ed5f19c61c0a78b1b53adea4d9364b464d014fbda941f6d1c9a"}, - {file = "google_api_core-2.11.1-py3-none-any.whl", hash = "sha256:d92a5a92dc36dd4f4b9ee4e55528a90e432b059f93aee6ad857f9de8cc7ae94a"}, + {file = "google-api-core-2.12.0.tar.gz", hash = "sha256:c22e01b1e3c4dcd90998494879612c38d0a3411d1f7b679eb89e2abe3ce1f553"}, + {file = "google_api_core-2.12.0-py3-none-any.whl", hash = "sha256:ec6054f7d64ad13b41e43d96f735acbd763b0f3b695dabaa2d579673f6a6e160"}, ] [package.dependencies] @@ -1169,27 +1172,26 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] [[package]] name = "google-auth" -version = "2.17.3" +version = "2.23.2" description = "Google Authentication Library" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" +python-versions = ">=3.7" files = [ - {file = "google-auth-2.17.3.tar.gz", hash = "sha256:ce311e2bc58b130fddf316df57c9b3943c2a7b4f6ec31de9663a9333e4064efc"}, - {file = "google_auth-2.17.3-py2.py3-none-any.whl", hash = "sha256:f586b274d3eb7bd932ea424b1c702a30e0393a2e2bc4ca3eae8263ffd8be229f"}, + {file = "google-auth-2.23.2.tar.gz", hash = "sha256:5a9af4be520ba33651471a0264eead312521566f44631cbb621164bc30c8fd40"}, + {file = "google_auth-2.23.2-py2.py3-none-any.whl", hash = "sha256:c2e253347579d483004f17c3bd0bf92e611ef6c7ba24d41c5c59f2e7aeeaf088"}, ] [package.dependencies] cachetools = ">=2.0.0,<6.0" pyasn1-modules = ">=0.2.1" -rsa = {version = ">=3.1.4,<5", markers = "python_version >= \"3.6\""} -six = ">=1.9.0" +rsa = ">=3.1.4,<5" [package.extras] -aiohttp = ["aiohttp (>=3.6.2,<4.0.0dev)", "requests (>=2.20.0,<3.0.0dev)"] +aiohttp = ["aiohttp (>=3.6.2,<4.0.0.dev0)", "requests (>=2.20.0,<3.0.0.dev0)"] enterprise-cert = ["cryptography (==36.0.2)", "pyopenssl (==22.0.0)"] pyopenssl = ["cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] reauth = ["pyu2f (>=0.1.5)"] -requests = ["requests (>=2.20.0,<3.0.0dev)"] +requests = ["requests (>=2.20.0,<3.0.0.dev0)"] [[package]] name = "googleapis-common-protos" @@ -1210,69 +1212,78 @@ grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] [[package]] name = "grpcio" -version = "1.58.0" +version = "1.59.0" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.7" files = [ - {file = "grpcio-1.58.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:3e6bebf1dfdbeb22afd95650e4f019219fef3ab86d3fca8ebade52e4bc39389a"}, - {file = "grpcio-1.58.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:cde11577d5b6fd73a00e6bfa3cf5f428f3f33c2d2878982369b5372bbc4acc60"}, - {file = "grpcio-1.58.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:a2d67ff99e70e86b2be46c1017ae40b4840d09467d5455b2708de6d4c127e143"}, - {file = "grpcio-1.58.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1ed979b273a81de36fc9c6716d9fb09dd3443efa18dcc8652501df11da9583e9"}, - {file = "grpcio-1.58.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:458899d2ebd55d5ca2350fd3826dfd8fcb11fe0f79828ae75e2b1e6051d50a29"}, - {file = "grpcio-1.58.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bc7ffef430b80345729ff0a6825e9d96ac87efe39216e87ac58c6c4ef400de93"}, - {file = "grpcio-1.58.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5b23d75e5173faa3d1296a7bedffb25afd2fddb607ef292dfc651490c7b53c3d"}, - {file = "grpcio-1.58.0-cp310-cp310-win32.whl", hash = "sha256:fad9295fe02455d4f158ad72c90ef8b4bcaadfdb5efb5795f7ab0786ad67dd58"}, - {file = "grpcio-1.58.0-cp310-cp310-win_amd64.whl", hash = "sha256:bc325fed4d074367bebd465a20763586e5e1ed5b943e9d8bc7c162b1f44fd602"}, - {file = "grpcio-1.58.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:652978551af02373a5a313e07bfef368f406b5929cf2d50fa7e4027f913dbdb4"}, - {file = "grpcio-1.58.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:9f13a171281ebb4d7b1ba9f06574bce2455dcd3f2f6d1fbe0fd0d84615c74045"}, - {file = "grpcio-1.58.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:8774219e21b05f750eef8adc416e9431cf31b98f6ce9def288e4cea1548cbd22"}, - {file = "grpcio-1.58.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09206106848462763f7f273ca93d2d2d4d26cab475089e0de830bb76be04e9e8"}, - {file = "grpcio-1.58.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62831d5e251dd7561d9d9e83a0b8655084b2a1f8ea91e4bd6b3cedfefd32c9d2"}, - {file = "grpcio-1.58.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:212f38c6a156862098f6bdc9a79bf850760a751d259d8f8f249fc6d645105855"}, - {file = "grpcio-1.58.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4b12754af201bb993e6e2efd7812085ddaaef21d0a6f0ff128b97de1ef55aa4a"}, - {file = "grpcio-1.58.0-cp311-cp311-win32.whl", hash = "sha256:3886b4d56bd4afeac518dbc05933926198aa967a7d1d237a318e6fbc47141577"}, - {file = "grpcio-1.58.0-cp311-cp311-win_amd64.whl", hash = "sha256:002f228d197fea12797a14e152447044e14fb4fdb2eb5d6cfa496f29ddbf79ef"}, - {file = "grpcio-1.58.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:b5e8db0aff0a4819946215f156bd722b6f6c8320eb8419567ffc74850c9fd205"}, - {file = "grpcio-1.58.0-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:201e550b7e2ede113b63e718e7ece93cef5b0fbf3c45e8fe4541a5a4305acd15"}, - {file = "grpcio-1.58.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:d79b660681eb9bc66cc7cbf78d1b1b9e335ee56f6ea1755d34a31108b80bd3c8"}, - {file = "grpcio-1.58.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ef8d4a76d2c7d8065aba829f8d0bc0055495c998dce1964ca5b302d02514fb3"}, - {file = "grpcio-1.58.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6cba491c638c76d3dc6c191d9c75041ca5b8f5c6de4b8327ecdcab527f130bb4"}, - {file = "grpcio-1.58.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6801ff6652ecd2aae08ef994a3e49ff53de29e69e9cd0fd604a79ae4e545a95c"}, - {file = "grpcio-1.58.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:24edec346e69e672daf12b2c88e95c6f737f3792d08866101d8c5f34370c54fd"}, - {file = "grpcio-1.58.0-cp37-cp37m-win_amd64.whl", hash = "sha256:7e473a7abad9af48e3ab5f3b5d237d18208024d28ead65a459bd720401bd2f8f"}, - {file = "grpcio-1.58.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:4891bbb4bba58acd1d620759b3be11245bfe715eb67a4864c8937b855b7ed7fa"}, - {file = "grpcio-1.58.0-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:e9f995a8a421405958ff30599b4d0eec244f28edc760de82f0412c71c61763d2"}, - {file = "grpcio-1.58.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:2f85f87e2f087d9f632c085b37440a3169fda9cdde80cb84057c2fc292f8cbdf"}, - {file = "grpcio-1.58.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb6b92036ff312d5b4182fa72e8735d17aceca74d0d908a7f08e375456f03e07"}, - {file = "grpcio-1.58.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d81c2b2b24c32139dd2536972f1060678c6b9fbd106842a9fcdecf07b233eccd"}, - {file = "grpcio-1.58.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:fbcecb6aedd5c1891db1d70efbfbdc126c986645b5dd616a045c07d6bd2dfa86"}, - {file = "grpcio-1.58.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:92ae871a902cf19833328bd6498ec007b265aabf2fda845ab5bd10abcaf4c8c6"}, - {file = "grpcio-1.58.0-cp38-cp38-win32.whl", hash = "sha256:dc72e04620d49d3007771c0e0348deb23ca341c0245d610605dddb4ac65a37cb"}, - {file = "grpcio-1.58.0-cp38-cp38-win_amd64.whl", hash = "sha256:1c1c5238c6072470c7f1614bf7c774ffde6b346a100521de9ce791d1e4453afe"}, - {file = "grpcio-1.58.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:fe643af248442221db027da43ed43e53b73e11f40c9043738de9a2b4b6ca7697"}, - {file = "grpcio-1.58.0-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:128eb1f8e70676d05b1b0c8e6600320fc222b3f8c985a92224248b1367122188"}, - {file = "grpcio-1.58.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:039003a5e0ae7d41c86c768ef8b3ee2c558aa0a23cf04bf3c23567f37befa092"}, - {file = "grpcio-1.58.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8f061722cad3f9aabb3fbb27f3484ec9d4667b7328d1a7800c3c691a98f16bb0"}, - {file = "grpcio-1.58.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba0af11938acf8cd4cf815c46156bcde36fa5850518120920d52620cc3ec1830"}, - {file = "grpcio-1.58.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d4cef77ad2fed42b1ba9143465856d7e737279854e444925d5ba45fc1f3ba727"}, - {file = "grpcio-1.58.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:24765a627eb4d9288ace32d5104161c3654128fe27f2808ecd6e9b0cfa7fc8b9"}, - {file = "grpcio-1.58.0-cp39-cp39-win32.whl", hash = "sha256:f0241f7eb0d2303a545136c59bc565a35c4fc3b924ccbd69cb482f4828d6f31c"}, - {file = "grpcio-1.58.0-cp39-cp39-win_amd64.whl", hash = "sha256:dcfba7befe3a55dab6fe1eb7fc9359dc0c7f7272b30a70ae0af5d5b063842f28"}, - {file = "grpcio-1.58.0.tar.gz", hash = "sha256:532410c51ccd851b706d1fbc00a87be0f5312bd6f8e5dbf89d4e99c7f79d7499"}, + {file = "grpcio-1.59.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:225e5fa61c35eeaebb4e7491cd2d768cd8eb6ed00f2664fa83a58f29418b39fd"}, + {file = "grpcio-1.59.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:b95ec8ecc4f703f5caaa8d96e93e40c7f589bad299a2617bdb8becbcce525539"}, + {file = "grpcio-1.59.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:1a839ba86764cc48226f50b924216000c79779c563a301586a107bda9cbe9dcf"}, + {file = "grpcio-1.59.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6cfe44a5d7c7d5f1017a7da1c8160304091ca5dc64a0f85bca0d63008c3137a"}, + {file = "grpcio-1.59.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0fcf53df684fcc0154b1e61f6b4a8c4cf5f49d98a63511e3f30966feff39cd0"}, + {file = "grpcio-1.59.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa66cac32861500f280bb60fe7d5b3e22d68c51e18e65367e38f8669b78cea3b"}, + {file = "grpcio-1.59.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8cd2d38c2d52f607d75a74143113174c36d8a416d9472415eab834f837580cf7"}, + {file = "grpcio-1.59.0-cp310-cp310-win32.whl", hash = "sha256:228b91ce454876d7eed74041aff24a8f04c0306b7250a2da99d35dd25e2a1211"}, + {file = "grpcio-1.59.0-cp310-cp310-win_amd64.whl", hash = "sha256:ca87ee6183421b7cea3544190061f6c1c3dfc959e0b57a5286b108511fd34ff4"}, + {file = "grpcio-1.59.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:c173a87d622ea074ce79be33b952f0b424fa92182063c3bda8625c11d3585d09"}, + {file = "grpcio-1.59.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:ec78aebb9b6771d6a1de7b6ca2f779a2f6113b9108d486e904bde323d51f5589"}, + {file = "grpcio-1.59.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:0b84445fa94d59e6806c10266b977f92fa997db3585f125d6b751af02ff8b9fe"}, + {file = "grpcio-1.59.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c251d22de8f9f5cca9ee47e4bade7c5c853e6e40743f47f5cc02288ee7a87252"}, + {file = "grpcio-1.59.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:956f0b7cb465a65de1bd90d5a7475b4dc55089b25042fe0f6c870707e9aabb1d"}, + {file = "grpcio-1.59.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:38da5310ef84e16d638ad89550b5b9424df508fd5c7b968b90eb9629ca9be4b9"}, + {file = "grpcio-1.59.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:63982150a7d598281fa1d7ffead6096e543ff8be189d3235dd2b5604f2c553e5"}, + {file = "grpcio-1.59.0-cp311-cp311-win32.whl", hash = "sha256:50eff97397e29eeee5df106ea1afce3ee134d567aa2c8e04fabab05c79d791a7"}, + {file = "grpcio-1.59.0-cp311-cp311-win_amd64.whl", hash = "sha256:15f03bd714f987d48ae57fe092cf81960ae36da4e520e729392a59a75cda4f29"}, + {file = "grpcio-1.59.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:f1feb034321ae2f718172d86b8276c03599846dc7bb1792ae370af02718f91c5"}, + {file = "grpcio-1.59.0-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:d09bd2a4e9f5a44d36bb8684f284835c14d30c22d8ec92ce796655af12163588"}, + {file = "grpcio-1.59.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:2f120d27051e4c59db2f267b71b833796770d3ea36ca712befa8c5fff5da6ebd"}, + {file = "grpcio-1.59.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba0ca727a173ee093f49ead932c051af463258b4b493b956a2c099696f38aa66"}, + {file = "grpcio-1.59.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5711c51e204dc52065f4a3327dca46e69636a0b76d3e98c2c28c4ccef9b04c52"}, + {file = "grpcio-1.59.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:d74f7d2d7c242a6af9d4d069552ec3669965b74fed6b92946e0e13b4168374f9"}, + {file = "grpcio-1.59.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3859917de234a0a2a52132489c4425a73669de9c458b01c9a83687f1f31b5b10"}, + {file = "grpcio-1.59.0-cp312-cp312-win32.whl", hash = "sha256:de2599985b7c1b4ce7526e15c969d66b93687571aa008ca749d6235d056b7205"}, + {file = "grpcio-1.59.0-cp312-cp312-win_amd64.whl", hash = "sha256:598f3530231cf10ae03f4ab92d48c3be1fee0c52213a1d5958df1a90957e6a88"}, + {file = "grpcio-1.59.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:b34c7a4c31841a2ea27246a05eed8a80c319bfc0d3e644412ec9ce437105ff6c"}, + {file = "grpcio-1.59.0-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:c4dfdb49f4997dc664f30116af2d34751b91aa031f8c8ee251ce4dcfc11277b0"}, + {file = "grpcio-1.59.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:61bc72a00ecc2b79d9695220b4d02e8ba53b702b42411397e831c9b0589f08a3"}, + {file = "grpcio-1.59.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f367e4b524cb319e50acbdea57bb63c3b717c5d561974ace0b065a648bb3bad3"}, + {file = "grpcio-1.59.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:849c47ef42424c86af069a9c5e691a765e304079755d5c29eff511263fad9c2a"}, + {file = "grpcio-1.59.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c0488c2b0528e6072010182075615620071371701733c63ab5be49140ed8f7f0"}, + {file = "grpcio-1.59.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:611d9aa0017fa386809bddcb76653a5ab18c264faf4d9ff35cb904d44745f575"}, + {file = "grpcio-1.59.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e5378785dce2b91eb2e5b857ec7602305a3b5cf78311767146464bfa365fc897"}, + {file = "grpcio-1.59.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:fe976910de34d21057bcb53b2c5e667843588b48bf11339da2a75f5c4c5b4055"}, + {file = "grpcio-1.59.0-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:c041a91712bf23b2a910f61e16565a05869e505dc5a5c025d429ca6de5de842c"}, + {file = "grpcio-1.59.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:0ae444221b2c16d8211b55326f8ba173ba8f8c76349bfc1768198ba592b58f74"}, + {file = "grpcio-1.59.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ceb1e68135788c3fce2211de86a7597591f0b9a0d2bb80e8401fd1d915991bac"}, + {file = "grpcio-1.59.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c4b1cc3a9dc1924d2eb26eec8792fedd4b3fcd10111e26c1d551f2e4eda79ce"}, + {file = "grpcio-1.59.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:871371ce0c0055d3db2a86fdebd1e1d647cf21a8912acc30052660297a5a6901"}, + {file = "grpcio-1.59.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:93e9cb546e610829e462147ce724a9cb108e61647a3454500438a6deef610be1"}, + {file = "grpcio-1.59.0-cp38-cp38-win32.whl", hash = "sha256:f21917aa50b40842b51aff2de6ebf9e2f6af3fe0971c31960ad6a3a2b24988f4"}, + {file = "grpcio-1.59.0-cp38-cp38-win_amd64.whl", hash = "sha256:14890da86a0c0e9dc1ea8e90101d7a3e0e7b1e71f4487fab36e2bfd2ecadd13c"}, + {file = "grpcio-1.59.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:34341d9e81a4b669a5f5dca3b2a760b6798e95cdda2b173e65d29d0b16692857"}, + {file = "grpcio-1.59.0-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:986de4aa75646e963466b386a8c5055c8b23a26a36a6c99052385d6fe8aaf180"}, + {file = "grpcio-1.59.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:aca8a24fef80bef73f83eb8153f5f5a0134d9539b4c436a716256b311dda90a6"}, + {file = "grpcio-1.59.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:936b2e04663660c600d5173bc2cc84e15adbad9c8f71946eb833b0afc205b996"}, + {file = "grpcio-1.59.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc8bf2e7bc725e76c0c11e474634a08c8f24bcf7426c0c6d60c8f9c6e70e4d4a"}, + {file = "grpcio-1.59.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:81d86a096ccd24a57fa5772a544c9e566218bc4de49e8c909882dae9d73392df"}, + {file = "grpcio-1.59.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2ea95cd6abbe20138b8df965b4a8674ec312aaef3147c0f46a0bac661f09e8d0"}, + {file = "grpcio-1.59.0-cp39-cp39-win32.whl", hash = "sha256:3b8ff795d35a93d1df6531f31c1502673d1cebeeba93d0f9bd74617381507e3f"}, + {file = "grpcio-1.59.0-cp39-cp39-win_amd64.whl", hash = "sha256:38823bd088c69f59966f594d087d3a929d1ef310506bee9e3648317660d65b81"}, + {file = "grpcio-1.59.0.tar.gz", hash = "sha256:acf70a63cf09dd494000007b798aff88a436e1c03b394995ce450be437b8e54f"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.58.0)"] +protobuf = ["grpcio-tools (>=1.59.0)"] [[package]] name = "grpclib" -version = "0.4.5" +version = "0.4.6" description = "Pure-Python gRPC implementation for asyncio" optional = false python-versions = ">=3.7" files = [ - {file = "grpclib-0.4.5.tar.gz", hash = "sha256:bf83ed55aca59497e168761d9555056efc54a8f865316c3b39becd007e9f9a73"}, + {file = "grpclib-0.4.6.tar.gz", hash = "sha256:595d05236ca8b8f8e433f5bf6095e6354c1d8777d003ddaf5288efa9611e3fd6"}, ] [package.dependencies] @@ -1280,7 +1291,7 @@ h2 = ">=3.1.0,<5" multidict = "*" [package.extras] -protobuf = ["protobuf (>=3.15.0)"] +protobuf = ["protobuf (>=3.20.0)"] [[package]] name = "h2" @@ -1466,13 +1477,13 @@ sortedcontainers = ">=2.0,<3.0" [[package]] name = "ipython" -version = "8.15.0" +version = "8.16.1" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.9" files = [ - {file = "ipython-8.15.0-py3-none-any.whl", hash = "sha256:45a2c3a529296870a97b7de34eda4a31bee16bc7bf954e07d39abe49caf8f887"}, - {file = "ipython-8.15.0.tar.gz", hash = "sha256:2baeb5be6949eeebf532150f81746f8333e2ccce02de1c7eedde3f23ed5e9f1e"}, + {file = "ipython-8.16.1-py3-none-any.whl", hash = "sha256:0852469d4d579d9cd613c220af7bf0c9cc251813e12be647cb9d463939db9b1e"}, + {file = "ipython-8.16.1.tar.gz", hash = "sha256:ad52f58fca8f9f848e256c629eff888efc0528c12fe0f8ec14f33205f23ef938"}, ] [package.dependencies] @@ -1555,13 +1566,13 @@ files = [ [[package]] name = "jedi" -version = "0.19.0" +version = "0.19.1" description = "An autocompletion tool for Python that can be used for text editors." optional = false python-versions = ">=3.6" files = [ - {file = "jedi-0.19.0-py2.py3-none-any.whl", hash = "sha256:cb8ce23fbccff0025e9386b5cf85e892f94c9b822378f8da49970471335ac64e"}, - {file = "jedi-0.19.0.tar.gz", hash = "sha256:bcf9894f1753969cbac8022a8c2eaee06bfa3724e4192470aaffe7eb6272b0c4"}, + {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, + {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, ] [package.dependencies] @@ -1570,7 +1581,7 @@ parso = ">=0.8.3,<0.9.0" [package.extras] docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] +testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] [[package]] name = "jinja2" @@ -1671,13 +1682,13 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt [[package]] name = "jupyter-core" -version = "5.3.1" +version = "5.3.2" description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.3.1-py3-none-any.whl", hash = "sha256:ae9036db959a71ec1cac33081eeb040a79e681f08ab68b0883e9a676c7a90dce"}, - {file = "jupyter_core-5.3.1.tar.gz", hash = "sha256:5ba5c7938a7f97a6b0481463f7ff0dbac7c15ba48cf46fa4035ca6e838aa1aba"}, + {file = "jupyter_core-5.3.2-py3-none-any.whl", hash = "sha256:a4af53c3fa3f6330cebb0d9f658e148725d15652811d1c32dc0f63bb96f2e6d6"}, + {file = "jupyter_core-5.3.2.tar.gz", hash = "sha256:0c28db6cbe2c37b5b398e1a1a5b22f84fd64cd10afc1f6c05b02fb09481ba45f"}, ] [package.dependencies] @@ -1826,12 +1837,12 @@ files = [ [[package]] name = "laboneq" -version = "2.15.0" +version = "2.16.0" description = "Zurich Instruments LabOne Q software framework for quantum computing control" optional = false python-versions = ">=3.9" files = [ - {file = "laboneq-2.15.0-py3-none-any.whl", hash = "sha256:0e1060646c91ac6eea7b6ec1b4a053b1a1a9b66afd321f6aff44826cbed31274"}, + {file = "laboneq-2.16.0-py3-none-any.whl", hash = "sha256:02f827ad44fa09ec331af67685b4733d4cc68fb97b9418455017674aa9cd525b"}, ] [package.dependencies] @@ -1842,7 +1853,6 @@ flask = "*" intervaltree = "*" jsonschema = "*" lagom = "*" -marshmallow = "*" matplotlib = "*" numpy = "*" openpulse = "*" @@ -1858,6 +1868,7 @@ scipy = "*" sortedcollections = "*" sortedcontainers = "*" sqlitedict = "*" +typing-extensions = "*" zhinst-core = ">=23.6.46756,<23.7.0" zhinst-toolkit = ">=0.6.0,<0.7.0" zhinst-utils = "0.3.3" @@ -1927,51 +1938,6 @@ files = [ lint = ["pre-commit (>=3.3)"] test = ["pytest (>=7.4)", "pytest-cov (>=4.1)"] -[[package]] -name = "lazy-object-proxy" -version = "1.9.0" -description = "A fast and thorough lazy object proxy." -optional = false -python-versions = ">=3.7" -files = [ - {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, -] - [[package]] name = "markdown" version = "3.4.4" @@ -2194,13 +2160,13 @@ files = [ [[package]] name = "mistune" -version = "3.0.1" +version = "3.0.2" description = "A sane and fast Markdown parser with useful plugins and renderers" optional = false python-versions = ">=3.7" files = [ - {file = "mistune-3.0.1-py3-none-any.whl", hash = "sha256:b9b3e438efbb57c62b5beb5e134dab664800bdf1284a7ee09e8b12b13eb1aac6"}, - {file = "mistune-3.0.1.tar.gz", hash = "sha256:e912116c13aa0944f9dc530db38eb88f6a77087ab128f49f84a48f4c05ea163c"}, + {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, + {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, ] [[package]] @@ -2233,13 +2199,13 @@ tests = ["pytest (>=4.6)"] [[package]] name = "msal" -version = "1.24.0" +version = "1.24.1" description = "The Microsoft Authentication Library (MSAL) for Python library" optional = false python-versions = ">=2.7" files = [ - {file = "msal-1.24.0-py2.py3-none-any.whl", hash = "sha256:a7f2f342b80ba3fe168218003b6798cc81b83c9745284bf63fb8d4ec8e2dbc50"}, - {file = "msal-1.24.0.tar.gz", hash = "sha256:7d2ecdad41a5f73bb2b813f3061a4cf47c924621105a8ed137586fcb9d8f827e"}, + {file = "msal-1.24.1-py2.py3-none-any.whl", hash = "sha256:ce4320688f95c301ee74a4d0e9dbcfe029a63663a8cc61756f40d0d0d36574ad"}, + {file = "msal-1.24.1.tar.gz", hash = "sha256:aa0972884b3c6fdec53d9a0bd15c12e5bd7b71ac1b66d746f54d128709f3f8f8"}, ] [package.dependencies] @@ -2676,13 +2642,13 @@ files = [ [[package]] name = "packaging" -version = "23.1" +version = "23.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] @@ -2853,13 +2819,13 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa [[package]] name = "platformdirs" -version = "3.10.0" +version = "3.11.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, - {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, + {file = "platformdirs-3.11.0-py3-none-any.whl", hash = "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"}, + {file = "platformdirs-3.11.0.tar.gz", hash = "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3"}, ] [package.extras] @@ -3052,132 +3018,132 @@ pyasn1 = ">=0.4.6,<0.6.0" [[package]] name = "pybase64" -version = "1.3.0" +version = "1.3.1" description = "Fast Base64 encoding/decoding" optional = false python-versions = ">=3.6" files = [ - {file = "pybase64-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1c3c50f916b08ddfdcb55f71dd7815d16e12348a05bb2baa4bdb4207a855b60"}, - {file = "pybase64-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4ce18e91485309618509e61fe4451bca2abbf99018916067231fa554a104050"}, - {file = "pybase64-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e7c9cfef84405c5a7982a3915e73c1eed00adbdc0d651600775e758d8acdd74"}, - {file = "pybase64-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6e0269762ecc8875eafa8c4f415e65fe8509662561f85cbf0c14c17485e3c51"}, - {file = "pybase64-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a662dad865d884fcf3dd76e9c9a6e041cc888d4883e2d350b5df382bd880aede"}, - {file = "pybase64-1.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4fdfb96fc34eb22556130db66fc1a9033a9c181ce02baefa5f896da83897f748"}, - {file = "pybase64-1.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdda3b80252ae80dacebd27812d8d1f385b6c2b36395d8bcbeb4e34858392b61"}, - {file = "pybase64-1.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b47d755db5a4b5c0b7dd92efc4a6868b3dea199b559839a0f52f3d1f93df2555"}, - {file = "pybase64-1.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b780a0900f8f07f1c643f8c8e1be498cec64375ff62b0a27f5f21081a3786bd3"}, - {file = "pybase64-1.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a27a41ee58e2dc0520de83749a08b7cd1db8c95db9cedb42915e114bad61b0a8"}, - {file = "pybase64-1.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4e6ec9e77dd54f3356110078275d812ccaae5af1653d9d122d096b7feb61e286"}, - {file = "pybase64-1.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:761b0bffa29f7e22acf349d975cf478c7fb53dce816409b83d310fcfdca9b87b"}, - {file = "pybase64-1.3.0-cp310-cp310-win32.whl", hash = "sha256:6d7f4c1f5d79293c06d7d12e7f90686d687aca64daf63becb85717656ccac77c"}, - {file = "pybase64-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:1b120de9c80aebe2f8e3c02b092b6ae97e003fec5449a4ed960732224e831430"}, - {file = "pybase64-1.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:6f575171eea9e8d5d475c914e3ef9f0140c9fbad630a18dc796d814612ffdd72"}, - {file = "pybase64-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f2880a727e04e10acc4f39edcae6687a712fcee7e86996e8d1315e5859961880"}, - {file = "pybase64-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9112d8f87d08ac945a4de8dd5fc77709527c1f8fa6ef8154c10b25e757529baa"}, - {file = "pybase64-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b986782a21d13d07831ecdce149674aa0df7e1cc3c7deeeebcefe72449e7c692"}, - {file = "pybase64-1.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad71d3939291cb5cb88f60021835b16118abe18f377c75520ae39ea8a3b7788e"}, - {file = "pybase64-1.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d701c481134a0012689b95af95b2b334c3b4536e4e54ad44560143bc485ce4dc"}, - {file = "pybase64-1.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09cb05b23038d2a6d6385b885a6548ceb93c8ca7e8dfa9739b65bfcdaaafbb5"}, - {file = "pybase64-1.3.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c0487ab3fbf2999365008394f3fa580fd9eccd134ea0d27aad475144e3e29b4"}, - {file = "pybase64-1.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3e1e9aef13de94d4f47323f0c70ca57b8c422415a7110a6ac1496f4b633465a6"}, - {file = "pybase64-1.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:023f5dcf694b38f6f226a13f052e9a3d5cdd7cd540a0c2907e4a5fc60fb82fda"}, - {file = "pybase64-1.3.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:084a0e42bc6122479cc5a57b7d05b6eff60fbfd76497917498a372c59a9cb0c2"}, - {file = "pybase64-1.3.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:73fcc61605e95e19fd45cc3a7d976e8f3eed5bdc762ee87c720b03038a44acdb"}, - {file = "pybase64-1.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7f107465a99b050f8a53277657d26ef8b3592ce87b8d3606774bc4e21cf474fb"}, - {file = "pybase64-1.3.0-cp311-cp311-win32.whl", hash = "sha256:84a3c54dfa2f28b2b95ab9e36c4203c6ed031898d9f68ade4666228c0fb6f790"}, - {file = "pybase64-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1daa40308c7bccc68b11135b97a21d314eddca14bd0ba867a241c88756f5b17"}, - {file = "pybase64-1.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:32bfed3960b24c9f8381a7daad20201fc1c0c1fd6678f2ee8b70721a9ba94ec1"}, - {file = "pybase64-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cd15189032a5369ed7713528c7196a06c9d97b425690751f4b2497859d9cc491"}, - {file = "pybase64-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:04140eeb99a610fe72c521a0ca9c7cd156f9eb9abb24e81e3f038cf7765d87f3"}, - {file = "pybase64-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:600830e54322d7a5b6bca19a5fd1475956b1fe63c4880fd8c654002354271bb0"}, - {file = "pybase64-1.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a711faf667188e4307e40a77288b2acffe8b2098cdfa88f6330a97843a454837"}, - {file = "pybase64-1.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f24766d87ea152eea03c5ba1b5463974e2f07e7bab5ab4a28fea91c72c5363db"}, - {file = "pybase64-1.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5922e9bff4c6b9599db3a3f7f7aa33e2a6514ae1955bcdd96f6e617edcb556e2"}, - {file = "pybase64-1.3.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43d7911250c48c9cd7c10742a4c6945645481b49e6853fed2e9589298ca6be2c"}, - {file = "pybase64-1.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a89ebdf8db3a92a464c8fecdf4e507296f84b559da7db19f2828184b89258a52"}, - {file = "pybase64-1.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6e8ed8abeb5a5d19bef402a7ac99c05ccef4108f94d1fbc1a8c8b4aba8e25940"}, - {file = "pybase64-1.3.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:9dcb13da2b169c3dd6d61d3e6aeb04726756f3992d8c0b0c37c98e091571d5fe"}, - {file = "pybase64-1.3.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:94ea75c8b4375e03db22535afe7cb4ed01541cf4e9f67972e324b663c866e8ee"}, - {file = "pybase64-1.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e5138ce4c87758217b06d3b0220d26a0c67dbf9c9bc49709a013fe3574f387b3"}, - {file = "pybase64-1.3.0-cp312-cp312-win32.whl", hash = "sha256:4df71c9e6493faf940f6dfd9accbd145d58913fae7187099a7466f6795fdc5a3"}, - {file = "pybase64-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:f2e06859495a0b94044caf93dd6291612f80804f0a2337e69a491e2e7db0cd0b"}, - {file = "pybase64-1.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:ecb0e69617ba11382f97c8108ab45d4beb6fe169a886b2390d6dfedadb6bfdfd"}, - {file = "pybase64-1.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3105312354816f53235aaacd7ab17424bb8cd7ab6bc64661b0e32cfca8ae3b56"}, - {file = "pybase64-1.3.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64779d223cd5217f0ab34ffc53b0d251783fd9d3888b4d5a2267987a0c8e81d2"}, - {file = "pybase64-1.3.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c89d6a11f2c25d1628343c6f9834459a3bb421a622d5e873f6ccb04439d2f9e"}, - {file = "pybase64-1.3.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c7e9330665d3cd7bbe1cebab5872c78a991f127e4f76160b5c77a0b2c850212b"}, - {file = "pybase64-1.3.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d14446f6a3a6aafe3b9f919087d8222f207b7feee8f4dea39b587b3ccd7b0ec3"}, - {file = "pybase64-1.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ace49d18090433e27f2a3223372d60dc54d4c2b5b6dc1aaaee5e6be1c4b118"}, - {file = "pybase64-1.3.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:d0d55d352baedec77b4a10559ee6d513c914eb9e1a84ae499809616b2e494cdb"}, - {file = "pybase64-1.3.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6dd1fef54470c70aebb7918ac4c9c6aad19e8c4722f044a69d08d349d5582001"}, - {file = "pybase64-1.3.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:b4ff0a687aebc950800b0081ff2f4c8a791b652fbb3204df6a8486cb731d8681"}, - {file = "pybase64-1.3.0-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:054cd527e44b447f57dcbd045968b5757df96477ddf247b1043f7bd784436f50"}, - {file = "pybase64-1.3.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:760e4c25694d2126a31820b3fb5a8dee1f6d116ba8307a1cd73b04beeabc1300"}, - {file = "pybase64-1.3.0-cp36-cp36m-win32.whl", hash = "sha256:9450f2445be62545201a36bae53c715d2ef8cdef40c03018e41562dcfcf8672f"}, - {file = "pybase64-1.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2da52b4effc95b84a43a85bc69f6edbbb8576c2f0920e6447139cb39c8a86a1a"}, - {file = "pybase64-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5384bb0aba843e513738ec3c08f802e3fec540e804f04065784cf29ecb358532"}, - {file = "pybase64-1.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77fda6b9992c45c29479e8d46b4a26bc50a5008037e63ce2de6d2835aa6ae643"}, - {file = "pybase64-1.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:40e3286be3079da0511f012e2a3f0fd1d0dcbd8ac8596afadfd24b837da85ae2"}, - {file = "pybase64-1.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:167be16cf5e2a167de96969b356157392b775135860344efaa171d0a8ad2f240"}, - {file = "pybase64-1.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edb3a1be432e4e7a8bec9ac42a3704bffe876e277fdee375fc63f694a9282642"}, - {file = "pybase64-1.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cab93be620b01aedd048358cd6d15acfb3e58b27e4e57042590f612a4333f66"}, - {file = "pybase64-1.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7bd7f355041e9c6bfa96661db5d23157bbbbafa4c413c360e962aa56d0fd261d"}, - {file = "pybase64-1.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:081516b88d34b192da357e9edf9b73686777990616e051486797142250abb17f"}, - {file = "pybase64-1.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:02986c344eb4f4e16adf496d3c2e3c6f218127a5304cc8486e8c40bf149ab995"}, - {file = "pybase64-1.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:7d5628d5bf7234fadb223f5a362f35a5a45b08a1ef85c2bcb9153b381ca220be"}, - {file = "pybase64-1.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:22ab3496f5628e2296c5dbb0698d9a370fcf3101e3e43da9993f1679a4d08e7c"}, - {file = "pybase64-1.3.0-cp37-cp37m-win32.whl", hash = "sha256:80e3049dd3330af16b1b1730ce49c32860e2524aaa57e106f576ae58dfbd11a6"}, - {file = "pybase64-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:52a780adb709f9a4eb4e8739b71133fbec790136d5b8105ba92084bd7efc8b75"}, - {file = "pybase64-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5c7972ec871f9a59dc2b2b761a77822d369879d9059d5040d9bdefed80219ac1"}, - {file = "pybase64-1.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9e10721ca00ecc5e998d0f5b6e1d22b5dda7d720df175a5b1b415ee0a8862e27"}, - {file = "pybase64-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a24fc0ac869f3dac5eaef8d5cd20c27778bf6c8eefa585cc771b1b1e45329c90"}, - {file = "pybase64-1.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3b8e13f35b469c80c42c6fbafd8f15debd49d706fcf10a156c4aef724567b57"}, - {file = "pybase64-1.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1aa05749b6404832c0645da6fbcec1cffb9f83ea96f25e8e87c0298b306de91a"}, - {file = "pybase64-1.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6091282affb99c9771a1c2be98a390df13dd9010dd2f2fc3cc11249c316b776"}, - {file = "pybase64-1.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef2120533607e75a6d4ab40a83b5d485760e305d9839e9f468adead6009680b"}, - {file = "pybase64-1.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0029e5e4dbbeb9bbbe81df35982448158aa270f337ba15a9be6e1999322c1f42"}, - {file = "pybase64-1.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c96eadf90ce34a0d775f6c1e12438a5a39e672c65c6f5a2e72c78abe218dd834"}, - {file = "pybase64-1.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:34697476d10a68b9ec27ad76b2beaea429e587f3da49765946732a21fbb364e6"}, - {file = "pybase64-1.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a647e75f90dfa00faea1a36c84395de0c915de918793123082de9e4d2efe4d4d"}, - {file = "pybase64-1.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d42bba75a6637cbdfc8c5f1ebd3df04d6610bc13d72162703d3f5968d816a4a7"}, - {file = "pybase64-1.3.0-cp38-cp38-win32.whl", hash = "sha256:1b04ad2a872a954f8e1d85a1acdbb047e4f7ca288ddc9adea01b8b61d1a5ce5a"}, - {file = "pybase64-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:0c2012ea06337fc47668dd29b37c1c1fe4204e6b07d73379879be13090c57ebc"}, - {file = "pybase64-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:46ae310754ec9d63ab831006ce8fb8b184d8ab81c077f3007d913f744c2c2640"}, - {file = "pybase64-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:09f729e0f59605ee7eddbeea5439ddc57e4495dbb56cf5c2ffcaf9a0b496d4dd"}, - {file = "pybase64-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b582f9808dc0f8ed21b66087a8a4fe7cf7b4f3aeb9c11bea6f0d0c0bf746b23"}, - {file = "pybase64-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cbb65a5b4431def82bfc6809f04148e86a2b31200bd752a20d454743c8cf08e"}, - {file = "pybase64-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9d616a1c5b722c8f7b5343f12b86f8eee08615942b7e1a2894c3b666e6a4a394"}, - {file = "pybase64-1.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8a052d3a11c4b238eac7fd8b853c9bfbf477125df4dffe91c7a0ee27534a1ac"}, - {file = "pybase64-1.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ec4457cf566ffd8c60674415428a719d181dbff60bfebb3475a7b46deecc7b"}, - {file = "pybase64-1.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:938964ab5b79b45dccb00060b1566956ff6b5fa08f4c57dc34d31a4a14733176"}, - {file = "pybase64-1.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2314c1da06ddc3ba8ef98c55e6fea4959bdeae777e193d7b97dd16e85dc9bd2e"}, - {file = "pybase64-1.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f731cbab4f9c00fc93fdbd1d95a27f82d60c870bed116ffe68053770a3b1fa03"}, - {file = "pybase64-1.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:c1a8acd12247f5268755ff1e29fe7dded6fdae52d38ebd54f87405008e65bdae"}, - {file = "pybase64-1.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c2b499fb95ad2a8bb2a337646dff38b4118cdf1cab18db8d016121978bda6e8e"}, - {file = "pybase64-1.3.0-cp39-cp39-win32.whl", hash = "sha256:88c67b7c8e81a97c3e26c885245057cf7917545034a7c80e1b79cf96ebe8d661"}, - {file = "pybase64-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:029b539a9ead94ff9b1785152a7fa6d044a7dd6e6eb40d067fdfef0d39ea8185"}, - {file = "pybase64-1.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:c3cdca2e30185e2c110e112439eba55a8574cc9d0b97fe1c7bffd6f565f23d0a"}, - {file = "pybase64-1.3.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eb27c4142a574d48490aac927f58d5bc93f667e75969871fcaddfc4e621c0fae"}, - {file = "pybase64-1.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d286d637e5b83b06a2a8018cb4c552bb38e7f29259070e32d01be71d316a8b04"}, - {file = "pybase64-1.3.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0c14c0e722f8454ee39a760bdc8990c28d76d3f8356152389e93948933732fd"}, - {file = "pybase64-1.3.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5792d0a9e96d69138faf154c4e41ba1fb3113eec2cc4b75ebf2ca1813562a0fd"}, - {file = "pybase64-1.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:db452c8de23cf1d9ea6fff3e432fe1e857a5af366619900b8d96eb3171be6a40"}, - {file = "pybase64-1.3.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b74519a5bae86650726ff94aff1eab215b761eb5a9cf423055f8af119fb2bd3f"}, - {file = "pybase64-1.3.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:518fc740672bf3ebfaddc4672ef1528c90ec72d60f7b74a1b8cf8e2e04c2816d"}, - {file = "pybase64-1.3.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa0fd426ce1fad183df4a19d2839e32e38340febae5940a6195214bf24b31f08"}, - {file = "pybase64-1.3.0-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5278c3f6909f81ee9cd938456432efdc6b56631f556c2db7bdc541e3020080b"}, - {file = "pybase64-1.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:2aeb0e5b1f7c4cd037b1abdceb13fe508712fac947783fc4358fb72ab857fcc0"}, - {file = "pybase64-1.3.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:10e5df94f20a80699b6f6fa2d1dd25c8ebdde372043af5b89d60d9f1beee6a7c"}, - {file = "pybase64-1.3.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41483e0ebc683dcd964ae3f1426eddda51637ecfbb84fa721499951ee79b9652"}, - {file = "pybase64-1.3.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd670a397b402af1633fd813ad78ef197fd22c472158987edbd9ef5ea8a0e5d8"}, - {file = "pybase64-1.3.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:659fd451225607b36132e33105add31941f6183057441d43b50947bb0c3e440c"}, - {file = "pybase64-1.3.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8747dbc33efbf8920734e733ce624b507d912a336643d2c55ccc2bfd7c17a42c"}, - {file = "pybase64-1.3.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:32d6167422a86077f83ce4d6c87880b99ff7c1b76612cf3cc5e16b80073e6f27"}, - {file = "pybase64-1.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fbefec1cc7ce66880e9745bc7d8e13a25687fcbadf79d600890f24964c4d43b0"}, - {file = "pybase64-1.3.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99734f83fb4d9279d59e3bb7cfe5b92ab57807c229cacfa72a71cb340920c7fb"}, - {file = "pybase64-1.3.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb88c75be3799c15c5c7f61724668c685674752cbd5aee50201b6c99b73fb60c"}, - {file = "pybase64-1.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:25f4f8a1376374a1b04b169acce0093ade07df67a086a6d86333acb8e70e83f0"}, - {file = "pybase64-1.3.0.tar.gz", hash = "sha256:d4c6472ab0084ebd4ee005bb9851729bdc64d8f62c6fae5bdb076b2029f488ee"}, + {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"}, ] [[package]] @@ -3227,18 +3193,18 @@ files = [ [[package]] name = "pydantic" -version = "2.3.0" +version = "2.4.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic-2.3.0-py3-none-any.whl", hash = "sha256:45b5e446c6dfaad9444819a293b921a40e1db1aa61ea08aede0522529ce90e81"}, - {file = "pydantic-2.3.0.tar.gz", hash = "sha256:1607cc106602284cd4a00882986570472f193fde9cb1259bceeaedb26aa79a6d"}, + {file = "pydantic-2.4.2-py3-none-any.whl", hash = "sha256:bc3ddf669d234f4220e6e1c4d96b061abe0998185a8d7855c0126782b7abc8c1"}, + {file = "pydantic-2.4.2.tar.gz", hash = "sha256:94f336138093a5d7f426aac732dcfe7ab4eb4da243c88f891d65deb4a2556ee7"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.6.3" +pydantic-core = "2.10.1" typing-extensions = ">=4.6.1" [package.extras] @@ -3246,117 +3212,117 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.6.3" +version = "2.10.1" description = "" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic_core-2.6.3-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:1a0ddaa723c48af27d19f27f1c73bdc615c73686d763388c8683fe34ae777bad"}, - {file = "pydantic_core-2.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5cfde4fab34dd1e3a3f7f3db38182ab6c95e4ea91cf322242ee0be5c2f7e3d2f"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5493a7027bfc6b108e17c3383959485087d5942e87eb62bbac69829eae9bc1f7"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84e87c16f582f5c753b7f39a71bd6647255512191be2d2dbf49458c4ef024588"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:522a9c4a4d1924facce7270c84b5134c5cabcb01513213662a2e89cf28c1d309"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaafc776e5edc72b3cad1ccedb5fd869cc5c9a591f1213aa9eba31a781be9ac1"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a750a83b2728299ca12e003d73d1264ad0440f60f4fc9cee54acc489249b728"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e8b374ef41ad5c461efb7a140ce4730661aadf85958b5c6a3e9cf4e040ff4bb"}, - {file = "pydantic_core-2.6.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b594b64e8568cf09ee5c9501ede37066b9fc41d83d58f55b9952e32141256acd"}, - {file = "pydantic_core-2.6.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2a20c533cb80466c1d42a43a4521669ccad7cf2967830ac62c2c2f9cece63e7e"}, - {file = "pydantic_core-2.6.3-cp310-none-win32.whl", hash = "sha256:04fe5c0a43dec39aedba0ec9579001061d4653a9b53a1366b113aca4a3c05ca7"}, - {file = "pydantic_core-2.6.3-cp310-none-win_amd64.whl", hash = "sha256:6bf7d610ac8f0065a286002a23bcce241ea8248c71988bda538edcc90e0c39ad"}, - {file = "pydantic_core-2.6.3-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:6bcc1ad776fffe25ea5c187a028991c031a00ff92d012ca1cc4714087e575973"}, - {file = "pydantic_core-2.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:df14f6332834444b4a37685810216cc8fe1fe91f447332cd56294c984ecbff1c"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b7486d85293f7f0bbc39b34e1d8aa26210b450bbd3d245ec3d732864009819"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a892b5b1871b301ce20d40b037ffbe33d1407a39639c2b05356acfef5536d26a"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:883daa467865e5766931e07eb20f3e8152324f0adf52658f4d302242c12e2c32"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4eb77df2964b64ba190eee00b2312a1fd7a862af8918ec70fc2d6308f76ac64"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce8c84051fa292a5dc54018a40e2a1926fd17980a9422c973e3ebea017aa8da"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22134a4453bd59b7d1e895c455fe277af9d9d9fbbcb9dc3f4a97b8693e7e2c9b"}, - {file = "pydantic_core-2.6.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:02e1c385095efbd997311d85c6021d32369675c09bcbfff3b69d84e59dc103f6"}, - {file = "pydantic_core-2.6.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d79f1f2f7ebdb9b741296b69049ff44aedd95976bfee38eb4848820628a99b50"}, - {file = "pydantic_core-2.6.3-cp311-none-win32.whl", hash = "sha256:430ddd965ffd068dd70ef4e4d74f2c489c3a313adc28e829dd7262cc0d2dd1e8"}, - {file = "pydantic_core-2.6.3-cp311-none-win_amd64.whl", hash = "sha256:84f8bb34fe76c68c9d96b77c60cef093f5e660ef8e43a6cbfcd991017d375950"}, - {file = "pydantic_core-2.6.3-cp311-none-win_arm64.whl", hash = "sha256:5a2a3c9ef904dcdadb550eedf3291ec3f229431b0084666e2c2aa8ff99a103a2"}, - {file = "pydantic_core-2.6.3-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:8421cf496e746cf8d6b677502ed9a0d1e4e956586cd8b221e1312e0841c002d5"}, - {file = "pydantic_core-2.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bb128c30cf1df0ab78166ded1ecf876620fb9aac84d2413e8ea1594b588c735d"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37a822f630712817b6ecc09ccc378192ef5ff12e2c9bae97eb5968a6cdf3b862"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:240a015102a0c0cc8114f1cba6444499a8a4d0333e178bc504a5c2196defd456"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f90e5e3afb11268628c89f378f7a1ea3f2fe502a28af4192e30a6cdea1e7d5e"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:340e96c08de1069f3d022a85c2a8c63529fd88709468373b418f4cf2c949fb0e"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1480fa4682e8202b560dcdc9eeec1005f62a15742b813c88cdc01d44e85308e5"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f14546403c2a1d11a130b537dda28f07eb6c1805a43dae4617448074fd49c282"}, - {file = "pydantic_core-2.6.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a87c54e72aa2ef30189dc74427421e074ab4561cf2bf314589f6af5b37f45e6d"}, - {file = "pydantic_core-2.6.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f93255b3e4d64785554e544c1c76cd32f4a354fa79e2eeca5d16ac2e7fdd57aa"}, - {file = "pydantic_core-2.6.3-cp312-none-win32.whl", hash = "sha256:f70dc00a91311a1aea124e5f64569ea44c011b58433981313202c46bccbec0e1"}, - {file = "pydantic_core-2.6.3-cp312-none-win_amd64.whl", hash = "sha256:23470a23614c701b37252618e7851e595060a96a23016f9a084f3f92f5ed5881"}, - {file = "pydantic_core-2.6.3-cp312-none-win_arm64.whl", hash = "sha256:1ac1750df1b4339b543531ce793b8fd5c16660a95d13aecaab26b44ce11775e9"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:a53e3195f134bde03620d87a7e2b2f2046e0e5a8195e66d0f244d6d5b2f6d31b"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:f2969e8f72c6236c51f91fbb79c33821d12a811e2a94b7aa59c65f8dbdfad34a"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:672174480a85386dd2e681cadd7d951471ad0bb028ed744c895f11f9d51b9ebe"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:002d0ea50e17ed982c2d65b480bd975fc41086a5a2f9c924ef8fc54419d1dea3"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ccc13afee44b9006a73d2046068d4df96dc5b333bf3509d9a06d1b42db6d8bf"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:439a0de139556745ae53f9cc9668c6c2053444af940d3ef3ecad95b079bc9987"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d63b7545d489422d417a0cae6f9898618669608750fc5e62156957e609e728a5"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b44c42edc07a50a081672e25dfe6022554b47f91e793066a7b601ca290f71e42"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1c721bfc575d57305dd922e6a40a8fe3f762905851d694245807a351ad255c58"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5e4a2cf8c4543f37f5dc881de6c190de08096c53986381daebb56a355be5dfe6"}, - {file = "pydantic_core-2.6.3-cp37-none-win32.whl", hash = "sha256:d9b4916b21931b08096efed090327f8fe78e09ae8f5ad44e07f5c72a7eedb51b"}, - {file = "pydantic_core-2.6.3-cp37-none-win_amd64.whl", hash = "sha256:a8acc9dedd304da161eb071cc7ff1326aa5b66aadec9622b2574ad3ffe225525"}, - {file = "pydantic_core-2.6.3-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:5e9c068f36b9f396399d43bfb6defd4cc99c36215f6ff33ac8b9c14ba15bdf6b"}, - {file = "pydantic_core-2.6.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e61eae9b31799c32c5f9b7be906be3380e699e74b2db26c227c50a5fc7988698"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85463560c67fc65cd86153a4975d0b720b6d7725cf7ee0b2d291288433fc21b"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9616567800bdc83ce136e5847d41008a1d602213d024207b0ff6cab6753fe645"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e9b65a55bbabda7fccd3500192a79f6e474d8d36e78d1685496aad5f9dbd92c"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f468d520f47807d1eb5d27648393519655eadc578d5dd862d06873cce04c4d1b"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9680dd23055dd874173a3a63a44e7f5a13885a4cfd7e84814be71be24fba83db"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a718d56c4d55efcfc63f680f207c9f19c8376e5a8a67773535e6f7e80e93170"}, - {file = "pydantic_core-2.6.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8ecbac050856eb6c3046dea655b39216597e373aa8e50e134c0e202f9c47efec"}, - {file = "pydantic_core-2.6.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:788be9844a6e5c4612b74512a76b2153f1877cd845410d756841f6c3420230eb"}, - {file = "pydantic_core-2.6.3-cp38-none-win32.whl", hash = "sha256:07a1aec07333bf5adebd8264047d3dc518563d92aca6f2f5b36f505132399efc"}, - {file = "pydantic_core-2.6.3-cp38-none-win_amd64.whl", hash = "sha256:621afe25cc2b3c4ba05fff53525156d5100eb35c6e5a7cf31d66cc9e1963e378"}, - {file = "pydantic_core-2.6.3-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:813aab5bfb19c98ae370952b6f7190f1e28e565909bfc219a0909db168783465"}, - {file = "pydantic_core-2.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:50555ba3cb58f9861b7a48c493636b996a617db1a72c18da4d7f16d7b1b9952b"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19e20f8baedd7d987bd3f8005c146e6bcbda7cdeefc36fad50c66adb2dd2da48"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b0a5d7edb76c1c57b95df719af703e796fc8e796447a1da939f97bfa8a918d60"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f06e21ad0b504658a3a9edd3d8530e8cea5723f6ea5d280e8db8efc625b47e49"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea053cefa008fda40f92aab937fb9f183cf8752e41dbc7bc68917884454c6362"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:171a4718860790f66d6c2eda1d95dd1edf64f864d2e9f9115840840cf5b5713f"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ed7ceca6aba5331ece96c0e328cd52f0dcf942b8895a1ed2642de50800b79d3"}, - {file = "pydantic_core-2.6.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:acafc4368b289a9f291e204d2c4c75908557d4f36bd3ae937914d4529bf62a76"}, - {file = "pydantic_core-2.6.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1aa712ba150d5105814e53cb141412217146fedc22621e9acff9236d77d2a5ef"}, - {file = "pydantic_core-2.6.3-cp39-none-win32.whl", hash = "sha256:44b4f937b992394a2e81a5c5ce716f3dcc1237281e81b80c748b2da6dd5cf29a"}, - {file = "pydantic_core-2.6.3-cp39-none-win_amd64.whl", hash = "sha256:9b33bf9658cb29ac1a517c11e865112316d09687d767d7a0e4a63d5c640d1b17"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d7050899026e708fb185e174c63ebc2c4ee7a0c17b0a96ebc50e1f76a231c057"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99faba727727b2e59129c59542284efebbddade4f0ae6a29c8b8d3e1f437beb7"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fa159b902d22b283b680ef52b532b29554ea2a7fc39bf354064751369e9dbd7"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:046af9cfb5384f3684eeb3f58a48698ddab8dd870b4b3f67f825353a14441418"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:930bfe73e665ebce3f0da2c6d64455098aaa67e1a00323c74dc752627879fc67"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:85cc4d105747d2aa3c5cf3e37dac50141bff779545ba59a095f4a96b0a460e70"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b25afe9d5c4f60dcbbe2b277a79be114e2e65a16598db8abee2a2dcde24f162b"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e49ce7dc9f925e1fb010fc3d555250139df61fa6e5a0a95ce356329602c11ea9"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:2dd50d6a1aef0426a1d0199190c6c43ec89812b1f409e7fe44cb0fbf6dfa733c"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6595b0d8c8711e8e1dc389d52648b923b809f68ac1c6f0baa525c6440aa0daa"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ef724a059396751aef71e847178d66ad7fc3fc969a1a40c29f5aac1aa5f8784"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3c8945a105f1589ce8a693753b908815e0748f6279959a4530f6742e1994dcb6"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c8c6660089a25d45333cb9db56bb9e347241a6d7509838dbbd1931d0e19dbc7f"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:692b4ff5c4e828a38716cfa92667661a39886e71136c97b7dac26edef18767f7"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:f1a5d8f18877474c80b7711d870db0eeef9442691fcdb00adabfc97e183ee0b0"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:3796a6152c545339d3b1652183e786df648ecdf7c4f9347e1d30e6750907f5bb"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b962700962f6e7a6bd77e5f37320cabac24b4c0f76afeac05e9f93cf0c620014"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ea80269077003eaa59723bac1d8bacd2cd15ae30456f2890811efc1e3d4413"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c0ebbebae71ed1e385f7dfd9b74c1cff09fed24a6df43d326dd7f12339ec34"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:252851b38bad3bfda47b104ffd077d4f9604a10cb06fe09d020016a25107bf98"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:6656a0ae383d8cd7cc94e91de4e526407b3726049ce8d7939049cbfa426518c8"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d9140ded382a5b04a1c030b593ed9bf3088243a0a8b7fa9f071a5736498c5483"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d38bbcef58220f9c81e42c255ef0bf99735d8f11edef69ab0b499da77105158a"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:c9d469204abcca28926cbc28ce98f28e50e488767b084fb3fbdf21af11d3de26"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:48c1ed8b02ffea4d5c9c220eda27af02b8149fe58526359b3c07eb391cb353a2"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b2b1bfed698fa410ab81982f681f5b1996d3d994ae8073286515ac4d165c2e7"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf9d42a71a4d7a7c1f14f629e5c30eac451a6fc81827d2beefd57d014c006c4a"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4292ca56751aebbe63a84bbfc3b5717abb09b14d4b4442cc43fd7c49a1529efd"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7dc2ce039c7290b4ef64334ec7e6ca6494de6eecc81e21cb4f73b9b39991408c"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:615a31b1629e12445c0e9fc8339b41aaa6cc60bd53bf802d5fe3d2c0cda2ae8d"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1fa1f6312fb84e8c281f32b39affe81984ccd484da6e9d65b3d18c202c666149"}, - {file = "pydantic_core-2.6.3.tar.gz", hash = "sha256:1508f37ba9e3ddc0189e6ff4e2228bd2d3c3a4641cbe8c07177162f76ed696c7"}, + {file = "pydantic_core-2.10.1-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:d64728ee14e667ba27c66314b7d880b8eeb050e58ffc5fec3b7a109f8cddbd63"}, + {file = "pydantic_core-2.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:48525933fea744a3e7464c19bfede85df4aba79ce90c60b94d8b6e1eddd67096"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef337945bbd76cce390d1b2496ccf9f90b1c1242a3a7bc242ca4a9fc5993427a"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1392e0638af203cee360495fd2cfdd6054711f2db5175b6e9c3c461b76f5175"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0675ba5d22de54d07bccde38997e780044dcfa9a71aac9fd7d4d7a1d2e3e65f7"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:128552af70a64660f21cb0eb4876cbdadf1a1f9d5de820fed6421fa8de07c893"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f6e6aed5818c264412ac0598b581a002a9f050cb2637a84979859e70197aa9e"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ecaac27da855b8d73f92123e5f03612b04c5632fd0a476e469dfc47cd37d6b2e"}, + {file = "pydantic_core-2.10.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b3c01c2fb081fced3bbb3da78510693dc7121bb893a1f0f5f4b48013201f362e"}, + {file = "pydantic_core-2.10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:92f675fefa977625105708492850bcbc1182bfc3e997f8eecb866d1927c98ae6"}, + {file = "pydantic_core-2.10.1-cp310-none-win32.whl", hash = "sha256:420a692b547736a8d8703c39ea935ab5d8f0d2573f8f123b0a294e49a73f214b"}, + {file = "pydantic_core-2.10.1-cp310-none-win_amd64.whl", hash = "sha256:0880e239827b4b5b3e2ce05e6b766a7414e5f5aedc4523be6b68cfbc7f61c5d0"}, + {file = "pydantic_core-2.10.1-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:073d4a470b195d2b2245d0343569aac7e979d3a0dcce6c7d2af6d8a920ad0bea"}, + {file = "pydantic_core-2.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:600d04a7b342363058b9190d4e929a8e2e715c5682a70cc37d5ded1e0dd370b4"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39215d809470f4c8d1881758575b2abfb80174a9e8daf8f33b1d4379357e417c"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eeb3d3d6b399ffe55f9a04e09e635554012f1980696d6b0aca3e6cf42a17a03b"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a7a7902bf75779bc12ccfc508bfb7a4c47063f748ea3de87135d433a4cca7a2f"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3625578b6010c65964d177626fde80cf60d7f2e297d56b925cb5cdeda6e9925a"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:caa48fc31fc7243e50188197b5f0c4228956f97b954f76da157aae7f67269ae8"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:07ec6d7d929ae9c68f716195ce15e745b3e8fa122fc67698ac6498d802ed0fa4"}, + {file = "pydantic_core-2.10.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e6f31a17acede6a8cd1ae2d123ce04d8cca74056c9d456075f4f6f85de055607"}, + {file = "pydantic_core-2.10.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d8f1ebca515a03e5654f88411420fea6380fc841d1bea08effb28184e3d4899f"}, + {file = "pydantic_core-2.10.1-cp311-none-win32.whl", hash = "sha256:6db2eb9654a85ada248afa5a6db5ff1cf0f7b16043a6b070adc4a5be68c716d6"}, + {file = "pydantic_core-2.10.1-cp311-none-win_amd64.whl", hash = "sha256:4a5be350f922430997f240d25f8219f93b0c81e15f7b30b868b2fddfc2d05f27"}, + {file = "pydantic_core-2.10.1-cp311-none-win_arm64.whl", hash = "sha256:5fdb39f67c779b183b0c853cd6b45f7db84b84e0571b3ef1c89cdb1dfc367325"}, + {file = "pydantic_core-2.10.1-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:b1f22a9ab44de5f082216270552aa54259db20189e68fc12484873d926426921"}, + {file = "pydantic_core-2.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8572cadbf4cfa95fb4187775b5ade2eaa93511f07947b38f4cd67cf10783b118"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db9a28c063c7c00844ae42a80203eb6d2d6bbb97070cfa00194dff40e6f545ab"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0e2a35baa428181cb2270a15864ec6286822d3576f2ed0f4cd7f0c1708472aff"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05560ab976012bf40f25d5225a58bfa649bb897b87192a36c6fef1ab132540d7"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6495008733c7521a89422d7a68efa0a0122c99a5861f06020ef5b1f51f9ba7c"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ac492c686defc8e6133e3a2d9eaf5261b3df26b8ae97450c1647286750b901"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8282bab177a9a3081fd3d0a0175a07a1e2bfb7fcbbd949519ea0980f8a07144d"}, + {file = "pydantic_core-2.10.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:aafdb89fdeb5fe165043896817eccd6434aee124d5ee9b354f92cd574ba5e78f"}, + {file = "pydantic_core-2.10.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f6defd966ca3b187ec6c366604e9296f585021d922e666b99c47e78738b5666c"}, + {file = "pydantic_core-2.10.1-cp312-none-win32.whl", hash = "sha256:7c4d1894fe112b0864c1fa75dffa045720a194b227bed12f4be7f6045b25209f"}, + {file = "pydantic_core-2.10.1-cp312-none-win_amd64.whl", hash = "sha256:5994985da903d0b8a08e4935c46ed8daf5be1cf217489e673910951dc533d430"}, + {file = "pydantic_core-2.10.1-cp312-none-win_arm64.whl", hash = "sha256:0d8a8adef23d86d8eceed3e32e9cca8879c7481c183f84ed1a8edc7df073af94"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:9badf8d45171d92387410b04639d73811b785b5161ecadabf056ea14d62d4ede"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:ebedb45b9feb7258fac0a268a3f6bec0a2ea4d9558f3d6f813f02ff3a6dc6698"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfe1090245c078720d250d19cb05d67e21a9cd7c257698ef139bc41cf6c27b4f"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e357571bb0efd65fd55f18db0a2fb0ed89d0bb1d41d906b138f088933ae618bb"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b3dcd587b69bbf54fc04ca157c2323b8911033e827fffaecf0cafa5a892a0904"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c120c9ce3b163b985a3b966bb701114beb1da4b0468b9b236fc754783d85aa3"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15d6bca84ffc966cc9976b09a18cf9543ed4d4ecbd97e7086f9ce9327ea48891"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5cabb9710f09d5d2e9e2748c3e3e20d991a4c5f96ed8f1132518f54ab2967221"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:82f55187a5bebae7d81d35b1e9aaea5e169d44819789837cdd4720d768c55d15"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1d40f55222b233e98e3921df7811c27567f0e1a4411b93d4c5c0f4ce131bc42f"}, + {file = "pydantic_core-2.10.1-cp37-none-win32.whl", hash = "sha256:14e09ff0b8fe6e46b93d36a878f6e4a3a98ba5303c76bb8e716f4878a3bee92c"}, + {file = "pydantic_core-2.10.1-cp37-none-win_amd64.whl", hash = "sha256:1396e81b83516b9d5c9e26a924fa69164156c148c717131f54f586485ac3c15e"}, + {file = "pydantic_core-2.10.1-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6835451b57c1b467b95ffb03a38bb75b52fb4dc2762bb1d9dbed8de31ea7d0fc"}, + {file = "pydantic_core-2.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b00bc4619f60c853556b35f83731bd817f989cba3e97dc792bb8c97941b8053a"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fa467fd300a6f046bdb248d40cd015b21b7576c168a6bb20aa22e595c8ffcdd"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d99277877daf2efe074eae6338453a4ed54a2d93fb4678ddfe1209a0c93a2468"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa7db7558607afeccb33c0e4bf1c9a9a835e26599e76af6fe2fcea45904083a6"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aad7bd686363d1ce4ee930ad39f14e1673248373f4a9d74d2b9554f06199fb58"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:443fed67d33aa85357464f297e3d26e570267d1af6fef1c21ca50921d2976302"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:042462d8d6ba707fd3ce9649e7bf268633a41018d6a998fb5fbacb7e928a183e"}, + {file = "pydantic_core-2.10.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ecdbde46235f3d560b18be0cb706c8e8ad1b965e5c13bbba7450c86064e96561"}, + {file = "pydantic_core-2.10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ed550ed05540c03f0e69e6d74ad58d026de61b9eaebebbaaf8873e585cbb18de"}, + {file = "pydantic_core-2.10.1-cp38-none-win32.whl", hash = "sha256:8cdbbd92154db2fec4ec973d45c565e767ddc20aa6dbaf50142676484cbff8ee"}, + {file = "pydantic_core-2.10.1-cp38-none-win_amd64.whl", hash = "sha256:9f6f3e2598604956480f6c8aa24a3384dbf6509fe995d97f6ca6103bb8c2534e"}, + {file = "pydantic_core-2.10.1-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:655f8f4c8d6a5963c9a0687793da37b9b681d9ad06f29438a3b2326d4e6b7970"}, + {file = "pydantic_core-2.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e570ffeb2170e116a5b17e83f19911020ac79d19c96f320cbfa1fa96b470185b"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64322bfa13e44c6c30c518729ef08fda6026b96d5c0be724b3c4ae4da939f875"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:485a91abe3a07c3a8d1e082ba29254eea3e2bb13cbbd4351ea4e5a21912cc9b0"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7c2b8eb9fc872e68b46eeaf835e86bccc3a58ba57d0eedc109cbb14177be531"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a5cb87bdc2e5f620693148b5f8f842d293cae46c5f15a1b1bf7ceeed324a740c"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25bd966103890ccfa028841a8f30cebcf5875eeac8c4bde4fe221364c92f0c9a"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f323306d0556351735b54acbf82904fe30a27b6a7147153cbe6e19aaaa2aa429"}, + {file = "pydantic_core-2.10.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0c27f38dc4fbf07b358b2bc90edf35e82d1703e22ff2efa4af4ad5de1b3833e7"}, + {file = "pydantic_core-2.10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f1365e032a477c1430cfe0cf2856679529a2331426f8081172c4a74186f1d595"}, + {file = "pydantic_core-2.10.1-cp39-none-win32.whl", hash = "sha256:a1c311fd06ab3b10805abb72109f01a134019739bd3286b8ae1bc2fc4e50c07a"}, + {file = "pydantic_core-2.10.1-cp39-none-win_amd64.whl", hash = "sha256:ae8a8843b11dc0b03b57b52793e391f0122e740de3df1474814c700d2622950a"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d43002441932f9a9ea5d6f9efaa2e21458221a3a4b417a14027a1d530201ef1b"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fcb83175cc4936a5425dde3356f079ae03c0802bbdf8ff82c035f8a54b333521"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:962ed72424bf1f72334e2f1e61b68f16c0e596f024ca7ac5daf229f7c26e4208"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2cf5bb4dd67f20f3bbc1209ef572a259027c49e5ff694fa56bed62959b41e1f9"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e544246b859f17373bed915182ab841b80849ed9cf23f1f07b73b7c58baee5fb"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c0877239307b7e69d025b73774e88e86ce82f6ba6adf98f41069d5b0b78bd1bf"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:53df009d1e1ba40f696f8995683e067e3967101d4bb4ea6f667931b7d4a01357"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a1254357f7e4c82e77c348dabf2d55f1d14d19d91ff025004775e70a6ef40ada"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:524ff0ca3baea164d6d93a32c58ac79eca9f6cf713586fdc0adb66a8cdeab96a"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f0ac9fb8608dbc6eaf17956bf623c9119b4db7dbb511650910a82e261e6600f"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:320f14bd4542a04ab23747ff2c8a778bde727158b606e2661349557f0770711e"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:63974d168b6233b4ed6a0046296803cb13c56637a7b8106564ab575926572a55"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:417243bf599ba1f1fef2bb8c543ceb918676954734e2dcb82bf162ae9d7bd514"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dda81e5ec82485155a19d9624cfcca9be88a405e2857354e5b089c2a982144b2"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:14cfbb00959259e15d684505263d5a21732b31248a5dd4941f73a3be233865b9"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:631cb7415225954fdcc2a024119101946793e5923f6c4d73a5914d27eb3d3a05"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:bec7dd208a4182e99c5b6c501ce0b1f49de2802448d4056091f8e630b28e9a52"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:149b8a07712f45b332faee1a2258d8ef1fb4a36f88c0c17cb687f205c5dc6e7d"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d966c47f9dd73c2d32a809d2be529112d509321c5310ebf54076812e6ecd884"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7eb037106f5c6b3b0b864ad226b0b7ab58157124161d48e4b30c4a43fef8bc4b"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:154ea7c52e32dce13065dbb20a4a6f0cc012b4f667ac90d648d36b12007fa9f7"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e562617a45b5a9da5be4abe72b971d4f00bf8555eb29bb91ec2ef2be348cd132"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:f23b55eb5464468f9e0e9a9935ce3ed2a870608d5f534025cd5536bca25b1402"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:e9121b4009339b0f751955baf4543a0bfd6bc3f8188f8056b1a25a2d45099934"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:0523aeb76e03f753b58be33b26540880bac5aa54422e4462404c432230543f33"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e0e2959ef5d5b8dc9ef21e1a305a21a36e254e6a34432d00c72a92fdc5ecda5"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da01bec0a26befab4898ed83b362993c844b9a607a86add78604186297eb047e"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2e9072d71c1f6cfc79a36d4484c82823c560e6f5599c43c1ca6b5cdbd54f881"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f36a3489d9e28fe4b67be9992a23029c3cec0babc3bd9afb39f49844a8c721c5"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f64f82cc3443149292b32387086d02a6c7fb39b8781563e0ca7b8d7d9cf72bd7"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b4a6db486ac8e99ae696e09efc8b2b9fea67b63c8f88ba7a1a16c24a057a0776"}, + {file = "pydantic_core-2.10.1.tar.gz", hash = "sha256:0f8682dbdd2f67f8e1edddcbffcc29f60a6182b4901c367fc8c1c40d30bb0a82"}, ] [package.dependencies] @@ -3409,17 +3375,17 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pylint" -version = "2.17.5" +version = "3.0.0" description = "python code static checker" optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.8.0" files = [ - {file = "pylint-2.17.5-py3-none-any.whl", hash = "sha256:73995fb8216d3bed149c8d51bba25b2c52a8251a2c8ac846ec668ce38fab5413"}, - {file = "pylint-2.17.5.tar.gz", hash = "sha256:f7b601cbc06fef7e62a754e2b41294c2aa31f1cb659624b9a85bcba29eaf8252"}, + {file = "pylint-3.0.0-py3-none-any.whl", hash = "sha256:21da8ed1294f88d66c82eb3e624a0993291613548bb17fbccaa220c31c41293b"}, + {file = "pylint-3.0.0.tar.gz", hash = "sha256:d22816c963816d7810b87afe0bdf5c80009e1078ecbb9c8f2e2a24d4430039b1"}, ] [package.dependencies] -astroid = ">=2.15.6,<=2.17.0-dev0" +astroid = ">=3.0.0,<=3.1.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ {version = ">=0.2", markers = "python_version < \"3.11\""}, @@ -4135,29 +4101,15 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] -[[package]] -name = "retrying" -version = "1.3.4" -description = "Retrying" -optional = false -python-versions = "*" -files = [ - {file = "retrying-1.3.4-py3-none-any.whl", hash = "sha256:8cc4d43cb8e1125e0ff3344e9de678fefd85db3b750b81b2240dc0183af37b35"}, - {file = "retrying-1.3.4.tar.gz", hash = "sha256:345da8c5765bd982b1d1915deb9102fd3d1f7ad16bd84a9700b85f64d24e8f3e"}, -] - -[package.dependencies] -six = ">=1.7.0" - [[package]] name = "rich" -version = "13.5.3" +version = "13.6.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.7.0" files = [ - {file = "rich-13.5.3-py3-none-any.whl", hash = "sha256:9257b468badc3d347e146a4faa268ff229039d4c2d176ab0cffb4c4fbc73d5d9"}, - {file = "rich-13.5.3.tar.gz", hash = "sha256:87b43e0543149efa1253f485cd845bb7ee54df16c9617b8a893650ab84b4acb6"}, + {file = "rich-13.6.0-py3-none-any.whl", hash = "sha256:2b38e2fe9ca72c9a00170a1a2d20c63c790d0e10ef1fe35eba76e1e7b1d7d245"}, + {file = "rich-13.6.0.tar.gz", hash = "sha256:5c14d22737e6d5084ef4771b62d5d4363165b403455a30a1c8ca39dc7b644bef"}, ] [package.dependencies] @@ -4289,13 +4241,13 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruamel-yaml" -version = "0.17.32" +version = "0.17.33" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" optional = false python-versions = ">=3" files = [ - {file = "ruamel.yaml-0.17.32-py3-none-any.whl", hash = "sha256:23cd2ed620231677564646b0c6a89d138b6822a0d78656df7abda5879ec4f447"}, - {file = "ruamel.yaml-0.17.32.tar.gz", hash = "sha256:ec939063761914e14542972a5cba6d33c23b0859ab6342f61cf070cfc600efc2"}, + {file = "ruamel.yaml-0.17.33-py3-none-any.whl", hash = "sha256:2080c7a02b8a30fb3c06727cdf3e254a64055eedf3aa2d17c2b669639c04971b"}, + {file = "ruamel.yaml-0.17.33.tar.gz", hash = "sha256:5c56aa0bff2afceaa93bffbfc78b450b7dc1e01d5edb80b3a570695286ae62b1"}, ] [package.dependencies] @@ -4409,36 +4361,36 @@ tests = ["black (>=23.3.0)", "matplotlib (>=3.1.3)", "mypy (>=1.3)", "numpydoc ( [[package]] name = "scipy" -version = "1.11.2" +version = "1.11.3" description = "Fundamental algorithms for scientific computing in Python" optional = false python-versions = "<3.13,>=3.9" files = [ - {file = "scipy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2b997a5369e2d30c97995dcb29d638701f8000d04df01b8e947f206e5d0ac788"}, - {file = "scipy-1.11.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:95763fbda1206bec41157582bea482f50eb3702c85fffcf6d24394b071c0e87a"}, - {file = "scipy-1.11.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e367904a0fec76433bf3fbf3e85bf60dae8e9e585ffd21898ab1085a29a04d16"}, - {file = "scipy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d690e1ca993c8f7ede6d22e5637541217fc6a4d3f78b3672a6fe454dbb7eb9a7"}, - {file = "scipy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d2b813bfbe8dec6a75164523de650bad41f4405d35b0fa24c2c28ae07fcefb20"}, - {file = "scipy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:afdb0d983f6135d50770dd979df50bf1c7f58b5b33e0eb8cf5c73c70600eae1d"}, - {file = "scipy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d9886f44ef8c9e776cb7527fb01455bf4f4a46c455c4682edc2c2cc8cd78562"}, - {file = "scipy-1.11.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1342ca385c673208f32472830c10110a9dcd053cf0c4b7d4cd7026d0335a6c1d"}, - {file = "scipy-1.11.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b133f237bd8ba73bad51bc12eb4f2d84cbec999753bf25ba58235e9fc2096d80"}, - {file = "scipy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aeb87661de987f8ec56fa6950863994cd427209158255a389fc5aea51fa7055"}, - {file = "scipy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:90d3b1364e751d8214e325c371f0ee0dd38419268bf4888b2ae1040a6b266b2a"}, - {file = "scipy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:f73102f769ee06041a3aa26b5841359b1a93cc364ce45609657751795e8f4a4a"}, - {file = "scipy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa4909c6c20c3d91480533cddbc0e7c6d849e7d9ded692918c76ce5964997898"}, - {file = "scipy-1.11.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ac74b1512d38718fb6a491c439aa7b3605b96b1ed3be6599c17d49d6c60fca18"}, - {file = "scipy-1.11.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8425fa963a32936c9773ee3ce44a765d8ff67eed5f4ac81dc1e4a819a238ee9"}, - {file = "scipy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:542a757e2a6ec409e71df3d8fd20127afbbacb1c07990cb23c5870c13953d899"}, - {file = "scipy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ea932570b1c2a30edafca922345854ff2cd20d43cd9123b6dacfdecebfc1a80b"}, - {file = "scipy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:4447ad057d7597476f9862ecbd9285bbf13ba9d73ce25acfa4e4b11c6801b4c9"}, - {file = "scipy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b0620240ef445b5ddde52460e6bc3483b7c9c750275369379e5f609a1050911c"}, - {file = "scipy-1.11.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:f28f1f6cfeb48339c192efc6275749b2a25a7e49c4d8369a28b6591da02fbc9a"}, - {file = "scipy-1.11.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:214cdf04bbae7a54784f8431f976704ed607c4bc69ba0d5d5d6a9df84374df76"}, - {file = "scipy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10eb6af2f751aa3424762948e5352f707b0dece77288206f227864ddf675aca0"}, - {file = "scipy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0f3261f14b767b316d7137c66cc4f33a80ea05841b9c87ad83a726205b901423"}, - {file = "scipy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:2c91cf049ffb5575917f2a01da1da082fd24ed48120d08a6e7297dfcac771dcd"}, - {file = "scipy-1.11.2.tar.gz", hash = "sha256:b29318a5e39bd200ca4381d80b065cdf3076c7d7281c5e36569e99273867f61d"}, + {file = "scipy-1.11.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:370f569c57e1d888304052c18e58f4a927338eafdaef78613c685ca2ea0d1fa0"}, + {file = "scipy-1.11.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:9885e3e4f13b2bd44aaf2a1a6390a11add9f48d5295f7a592393ceb8991577a3"}, + {file = "scipy-1.11.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e04aa19acc324a1a076abb4035dabe9b64badb19f76ad9c798bde39d41025cdc"}, + {file = "scipy-1.11.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e1a8a4657673bfae1e05e1e1d6e94b0cabe5ed0c7c144c8aa7b7dbb774ce5c1"}, + {file = "scipy-1.11.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7abda0e62ef00cde826d441485e2e32fe737bdddee3324e35c0e01dee65e2a88"}, + {file = "scipy-1.11.3-cp310-cp310-win_amd64.whl", hash = "sha256:033c3fd95d55012dd1148b201b72ae854d5086d25e7c316ec9850de4fe776929"}, + {file = "scipy-1.11.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:925c6f09d0053b1c0f90b2d92d03b261e889b20d1c9b08a3a51f61afc5f58165"}, + {file = "scipy-1.11.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5664e364f90be8219283eeb844323ff8cd79d7acbd64e15eb9c46b9bc7f6a42a"}, + {file = "scipy-1.11.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00f325434b6424952fbb636506f0567898dca7b0f7654d48f1c382ea338ce9a3"}, + {file = "scipy-1.11.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f290cf561a4b4edfe8d1001ee4be6da60c1c4ea712985b58bf6bc62badee221"}, + {file = "scipy-1.11.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:91770cb3b1e81ae19463b3c235bf1e0e330767dca9eb4cd73ba3ded6c4151e4d"}, + {file = "scipy-1.11.3-cp311-cp311-win_amd64.whl", hash = "sha256:e1f97cd89c0fe1a0685f8f89d85fa305deb3067d0668151571ba50913e445820"}, + {file = "scipy-1.11.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:dfcc1552add7cb7c13fb70efcb2389d0624d571aaf2c80b04117e2755a0c5d15"}, + {file = "scipy-1.11.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0d3a136ae1ff0883fffbb1b05b0b2fea251cb1046a5077d0b435a1839b3e52b7"}, + {file = "scipy-1.11.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bae66a2d7d5768eaa33008fa5a974389f167183c87bf39160d3fefe6664f8ddc"}, + {file = "scipy-1.11.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2f6dee6cbb0e263b8142ed587bc93e3ed5e777f1f75448d24fb923d9fd4dce6"}, + {file = "scipy-1.11.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:74e89dc5e00201e71dd94f5f382ab1c6a9f3ff806c7d24e4e90928bb1aafb280"}, + {file = "scipy-1.11.3-cp312-cp312-win_amd64.whl", hash = "sha256:90271dbde4be191522b3903fc97334e3956d7cfb9cce3f0718d0ab4fd7d8bfd6"}, + {file = "scipy-1.11.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a63d1ec9cadecce838467ce0631c17c15c7197ae61e49429434ba01d618caa83"}, + {file = "scipy-1.11.3-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:5305792c7110e32ff155aed0df46aa60a60fc6e52cd4ee02cdeb67eaccd5356e"}, + {file = "scipy-1.11.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ea7f579182d83d00fed0e5c11a4aa5ffe01460444219dedc448a36adf0c3917"}, + {file = "scipy-1.11.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c77da50c9a91e23beb63c2a711ef9e9ca9a2060442757dffee34ea41847d8156"}, + {file = "scipy-1.11.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:15f237e890c24aef6891c7d008f9ff7e758c6ef39a2b5df264650eb7900403c0"}, + {file = "scipy-1.11.3-cp39-cp39-win_amd64.whl", hash = "sha256:4b4bb134c7aa457e26cc6ea482b016fef45db71417d55cc6d8f43d799cdf9ef2"}, + {file = "scipy-1.11.3.tar.gz", hash = "sha256:bba4d955f54edd61899776bad459bf7326e14b9fa1c552181f0479cc60a568cd"}, ] [package.dependencies] @@ -4467,25 +4419,25 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar [[package]] name = "setuptools-scm" -version = "8.0.3" +version = "8.0.4" description = "the blessed package to manage your versions by scm tags" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-scm-8.0.3.tar.gz", hash = "sha256:0169fd70197efda2f8c4d0b2a7a3d614431b488116f37b79d031e9e7ec884d8c"}, - {file = "setuptools_scm-8.0.3-py3-none-any.whl", hash = "sha256:813822234453438a13c78d05c8af29918fbc06f88efb33d38f065340bbb48c39"}, + {file = "setuptools-scm-8.0.4.tar.gz", hash = "sha256:b5f43ff6800669595193fd09891564ee9d1d7dcb196cab4b2506d53a2e1c95c7"}, + {file = "setuptools_scm-8.0.4-py3-none-any.whl", hash = "sha256:b47844cd2a84b83b3187a5782c71128c28b4c94cad8bfb871da2784a5cb54c4f"}, ] [package.dependencies] packaging = ">=20" setuptools = "*" tomli = {version = ">=1", markers = "python_version < \"3.11\""} -typing-extensions = {version = "*", markers = "python_version < \"3.11\""} +typing-extensions = "*" [package.extras] docs = ["entangled-cli[rich]", "mkdocs", "mkdocs-entangled-plugin", "mkdocs-material", "mkdocstrings[python]", "pygments"] rich = ["rich"] -test = ["pytest", "rich", "virtualenv (>20)"] +test = ["build", "pytest", "rich", "wheel"] [[package]] name = "six" @@ -4778,13 +4730,13 @@ files = [ [[package]] name = "stack-data" -version = "0.6.2" +version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" optional = false python-versions = "*" files = [ - {file = "stack_data-0.6.2-py3-none-any.whl", hash = "sha256:cbb2a53eb64e5785878201a97ed7c7b94883f48b87bfb0bbe8b623c74679e4a8"}, - {file = "stack_data-0.6.2.tar.gz", hash = "sha256:32d2dd0376772d01b6cb9fc996f3c8b57a357089dec328ed4b6553d037eaf815"}, + {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, + {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, ] [package.dependencies] @@ -4941,13 +4893,13 @@ telegram = ["requests"] [[package]] name = "traitlets" -version = "5.10.0" +version = "5.11.1" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" files = [ - {file = "traitlets-5.10.0-py3-none-any.whl", hash = "sha256:417745a96681fbb358e723d5346a547521f36e9bd0d50ba7ab368fff5d67aa54"}, - {file = "traitlets-5.10.0.tar.gz", hash = "sha256:f584ea209240466e66e91f3c81aa7d004ba4cf794990b0c775938a1544217cd1"}, + {file = "traitlets-5.11.1-py3-none-any.whl", hash = "sha256:2351372ff87fc912c483d1cb6aa466573d5f44eb4ed9e602c8d0ac012c9daece"}, + {file = "traitlets-5.11.1.tar.gz", hash = "sha256:813584bb569ac4a098c64ca494e8a3bbfef42e37c36a6132bca554aabd111480"}, ] [package.extras] @@ -4987,13 +4939,13 @@ tests = ["nose", "numpy"] [[package]] name = "urllib3" -version = "2.0.5" +version = "2.0.6" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.7" files = [ - {file = "urllib3-2.0.5-py3-none-any.whl", hash = "sha256:ef16afa8ba34a1f989db38e1dbbe0c302e4289a47856990d0682e374563ce35e"}, - {file = "urllib3-2.0.5.tar.gz", hash = "sha256:13abf37382ea2ce6fb744d4dad67838eec857c9f4f57009891805e0b5e123594"}, + {file = "urllib3-2.0.6-py3-none-any.whl", hash = "sha256:7a7c7003b000adf9e7ca2a377c9688bbc54ed41b985789ed576570342a375cd2"}, + {file = "urllib3-2.0.6.tar.gz", hash = "sha256:b19e1a85d206b56d7df1d5e683df4a7725252a964e3993648dd0fb5a1c157564"}, ] [package.extras] @@ -5004,13 +4956,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "versioningit" -version = "2.2.0" +version = "2.2.1" description = "Versioning It with your Version In Git" optional = false python-versions = ">=3.7" files = [ - {file = "versioningit-2.2.0-py3-none-any.whl", hash = "sha256:b95a1bcebb25bd22208972282dfc938e672e5533b1c5ca8f699bd382f7f94476"}, - {file = "versioningit-2.2.0.tar.gz", hash = "sha256:eb18e7ba7268a880bf1ccfe92e534e96ab34e0397f28dcbcb3fc0da4f6a5b6bd"}, + {file = "versioningit-2.2.1-py3-none-any.whl", hash = "sha256:075b31872307f68332a61ca529f86f07655a96b07984e0ecc6a5ae5ddf44adf2"}, + {file = "versioningit-2.2.1.tar.gz", hash = "sha256:0e58242d7abda61ae63596a5494ae9ed631ac85d8bb3cc8e176e3253ca4bcbb5"}, ] [package.dependencies] @@ -5035,13 +4987,13 @@ testing = ["coverage (>=5.0)", "pytest", "pytest-cover"] [[package]] name = "wcwidth" -version = "0.2.6" +version = "0.2.8" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.6-py2.py3-none-any.whl", hash = "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e"}, - {file = "wcwidth-0.2.6.tar.gz", hash = "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0"}, + {file = "wcwidth-0.2.8-py2.py3-none-any.whl", hash = "sha256:77f719e01648ed600dfa5402c347481c0992263b81a027344f3e1ba25493a704"}, + {file = "wcwidth-0.2.8.tar.gz", hash = "sha256:8705c569999ffbb4f6a87c6d1b80f324bd6db952f5eb0b95bc07517f4c1813d4"}, ] [[package]] @@ -5136,20 +5088,20 @@ files = [ [[package]] name = "werkzeug" -version = "2.2.3" +version = "3.0.0" description = "The comprehensive WSGI web application library." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Werkzeug-2.2.3-py3-none-any.whl", hash = "sha256:56433961bc1f12533306c624f3be5e744389ac61d722175d543e1751285da612"}, - {file = "Werkzeug-2.2.3.tar.gz", hash = "sha256:2e1ccc9417d4da358b9de6f174e3ac094391ea1d4fbef2d667865d819dfd0afe"}, + {file = "werkzeug-3.0.0-py3-none-any.whl", hash = "sha256:cbb2600f7eabe51dbc0502f58be0b3e1b96b893b05695ea2b35b43d4de2d9962"}, + {file = "werkzeug-3.0.0.tar.gz", hash = "sha256:3ffff4dcc32db52ef3cc94dff3000a3c2846890f3a5a51800a27b909c5e770f0"}, ] [package.dependencies] MarkupSafe = ">=2.1.1" [package.extras] -watchdog = ["watchdog"] +watchdog = ["watchdog (>=2.3)"] [[package]] name = "widgetsnbextension" @@ -5248,13 +5200,13 @@ files = [ [[package]] name = "xarray" -version = "2023.8.0" +version = "2023.9.0" description = "N-D labeled arrays and datasets in Python" optional = false python-versions = ">=3.9" files = [ - {file = "xarray-2023.8.0-py3-none-any.whl", hash = "sha256:eb42b56aea2c7d5db2a7d0c33fb005b78eb5c4421eb747f2ced138c70b5c204e"}, - {file = "xarray-2023.8.0.tar.gz", hash = "sha256:825c6d64202a731a4e49321edd1e9dfabf4be06802f1b8c8a3c00a3ebfc8cedf"}, + {file = "xarray-2023.9.0-py3-none-any.whl", hash = "sha256:3fc4a558bd70968040a4e1cefc6ddb3f9a7a86ef6a48e67857156ffe655d3a66"}, + {file = "xarray-2023.9.0.tar.gz", hash = "sha256:271955c05dc626dad37791a7807d920aaf9c64cac71d03b45ec7e402cc646603"}, ] [package.dependencies] @@ -5264,8 +5216,7 @@ pandas = ">=1.4" [package.extras] accel = ["bottleneck", "flox", "numbagg", "scipy"] -complete = ["bottleneck", "cftime", "dask[complete]", "flox", "fsspec", "h5netcdf", "matplotlib", "nc-time-axis", "netCDF4", "numbagg", "pooch", "pydap", "scipy", "seaborn", "zarr"] -docs = ["bottleneck", "cftime", "dask[complete]", "flox", "fsspec", "h5netcdf", "ipykernel", "ipython", "jupyter-client", "matplotlib", "nbsphinx", "nc-time-axis", "netCDF4", "numbagg", "pooch", "pydap", "scanpydoc", "scipy", "seaborn", "sphinx-autosummary-accessors", "sphinx-rtd-theme", "zarr"] +complete = ["xarray[accel,io,parallel,viz]"] io = ["cftime", "fsspec", "h5netcdf", "netCDF4", "pooch", "pydap", "scipy", "zarr"] parallel = ["dask[complete]"] viz = ["matplotlib", "nc-time-axis", "seaborn"] @@ -5364,4 +5315,4 @@ zh = ["laboneq"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.12" -content-hash = "421521b845346b151e4618ed753cea69f9a7632fe4c97a67dd51735970ea1eb0" +content-hash = "488803f4dbf6cfaa28c75f19dba35f3354a5c0b6586ce67255bc1e771016c7d4" diff --git a/pyproject.toml b/pyproject.toml index 7eb9e5284..fd04325d8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,7 +54,7 @@ qcodes = "^0.37.0" qcodes_contrib_drivers = "0.18.0" qibosoq = ">=0.0.4,<0.2" qualang-tools = "==0.14.0" -laboneq = ">=2.12.0" +laboneq = ">=2.16.0" [tool.poetry.group.tests] optional = true From 1ada23caa0598e2883606a5cf60f7cc764ca8160 Mon Sep 17 00:00:00 2001 From: Stefano Carrazza Date: Wed, 4 Oct 2023 17:39:40 +0200 Subject: [PATCH 52/52] updating lock --- poetry.lock | 104 ++++++++++++++++++++++++++-------------------------- 1 file changed, 51 insertions(+), 53 deletions(-) diff --git a/poetry.lock b/poetry.lock index 80c259c8d..6d6c255ac 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2341,13 +2341,13 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= [[package]] name = "nbconvert" -version = "7.8.0" +version = "7.9.1" description = "Converting Jupyter Notebooks" optional = false python-versions = ">=3.8" files = [ - {file = "nbconvert-7.8.0-py3-none-any.whl", hash = "sha256:aec605e051fa682ccc7934ccc338ba1e8b626cfadbab0db592106b630f63f0f2"}, - {file = "nbconvert-7.8.0.tar.gz", hash = "sha256:f5bc15a1247e14dd41ceef0c0a3bc70020e016576eb0578da62f1c5b4f950479"}, + {file = "nbconvert-7.9.1-py3-none-any.whl", hash = "sha256:94ebed2529152e01866694e924b45fb8d7dd14380ae43782ceabac1fb7f7c490"}, + {file = "nbconvert-7.9.1.tar.gz", hash = "sha256:8a688aed706da51bdd08661ecbd8e536bace88888ef5748ea53c8c996632f1e4"}, ] [package.dependencies] @@ -2374,7 +2374,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)", "pre-commit", "pytest", "pytest-dependency"] +test = ["flaky", "ipykernel", "ipywidgets (>=7)", "pytest", "pytest-dependency"] webpdf = ["playwright"] [[package]] @@ -3921,13 +3921,13 @@ test = ["coverage[toml] (>=6.2)", "mypy (>=0.940)", "pytest (>=6.2.2)", "pytest- [[package]] name = "qibo" -version = "0.2.0" +version = "0.2.1" description = "A framework for quantum computing with hardware acceleration." optional = false python-versions = ">=3.8,<3.12" files = [ - {file = "qibo-0.2.0-py3-none-any.whl", hash = "sha256:542c6f26de56e48a47a1e2ca56c382f426d5ddda8e9325d9fb821709b75e195b"}, - {file = "qibo-0.2.0.tar.gz", hash = "sha256:c497a9c115577c0e0c5c09ab2f55147675bd82384af4f186a65c9c7fa916b8bf"}, + {file = "qibo-0.2.1-py3-none-any.whl", hash = "sha256:e8c42e042588e4cd62108afffa935659e538ab47151f8bd3feaa3a8f74a4f436"}, + {file = "qibo-0.2.1.tar.gz", hash = "sha256:997146ab4d79fb435a5e6ffa241ae55ef698cbe2a975ac5a459e0ed8779f572a"}, ] [package.dependencies] @@ -4241,17 +4241,17 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruamel-yaml" -version = "0.17.33" +version = "0.17.35" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" optional = false python-versions = ">=3" files = [ - {file = "ruamel.yaml-0.17.33-py3-none-any.whl", hash = "sha256:2080c7a02b8a30fb3c06727cdf3e254a64055eedf3aa2d17c2b669639c04971b"}, - {file = "ruamel.yaml-0.17.33.tar.gz", hash = "sha256:5c56aa0bff2afceaa93bffbfc78b450b7dc1e01d5edb80b3a570695286ae62b1"}, + {file = "ruamel.yaml-0.17.35-py3-none-any.whl", hash = "sha256:b105e3e6fc15b41fdb201ba1b95162ae566a4ef792b9f884c46b4ccc5513a87a"}, + {file = "ruamel.yaml-0.17.35.tar.gz", hash = "sha256:801046a9caacb1b43acc118969b49b96b65e8847f29029563b29ac61d02db61b"}, ] [package.dependencies] -"ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.12\""} +"ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.13\""} [package.extras] docs = ["ryd"] @@ -4259,48 +4259,41 @@ jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] [[package]] name = "ruamel-yaml-clib" -version = "0.2.7" +version = "0.2.8" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d5859983f26d8cd7bb5c287ef452e8aacc86501487634573d260968f753e1d71"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:debc87a9516b237d0466a711b18b6ebeb17ba9f391eb7f91c649c5c4ec5006c7"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:df5828871e6648db72d1c19b4bd24819b80a755c4541d3409f0f7acd0f335c80"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:efa08d63ef03d079dcae1dfe334f6c8847ba8b645d08df286358b1f5293d24ab"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:1a6391a7cabb7641c32517539ca42cf84b87b667bad38b78d4d42dd23e957c81"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9c7617df90c1365638916b98cdd9be833d31d337dbcd722485597b43c4a215bf"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win32.whl", hash = "sha256:f6d3d39611ac2e4f62c3128a9eed45f19a6608670c5a2f4f07f24e8de3441d38"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:da538167284de58a52109a9b89b8f6a53ff8437dd6dc26d33b57bf6699153122"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4b3a93bb9bc662fc1f99c5c3ea8e623d8b23ad22f861eb6fce9377ac07ad6072"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_12_0_arm64.whl", hash = "sha256:a234a20ae07e8469da311e182e70ef6b199d0fbeb6c6cc2901204dd87fb867e8"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:15910ef4f3e537eea7fe45f8a5d19997479940d9196f357152a09031c5be59f3"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:370445fd795706fd291ab00c9df38a0caed0f17a6fb46b0f607668ecb16ce763"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-win32.whl", hash = "sha256:ecdf1a604009bd35c674b9225a8fa609e0282d9b896c03dd441a91e5f53b534e"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-win_amd64.whl", hash = "sha256:f34019dced51047d6f70cb9383b2ae2853b7fc4dce65129a5acd49f4f9256646"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aa261c29a5545adfef9296b7e33941f46aa5bbd21164228e833412af4c9c75f"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f01da5790e95815eb5a8a138508c01c758e5f5bc0ce4286c4f7028b8dd7ac3d0"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:40d030e2329ce5286d6b231b8726959ebbe0404c92f0a578c0e2482182e38282"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c3ca1fbba4ae962521e5eb66d72998b51f0f4d0f608d3c0347a48e1af262efa7"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-win32.whl", hash = "sha256:7bdb4c06b063f6fd55e472e201317a3bb6cdeeee5d5a38512ea5c01e1acbdd93"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:be2a7ad8fd8f7442b24323d24ba0b56c51219513cfa45b9ada3b87b76c374d4b"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:91a789b4aa0097b78c93e3dc4b40040ba55bef518f84a40d4442f713b4094acb"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:99e77daab5d13a48a4054803d052ff40780278240a902b880dd37a51ba01a307"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:3243f48ecd450eddadc2d11b5feb08aca941b5cd98c9b1db14b2fd128be8c697"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:8831a2cedcd0f0927f788c5bdf6567d9dc9cc235646a434986a852af1cb54b4b"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-win32.whl", hash = "sha256:3110a99e0f94a4a3470ff67fc20d3f96c25b13d24c6980ff841e82bafe827cac"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:92460ce908546ab69770b2e576e4f99fbb4ce6ab4b245345a3869a0a0410488f"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5bc0667c1eb8f83a3752b71b9c4ba55ef7c7058ae57022dd9b29065186a113d9"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:4a4d8d417868d68b979076a9be6a38c676eca060785abaa6709c7b31593c35d1"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bf9a6bc4a0221538b1a7de3ed7bca4c93c02346853f44e1cd764be0023cd3640"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a7b301ff08055d73223058b5c46c55638917f04d21577c95e00e0c4d79201a6b"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-win32.whl", hash = "sha256:d5e51e2901ec2366b79f16c2299a03e74ba4531ddcfacc1416639c557aef0ad8"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:184faeaec61dbaa3cace407cffc5819f7b977e75360e8d5ca19461cd851a5fc5"}, - {file = "ruamel.yaml.clib-0.2.7.tar.gz", hash = "sha256:1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497"}, + {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-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-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-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-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-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, + {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_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win32.whl", hash = "sha256:75e1ed13e1f9de23c5607fe6bd1aeaae21e523b32d83bb33918245361e9cc51b"}, + {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_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win32.whl", hash = "sha256:955eae71ac26c1ab35924203fda6220f84dce57d6d7884f189743e2abe3a9fbe"}, + {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_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win32.whl", hash = "sha256:84b554931e932c46f94ab306913ad7e11bba988104c5cff26d90d03f68258cd5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win_amd64.whl", hash = "sha256:25ac8c08322002b06fa1d49d1646181f0b2c72f5cbc15a85e80b4c30a544bb15"}, + {file = "ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512"}, ] [[package]] @@ -4335,6 +4328,11 @@ files = [ {file = "scikit_learn-1.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f66eddfda9d45dd6cadcd706b65669ce1df84b8549875691b1f403730bdef217"}, {file = "scikit_learn-1.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6448c37741145b241eeac617028ba6ec2119e1339b1385c9720dae31367f2be"}, {file = "scikit_learn-1.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:c413c2c850241998168bbb3bd1bb59ff03b1195a53864f0b80ab092071af6028"}, + {file = "scikit_learn-1.3.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ef540e09873e31569bc8b02c8a9f745ee04d8e1263255a15c9969f6f5caa627f"}, + {file = "scikit_learn-1.3.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:9147a3a4df4d401e618713880be023e36109c85d8569b3bf5377e6cd3fecdeac"}, + {file = "scikit_learn-1.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2cd3634695ad192bf71645702b3df498bd1e246fc2d529effdb45a06ab028b4"}, + {file = "scikit_learn-1.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c275a06c5190c5ce00af0acbb61c06374087949f643ef32d355ece12c4db043"}, + {file = "scikit_learn-1.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:0e1aa8f206d0de814b81b41d60c1ce31f7f2c7354597af38fae46d9c47c45122"}, {file = "scikit_learn-1.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:52b77cc08bd555969ec5150788ed50276f5ef83abb72e6f469c5b91a0009bbca"}, {file = "scikit_learn-1.3.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a683394bc3f80b7c312c27f9b14ebea7766b1f0a34faf1a2e9158d80e860ec26"}, {file = "scikit_learn-1.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a15d964d9eb181c79c190d3dbc2fff7338786bf017e9039571418a1d53dab236"}, @@ -4893,13 +4891,13 @@ telegram = ["requests"] [[package]] name = "traitlets" -version = "5.11.1" +version = "5.11.2" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" files = [ - {file = "traitlets-5.11.1-py3-none-any.whl", hash = "sha256:2351372ff87fc912c483d1cb6aa466573d5f44eb4ed9e602c8d0ac012c9daece"}, - {file = "traitlets-5.11.1.tar.gz", hash = "sha256:813584bb569ac4a098c64ca494e8a3bbfef42e37c36a6132bca554aabd111480"}, + {file = "traitlets-5.11.2-py3-none-any.whl", hash = "sha256:98277f247f18b2c5cabaf4af369187754f4fb0e85911d473f72329db8a7f4fae"}, + {file = "traitlets-5.11.2.tar.gz", hash = "sha256:7564b5bf8d38c40fa45498072bf4dc5e8346eb087bbf1e2ae2d8774f6a0f078e"}, ] [package.extras]