diff --git a/QEC_tutorial/.python-version b/QEC_tutorial/.python-version new file mode 100644 index 0000000..24ee5b1 --- /dev/null +++ b/QEC_tutorial/.python-version @@ -0,0 +1 @@ +3.13 diff --git a/QEC_tutorial/assets/bluvstein_figure_3a.png b/QEC_tutorial/assets/bluvstein_figure_3a.png new file mode 100644 index 0000000..f945912 Binary files /dev/null and b/QEC_tutorial/assets/bluvstein_figure_3a.png differ diff --git a/QEC_tutorial/assets/bluvstein_figure_3a_i.png b/QEC_tutorial/assets/bluvstein_figure_3a_i.png new file mode 100644 index 0000000..fae1aee Binary files /dev/null and b/QEC_tutorial/assets/bluvstein_figure_3a_i.png differ diff --git a/QEC_tutorial/assets/rodriguez_figure_1b.png b/QEC_tutorial/assets/rodriguez_figure_1b.png new file mode 100644 index 0000000..6d36238 Binary files /dev/null and b/QEC_tutorial/assets/rodriguez_figure_1b.png differ diff --git a/QEC_tutorial/assets/steane_code.svg b/QEC_tutorial/assets/steane_code.svg new file mode 100644 index 0000000..6807a30 --- /dev/null +++ b/QEC_tutorial/assets/steane_code.svg @@ -0,0 +1 @@ +XXXXZZZZXXXXZZZZXXXXZZZZ7123465 \ No newline at end of file diff --git a/QEC_tutorial/color_me_corrected.ipynb b/QEC_tutorial/color_me_corrected.ipynb new file mode 100644 index 0000000..f1c7f02 --- /dev/null +++ b/QEC_tutorial/color_me_corrected.ipynb @@ -0,0 +1,1657 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "dd41e74db034adb4", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:17.103877Z", + "start_time": "2025-11-21T23:33:17.100558Z" + } + }, + "outputs": [], + "source": [ + "from IPython.display import HTML" + ] + }, + { + "cell_type": "markdown", + "id": "37f16b52fee5c422", + "metadata": {}, + "source": [ + "# Color Me Corrected: Error Correction with Color Codes on Neutral-Atom Hardware\n", + "\n", + "## Learning Objectives\n", + "\n", + "This lesson extends the ideas from the **circuit noise** tutorial to the regime of **logical qubits** and **fault-tolerant style circuits**. By the end of this notebook, you will be able to:\n", + "\n", + "- Describe how a **simple two-qubit CX gate** fails in the presence of bit-flip noise\n", + "- Implement and simulate a **Steane $[[7,1,3]]$ logical CX** built from transversal gates\n", + "- Compare the performance of a **physical CX** and a **logical, error-corrected CX** under a controllable noise model\n", + "- Understand how **syndrome measurements** and **error-correction rounds** can suppress some errors, and why this is challenging in practice\n", + "- Relate your simulations to recent experiments on **logical processors based on color codes** with neutral atoms\n", + "\n", + "Throughout the notebook, we will use `bloqade`, `squin`, and `pyqrack` to explore these ideas in a way that is directly inspired by state-of-the-art neutral-atom experiments.\n", + "\n", + "---\n", + "\n", + "## Quantum Error Correction Series\n", + "\n", + "This notebook is the **first in a three-part series** exploring recent work by QuEra and collaborators on error correction using neutral-atom hardware:\n", + "\n", + "1. **Color code and basic error correction** ← *You are here*\n", + "2. Magic State Distillation\n", + "3. Optimizing error-correction protocols: correlated decoding and flag qubits\n", + "\n", + "---\n", + "\n", + "## From Circuit Noise to Logical Processors\n", + "\n", + "In the previous tutorial, [Evaluating circuit-level performance under realistic noise](https://github.com/QuEraComputing/quera-education/blob/main/IEEE_2025/circuit_noise.ipynb), the focus was on understanding how different noise channels affect circuits on QuEra’s Gemini-class neutral-atom devices. In that notebook, we asked questions such as:\n", + "\n", + "- How do global and local gates differ in their noise behavior?\n", + "- How can a circuit be structured to take advantage of lower-noise global layers?\n", + "- How do atom zoning and movement change the effective noise seen by a circuit?\n", + "\n", + "Here, we take a step further up the abstraction ladder: **from physical qubits to logical qubits**.\n", + "\n", + "Quantum error correction is the theoretical and experimental framework that allows us to encode fragile quantum information into **many physical qubits** in order to protect it from noise.\n", + "\n", + "---\n", + "\n", + "## Connection to Recent Experiments\n", + "\n", + "The ideas explored in this notebook are directly connected to the **logical quantum processor** demonstrated by QuEra and collaborators in:\n", + "\n", + "- Bluvstein *et al.*, *Logical quantum processor based on reconfigurable atom arrays* (Nature, 2024)\n", + " https://www.nature.com/articles/s41586-023-06927-3\n", + "\n", + "and to more recent work on logical state preparation and distillation:\n", + "\n", + "- Sales Rodriguez *et al.*, *Experimental demonstration of logical magic state distillation* (Nature, 2025)\n", + " https://www.nature.com/articles/s41586-025-09367-3\n", + "\n", + "In particular:\n", + "\n", + "- Figure 3 of Bluvstein *et al.* shows **distance-3 color codes** coupled by **transversal CX gates** to implement logical GHZ states and error-detected algorithms.\n", + "\n", + "
\n", + " \n", + "
\n", + "\n", + "- Similar distance-3 color codes appear in the more recent work on logical magic state preparation as building blocks for the distillation protocol.\n", + "\n", + "
\n", + " \n", + "
\n", + "\n", + "---\n", + "\n", + "## What is a Color Code? What is the Steane Code?\n", + "\n", + "A **color code** is a type of quantum error-correcting code defined on a two-dimensional lattice whose faces can be colored (typically red, green, and blue) such that no two neighboring faces share the same color. By extracting parity information about the qubits on a face—without collapsing the individual physical qubits—we can detect and correct errors acting on the encoded state.\n", + "\n", + "Here is the simplest color-code-like structure, which uses 7 physical qubits to encode 1 logical qubit, taken from the [Error Correction Zoo](https://errorcorrectionzoo.org/c/steane). This code is known as the **Steane code**.\n", + "\n", + "
\n", + " \n", + "
\n", + "\n", + "Each colored face of the Steane code corresponds to two stabilizers: one composed only of $X$ operators and one composed only of $Z$ operators. This special structure enables many logical **Clifford gates** to be performed *transversally* (gate-by-gate across corresponding physical qubits), which is a powerful property for fault-tolerant quantum computing.\n", + "\n", + "Using the standard $[[n, k, d]]$ notation:\n", + "\n", + "- $n$ = number of physical qubits\n", + "- $k$ = number of logical qubits\n", + "- $d$ = distance of the code\n", + "\n", + "the **Steane code** is written as $[[7,1,3]]$. This means it encodes one logical qubit into **seven physical qubits** and can correct **any single-qubit error**. The distance parameter indicates that the smallest error chain that can change a logical state has length 3; in practice, this means the code can correct up to **one error**.\n", + "\n", + "Because it supports **transversal Clifford operations** such as CX, Hadamard, and Phase gates, the $d = 3$ color-code family is a natural starting point for **near-term experiments in neutral-atom platforms**.\n", + "\n", + "---\n", + "\n", + "## Goals of This Notebook\n", + "\n", + "Our goal here is **not** to reproduce large-scale experiments in full detail. Instead, we will:\n", + "\n", + "- Build a **Steane-encoded logical CX gate** and a single (partial) **error-correction round** using SQUIN\n", + "- Use a **simple, tunable noise model** to study when encoding helps and when it does not\n", + "- Develop intuition for the **challenges and trade-offs** involved in practical quantum error correction\n", + "\n", + "This notebook therefore serves as both:\n", + "\n", + "- A **primer on quantum error correction**, and\n", + "- A bridge between theory and **current experimental work on neutral-atom logical qubits**\n", + "\n", + "By the end, you should have a more realistic sense of both the **power** and the **limitations** of error correction in today’s machines.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "a02cd02b46ea6902", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:20.761065Z", + "start_time": "2025-11-21T23:33:18.264635Z" + } + }, + "outputs": [], + "source": [ + "from typing import Any, Tuple\n", + "\n", + "import cirq\n", + "import numpy as np\n", + "from bloqade import squin\n", + "from bloqade.cirq_utils import load_circuit, emit_circuit\n", + "from bloqade.cirq_utils.noise import transform_circuit\n", + "from bloqade.pyqrack import StackMemorySimulator\n", + "from bloqade.types import Qubit, MeasurementResult\n", + "from kirin.dialects.ilist import IList\n", + "from utils import BitFlipOn2QGateNoiseModel, plot_qec_by_run, plot_qec_by_noise\n", + "\n", + "Register = IList[Qubit, Any]" + ] + }, + { + "cell_type": "markdown", + "id": "95ad1e58b770acff", + "metadata": {}, + "source": [ + "# 1. Baseline: a single noisy CX gate\n", + "\n", + "We begin with the simplest possible test:\n", + "\n", + "1. Allocate two qubits.\n", + "2. Prepare the state $|10\\rangle$ by applying an $X$ to the first qubit.\n", + "3. Apply a single **CX gate**.\n", + "4. Measure both qubits in the computational basis.\n", + "\n", + "In the **ideal** case, the output is always $|11\\rangle$. This gives us a baseline circuit:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c29a48b99b0216ad", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:20.773223Z", + "start_time": "2025-11-21T23:33:20.765474Z" + } + }, + "outputs": [], + "source": [ + "@squin.kernel\n", + "def cx_experiment() -> Tuple[MeasurementResult, MeasurementResult]:\n", + " qubits = squin.qalloc(2)\n", + " squin.x(qubits[0])\n", + "\n", + " squin.cx(qubits[0], qubits[1])\n", + "\n", + " result1 = squin.qubit.measure(qubits[0])\n", + " result2 = squin.qubit.measure(qubits[1])\n", + "\n", + " return result1, result2" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "fd02b56fff40055c", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:20.810888Z", + "start_time": "2025-11-21T23:33:20.779836Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0: ───X───@───M───\n", + " │\n", + "1: ───────X───M───\n" + ] + } + ], + "source": [ + "print(emit_circuit(mt=cx_experiment, ignore_returns=True))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "420bb1c840289673", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:21.118398Z", + "start_time": "2025-11-21T23:33:20.818049Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CX experiment measurement result: {(, ): 1.0}\n" + ] + } + ], + "source": [ + "emulator_2q = StackMemorySimulator(min_qubits=2)\n", + "cx_task = emulator_2q.task(kernel=cx_experiment)\n", + "cx_results = cx_task.batch_run(shots=1000)\n", + "print(\"CX experiment measurement result:\", cx_results)" + ] + }, + { + "cell_type": "markdown", + "id": "e7a000e34d336010", + "metadata": {}, + "source": [ + "## 1.1 A controllable bit-flip noise model\n", + "\n", + "To study error correction, we want a noise source that is:\n", + "\n", + "- Simple enough to understand analytically\n", + "- Realistic enough to stress the circuits in meaningful ways\n", + "- Easy to tune with a single parameter\n", + "\n", + "For this reason, we introduce a **custom bit-flip noise model**:\n", + "\n", + " noise_model = BitFlipOn2QGateNoiseModel(p = 0.02)\n", + "\n", + "This noise model applies an **X error** on the first qubit participating in a **two-qubit gate** with probability $p$. Other than that, you do not need to worry about how the noise model is implemented (but you can learn more about it by exploring the `utils.py` file in the folder containing the notebook).\n", + "\n", + "In practice, we follow three steps:\n", + "\n", + "1. Build a Cirq version of the CX gate\n", + "2. Apply `transform_circuit` with our custom noise model\n", + "3. Load the noisy circuit into SQUIN using `load_circuit`\n", + "\n", + "This cleanly separates:\n", + "\n", + "- **Circuit structure** (defined in SQUIN)\n", + "- **Noise modeling and compilation** (handled in Cirq / Bloqade)\n", + "- **Simulation and statistics** (handled by pyqrack `StackMemorySimulator`)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "9551b76e485c475f", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:21.146249Z", + "start_time": "2025-11-21T23:33:21.123911Z" + } + }, + "outputs": [], + "source": [ + "noise_model = BitFlipOn2QGateNoiseModel(p=0.02)\n", + "\n", + "cirq_circuit = cirq.LineQubit.range(2)\n", + "simple_cx = cirq.Circuit.from_moments(\n", + " cirq.Moment(cirq.CX(cirq_circuit[0], cirq_circuit[1]))\n", + ")\n", + "loaded_simple_cx = load_circuit(\n", + " circuit=simple_cx, register_as_argument=True, kernel_name=\"simple_cx\"\n", + ")\n", + "\n", + "simple_cx_with_noise = transform_circuit(circuit=simple_cx, model=noise_model)\n", + "loaded_simple_cx_with_noise = load_circuit(\n", + " circuit=simple_cx_with_noise,\n", + " register_as_argument=True,\n", + " kernel_name=\"simple_cx_with_noise\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "ce483f4f8c06f56a", + "metadata": {}, + "source": [ + "### Reflection 1 🧠\n", + "\n", + "Suppose $p = 0.02$ and you run the noisy CX circuit for 1000 shots starting from \\(|10⟩\\):\n", + "\n", + "1) How many times do you expect **not** to see the outcome $|11\\rangle$?\n", + "2) If you repeat the experiment 10 times, do you expect the success rate to vary a little or a lot?\n", + "\n", + "As a reminder, $p$ is the probability that the first qubit in a 2-qubit gate undergoes a bit-flip after the gate is applied.\n", + "Write down your estimate before running the next code cell." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "c10298b5e0f2cd57", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:21.160368Z", + "start_time": "2025-11-21T23:33:21.150664Z" + } + }, + "outputs": [], + "source": [ + "@squin.kernel\n", + "def cx_experiment(\n", + " with_noise: bool = False,\n", + ") -> Tuple[MeasurementResult, MeasurementResult]:\n", + " qubits = squin.qalloc(2)\n", + " squin.x(qubits[0])\n", + "\n", + " if with_noise:\n", + " loaded_simple_cx_with_noise(qubits)\n", + " else:\n", + " loaded_simple_cx(qubits)\n", + "\n", + " result1 = squin.qubit.measure(qubits[0])\n", + " result2 = squin.qubit.measure(qubits[1])\n", + "\n", + " return result1, result2" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "53b50f45e127c8a7", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:21.212641Z", + "start_time": "2025-11-21T23:33:21.172420Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0: ───X──────────────────────@───A(0.02,0,0)───M─────────────────────────\n", + " │\n", + "1: ───S^-1───Rx(-0.5π)───S───@───Rz(-0.5π)─────Rx(0.5π)───Rz(0.5π)───M───\n" + ] + } + ], + "source": [ + "print(emit_circuit(mt=cx_experiment, ignore_returns=True, args=(True,)))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "ecddec2039bf6618", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:21.646601Z", + "start_time": "2025-11-21T23:33:21.218350Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CX with noise experiment measurement result: {(, ): 0.981, (, ): 0.019}\n" + ] + } + ], + "source": [ + "cx_with_noise_task = emulator_2q.task(kernel=cx_experiment, args=(True,))\n", + "cx_with_noise_results = cx_with_noise_task.batch_run(shots=1000)\n", + "print(\"CX with noise experiment measurement result:\", cx_with_noise_results)" + ] + }, + { + "cell_type": "markdown", + "id": "5ca05ec19191a847", + "metadata": {}, + "source": [ + "# 2. From 2 physical qubits to 14: Steane-encoded logical CX\n", + "\n", + "A single noisy CX gate is extremely fragile:\n", + "\n", + "- One error on either qubit can ruin the result\n", + "- There is no redundancy\n", + "- There is no way to detect or correct errors\n", + "\n", + "The Steane $[[7,1,3]]$ code addresses this by encoding **one logical qubit into seven physical qubits**, with distance $d = 3$.\n", + "\n", + "This means:\n", + "\n", + "- It can detect and correct **any single-qubit error** on the block\n", + "- It protects against both **bit-flip (X)** and **phase-flip (Z)** errors\n", + "- It uses stabilizer measurements to extract **syndrome information**\n", + " without directly measuring the encoded state\n", + "\n", + "In the next cells we will:\n", + "\n", + "1. Write a function that instantiates the $[[7, 1, 3]]$ Steane code following the implementation used in Bluvstein *et al.* (see image below)\n", + "2. Define a way to measure the logical qubits to retrieve information\n", + "3. Use the code twice to prepare two blocks in $|0_L 0_L⟩$\n", + "4. Apply a **transversal CX** between the two 7-qubit blocks\n", + "5. Compare performance against the simple 2-qubit CX\n", + "\n", + "
\n", + " \n", + "
\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "4feb5e57a4cab23f", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:22.035146Z", + "start_time": "2025-11-21T23:33:22.015691Z" + } + }, + "outputs": [], + "source": [ + "# Step 2.1\n", + "@squin.kernel\n", + "def steane_encode_zero() -> Register:\n", + " \"\"\"\n", + " Based on the Bluvstein et al. 2024 paper implementation\n", + " \"\"\"\n", + " data = squin.qalloc(n_qubits=7)\n", + "\n", + " # note that in the figure the physical registers start on the + state\n", + " squin.broadcast.h(qubits=data)\n", + "\n", + " # there are many ways to instantiate the code, this is just echoing the one used in the paper\n", + " # note that qubit indices are off by 1 because they are 0-indexed in the code but 1-indexed in figure 3\n", + " cz_pairs_indices = (\n", + " (0, 6),\n", + " (1, 3),\n", + " (4, 5),\n", + " (0, 4),\n", + " (5, 6),\n", + " (1, 2),\n", + " (0, 2),\n", + " (3, 5),\n", + " (1, 4),\n", + " )\n", + " for pair in cz_pairs_indices:\n", + " squin.cz(control=data[pair[0]], target=data[pair[1]])\n", + "\n", + " h_indices = (2, 3, 4, 6)\n", + " for h_index in h_indices:\n", + " squin.h(qubit=data[h_index])\n", + "\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7efae07d1a7f3788", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:22.408833Z", + "start_time": "2025-11-21T23:33:22.336071Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌──┐ ┌──┐ ┌──┐\n", + "0: ───H────@──────@──────@─────────\n", + " │ │ │\n", + "1: ───H────┼@─────┼@─────┼@────────\n", + " ││ ││ ││\n", + "2: ───H────┼┼─────┼@─────@┼────H───\n", + " ││ │ │\n", + "3: ───H────┼@─────┼──────@┼────H───\n", + " │ │ ││\n", + "4: ───H────┼@─────@──────┼@────H───\n", + " ││ │\n", + "5: ───H────┼@─────@──────@─────────\n", + " │ │\n", + "6: ───H────@──────@──────H─────────\n", + " └──┘ └──┘ └──┘\n" + ] + } + ], + "source": [ + "print(emit_circuit(mt=steane_encode_zero, ignore_returns=True))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "c512c9621a077c", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:22.644357Z", + "start_time": "2025-11-21T23:33:22.632982Z" + } + }, + "outputs": [], + "source": [ + "# Step 2.2\n", + "@squin.kernel\n", + "def measure_in_logical_z_basis(data: Register) -> int:\n", + " \"\"\"\n", + " Based on the Bluvstein et al. 2024 paper implementation\n", + " \"\"\"\n", + " m0 = squin.qubit.measure(qubit=data[0])\n", + " m1 = squin.qubit.measure(qubit=data[1])\n", + " m2 = squin.qubit.measure(qubit=data[2])\n", + "\n", + " z_logical_bit = m0 ^ m1 ^ m2\n", + "\n", + " return z_logical_bit" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "225a64df67d3bbab", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:22.987527Z", + "start_time": "2025-11-21T23:33:22.955572Z" + } + }, + "outputs": [], + "source": [ + "# Step 2.3\n", + "@squin.kernel\n", + "def steane_encode_two_logical() -> Register:\n", + " qreg1 = steane_encode_zero()\n", + " qreg2 = steane_encode_zero()\n", + " return qreg1 + qreg2" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "a55b2f3bc81479ca", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:23.420299Z", + "start_time": "2025-11-21T23:33:23.201614Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌──┐ ┌──┐ ┌──┐\n", + "0: ────H────@──────@──────@─────────\n", + " │ │ │\n", + "1: ────H────┼@─────┼@─────┼@────────\n", + " ││ ││ ││\n", + "2: ────H────┼┼─────┼@─────@┼────H───\n", + " ││ │ │\n", + "3: ────H────┼@─────┼──────@┼────H───\n", + " │ │ ││\n", + "4: ────H────┼@─────@──────┼@────H───\n", + " ││ │\n", + "5: ────H────┼@─────@──────@─────────\n", + " │ │\n", + "6: ────H────@──────@──────H─────────\n", + "\n", + "7: ────H────@──────@──────@─────────\n", + " │ │ │\n", + "8: ────H────┼@─────┼@─────┼@────────\n", + " ││ ││ ││\n", + "9: ────H────┼┼─────┼@─────@┼────H───\n", + " ││ │ │\n", + "10: ───H────┼@─────┼──────@┼────H───\n", + " │ │ ││\n", + "11: ───H────┼@─────@──────┼@────H───\n", + " ││ │\n", + "12: ───H────┼@─────@──────@─────────\n", + " │ │\n", + "13: ───H────@──────@──────H─────────\n", + " └──┘ └──┘ └──┘\n" + ] + } + ], + "source": [ + "print(emit_circuit(mt=steane_encode_two_logical, ignore_returns=True))" + ] + }, + { + "cell_type": "markdown", + "id": "ed457c8930eefc10", + "metadata": {}, + "source": [ + "### Transversal gates in the Steane $[[7,1,3]]$ code\n", + "\n", + "One of the most important features of the Steane $[[7,1,3]]$ code is that it allows for **transversal Clifford gates**. This includes transversal $S$, $X$, $H$, $CX$, and many others.\n", + "\n", + "But what does “transversal” actually mean?\n", + "\n", + "A gate is called **transversal** if it can be implemented by applying *the same physical gate independently to corresponding qubits in each code block*.\n", + "\n", + "For example, a logical CX between two Steane-encoded qubits can be implemented as:\n", + "\n", + "$$\n", + "\\text{CX}_L\n", + "=\n", + "\\text{CX}_{0,7}\n", + "\\cdot\n", + "\\text{CX}_{1,8}\n", + "\\cdot\n", + "\\ldots\n", + "\\cdot\n", + "\\text{CX}_{6,13}\n", + "$$\n", + "\n", + "In words:\n", + "\n", + "- Qubit 0 of block A interacts only with qubit 0 of block B\n", + "- Qubit 1 interacts only with qubit 1\n", + "- …\n", + "- Qubit 6 interacts only with qubit 6\n", + "\n", + "There is **no interaction inside a single block**.\n", + "\n", + "---\n", + "\n", + "#### Why is this powerful?\n", + "\n", + "Transversality provides an important form of protection:\n", + "\n", + "- A single physical error cannot spread across the entire block\n", + "- Errors remain *localized* and therefore *correctable*\n", + "- Logical operations preserve the structure of the code\n", + "\n", + "This is one of the key design principles behind fault-tolerant quantum computing.\n", + "\n", + "---\n", + "\n", + "#### But there is a catch\n", + "\n", + "While transversal gates are *fault-tolerant in principle*, they are also:\n", + "\n", + "- Much **more expensive** in terms of gate count\n", + "- Much **deeper** circuits than a single physical CX\n", + "- Potentially introducing **more noisy operations overall**\n", + "\n", + "This sets up a crucial tension:\n", + "\n", + "> Does spreading the operation across more qubits actually improve performance…\n", + "> or does it simply introduce more opportunities for error?\n", + "\n", + "In the following cell, you will implement exactly such a **transversal CX gate** for two Steane-encoded logical qubits and test this question in practice." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "ab4bafaa6e8167b2", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:23.751731Z", + "start_time": "2025-11-21T23:33:23.733260Z" + } + }, + "outputs": [], + "source": [ + "# Step 2.4\n", + "cirq_circuit = cirq.LineQubit.range(14)\n", + "transversal_cx = cirq.Circuit.from_moments(\n", + " cirq.Moment(*[cirq.CX(cirq_circuit[i], cirq_circuit[i + 7]) for i in range(7)])\n", + ")\n", + "loaded_transversal_cx = load_circuit(\n", + " circuit=transversal_cx, register_as_argument=True, kernel_name=\"transversal_cx\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "97def20457cfa966", + "metadata": {}, + "source": [ + "Before creating a noisy transversal CX, we will pause to test whether a noiseless run of our current 14-qubit implementation matches are expectations.\n", + "\n", + "If we transform the starting $|0_L0_L\\rangle$ state into $|1_L0_L\\rangle$ using a transversal $X$ on the first code block, then we will expect the code blocks to be in the $|1_L1_L\\rangle$ after the transversal CX.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "6661461a640349f1", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:24.304849Z", + "start_time": "2025-11-21T23:33:24.266847Z" + } + }, + "outputs": [], + "source": [ + "@squin.kernel\n", + "def steane_cx_experiment() -> Tuple[int, int]:\n", + " qreg = steane_encode_two_logical()\n", + " code1 = qreg[0:7]\n", + " code2 = qreg[7:14]\n", + " squin.broadcast.x(qubits=code1)\n", + " loaded_transversal_cx(qreg)\n", + "\n", + " result1 = measure_in_logical_z_basis(data=code1)\n", + " result2 = measure_in_logical_z_basis(data=code2)\n", + " return result1, result2" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "244ec6a86d9b98fc", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:24.726963Z", + "start_time": "2025-11-21T23:33:24.546113Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌──┐ ┌──┐ ┌──┐ ┌────┐ ┌────┐\n", + "0: ────H────@──────@──────@─────X─────@───────M───────────\n", + " │ │ │ │\n", + "1: ────H────┼@─────┼@─────┼@────X─────┼@──────M───────────\n", + " ││ ││ ││ ││\n", + "2: ────H────┼┼─────┼@─────@┼────H────X┼┼──────@───────M───\n", + " ││ │ │ ││ │\n", + "3: ────H────┼@─────┼──────@┼────H────X┼┼──────┼@──────────\n", + " │ │ ││ ││ ││\n", + "4: ────H────┼@─────@──────┼@────H────X┼┼──────┼┼@─────────\n", + " ││ │ ││ │││\n", + "5: ────H────┼@─────@──────@─────X────@┼┼──────┼┼┼─────────\n", + " │ │ │││ │││\n", + "6: ────H────@──────@──────H─────X────┼┼┼@─────┼┼┼─────────\n", + " ││││ │││\n", + "7: ────H────@──────@──────@──────────┼X┼┼─────┼┼┼M────────\n", + " │ │ │ │ ││ │││\n", + "8: ────H────┼@─────┼@─────┼@─────────┼─X┼─────┼┼┼M────────\n", + " ││ ││ ││ │ │ │││\n", + "9: ────H────┼┼─────┼@─────@┼────H────┼──┼─────X┼┼─────M───\n", + " ││ │ │ │ │ ││\n", + "10: ───H────┼@─────┼──────@┼────H────┼──┼──────X┼─────────\n", + " │ │ ││ │ │ │\n", + "11: ───H────┼@─────@──────┼@────H────┼──┼───────X─────────\n", + " ││ │ │ │\n", + "12: ───H────┼@─────@──────@──────────X──┼─────────────────\n", + " │ │ │\n", + "13: ───H────@──────@──────H─────────────X─────────────────\n", + " └──┘ └──┘ └──┘ └────┘ └────┘\n" + ] + } + ], + "source": [ + "print(emit_circuit(mt=steane_cx_experiment, ignore_returns=True))" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "faf596e28ac1e5db", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:27.701349Z", + "start_time": "2025-11-21T23:33:24.799310Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Steane CX experiment measurement result: {(1, 1): 1.0}\n" + ] + } + ], + "source": [ + "emulator_14q = StackMemorySimulator(min_qubits=14)\n", + "steane_cx_task = emulator_14q.task(kernel=steane_cx_experiment)\n", + "steane_cx_results = steane_cx_task.batch_run(shots=1000)\n", + "print(\"Steane CX experiment measurement result:\", steane_cx_results)" + ] + }, + { + "cell_type": "markdown", + "id": "24efcf81a3d0a886", + "metadata": {}, + "source": [ + "You probably obtained something like\n", + "\n", + " Steane CX experiment measurement result: {(1, 1): 1.0}\n", + "which is telling us that the result was $|1_L1_L\\rangle$ in 100% of the shots. Not bad! Now we can move on to adding noise.\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "6dc24018150bb758", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:27.764298Z", + "start_time": "2025-11-21T23:33:27.723128Z" + } + }, + "outputs": [], + "source": [ + "transversal_cx_with_noise = transform_circuit(circuit=transversal_cx, model=noise_model)\n", + "loaded_transversal_cx_with_noise = load_circuit(\n", + " circuit=transversal_cx_with_noise,\n", + " register_as_argument=True,\n", + " kernel_name=\"transversal_cx_with_noise\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "5ae8853008a78f7d", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:27.791904Z", + "start_time": "2025-11-21T23:33:27.768150Z" + } + }, + "outputs": [], + "source": [ + "# Step 2.5\n", + "@squin.kernel\n", + "def steane_cx_experiment(with_noise: bool = False) -> Tuple[int, int]:\n", + " qreg = steane_encode_two_logical()\n", + " code1 = qreg[0:7]\n", + " code2 = qreg[7:14]\n", + " squin.broadcast.x(qubits=code1)\n", + " if with_noise:\n", + " loaded_transversal_cx_with_noise(qreg)\n", + " else:\n", + " loaded_transversal_cx(qreg)\n", + "\n", + " result1 = measure_in_logical_z_basis(data=code1)\n", + " result2 = measure_in_logical_z_basis(data=code2)\n", + " return result1, result2" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "571f64bec886b779", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:27.998761Z", + "start_time": "2025-11-21T23:33:27.797457Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌──┐ ┌──┐ ┌──┐ ┌────┐ ┌────────────────────────┐\n", + "0: ────H────@──────@──────@─────X───────────────────────────────@────────A(0.02,0,0)─────────────────M───────────────────────────────────────\n", + " │ │ │ │\n", + "1: ────H────┼@─────┼@─────┼@────X───────────────────────────────┼@───────A(0.02,0,0)─────────────────M───────────────────────────────────────\n", + " ││ ││ ││ ││\n", + "2: ────H────┼┼─────┼@─────@┼────H──────X────────────────────────┼┼───────@───────────────────────────A(0.02,0,0)───M─────────────────────────\n", + " ││ │ │ ││ │\n", + "3: ────H────┼@─────┼──────@┼────H──────X────────────────────────┼┼───────┼──────────@────────────────A(0.02,0,0)─────────────────────────────\n", + " │ │ ││ ││ │ │\n", + "4: ────H────┼@─────@──────┼@────H──────X────────────────────────┼┼───────┼──────────┼@───────────────A(0.02,0,0)─────────────────────────────\n", + " ││ │ ││ │ ││\n", + "5: ────H────┼@─────@──────@─────X───────────────────────────────┼┼@──────┼──────────┼┼A(0.02,0,0)────────────────────────────────────────────\n", + " │ │ │││ │ ││\n", + "6: ────H────@──────@──────H─────X───────────────────────────────┼┼┼@─────┼──────────┼┼A(0.02,0,0)────────────────────────────────────────────\n", + " ││││ │ ││\n", + "7: ────H────@──────@──────@─────S^-1───Rx(-0.5π)───S────────────@┼┼┼─────┼──────────┼┼Rz(-0.5π)──────Rx(0.5π)──────Rz(0.5π)───M──────────────\n", + " │ │ │ │││ │ ││\n", + "8: ────H────┼@─────┼@─────┼@────S^-1───Rx(-0.5π)───S─────────────@┼┼─────┼──────────┼┼Rz(-0.5π)──────Rx(0.5π)──────Rz(0.5π)───M──────────────\n", + " ││ ││ ││ ││ │ ││\n", + "9: ────H────┼┼─────┼@─────@┼────H──────S^-1────────Rx(-0.5π)────S─┼┼─────@──────────┼┼───────────────Rz(-0.5π)─────Rx(0.5π)───Rz(0.5π)───M───\n", + " ││ │ │ ││ ││\n", + "10: ───H────┼@─────┼──────@┼────H──────S^-1────────Rx(-0.5π)────S─┼┼────────────────@┼───────────────Rz(-0.5π)─────Rx(0.5π)───Rz(0.5π)───────\n", + " │ │ ││ ││ │\n", + "11: ───H────┼@─────@──────┼@────H──────S^-1────────Rx(-0.5π)────S─┼┼─────────────────@───────────────Rz(-0.5π)─────Rx(0.5π)───Rz(0.5π)───────\n", + " ││ │ ││\n", + "12: ───H────┼@─────@──────@─────S^-1───Rx(-0.5π)───S──────────────@┼─────Rz(-0.5π)───────────────────Rx(0.5π)──────Rz(0.5π)──────────────────\n", + " │ │ │\n", + "13: ───H────@──────@──────H─────S^-1───Rx(-0.5π)───S───────────────@─────Rz(-0.5π)───────────────────Rx(0.5π)──────Rz(0.5π)──────────────────\n", + " └──┘ └──┘ └──┘ └────┘ └────────────────────────┘\n" + ] + } + ], + "source": [ + "print(emit_circuit(mt=steane_cx_experiment, ignore_returns=True, args=(True,)))" + ] + }, + { + "cell_type": "markdown", + "id": "70609257c5503c3c", + "metadata": {}, + "source": [ + "### Reflection 2 🧠\n", + "\n", + "Encoding introduces significant overhead:\n", + "\n", + "- 14 data qubits instead of 2\n", + "- Many more two-qubit gates\n", + "- Additional operations for detection and correction\n", + "\n", + "Before running the code, think about the following:\n", + "\n", + "**At this point, do you expect the Steane-encoded CX to perform better, worse, or about the same as the noisy 2-qubit CX under the same value of $p$? Why?**" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "2b9a658b2a0f961d", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:34.288730Z", + "start_time": "2025-11-21T23:33:28.004631Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Steane CX with noise experiment measurement result: {(1, 1): 0.948, (0, 1): 0.052}\n" + ] + } + ], + "source": [ + "steane_cx_with_noise_task = emulator_14q.task(steane_cx_experiment, args=(True,))\n", + "steane_cx_with_noise_results = steane_cx_with_noise_task.batch_run(shots=1000)\n", + "print(\n", + " \"Steane CX with noise experiment measurement result:\", steane_cx_with_noise_results\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "9a3c3c5222524213", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:34.308941Z", + "start_time": "2025-11-21T23:33:34.307151Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CX with noise experiment measurement result: {(, ): 0.981, (, ): 0.019}\n" + ] + } + ], + "source": [ + "print(\"CX with noise experiment measurement result:\", cx_with_noise_results)" + ] + }, + { + "cell_type": "markdown", + "id": "34108f26ac9ea19c", + "metadata": {}, + "source": [ + "It turns out that the transversal CX only introduces more noise. This is because, according to our noise model, more 2-qubit gates means more opportunities for error to appear.\n", + "\n", + "However, there is hope. In the next section we will use the hidden power of our error correction code to fight back the noise." + ] + }, + { + "cell_type": "markdown", + "id": "bdd910b0037ee907", + "metadata": {}, + "source": [ + "# 3. Error Correction (to fight the noise)\n", + "\n", + "The hidden power of our code lies in its ability to do **stabilizer measurements** that do not disturbe the logical state and use them to apply **conditional corrections**.\n", + "\n", + "The next cells implement two key function in the error correction process:\n", + "\n", + "• `steane_syndrome(code)`\n", + " → Measures Z-type stabilizers and returns a 3-bit syndrome\n", + "\n", + "• `steane_error_correction_round(code)`\n", + " → Decodes the syndrome and applies an X correction to the appropriate qubit\n", + "\n", + "These functions together form **one round of Steane error correction** focused on **bit-flip errors**.\n", + "\n", + "This implementation is intentionally simplified:\n", + "\n", + "- Only the **$Z$ stabilizers** are measured because they are responsible for bit-flip detection (a more realistic scenario would also measure the 3 $X$ stabilizers which can be used to correct phase-errors)\n", + "- No repeated rounds of noisy syndrome extraction\n", + "- The noise model acts on **CX gates**, not on stabilizer measurements\n", + "\n", + "This allows us to isolate the **conceptual power** of error correction without drowning in hardware complexity." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "8ddb5da476b306ac", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:34.328913Z", + "start_time": "2025-11-21T23:33:34.321267Z" + } + }, + "outputs": [], + "source": [ + "@squin.kernel\n", + "def measure_z_stabilizer(data: Register, indices) -> MeasurementResult:\n", + " \"\"\"\n", + " Make a Z stabilizer measurements for the given indices\n", + " \"\"\"\n", + " anc = squin.qalloc(n_qubits=1)\n", + " a = anc[0]\n", + "\n", + " for index in indices:\n", + " squin.cx(control=data[index], target=a)\n", + "\n", + " m = squin.qubit.measure(qubit=a)\n", + " return m" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "6ef2e5a522b92119", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:34.346177Z", + "start_time": "2025-11-21T23:33:34.334120Z" + } + }, + "outputs": [], + "source": [ + "@squin.kernel\n", + "def steane_syndrome(code: Register) -> IList[MeasurementResult, Any]:\n", + " \"\"\"\n", + " Return the three stabilizer measurements [sz1, sz2, sz3]\n", + " \"\"\"\n", + " stabilizer1_indices = (0, 2, 4, 6)\n", + " stabilizer2_indices = (1, 2, 3, 4)\n", + " stabilizer3_indices = (3, 4, 5, 6)\n", + "\n", + " sz1 = measure_z_stabilizer(code, indices=stabilizer1_indices)\n", + " sz2 = measure_z_stabilizer(code, indices=stabilizer2_indices)\n", + " sz3 = measure_z_stabilizer(code, indices=stabilizer3_indices)\n", + "\n", + " return IList([sz1, sz2, sz3])" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "702ee889c8461e3f", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:34.369812Z", + "start_time": "2025-11-21T23:33:34.349647Z" + } + }, + "outputs": [], + "source": [ + "@squin.kernel\n", + "def steane_error_correction_round(code: Register) -> Register:\n", + " \"\"\"\n", + " One Steane [[7,1,3]] error-correction round on a single block:\n", + "\n", + " - Measure 3 stabilizer generators: [sz1, sz2, sz3]\n", + " - Build 3-bit Z-type syndrome sZ from (sz1,sz2,sz3)\n", + " - Correct a single X error based on sZ\n", + " \"\"\"\n", + "\n", + " syndrome = steane_syndrome(code=code)\n", + " sz1: bool = syndrome[0]\n", + " sz2: bool = syndrome[1]\n", + " sz3: bool = syndrome[2]\n", + "\n", + " # Build a 3-bit syndromes (with sz1 being the LSB)\n", + " syndrome_3bit_representation = (sz3 << 2) | (sz2 << 1) | sz1\n", + "\n", + " # Bit-flip (X) correction based on syndrome_3bit_representation\n", + " if syndrome_3bit_representation == 1:\n", + " squin.x(qubit=code[0])\n", + " elif syndrome_3bit_representation == 2:\n", + " squin.x(qubit=code[1])\n", + " elif syndrome_3bit_representation == 3:\n", + " squin.x(qubit=code[2])\n", + " elif syndrome_3bit_representation == 4:\n", + " squin.x(qubit=code[5])\n", + " elif syndrome_3bit_representation == 5:\n", + " squin.x(qubit=code[6])\n", + " elif syndrome_3bit_representation == 6:\n", + " squin.x(qubit=code[3])\n", + " elif syndrome_3bit_representation == 7:\n", + " squin.x(qubit=code[4])\n", + " # if the syndrome is 000 = 0, then there is no bit-flip error\n", + "\n", + " return code" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "c23ca8ff6d062993", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:34.421468Z", + "start_time": "2025-11-21T23:33:34.373204Z" + } + }, + "outputs": [], + "source": [ + "@squin.kernel\n", + "def steane_cx_experiment(\n", + " with_noise: bool = False, with_correction: bool = False\n", + ") -> Tuple[int, int]:\n", + " qreg = steane_encode_two_logical()\n", + " code1 = qreg[0:7]\n", + " code2 = qreg[7:14]\n", + " squin.broadcast.x(qubits=code1)\n", + " if with_noise:\n", + " loaded_transversal_cx_with_noise(qreg)\n", + " else:\n", + " loaded_transversal_cx(qreg)\n", + "\n", + " if with_noise and with_correction:\n", + " steane_error_correction_round(code=code1)\n", + " steane_error_correction_round(code=code2)\n", + "\n", + " result1 = measure_in_logical_z_basis(data=code1)\n", + " result2 = measure_in_logical_z_basis(data=code2)\n", + " return result1, result2" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "aae372dc3d63db24", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:50.823242Z", + "start_time": "2025-11-21T23:33:34.426618Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Steane CX with noise and error correction experiment measurement result: {(1, 1): 0.993, (0, 1): 0.007}\n" + ] + } + ], + "source": [ + "steane_cx_with_noise_and_correction_task = emulator_14q.task(\n", + " kernel=steane_cx_experiment, args=(True, True)\n", + ")\n", + "steane_cx_with_noise_and_correction_results = (\n", + " steane_cx_with_noise_and_correction_task.batch_run(shots=1000)\n", + ")\n", + "print(\n", + " \"Steane CX with noise and error correction experiment measurement result:\",\n", + " steane_cx_with_noise_and_correction_results,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "3b3822a65adfb4f", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:50.844002Z", + "start_time": "2025-11-21T23:33:50.842290Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Steane CX with noise experiment measurement result: {(1, 1): 0.948, (0, 1): 0.052}\n" + ] + } + ], + "source": [ + "print(\n", + " \"Steane CX with noise experiment measurement result:\", steane_cx_with_noise_results\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "9e02383e7d212a64", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:33:50.857464Z", + "start_time": "2025-11-21T23:33:50.855432Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CX with noise experiment measurement result: {(, ): 0.981, (, ): 0.019}\n" + ] + } + ], + "source": [ + "print(\"CX with noise experiment measurement result:\", cx_with_noise_results)" + ] + }, + { + "cell_type": "markdown", + "id": "4541be6a244352ef", + "metadata": {}, + "source": [ + "### Reflection 3 🧠\n", + "\n", + "In real devices, syndrome extraction itself requires **two-qubit gates and ancilla qubits**, which are also noisy.\n", + "\n", + "Think carefully about this:\n", + "\n", + "1) If the CX gates used to measure stabilizers are themselves noisy,\n", + " can a round of error correction ever introduce a new error?\n", + "\n", + "2) In principle, could we protect the **ancilla qubits** with their own tiny code\n", + " (error-correcting the error correction)?\n", + "\n", + "3) What practical problems would this cause in terms of:\n", + " - Total qubit count?\n", + " - Circuit depth?\n", + " - Classical decoding complexity?" + ] + }, + { + "cell_type": "markdown", + "id": "c8f9dc8364860fd3", + "metadata": {}, + "source": [ + "# 4. Visualizing Results\n", + "\n", + "Up to this point, we have focused on **constructing circuits**: first at the physical level with two qubits, then at the logical level using the $[[7,1,3]]$ Steane code. But circuits alone do not tell the full story. To truly understand the strengths *and* limitations of quantum error correction, we need to look at **data**.\n", + "\n", + "In this section, we will visualize and compare the outcomes of two parallel experiments:\n", + "\n", + "1. **Noisy physical baseline (2 qubits)**\n", + " A simple circuit consisting of a single CX gate operating on two physical qubits, subject to a tunable bit-flip noise model.\n", + "\n", + "2. **Noisy logical implementation (14 qubits)**\n", + " A transversal CX gate applied between two Steane-encoded logical qubits (7 qubits each), followed by a round of error correction.\n", + "\n", + "Rather than inspecting a single run, we will run **multiple trials** and examine **trends** in the probability of observing the correct logical outcome, $|11\\rangle$.\n", + "\n", + "By the end of this section, you should be able to answer:\n", + "\n", + "- Is the Steane code helping in this regime, or hurting?\n", + "- How sensitive is logical performance to gate noise?\n", + "- What does this tell us about the path toward scalable fault-tolerant quantum computing?\n", + "\n", + "Let us now make these comparisons concrete by plotting the results." + ] + }, + { + "cell_type": "markdown", + "id": "3f296d9ffe8a31c1", + "metadata": {}, + "source": [ + "## Visualization A — Performance Across Multiple Runs\n", + "\n", + "We first compare the two approaches across **10 independent runs**, each consisting of 1000 shots:\n", + "\n", + "- The **physical CX** (2 qubits, with noise)\n", + "- The **logical CX** (14 qubits + error correction, with the same noise per CX gate)\n", + "\n", + "Each point in the plot represents the fraction of shots that returned the correct $(1,1)$ outcome. This allows us to visualize:\n", + "\n", + "- Run-to-run variability\n", + "- Whether error correction consistently improves performance, or only occasionally\n", + "- How stable each approach is under identical conditions" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "771e11c928a24191", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:48:50.672205Z", + "start_time": "2025-11-21T23:45:59.303953Z" + } + }, + "outputs": [], + "source": [ + "runs = 10\n", + "shot_count = 1000\n", + "\n", + "success_counts_without_ec = np.zeros(runs, dtype=float)\n", + "success_counts_with_ec = np.zeros(runs, dtype=float)\n", + "\n", + "emulator_2q = StackMemorySimulator(min_qubits=2)\n", + "emulator_14q = StackMemorySimulator(min_qubits=14)\n", + "\n", + "for run_number in range(runs):\n", + " task_without_ec = emulator_2q.task(cx_experiment, args=(True,))\n", + " results_without_ec = task_without_ec.batch_run(shots=shot_count)\n", + " success_counts_without_ec[run_number] = results_without_ec[(1, 1)]\n", + "\n", + " task_with_ec = emulator_14q.task(steane_cx_experiment, args=(True, True))\n", + " results_with_ec = task_with_ec.batch_run(shots=shot_count)\n", + " success_counts_with_ec[run_number] = results_with_ec[(1, 1)]" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "a20f8a96b9deb749", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:48:50.767181Z", + "start_time": "2025-11-21T23:48:50.686010Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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dd/AwEAzlPvff/81Peq//fab3Hffffke/8iRI/LSSy/Jxx9/LDNnzpSkpCS59957XddPmDBBHn30UfO4q1atkqeffloeeeQR83hF2bdvn0ybNs30bFerVq3Q9doL7u6tt96SdevWyeDBg+W1114zr1P3ibd89dVXpvfd/TU6ae+7PvfEiRM9fjzdP/379zc92wXpkPmi9kF5Yqg5AAAAAO/JPCLydL2yfcwPzvHsdg/tEAk9fsAVHBxsguWbbrrJBKCdOnUy846vvvpqadeunblNbGysK2DV+d9Oo0ePlgceeMAMzVY6TF2HOmtgPWrUKLNOh1M7NWzYUJ588kkznPqNN95wrdcgVAPeFi1amLnLw4YNk8cff9x1vT7WmDFj5LLLLjOXdVi3M9B3Pre79evXm2HfLVu29GhXxcXFme3W7dK57n379hVvWrt2rURGRkrdunULXadDznU/6m3c9erVy5zEcHfo0CHzv540OO2008SuCLwBAAAAVHo6x/v88883Pdg6L/inn34yibree+89ue6664rdPzqnWBOwufdwZ2dny7Fjx0wvtib50rnJzzzzjJlTnZaWJllZWfmuV/p/kyZNXI+hAWlKSor5+/Dhw7Jhwwa58cYbzckBJ30cDV6LUpq51s5t1pMPuh36+vWx9YRESXS+9ZYtW/I9n3sveZ8+fcx+PFEagLubNGmStGrVqkxeb3kj8AYAAADgPSFVrZ5nTyT/7Vlv9g3TROq08+y5SyE8PFzOOusss+gwbk0upj3NJQXe2uOqvd7OnuiCj6dJxy644ALTi6zBeXR0tMyePdsE0ZoQzBl463Bod9rr7Qwmnb267777rnTv3j3f7YKCgorcLk2Spo+hwb4nNAHZxo0bZdGiRaa3X4ey69D2kvz444+ubOHbt283Pc7Lli1zXV+lSpVi79usWTNJTU01WdU1wZs73S96okGTpbnTjOxNmzYt8vGaN2/u8Wv1BeZ4AwAAAPCegABruLcnS3DxgVo+ejtPHk+f+yS0bt3a9DY7aXCsPcPudFj6mjVrTEBYcNFh0YsXL5acnBwzTLxHjx4mQNRgszRq165tglMNjAs+hw45L4oG+Bq4vv766/leg9OBAwdcf+vccz3BoJnFtUdZ/9fh8H///XeJ29WgQQPXdujfyn3b6tevX+x9r7jiCtOjrvulIB3ur6MBdO68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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_qec_by_run(\n", + " success_counts_without_ec,\n", + " success_counts_with_ec,\n", + " y_min=0.96,\n", + " y_max=1.01,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "e17a58d0481ceabe", + "metadata": {}, + "source": [ + "Nice! Now we have some empirical evidence that QEC can beat no QEC when we use 1000 shots, at least at this noise level..." + ] + }, + { + "cell_type": "markdown", + "id": "64904684d203ad0b", + "metadata": {}, + "source": [ + "## Visualization B — When Does Error Correction Actually Help?\n", + "\n", + "In the second experiment, we gradually increase the noise strength applied to every 2-qubit gate and track:\n", + "\n", + "- The success probability of the **2-qubit physical circuit**\n", + "- The success probability of the **14-qubit error-corrected circuit**\n", + "\n", + "As the noise increases, we look for a **crossover point** — a regime where:\n", + "\n", + "- At low noise, the 2-qubit circuit performs better (less overhead, fewer opportunities for error)\n", + "- At higher noise, the error-corrected circuit starts to outperform it\n", + "\n", + "This is a key concept in quantum error correction theory:\n", + "there is a **noise threshold** below which encoding is a disadvantage, and above which it becomes a necessity." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "c11ac2d3b7b37a0c", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:54:47.339700Z", + "start_time": "2025-11-21T23:48:50.772814Z" + } + }, + "outputs": [], + "source": [ + "bit_flit_probabilities = np.arange(0.00, 0.201, 0.01)\n", + "shot_count = 1000\n", + "\n", + "success_counts_without_ec_with_custom_noise = np.zeros(\n", + " len(bit_flit_probabilities), dtype=float\n", + ")\n", + "success_counts_with_ec_with_custom_noise = np.zeros(\n", + " len(bit_flit_probabilities), dtype=float\n", + ")\n", + "\n", + "emulator_2q = StackMemorySimulator(min_qubits=2)\n", + "emulator_14q = StackMemorySimulator(min_qubits=14)\n", + "\n", + "for index, p in enumerate(bit_flit_probabilities):\n", + " custom_noise_model = BitFlipOn2QGateNoiseModel(p=p)\n", + " transversal_cx_with_custom_noise = transform_circuit(\n", + " transversal_cx, model=custom_noise_model\n", + " )\n", + " loaded_transversal_cx_with_custom_noise = load_circuit(\n", + " transversal_cx_with_custom_noise,\n", + " register_as_argument=True,\n", + " kernel_name=\"transversal_cx_with_custom_noise\",\n", + " )\n", + "\n", + " @squin.kernel\n", + " def steane_cx_with_custom_noise_experiment():\n", + " qreg = steane_encode_two_logical()\n", + " code1 = qreg[0:7]\n", + " code2 = qreg[7:14]\n", + " squin.broadcast.x(code1)\n", + " loaded_transversal_cx_with_custom_noise(qreg)\n", + " steane_error_correction_round(code1)\n", + " steane_error_correction_round(code2)\n", + "\n", + " result1 = measure_in_logical_z_basis(code1)\n", + " result2 = measure_in_logical_z_basis(code2)\n", + " return result1, result2\n", + "\n", + " simple_cx_with_custom_noise = transform_circuit(simple_cx, model=custom_noise_model)\n", + " loaded_simple_cx_with_custom_noise = load_circuit(\n", + " simple_cx_with_custom_noise,\n", + " register_as_argument=True,\n", + " kernel_name=\"simple_cx_with_custom_noise\",\n", + " )\n", + "\n", + " @squin.kernel\n", + " def cx_with_custom_noise_experiment():\n", + " qubits = squin.qalloc(2)\n", + " squin.x(qubits[0])\n", + "\n", + " loaded_simple_cx_with_custom_noise(qubits)\n", + "\n", + " result1 = squin.qubit.measure(qubits[0])\n", + " result2 = squin.qubit.measure(qubits[1])\n", + "\n", + " return result1, result2\n", + "\n", + " task_without_ec_with_custom_noise = emulator_2q.task(\n", + " cx_with_custom_noise_experiment\n", + " )\n", + " results_without_ec_with_custom_noise = task_without_ec_with_custom_noise.batch_run(\n", + " shots=shot_count\n", + " )\n", + " success_counts_without_ec_with_custom_noise[index] = (\n", + " results_without_ec_with_custom_noise[(1, 1)]\n", + " )\n", + "\n", + " task_with_ec_with_custom_noise = emulator_14q.task(\n", + " steane_cx_with_custom_noise_experiment\n", + " )\n", + " results_with_ec_with_custom_noise = task_with_ec_with_custom_noise.batch_run(\n", + " shots=shot_count\n", + " )\n", + " success_counts_with_ec_with_custom_noise[index] = results_with_ec_with_custom_noise[\n", + " (1, 1)\n", + " ]" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "60e59760081a8d43", + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-21T23:57:25.024774Z", + "start_time": "2025-11-21T23:57:24.918928Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA94AAAHqCAYAAADyGZa5AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAyipJREFUeJzs3Qd4FFUXBuAvvfdCSCgBQu+9SxEEUSkWUFQEFSwgKvaK2MsPNhQrgqIIAgKCooBU6b3X0EISElIJIX3/59xhwybZJJuQspN8r8+Y7O5kd3buzLJnzr3n2hgMBgOIiIiIiIiIqFzYls/TEhEREREREREDbyIiIiIiIqJyxow3ERERERERUTli4E1ERERERERUjhh4ExEREREREZUjBt5ERERERERE5YiBNxEREREREVE5YuBNREREREREVI4YeBMRERERERGVIwbeRFQmbGxs8MYbb1zXc6SkpODhhx9GUFCQer6nnnoKp0+fVr/PmjUrdz15HbmvKpD3Je9F3ieRWLt2rTomFixYUGY7ZPTo0XB3dy/VuWzuGO3du7darFllfk6Y+9wiqir/VhNR6TDwJiKzjF+2TZfAwED06dMHf/31V7F7bdOmTeof98TERIv38Lvvvqte97HHHsNPP/2E+++/n61znf78809+yaJyFxkZqY6zPXv2lPtryQW6yZMno0WLFnBzc4Ofnx/atGmDJ598Um0Hlf5CQWHL+++/b9W79ffff8fNN98Mf39/ODo6Ijg4GMOHD8e///4LPfrll1/wySefVPZmEFEZsy/rJySiquXNN99EvXr1YDAYcOHCBRUYDxo0CH/88QduvfXW3PWuXLkCe3v7PIH3lClTVKbN29vboteSL0ldunRRX6qNzGWCX331Vbz44ouoCuTiwt133w0nJ6dyC7y/+OILBt9ksfznsjn//PNPntsS8Mr5HhoaqoLg8pKZmYkbbrgBR44cwQMPPIAnnnhCBeIHDx5UwcqwYcNU0FXVPicqyj333KM+3/Nr27YtrJH8u/Tggw+qf5dkGydNmqR6TEVFRalg/MYbb8R///2Hbt26QU/kWD5w4IDq9UVEVQcDbyIqkmQROnTokHv7oYceQo0aNTB37tw8gbezs/N178mYmBg0a9as2PUkKCguMNALOzs7tVDVJcFBWloaXFxcoAeWnMuSVawMixcvxu7du/Hz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8z799FM3Qm+8YebPP/98b+nSpd67777rnX322UwnluDYZWRkuCkBatWq5aZViZ7q4fDhw67M+++/70aotOdtqqPnn3/eq1y5ste9e/eT+wUsovI6dt9++62bvsNGSN64caP39ttvexdccIG7rn744YfIfrjuCl7swmx6otKlS3tPP/30ca/JdZe4+Nlnn02rYo/q1au768x+XrduXa73GZ7WyKapmj9/vptOrFWrVu6BxMaud+/eblqcBQsWxPzN++6779zz69evd9NnWszss9W+15xxxhnepZdeSugSHLv77rvPxc3iYp+zNh1qWlqaG5me665gxy48urZ9Jg4aNOi41+S6S1z8LIez6cdefvnlmM9E+56Z33leoUy8zZNPPul++e1E27DzNuda9HD+Nk1RtOnTp3sNGjRw5W0OxdmzZ8c8b0PNP/DAA17VqlVdsK+44gpv7dq1MWX27NnjAlCmTBmvXLlyXo8ePWKCivyPnf3xsvtL8R7huRWXL1/upkKyLyqpqaleo0aNvFGjRsUkd8j/2NmXxCuvvNLdBLGkzqbwsLkao7/4G667gvmZaf7xj394pUqVctNyZMV1l7j4Zfe5aOVyu09jX0j69OnjVaxY0d1g6dy5s/syg8TGLru/eTa3t9m8ebNLsitVquS+z9hctH/4wx+Yx7sAxK5Lly4usbP91axZ0y1bwhaN667gfma+9dZbbn3W/MBw3eWtnxI/+/4YL35WaZDfeV6S/ZP7+nEAAAAAAPBTFLo+3gAAAAAAFCQk3gAAAAAA+IjEGwAAAAAAH5F4AwAAAADgIxJvAAAAAAB8ROINAAAAAICPSLwBAAAAAPARiTcAAAAAAD4i8QYAIIvLLrtM9957b47npV69enr88cdP6twNHz5cVatWVVJSkmbOnKnbbrtNnTp1+kmvn0h58f4WLFjgjj89PT3bMpMnT1aFChVizluzZs0iy1nPGwAABVWxRL8BAACC6IMPPtBpp50WWbYk8tVXXz1hIrh69WqNGDHClb344otVsWJFl3xHe+WVV1S8eHEVdV26dNE111yT7fN/+9vf5HlezA0BS8xP9oYIAAB+IfEGAOAkVK5c+aTO24YNG9z/1113nUvW46lUqVJCYpKRkaESJUqooChVqpR7ZKd8+fL5+n4AADhZNDUHACCOo0ePql+/fi65S0tL0wMPPBBT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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_qec_by_noise(\n", + " simple_11=success_counts_without_ec_with_custom_noise,\n", + " steane_11=success_counts_with_ec_with_custom_noise,\n", + " p_range=bit_flit_probabilities,\n", + " y_min=0.6,\n", + " y_max=1.01,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "4ce38dab2c85180", + "metadata": {}, + "source": [ + "### Reflection 4 🧠\n", + "\n", + "Based on your plot, approximately where does the **crossover threshold** appear — the point at which the logical (error-corrected) circuit begins to outperform the physical 2-qubit circuit?\n", + "\n", + "Now consider the noise model itself:\n", + "\n", + "- How do you think this threshold would shift if the noise affected **all gates** in the circuit, not only the two-qubit CX gates?\n", + "- Would the advantage of encoding disappear, or simply move to a higher noise regime?\n", + "\n", + "Finally, think about scaling the code:\n", + "\n", + "- Could this limitation be mitigated by moving to color codes with **larger distance** (for example, $d = 5$ or $d = 7$)?\n", + "- Or would the increased number of qubits and gates only introduce **more opportunities for error** at today’s noise levels?" + ] + }, + { + "cell_type": "markdown", + "id": "9d86d71d5aaa5e25", + "metadata": {}, + "source": [ + "# 5. Wrap-Up: What We Learned, and Where to Go Next\n", + "\n", + "Over the course of this notebook, we stepped from **physical qubits to logical qubits** and explored, in a hands-on way, what quantum error correction can and cannot do today.\n", + "\n", + "In particular, you learned how to:\n", + "\n", + "- Simulate a **noisy two-qubit CX gate** and observe how errors corrupt the expected $|11\\rangle$ outcome\n", + "- Encode information using the **Steane $[[7,1,3]]$ color code**\n", + "- Build a **transversal logical CX** using 14 physical qubits\n", + "- Perform a (partial) **error-correction round** using syndrome measurements\n", + "- Compare the performance of a **physical CX** and a **logical, error-corrected CX**\n", + "- Identify that **error correction is not always better** — it depends on the noise regime\n", + "\n", + "Perhaps most importantly, you saw that error correction is both **powerful and subtle**:\n", + "while it can suppress certain types of errors, it also introduces overhead, extra gates, and new pathways for noise to enter the system. As a result, there exists a practical “crossover” region: below some noise threshold, *encoding hurts*, and above it, *encoding helps*.\n", + "\n", + "This is exactly the kind of behavior that current experimental platforms are working to push in the right direction.\n", + "\n", + "---\n", + "\n", + "## Next Steps and Further Reading\n", + "\n", + "This notebook is the first in a broader learning path inspired by **cutting-edge neutral-atom experiments** and modern fault-tolerance research.\n", + "\n", + "In the next parts of this series, we will explore:\n", + "\n", + "2. **Magic state distillation**\n", + " How non-Clifford states can be purified and used to unlock universal quantum computation.\n", + "\n", + "3. **Improving error correction strategies**\n", + " Techniques such as **flag qubits** and **correlated decoding**, which help detect dangerous error patterns more efficiently.\n", + "\n", + "To connect these ideas with ongoing research, you may want to explore the following papers:\n", + "\n", + "### Key QuEra and Neutral-Atom References\n", + "\n", + "- Bluvstein *et al.* (2024):\n", + " *Logical quantum processor based on reconfigurable atom arrays*\n", + " https://www.nature.com/articles/s41586-023-06927-3\n", + "\n", + "- Sales Rodriguez *et al.* (2025):\n", + " *Experimental demonstration of logical magic state distillation*\n", + " https://www.nature.com/articles/s41586-025-09367-3\n", + "\n", + "These works demonstrate how **distance-3 color codes** and **transversal logical operations** can be realized on reconfigurable neutral-atom hardware.\n", + "\n", + "### Beyond Neutral Atoms\n", + "\n", + "It is important to recognize that this approach is not unique to neutral atoms. Other platforms are exploring related ideas as well:\n", + "\n", + "- Quantinuum (2023):\n", + " *Implementing Fault-Tolerant Entangling Gates on the Five-Qubit Code and the Color Code*\n", + " https://arxiv.org/abs/2309.14280\n", + "\n", + "This paper investigates **logical CX gates** implemented through error correction in ion-based architectures, highlighting how similar principles can apply across very different physical systems.\n", + "\n", + "### More Codes: Error Correction Zoo\n", + "\n", + "To dive deeper into the wide world of error-correcting codes, explore the **Error Correction Zoo**:\n", + "\n", + "https://errorcorrectionzoo.org\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/QEC_tutorial/pyproject.toml b/QEC_tutorial/pyproject.toml new file mode 100644 index 0000000..5e65ab5 --- /dev/null +++ b/QEC_tutorial/pyproject.toml @@ -0,0 +1,19 @@ +[project] +name = "QEC_tutorial" +version = "0.1.0" +description = "QEC Tutorial" +readme = "README.md" +requires-python = ">=3.13" +dependencies = [ + "black[jupyter]>=25.11.0", + "bloqade>=0.30.0", + "cirq>=1.6.1", + "matplotlib>=3.10.7", + "notebook>=7.5.0", + "numpy>=2.3.5", +] + +[dependency-groups] +dev = [ + "black>=25.11.0", +] diff --git a/QEC_tutorial/utils.py b/QEC_tutorial/utils.py new file mode 100644 index 0000000..fe4a216 --- /dev/null +++ b/QEC_tutorial/utils.py @@ -0,0 +1,113 @@ +import cirq +import numpy as np +import matplotlib.pyplot as plt + + +class BitFlipOn2QGateNoiseModel(cirq.NoiseModel): + """ + After every 2-qubit gate, apply an X error (bit flip) on the first qubit + with probability p, after the gate is applied. All other gates are left noiseless. + """ + + def __init__(self, p: float = 0.02): + self.p = p + + def noisy_operation(self, operation: cirq.Operation): + # Check if this is a 2-qubit gate + if len(operation.qubits) == 2: + first, second = operation.qubits + # cirq.bit_flip(p) is an X channel with probability p + return [ + operation, # ideal gate + cirq.bit_flip(self.p).on(first), # X noise on first qubit + ] + return operation + + +def plot_qec_by_run( + simple_11: np.ndarray, + steane_11: np.ndarray, + y_min: float = 0, + y_max: float = 1.0, +): + """ + Line plot of per-run success probability for |11⟩. + + x-axis: run index + y-axis: success probability + Two lines: simple vs Steane+QEC + + Parameters + ---------- + simple_11 : list or np.ndarray + Probabilities for the simple experiment + steane_11 : list or np.ndarray + Probabilities for the Steane+QEC experiment + y_min, y_max : float + Y-axis zoom window + """ + labels = ("2-qubit CX", "Steane CX + QEC") + runs = np.arange(1, len(simple_11) + 1, dtype=int) + + plt.figure(figsize=(10, 5)) + + plt.plot(runs, simple_11, "-o", label=labels[0], color="tab:blue") + plt.plot(runs, steane_11, "-s", label=labels[1], color="tab:orange") + + plt.xlabel("Run number") + plt.ylabel("Success probability for |11⟩") + plt.title("Run-by-run performance: Simple vs Error-Corrected") + plt.ylim(y_min, y_max) + plt.xlim(1, len(runs)) + + plt.legend() + plt.grid(True, alpha=0.3) + + plt.tight_layout() + plt.show() + + +def plot_qec_by_noise( + simple_11: np.ndarray, + steane_11: np.ndarray, + p_range: np.ndarray, + y_min: float = 0, + y_max: float = 1.0, +): + """ + Line plot of success probability for measuring |11⟩ vs + bit-flip probability in noise model. + + x-axis: bit-flip probability + y-axis: success probability + Two lines: simple vs Steane+QEC + + Parameters + ---------- + simple_11 : np.ndarray + Probabilities for the simple experiment + steane_11 : np.ndarray + Probabilities for the Steane+QEC experiment + p_range: np.ndarray + Array of bit-flip probabilities used for the different runs + y_min, y_max : float + Y-axis zoom window + """ + labels = ("2-qubit CX", "Steane CX + QEC") + + plt.figure(figsize=(10, 5)) + + plt.plot(p_range, simple_11, "-o", label=labels[0], color="tab:blue") + plt.plot(p_range, steane_11, "-s", label=labels[1], color="tab:orange") + + plt.xlabel("bit-flip probability") + plt.ylabel("Success probability for |11⟩") + plt.title("Bit-flip against success probability: Simple vs Error-Corrected") + plt.ylim(y_min, y_max) + plt.xlim(p_range[0], p_range[-1]) + + plt.legend() + plt.grid(True, alpha=0.3) + + plt.tight_layout() + plt.show() diff --git a/QEC_tutorial/uv.lock b/QEC_tutorial/uv.lock new file mode 100644 index 0000000..82519fa --- /dev/null +++ b/QEC_tutorial/uv.lock @@ -0,0 +1,3318 @@ +version = 1 +revision = 3 +requires-python = ">=3.13" +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'linux'", + "python_full_version < '3.14' and sys_platform == 'darwin'", + "python_full_version < '3.14' and sys_platform == 'linux'", + "python_full_version < '3.14' and sys_platform != 'darwin' and sys_platform != 'linux'", +] + +[[package]] +name = "amazon-braket-default-simulator" +version = "1.32.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "amazon-braket-schemas" }, + { name = "antlr4-python3-runtime" }, + { name = "numba" }, + { name = "numpy" }, + { name = "opt-einsum" }, + { name = "pydantic" }, + { name = "scipy" }, + { name = "sympy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/67/489d92cf1b0aad58d6669b92d97fe2b9a59682bcff4e55ccf32b5484749c/amazon_braket_default_simulator-1.32.0.tar.gz", hash = "sha256:fcf643158559ec6e3d195ebabef0ff75887a24272e3af9b803e72526139eb3da", size = 189811, upload-time = "2025-10-16T18:42:03.979Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/29/f8cc2a59d5a047a80cc87ea0a8a3a8b9e9eb31a4fc0ba3b339634ca331ec/amazon_braket_default_simulator-1.32.0-py3-none-any.whl", hash = "sha256:0bf5d60ef048ed6471570bc71fb9272fd2bd69490322a71a7f60e760a969813d", size = 232036, upload-time = "2025-10-16T18:42:02.271Z" }, +] + +[[package]] +name = "amazon-braket-schemas" +version = "1.27.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/74/bb/7c9316bad4de6904136785c7a2977380672e1fb55ff0de78cab0d69060af/amazon_braket_schemas-1.27.0.tar.gz", hash = "sha256:7d0b44e1343367732deeba4fc8a7f2711ada43278e0a90678bff018daab68c9c", size = 59736, upload-time = "2025-11-18T15:36:28.52Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/63/b833ec54afe8470749a46ac75d68e466ab585209a54161432c3bcbab3824/amazon_braket_schemas-1.27.0-py3-none-any.whl", hash = "sha256:708d2e5101c78a96f06d00ab81130e8a068e85f72f16d23899226f1f7c61961e", size = 152789, upload-time = "2025-11-18T15:36:27.174Z" }, +] + +[[package]] +name = "amazon-braket-sdk" +version = "1.105.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "amazon-braket-default-simulator" }, + { name = "amazon-braket-schemas" }, + { name = "backoff" }, + { name = "backports-entry-points-selectable" }, + { name = "boltons" }, + { name = "boto3" }, + { name = "cloudpickle" }, + { name = "nest-asyncio" }, + { name = "networkx" }, + { name = "numpy" }, + { name = "openpulse" }, + { name = "openqasm3" }, + { name = "oqpy" }, + { name = "sympy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/48/c56446247d43aa062685a47e3c60cd007c3e09184fea43c2d37f3c7c19b8/amazon_braket_sdk-1.105.0.tar.gz", hash = "sha256:c68f401872b4f5ab467e276d20f0cea722e2e0b8b0420aa956683ce6bc6b42a4", size = 472124, upload-time = "2025-11-18T15:51:53.537Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/ec/c1a4bb82c44abe92a3567cfccbb77ff222cab49fa4abdfff41b9f34e5c04/amazon_braket_sdk-1.105.0-py3-none-any.whl", hash = "sha256:7fb50bda50e305cd7378f29f8ffe156335679394183c0e91274284ab95323868", size = 369980, upload-time = "2025-11-18T15:51:51.787Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "antlr4-python3-runtime" +version = "4.13.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/33/5f/2cdf6f7aca3b20d3f316e9f505292e1f256a32089bd702034c29ebde6242/antlr4_python3_runtime-4.13.2.tar.gz", hash = "sha256:909b647e1d2fc2b70180ac586df3933e38919c85f98ccc656a96cd3f25ef3916", size = 117467, upload-time = "2024-08-03T19:00:12.757Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/03/a851e84fcbb85214dc637b6378121ef9a0dd61b4c65264675d8a5c9b1ae7/antlr4_python3_runtime-4.13.2-py3-none-any.whl", hash = "sha256:fe3835eb8d33daece0e799090eda89719dbccee7aa39ef94eed3818cafa5a7e8", size = 144462, upload-time = "2024-08-03T19:00:11.134Z" }, +] + +[[package]] +name = "anyio" +version = "4.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "sniffio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/78/7d432127c41b50bccba979505f272c16cbcadcc33645d5fa3a738110ae75/anyio-4.11.0.tar.gz", hash = "sha256:82a8d0b81e318cc5ce71a5f1f8b5c4e63619620b63141ef8c995fa0db95a57c4", size = 219094, upload-time = "2025-09-23T09:19:12.58Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/b3/9b1a8074496371342ec1e796a96f99c82c945a339cd81a8e73de28b4cf9e/anyio-4.11.0-py3-none-any.whl", hash = "sha256:0287e96f4d26d4149305414d4e3bc32f0dcd0862365a4bddea19d7a1ec38c4fc", size = 109097, upload-time = "2025-09-23T09:19:10.601Z" }, +] + +[[package]] +name = "appnope" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, +] + +[[package]] +name = "argon2-cffi" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "argon2-cffi-bindings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/89/ce5af8a7d472a67cc819d5d998aa8c82c5d860608c4db9f46f1162d7dab9/argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1", size = 45706, upload-time = "2025-06-03T06:55:32.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741", size = 14657, upload-time = "2025-06-03T06:55:30.804Z" }, +] + +[[package]] +name = "argon2-cffi-bindings" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/2d/db8af0df73c1cf454f71b2bbe5e356b8c1f8041c979f505b3d3186e520a9/argon2_cffi_bindings-25.1.0.tar.gz", hash = "sha256:b957f3e6ea4d55d820e40ff76f450952807013d361a65d7f28acc0acbf29229d", size = 1783441, upload-time = "2025-07-30T10:02:05.147Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/97/3c0a35f46e52108d4707c44b95cfe2afcafc50800b5450c197454569b776/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:3d3f05610594151994ca9ccb3c771115bdb4daef161976a266f0dd8aa9996b8f", size = 54393, upload-time = "2025-07-30T10:01:40.97Z" }, + { url = "https://files.pythonhosted.org/packages/9d/f4/98bbd6ee89febd4f212696f13c03ca302b8552e7dbf9c8efa11ea4a388c3/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:8b8efee945193e667a396cbc7b4fb7d357297d6234d30a489905d96caabde56b", size = 29328, upload-time = "2025-07-30T10:01:41.916Z" }, + { url = "https://files.pythonhosted.org/packages/43/24/90a01c0ef12ac91a6be05969f29944643bc1e5e461155ae6559befa8f00b/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3c6702abc36bf3ccba3f802b799505def420a1b7039862014a65db3205967f5a", size = 31269, upload-time = "2025-07-30T10:01:42.716Z" }, + { url = "https://files.pythonhosted.org/packages/d4/d3/942aa10782b2697eee7af5e12eeff5ebb325ccfb86dd8abda54174e377e4/argon2_cffi_bindings-25.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a1c70058c6ab1e352304ac7e3b52554daadacd8d453c1752e547c76e9c99ac44", size = 86558, upload-time = "2025-07-30T10:01:43.943Z" }, + { url = "https://files.pythonhosted.org/packages/0d/82/b484f702fec5536e71836fc2dbc8c5267b3f6e78d2d539b4eaa6f0db8bf8/argon2_cffi_bindings-25.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e2fd3bfbff3c5d74fef31a722f729bf93500910db650c925c2d6ef879a7e51cb", size = 92364, upload-time = "2025-07-30T10:01:44.887Z" }, + { url = "https://files.pythonhosted.org/packages/c9/c1/a606ff83b3f1735f3759ad0f2cd9e038a0ad11a3de3b6c673aa41c24bb7b/argon2_cffi_bindings-25.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4f9665de60b1b0e99bcd6be4f17d90339698ce954cfd8d9cf4f91c995165a92", size = 85637, upload-time = "2025-07-30T10:01:46.225Z" }, + { url = "https://files.pythonhosted.org/packages/44/b4/678503f12aceb0262f84fa201f6027ed77d71c5019ae03b399b97caa2f19/argon2_cffi_bindings-25.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ba92837e4a9aa6a508c8d2d7883ed5a8f6c308c89a4790e1e447a220deb79a85", size = 91934, upload-time = "2025-07-30T10:01:47.203Z" }, + { url = "https://files.pythonhosted.org/packages/f0/c7/f36bd08ef9bd9f0a9cff9428406651f5937ce27b6c5b07b92d41f91ae541/argon2_cffi_bindings-25.1.0-cp314-cp314t-win32.whl", hash = "sha256:84a461d4d84ae1295871329b346a97f68eade8c53b6ed9a7ca2d7467f3c8ff6f", size = 28158, upload-time = "2025-07-30T10:01:48.341Z" }, + { url = "https://files.pythonhosted.org/packages/b3/80/0106a7448abb24a2c467bf7d527fe5413b7fdfa4ad6d6a96a43a62ef3988/argon2_cffi_bindings-25.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b55aec3565b65f56455eebc9b9f34130440404f27fe21c3b375bf1ea4d8fbae6", size = 32597, upload-time = "2025-07-30T10:01:49.112Z" }, + { url = "https://files.pythonhosted.org/packages/05/b8/d663c9caea07e9180b2cb662772865230715cbd573ba3b5e81793d580316/argon2_cffi_bindings-25.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:87c33a52407e4c41f3b70a9c2d3f6056d88b10dad7695be708c5021673f55623", size = 28231, upload-time = "2025-07-30T10:01:49.92Z" }, + { url = "https://files.pythonhosted.org/packages/1d/57/96b8b9f93166147826da5f90376e784a10582dd39a393c99bb62cfcf52f0/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:aecba1723ae35330a008418a91ea6cfcedf6d31e5fbaa056a166462ff066d500", size = 54121, upload-time = "2025-07-30T10:01:50.815Z" }, + { url = "https://files.pythonhosted.org/packages/0a/08/a9bebdb2e0e602dde230bdde8021b29f71f7841bd54801bcfd514acb5dcf/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2630b6240b495dfab90aebe159ff784d08ea999aa4b0d17efa734055a07d2f44", size = 29177, upload-time = "2025-07-30T10:01:51.681Z" }, + { url = "https://files.pythonhosted.org/packages/b6/02/d297943bcacf05e4f2a94ab6f462831dc20158614e5d067c35d4e63b9acb/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:7aef0c91e2c0fbca6fc68e7555aa60ef7008a739cbe045541e438373bc54d2b0", size = 31090, upload-time = "2025-07-30T10:01:53.184Z" }, + { url = "https://files.pythonhosted.org/packages/c1/93/44365f3d75053e53893ec6d733e4a5e3147502663554b4d864587c7828a7/argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e021e87faa76ae0d413b619fe2b65ab9a037f24c60a1e6cc43457ae20de6dc6", size = 81246, upload-time = "2025-07-30T10:01:54.145Z" }, + { url = "https://files.pythonhosted.org/packages/09/52/94108adfdd6e2ddf58be64f959a0b9c7d4ef2fa71086c38356d22dc501ea/argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3e924cfc503018a714f94a49a149fdc0b644eaead5d1f089330399134fa028a", size = 87126, upload-time = "2025-07-30T10:01:55.074Z" }, + { url = "https://files.pythonhosted.org/packages/72/70/7a2993a12b0ffa2a9271259b79cc616e2389ed1a4d93842fac5a1f923ffd/argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c87b72589133f0346a1cb8d5ecca4b933e3c9b64656c9d175270a000e73b288d", size = 80343, upload-time = "2025-07-30T10:01:56.007Z" }, + { url = "https://files.pythonhosted.org/packages/78/9a/4e5157d893ffc712b74dbd868c7f62365618266982b64accab26bab01edc/argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1db89609c06afa1a214a69a462ea741cf735b29a57530478c06eb81dd403de99", size = 86777, upload-time = "2025-07-30T10:01:56.943Z" }, + { url = "https://files.pythonhosted.org/packages/74/cd/15777dfde1c29d96de7f18edf4cc94c385646852e7c7b0320aa91ccca583/argon2_cffi_bindings-25.1.0-cp39-abi3-win32.whl", hash = "sha256:473bcb5f82924b1becbb637b63303ec8d10e84c8d241119419897a26116515d2", size = 27180, upload-time = "2025-07-30T10:01:57.759Z" }, + { url = "https://files.pythonhosted.org/packages/e2/c6/a759ece8f1829d1f162261226fbfd2c6832b3ff7657384045286d2afa384/argon2_cffi_bindings-25.1.0-cp39-abi3-win_amd64.whl", hash = "sha256:a98cd7d17e9f7ce244c0803cad3c23a7d379c301ba618a5fa76a67d116618b98", size = 31715, upload-time = "2025-07-30T10:01:58.56Z" }, + { url = "https://files.pythonhosted.org/packages/42/b9/f8d6fa329ab25128b7e98fd83a3cb34d9db5b059a9847eddb840a0af45dd/argon2_cffi_bindings-25.1.0-cp39-abi3-win_arm64.whl", hash = "sha256:b0fdbcf513833809c882823f98dc2f931cf659d9a1429616ac3adebb49f5db94", size = 27149, upload-time = "2025-07-30T10:01:59.329Z" }, +] + +[[package]] +name = "arrow" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/33/032cdc44182491aa708d06a68b62434140d8c50820a087fac7af37703357/arrow-1.4.0.tar.gz", hash = "sha256:ed0cc050e98001b8779e84d461b0098c4ac597e88704a655582b21d116e526d7", size = 152931, upload-time = "2025-10-18T17:46:46.761Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/c9/d7977eaacb9df673210491da99e6a247e93df98c715fc43fd136ce1d3d33/arrow-1.4.0-py3-none-any.whl", hash = "sha256:749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205", size = 68797, upload-time = "2025-10-18T17:46:45.663Z" }, +] + +[[package]] +name = "asttokens" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/be/a5/8e3f9b6771b0b408517c82d97aed8f2036509bc247d46114925e32fe33f0/asttokens-3.0.1.tar.gz", hash = "sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7", size = 62308, upload-time = "2025-11-15T16:43:48.578Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl", hash = "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a", size = 27047, upload-time = "2025-11-15T16:43:16.109Z" }, +] + +[[package]] +name = "async-lru" +version = "2.0.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380, upload-time = "2025-03-16T17:25:36.919Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069, upload-time = "2025-03-16T17:25:35.422Z" }, +] + +[[package]] +name = "attrs" +version = "25.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, +] + +[[package]] +name = "autoray" +version = "0.8.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/0f/2c627f36bf044c69b1e2945be3fd9f051103e7cb7020ca76142133b5352c/autoray-0.8.2.tar.gz", hash = "sha256:031637850b782cb0b8c0bcfd6a03f99e81e5a5deadbdc835e0471440f1ff0c0f", size = 1180274, upload-time = "2025-11-03T22:34:42.79Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/d9/d0aeba5f72236ab1397cf1203f0d2ea6a6f852f0f2a81cd5fbc2bc329087/autoray-0.8.2-py3-none-any.whl", hash = "sha256:e869f40c080e43d95d9ae1e22cf4e85bbfd8b71dc1c42df30a5cd9253ba4fa42", size = 935556, upload-time = "2025-11-03T22:34:41.094Z" }, +] + +[[package]] +name = "babel" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, +] + +[[package]] +name = "backoff" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/47/d7/5bbeb12c44d7c4f2fb5b56abce497eb5ed9f34d85701de869acedd602619/backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba", size = 17001, upload-time = "2022-10-05T19:19:32.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/73/b6e24bd22e6720ca8ee9a85a0c4a2971af8497d8f3193fa05390cbd46e09/backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8", size = 15148, upload-time = "2022-10-05T19:19:30.546Z" }, +] + +[[package]] +name = "backports-entry-points-selectable" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/25/dae014b114397a6f60578d7358bf5fcb103f71556e5363a50d7b42e9bc51/backports.entry_points_selectable-1.3.0.tar.gz", hash = "sha256:17a8b44ae700fba548686dd274ddc91c060371565cd63806c20a1d33911746e6", size = 9882, upload-time = "2023-11-27T19:03:06.585Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/78/b3ba5d804ae21e26e6179bbe4e1338deaaba9d20161918f59e20e9d92ea0/backports.entry_points_selectable-1.3.0-py3-none-any.whl", hash = "sha256:66f5da003eb4b283c7b60581bc8bb0baf0d810eb3e3068da786d3821b4d5746a", size = 6217, upload-time = "2023-11-27T19:03:04.844Z" }, +] + +[[package]] +name = "beartype" +version = "0.22.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/88/e2/105ceb1704cb80fe4ab3872529ab7b6f365cf7c74f725e6132d0efcf1560/beartype-0.22.6.tar.gz", hash = "sha256:97fbda69c20b48c5780ac2ca60ce3c1bb9af29b3a1a0216898ffabdd523e48f4", size = 1588975, upload-time = "2025-11-20T04:47:14.736Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/c9/ceecc71fe2c9495a1d8e08d44f5f31f5bca1350d5b2e27a4b6265424f59e/beartype-0.22.6-py3-none-any.whl", hash = "sha256:0584bc46a2ea2a871509679278cda992eadde676c01356ab0ac77421f3c9a093", size = 1324807, upload-time = "2025-11-20T04:47:11.837Z" }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.14.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/77/e9/df2358efd7659577435e2177bfa69cba6c33216681af51a707193dec162a/beautifulsoup4-4.14.2.tar.gz", hash = "sha256:2a98ab9f944a11acee9cc848508ec28d9228abfd522ef0fad6a02a72e0ded69e", size = 625822, upload-time = "2025-09-29T10:05:42.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/fe/3aed5d0be4d404d12d36ab97e2f1791424d9ca39c2f754a6285d59a3b01d/beautifulsoup4-4.14.2-py3-none-any.whl", hash = "sha256:5ef6fa3a8cbece8488d66985560f97ed091e22bbc4e9c2338508a9d5de6d4515", size = 106392, upload-time = "2025-09-29T10:05:43.771Z" }, +] + +[[package]] +name = "black" +version = "25.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "mypy-extensions" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "platformdirs" }, + { name = "pytokens" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8c/ad/33adf4708633d047950ff2dfdea2e215d84ac50ef95aff14a614e4b6e9b2/black-25.11.0.tar.gz", hash = "sha256:9a323ac32f5dc75ce7470501b887250be5005a01602e931a15e45593f70f6e08", size = 655669, upload-time = "2025-11-10T01:53:50.558Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ad/47/3378d6a2ddefe18553d1115e36aea98f4a90de53b6a3017ed861ba1bd3bc/black-25.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0a1d40348b6621cc20d3d7530a5b8d67e9714906dfd7346338249ad9c6cedf2b", size = 1772446, upload-time = "2025-11-10T02:02:16.181Z" }, + { url = "https://files.pythonhosted.org/packages/ba/4b/0f00bfb3d1f7e05e25bfc7c363f54dc523bb6ba502f98f4ad3acf01ab2e4/black-25.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:51c65d7d60bb25429ea2bf0731c32b2a2442eb4bd3b2afcb47830f0b13e58bfd", size = 1607983, upload-time = "2025-11-10T02:02:52.502Z" }, + { url = "https://files.pythonhosted.org/packages/99/fe/49b0768f8c9ae57eb74cc10a1f87b4c70453551d8ad498959721cc345cb7/black-25.11.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:936c4dd07669269f40b497440159a221ee435e3fddcf668e0c05244a9be71993", size = 1682481, upload-time = "2025-11-10T01:57:12.35Z" }, + { url = "https://files.pythonhosted.org/packages/55/17/7e10ff1267bfa950cc16f0a411d457cdff79678fbb77a6c73b73a5317904/black-25.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:f42c0ea7f59994490f4dccd64e6b2dd49ac57c7c84f38b8faab50f8759db245c", size = 1363869, upload-time = "2025-11-10T01:58:24.608Z" }, + { url = "https://files.pythonhosted.org/packages/67/c0/cc865ce594d09e4cd4dfca5e11994ebb51604328489f3ca3ae7bb38a7db5/black-25.11.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:35690a383f22dd3e468c85dc4b915217f87667ad9cce781d7b42678ce63c4170", size = 1771358, upload-time = "2025-11-10T02:03:33.331Z" }, + { url = "https://files.pythonhosted.org/packages/37/77/4297114d9e2fd2fc8ab0ab87192643cd49409eb059e2940391e7d2340e57/black-25.11.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:dae49ef7369c6caa1a1833fd5efb7c3024bb7e4499bf64833f65ad27791b1545", size = 1612902, upload-time = "2025-11-10T01:59:33.382Z" }, + { url = "https://files.pythonhosted.org/packages/de/63/d45ef97ada84111e330b2b2d45e1dd163e90bd116f00ac55927fb6bf8adb/black-25.11.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bd4a22a0b37401c8e492e994bce79e614f91b14d9ea911f44f36e262195fdda", size = 1680571, upload-time = "2025-11-10T01:57:04.239Z" }, + { url = "https://files.pythonhosted.org/packages/ff/4b/5604710d61cdff613584028b4cb4607e56e148801ed9b38ee7970799dab6/black-25.11.0-cp314-cp314-win_amd64.whl", hash = "sha256:aa211411e94fdf86519996b7f5f05e71ba34835d8f0c0f03c00a26271da02664", size = 1382599, upload-time = "2025-11-10T01:57:57.427Z" }, + { url = "https://files.pythonhosted.org/packages/00/5d/aed32636ed30a6e7f9efd6ad14e2a0b0d687ae7c8c7ec4e4a557174b895c/black-25.11.0-py3-none-any.whl", hash = "sha256:e3f562da087791e96cefcd9dda058380a442ab322a02e222add53736451f604b", size = 204918, upload-time = "2025-11-10T01:53:48.917Z" }, +] + +[package.optional-dependencies] +jupyter = [ + { name = "ipython" }, + { name = "tokenize-rt" }, +] + +[[package]] +name = "bleach" +version = "6.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/07/18/3c8523962314be6bf4c8989c79ad9531c825210dd13a8669f6b84336e8bd/bleach-6.3.0.tar.gz", hash = "sha256:6f3b91b1c0a02bb9a78b5a454c92506aa0fdf197e1d5e114d2e00c6f64306d22", size = 203533, upload-time = "2025-10-27T17:57:39.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/3a/577b549de0cc09d95f11087ee63c739bba856cd3952697eec4c4bb91350a/bleach-6.3.0-py3-none-any.whl", hash = "sha256:fe10ec77c93ddf3d13a73b035abaac7a9f5e436513864ccdad516693213c65d6", size = 164437, upload-time = "2025-10-27T17:57:37.538Z" }, +] + +[package.optional-dependencies] +css = [ + { name = "tinycss2" }, +] + +[[package]] +name = "bloqade" +version = "0.30.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "bloqade-analog" }, + { name = "bloqade-circuit", extra = ["cirq", "qasm2", "qbraid", "stim", "vis"] }, +] +sdist = { url = "https://files.pythonhosted.org/packages/12/66/65e9f2e353c4456ceff6acbf0bb604d9d008f953ad91e872066ad68ed872/bloqade-0.30.0.tar.gz", hash = "sha256:8d8cefaea10868b9e300a03cc219892df0b84a64e73b0e33d5669c5252d8111c", size = 14946416, upload-time = "2025-11-10T14:20:41.768Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/31/c331803162f673cda46176845a8ceff3fe01e3427b8501c837c45f5d82ce/bloqade-0.30.0-py3-none-any.whl", hash = "sha256:00180de7a3d3e2473a7fc99691ee65acfd41c6251c8b96fbce5faf5e11ac9cf8", size = 7804, upload-time = "2025-11-10T14:20:39.883Z" }, +] + +[[package]] +name = "bloqade-analog" +version = "0.16.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "amazon-braket-sdk" }, + { name = "beartype" }, + { name = "bokeh" }, + { name = "juliacall" }, + { name = "numba" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "plotext" }, + { name = "plum-dispatch" }, + { name = "pydantic" }, + { name = "requests-sigv4" }, + { name = "scipy" }, + { name = "simplejson" }, + { name = "tabulate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/14/a1c9a849a96ec85e15b324209190ad1bed6cefcf3a5b57b812efe4c683fb/bloqade_analog-0.16.8.tar.gz", hash = "sha256:e335fe5981818d8a42f49c28bea512b0cef0d0f6c9e3f3ca73fc3c7c08de6cc0", size = 7102120, upload-time = "2025-10-10T18:02:32.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/52/0fe35dc8d62752ebf3c98bdd288eb075e1eb32c06dea4b22d98045cef066/bloqade_analog-0.16.8-py3-none-any.whl", hash = "sha256:dd489c2b2512801ad08984a9fca1e93cdfffa1a7216c07c09049c3721bc52a55", size = 187815, upload-time = "2025-10-10T18:02:31.41Z" }, +] + +[[package]] +name = "bloqade-circuit" +version = "0.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "kirin-toolchain" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pydantic" }, + { name = "pyqrack-cpu" }, + { name = "rich" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/6e/64bffd3292ca3a05fc51e04b703771fd15865fb10006cafa6ffa292f6b81/bloqade_circuit-0.9.1.tar.gz", hash = "sha256:5c885ff66e1492562d24d716cb8a83e82dbd5bb27b687b22ce55ca138a8e4700", size = 365602, upload-time = "2025-11-17T08:29:51.665Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/70/7005efcb5e08aad2eaa49421ad60ad846fc2d51b921f2e9da5cc7b6173cd/bloqade_circuit-0.9.1-py3-none-any.whl", hash = "sha256:bf8db4a6f017a231963ce5689360ece4274522984aa5bbe81809985ac5cc1ecc", size = 237883, upload-time = "2025-11-17T08:29:49.965Z" }, +] + +[package.optional-dependencies] +cirq = [ + { name = "cirq-core", extra = ["contrib"] }, + { name = "qpsolvers", extra = ["clarabel"] }, +] +qasm2 = [ + { name = "lark" }, +] +qbraid = [ + { name = "qbraid" }, +] +stim = [ + { name = "stim" }, +] +vis = [ + { name = "ffmpeg" }, + { name = "matplotlib" }, + { name = "pyqt5", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "tqdm" }, +] + +[[package]] +name = "bokeh" +version = "3.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "jinja2" }, + { name = "narwhals" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pandas" }, + { name = "pillow" }, + { name = "pyyaml" }, + { name = "tornado", marker = "sys_platform != 'emscripten'" }, + { name = "xyzservices" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/de/42/777c0627dbd78a2a7c6c6a1c3327e8a787ec99a4b84ae93245ce49c96af7/bokeh-3.8.1.tar.gz", hash = "sha256:40df8e632de367399d06979cbd76c9e68a133a3138e1adde37c4a4715ecb4d6e", size = 6529791, upload-time = "2025-11-07T20:50:59.565Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/e7/b18bee0772d49c0f78d57f15a68e85257abf7224d9b910706abe8bd1dc0f/bokeh-3.8.1-py3-none-any.whl", hash = "sha256:89a66cb8bfe85e91bce144e3ccf3c4a6f0f1347e7006282972568ea0ecacbb00", size = 7206137, upload-time = "2025-11-07T20:50:58.108Z" }, +] + +[[package]] +name = "boltons" +version = "25.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/63/54/71a94d8e02da9a865587fb3fff100cb0fc7aa9f4d5ed9ed3a591216ddcc7/boltons-25.0.0.tar.gz", hash = "sha256:e110fbdc30b7b9868cb604e3f71d4722dd8f4dcb4a5ddd06028ba8f1ab0b5ace", size = 246294, upload-time = "2025-02-03T05:57:59.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/7f/0e961cf3908bc4c1c3e027de2794f867c6c89fb4916fc7dba295a0e80a2d/boltons-25.0.0-py3-none-any.whl", hash = "sha256:dc9fb38bf28985715497d1b54d00b62ea866eca3938938ea9043e254a3a6ca62", size = 194210, upload-time = "2025-02-03T05:57:56.705Z" }, +] + +[[package]] +name = "boto3" +version = "1.41.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore" }, + { name = "jmespath" }, + { name = "s3transfer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dd/4f/92744c97f42e214948b9c8eff86e7e72c7ca8be788867a8aea80dc192052/boto3-1.41.0.tar.gz", hash = "sha256:73bf7f63152406404c0359c013a692e884b98a3b297160058a38f00ef19e375b", size = 111589, upload-time = "2025-11-19T20:29:10.72Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/35/5f4b70f20188614a485b26e80369b9fa260a06fb0ae328153d7fc647619f/boto3-1.41.0-py3-none-any.whl", hash = "sha256:d5c454bb23655b052073c8dc6703dda5360825b72b1691822ae7709050b96390", size = 139340, upload-time = "2025-11-19T20:29:09.03Z" }, +] + +[[package]] +name = "botocore" +version = "1.41.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jmespath" }, + { name = "python-dateutil" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/8d/af94a3a0a5dc3ff255fdbd9a4bdf8e41beb33ea61ebab92e3d8e017f9ee4/botocore-1.41.0.tar.gz", hash = "sha256:555afbf86a644bfa4ebd7bd98d717b53b792e6bbb2c49f2b308fb06964cf1655", size = 14580059, upload-time = "2025-11-19T20:28:59.605Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/5c/65591ff3d30e790921635602bf53f60b89dd1f39a2cc0dad980b70dd569c/botocore-1.41.0-py3-none-any.whl", hash = "sha256:a5018d6268eee358dfc5d86e596c3062b4e225690acaf946f54c00063b804bf8", size = 14243471, upload-time = "2025-11-19T20:28:56.965Z" }, +] + +[[package]] +name = "cachetools" +version = "6.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/44/ca1675be2a83aeee1886ab745b28cda92093066590233cc501890eb8417a/cachetools-6.2.2.tar.gz", hash = "sha256:8e6d266b25e539df852251cfd6f990b4bc3a141db73b939058d809ebd2590fc6", size = 31571, upload-time = "2025-11-13T17:42:51.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/46/eb6eca305c77a4489affe1c5d8f4cae82f285d9addd8de4ec084a7184221/cachetools-6.2.2-py3-none-any.whl", hash = "sha256:6c09c98183bf58560c97b2abfcedcbaf6a896a490f534b031b661d3723b45ace", size = 11503, upload-time = "2025-11-13T17:42:50.232Z" }, +] + +[[package]] +name = "certifi" +version = "2025.11.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/8c/58f469717fa48465e4a50c014a0400602d3c437d7c0c468e17ada824da3a/certifi-2025.11.12.tar.gz", hash = "sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316", size = 160538, upload-time = "2025-11-12T02:54:51.517Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/7d/9bc192684cea499815ff478dfcdc13835ddf401365057044fb721ec6bddb/certifi-2025.11.12-py3-none-any.whl", hash = "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b", size = 159438, upload-time = "2025-11-12T02:54:49.735Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/45/4b3a1239bbacd321068ea6e7ac28875b03ab8bc0aa0966452db17cd36714/charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794", size = 208091, upload-time = "2025-10-14T04:41:13.346Z" }, + { url = "https://files.pythonhosted.org/packages/7d/62/73a6d7450829655a35bb88a88fca7d736f9882a27eacdca2c6d505b57e2e/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed", size = 147936, upload-time = "2025-10-14T04:41:14.461Z" }, + { url = "https://files.pythonhosted.org/packages/89/c5/adb8c8b3d6625bef6d88b251bbb0d95f8205831b987631ab0c8bb5d937c2/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72", size = 144180, upload-time = "2025-10-14T04:41:15.588Z" }, + { url = "https://files.pythonhosted.org/packages/91/ed/9706e4070682d1cc219050b6048bfd293ccf67b3d4f5a4f39207453d4b99/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328", size = 161346, upload-time = "2025-10-14T04:41:16.738Z" }, + { url = "https://files.pythonhosted.org/packages/d5/0d/031f0d95e4972901a2f6f09ef055751805ff541511dc1252ba3ca1f80cf5/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede", size = 158874, upload-time = "2025-10-14T04:41:17.923Z" }, + { url = "https://files.pythonhosted.org/packages/f5/83/6ab5883f57c9c801ce5e5677242328aa45592be8a00644310a008d04f922/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894", size = 153076, upload-time = "2025-10-14T04:41:19.106Z" }, + { url = "https://files.pythonhosted.org/packages/75/1e/5ff781ddf5260e387d6419959ee89ef13878229732732ee73cdae01800f2/charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1", size = 150601, upload-time = "2025-10-14T04:41:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/d7/57/71be810965493d3510a6ca79b90c19e48696fb1ff964da319334b12677f0/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490", size = 150376, upload-time = "2025-10-14T04:41:21.398Z" }, + { url = "https://files.pythonhosted.org/packages/e5/d5/c3d057a78c181d007014feb7e9f2e65905a6c4ef182c0ddf0de2924edd65/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44", size = 144825, upload-time = "2025-10-14T04:41:22.583Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8c/d0406294828d4976f275ffbe66f00266c4b3136b7506941d87c00cab5272/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133", size = 162583, upload-time = "2025-10-14T04:41:23.754Z" }, + { url = "https://files.pythonhosted.org/packages/d7/24/e2aa1f18c8f15c4c0e932d9287b8609dd30ad56dbe41d926bd846e22fb8d/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3", size = 150366, upload-time = "2025-10-14T04:41:25.27Z" }, + { url = "https://files.pythonhosted.org/packages/e4/5b/1e6160c7739aad1e2df054300cc618b06bf784a7a164b0f238360721ab86/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e", size = 160300, upload-time = "2025-10-14T04:41:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/7a/10/f882167cd207fbdd743e55534d5d9620e095089d176d55cb22d5322f2afd/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc", size = 154465, upload-time = "2025-10-14T04:41:28.322Z" }, + { url = "https://files.pythonhosted.org/packages/89/66/c7a9e1b7429be72123441bfdbaf2bc13faab3f90b933f664db506dea5915/charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac", size = 99404, upload-time = "2025-10-14T04:41:29.95Z" }, + { url = "https://files.pythonhosted.org/packages/c4/26/b9924fa27db384bdcd97ab83b4f0a8058d96ad9626ead570674d5e737d90/charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14", size = 107092, upload-time = "2025-10-14T04:41:31.188Z" }, + { url = "https://files.pythonhosted.org/packages/af/8f/3ed4bfa0c0c72a7ca17f0380cd9e4dd842b09f664e780c13cff1dcf2ef1b/charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2", size = 100408, upload-time = "2025-10-14T04:41:32.624Z" }, + { url = "https://files.pythonhosted.org/packages/2a/35/7051599bd493e62411d6ede36fd5af83a38f37c4767b92884df7301db25d/charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd", size = 207746, upload-time = "2025-10-14T04:41:33.773Z" }, + { url = "https://files.pythonhosted.org/packages/10/9a/97c8d48ef10d6cd4fcead2415523221624bf58bcf68a802721a6bc807c8f/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb", size = 147889, upload-time = "2025-10-14T04:41:34.897Z" }, + { url = "https://files.pythonhosted.org/packages/10/bf/979224a919a1b606c82bd2c5fa49b5c6d5727aa47b4312bb27b1734f53cd/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e", size = 143641, upload-time = "2025-10-14T04:41:36.116Z" }, + { url = "https://files.pythonhosted.org/packages/ba/33/0ad65587441fc730dc7bd90e9716b30b4702dc7b617e6ba4997dc8651495/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14", size = 160779, upload-time = "2025-10-14T04:41:37.229Z" }, + { url = "https://files.pythonhosted.org/packages/67/ed/331d6b249259ee71ddea93f6f2f0a56cfebd46938bde6fcc6f7b9a3d0e09/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191", size = 159035, upload-time = "2025-10-14T04:41:38.368Z" }, + { url = "https://files.pythonhosted.org/packages/67/ff/f6b948ca32e4f2a4576aa129d8bed61f2e0543bf9f5f2b7fc3758ed005c9/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838", size = 152542, upload-time = "2025-10-14T04:41:39.862Z" }, + { url = "https://files.pythonhosted.org/packages/16/85/276033dcbcc369eb176594de22728541a925b2632f9716428c851b149e83/charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6", size = 149524, upload-time = "2025-10-14T04:41:41.319Z" }, + { url = "https://files.pythonhosted.org/packages/9e/f2/6a2a1f722b6aba37050e626530a46a68f74e63683947a8acff92569f979a/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e", size = 150395, upload-time = "2025-10-14T04:41:42.539Z" }, + { url = "https://files.pythonhosted.org/packages/60/bb/2186cb2f2bbaea6338cad15ce23a67f9b0672929744381e28b0592676824/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c", size = 143680, upload-time = "2025-10-14T04:41:43.661Z" }, + { url = "https://files.pythonhosted.org/packages/7d/a5/bf6f13b772fbb2a90360eb620d52ed8f796f3c5caee8398c3b2eb7b1c60d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090", size = 162045, upload-time = "2025-10-14T04:41:44.821Z" }, + { url = "https://files.pythonhosted.org/packages/df/c5/d1be898bf0dc3ef9030c3825e5d3b83f2c528d207d246cbabe245966808d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152", size = 149687, upload-time = "2025-10-14T04:41:46.442Z" }, + { url = "https://files.pythonhosted.org/packages/a5/42/90c1f7b9341eef50c8a1cb3f098ac43b0508413f33affd762855f67a410e/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828", size = 160014, upload-time = "2025-10-14T04:41:47.631Z" }, + { url = "https://files.pythonhosted.org/packages/76/be/4d3ee471e8145d12795ab655ece37baed0929462a86e72372fd25859047c/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec", size = 154044, upload-time = "2025-10-14T04:41:48.81Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6f/8f7af07237c34a1defe7defc565a9bc1807762f672c0fde711a4b22bf9c0/charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9", size = 99940, upload-time = "2025-10-14T04:41:49.946Z" }, + { url = "https://files.pythonhosted.org/packages/4b/51/8ade005e5ca5b0d80fb4aff72a3775b325bdc3d27408c8113811a7cbe640/charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c", size = 107104, upload-time = "2025-10-14T04:41:51.051Z" }, + { url = "https://files.pythonhosted.org/packages/da/5f/6b8f83a55bb8278772c5ae54a577f3099025f9ade59d0136ac24a0df4bde/charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2", size = 100743, upload-time = "2025-10-14T04:41:52.122Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, +] + +[[package]] +name = "cirq" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cirq-aqt" }, + { name = "cirq-core" }, + { name = "cirq-google" }, + { name = "cirq-ionq" }, + { name = "cirq-pasqal" }, + { name = "cirq-web" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/3f/1c0a77b65bd97a0fb99da0b7fcd25ba08f2c2509a93d4abd236650afcd80/cirq-1.6.1-py3-none-any.whl", hash = "sha256:e448e21fa6951df7ebd78743a972f08e19d5663e36618ce91af80ed3799abeec", size = 11080, upload-time = "2025-08-14T03:16:15.183Z" }, +] + +[[package]] +name = "cirq-aqt" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cirq-core" }, + { name = "requests" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/9e/3f731e72ea5e588e62cf076b7b276402611ff1325b73fe2ddad326c3544c/cirq_aqt-1.6.1-py3-none-any.whl", hash = "sha256:f8d90b794500f4f214885425cae0a30569a65f967d92c9fdc8cdce48591f8cd6", size = 32236, upload-time = "2025-08-14T03:16:20.331Z" }, +] + +[[package]] +name = "cirq-core" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "duet" }, + { name = "matplotlib" }, + { name = "networkx" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "scipy" }, + { name = "sortedcontainers" }, + { name = "sympy" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/ec/64554f2231775b22e99a80cf3105348b926e46e4b3374b6c04d68c7718e2/cirq_core-1.6.1-py3-none-any.whl", hash = "sha256:fbc809d7c6a228762ad92bb7870dc16f55b76728fcc7ef4c7aaceb7e5c63e8e6", size = 2017699, upload-time = "2025-08-14T03:16:23.678Z" }, +] + +[package.optional-dependencies] +contrib = [ + { name = "opt-einsum" }, + { name = "ply" }, + { name = "pylatex" }, + { name = "quimb" }, +] + +[[package]] +name = "cirq-google" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cirq-core" }, + { name = "google-api-core", version = "2.25.2", source = { registry = "https://pypi.org/simple" }, extra = ["grpc"], marker = "python_full_version >= '3.14'" }, + { name = "google-api-core", version = "2.28.1", source = { registry = "https://pypi.org/simple" }, extra = ["grpc"], marker = "python_full_version < '3.14'" }, + { name = "proto-plus" }, + { name = "protobuf" }, + { name = "typedunits" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/68/8ddaf46c0089827471048d55e6f9fbf0c55ce8c059f931df77aa9f208c8c/cirq_google-1.6.1-py3-none-any.whl", hash = "sha256:aa87ca915a9d1eb48b505513f15fb2acf42fa136e4c1a6c2a144e232828e8b19", size = 670766, upload-time = "2025-08-14T03:16:09.492Z" }, +] + +[[package]] +name = "cirq-ionq" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cirq-core" }, + { name = "requests" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/1d/626723cf331ed366c8a71f8f65bd53efe6fdacdaa40bcb8cda98a82ae88a/cirq_ionq-1.6.1-py3-none-any.whl", hash = "sha256:f147e7176bcfae51802772b6b659b2b9f0ffe3e8de4ce41e36956ae1a6979ad9", size = 73490, upload-time = "2025-08-14T03:16:12.624Z" }, +] + +[[package]] +name = "cirq-pasqal" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cirq-core" }, + { name = "requests" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/a0/c0f30714ee84af6c1a6b4804fb6d05cf1ff8d985222ee6ff0e6472367fff/cirq_pasqal-1.6.1-py3-none-any.whl", hash = "sha256:4dd32f7f2422cf0d83b0a25ef73f91d6bc6886c5b54913b112d0a6bacbbac392", size = 33914, upload-time = "2025-08-14T03:16:18.229Z" }, +] + +[[package]] +name = "cirq-web" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cirq-core" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/41/eb6250ebb9beceacae0509a3a1e7ad542aa97487b5350be1a63eeddac274/cirq_web-1.6.1-py3-none-any.whl", hash = "sha256:670164e6baa6b355e322b7f52e20ad07a05158520fb7d5d0bd6650a7efcf6871", size = 430514, upload-time = "2025-08-14T03:16:05.484Z" }, +] + +[[package]] +name = "clarabel" +version = "0.11.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, + { name = "numpy" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/e2/47f692161779dbd98876015de934943effb667a014e6f79a6d746b3e4c2a/clarabel-0.11.1.tar.gz", hash = "sha256:e7c41c47f0e59aeab99aefff9e58af4a8753ee5269bbeecbd5526fc6f41b9598", size = 253949, upload-time = "2025-06-11T16:49:05.864Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/f7/f82698b6d00a40a80c67e9a32b2628886aadfaf7f7b32daa12a463e44571/clarabel-0.11.1-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c39160e4222040f051f2a0598691c4f9126b4d17f5b9e7678f76c71d611e12d8", size = 1039511, upload-time = "2025-06-11T16:48:58.525Z" }, + { url = "https://files.pythonhosted.org/packages/b0/8f/13650cfe25762b51175c677330e6471d5d2c5851a6fbd6df77f0681bb34e/clarabel-0.11.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:8963687ee250d27310d139eea5a6816f9c3ae31f33691b56579ca4f0f0b64b63", size = 935135, upload-time = "2025-06-11T16:48:59.901Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9e/7af10d2b540b39f1a05d1ebba604fce933cc9bc0e65e88ec3b7a84976425/clarabel-0.11.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4837b9d0db01e98239f04b1e3526a6cf568529d3c19a8b3f591befdc467f9bb", size = 1079226, upload-time = "2025-06-11T16:49:00.987Z" }, + { url = "https://files.pythonhosted.org/packages/6b/a9/c76edf781ca3283186ff4b54a9a4fb51367fd04313a68e2b09f062407439/clarabel-0.11.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8c41aaa6f3f8c0f3bd9d86c3e568dcaee079562c075bd2ec9fb3a80287380ef", size = 1164345, upload-time = "2025-06-11T16:49:02.675Z" }, + { url = "https://files.pythonhosted.org/packages/41/e6/4eee3062088c221e5a18b054e51c69f616e0bb0dc1b0a1a5e0fe90dfa18e/clarabel-0.11.1-cp39-abi3-win_amd64.whl", hash = "sha256:557d5148a4377ae1980b65d00605ae870a8f34f95f0f6a41e04aa6d3edf67148", size = 887310, upload-time = "2025-06-11T16:49:04.277Z" }, +] + +[[package]] +name = "click" +version = "8.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, +] + +[[package]] +name = "cloudpickle" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/51/913ecca3970a2227cf4d5e8937df52cc28f465ac442216110b8e3323262d/cloudpickle-2.2.1.tar.gz", hash = "sha256:d89684b8de9e34a2a43b3460fbca07d09d6e25ce858df4d5a44240403b6178f5", size = 60800, upload-time = "2023-01-19T09:27:28.318Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/80/44286939ca215e88fa827b2aeb6fa3fd2b4a7af322485c7170d6f9fd96e0/cloudpickle-2.2.1-py3-none-any.whl", hash = "sha256:61f594d1f4c295fa5cd9014ceb3a1fc4a70b0de1164b94fbc2d854ccba056f9f", size = 25944, upload-time = "2023-01-19T09:27:26.341Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "comm" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/13/7d740c5849255756bc17888787313b61fd38a0a8304fc4f073dfc46122aa/comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971", size = 6319, upload-time = "2025-07-25T14:02:04.452Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload-time = "2025-07-25T14:02:02.896Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/35/0167aad910bbdb9599272bd96d01a9ec6852f36b9455cf2ca67bd4cc2d23/contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5", size = 293257, upload-time = "2025-07-26T12:01:39.367Z" }, + { url = "https://files.pythonhosted.org/packages/96/e4/7adcd9c8362745b2210728f209bfbcf7d91ba868a2c5f40d8b58f54c509b/contourpy-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1", size = 274034, upload-time = "2025-07-26T12:01:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/73/23/90e31ceeed1de63058a02cb04b12f2de4b40e3bef5e082a7c18d9c8ae281/contourpy-1.3.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286", size = 334672, upload-time = "2025-07-26T12:01:41.942Z" }, + { url = "https://files.pythonhosted.org/packages/ed/93/b43d8acbe67392e659e1d984700e79eb67e2acb2bd7f62012b583a7f1b55/contourpy-1.3.3-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5", size = 381234, upload-time = "2025-07-26T12:01:43.499Z" }, + { url = "https://files.pythonhosted.org/packages/46/3b/bec82a3ea06f66711520f75a40c8fc0b113b2a75edb36aa633eb11c4f50f/contourpy-1.3.3-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67", size = 385169, upload-time = "2025-07-26T12:01:45.219Z" }, + { url = "https://files.pythonhosted.org/packages/4b/32/e0f13a1c5b0f8572d0ec6ae2f6c677b7991fafd95da523159c19eff0696a/contourpy-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9", size = 362859, upload-time = "2025-07-26T12:01:46.519Z" }, + { url = "https://files.pythonhosted.org/packages/33/71/e2a7945b7de4e58af42d708a219f3b2f4cff7386e6b6ab0a0fa0033c49a9/contourpy-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659", size = 1332062, upload-time = "2025-07-26T12:01:48.964Z" }, + { url = "https://files.pythonhosted.org/packages/12/fc/4e87ac754220ccc0e807284f88e943d6d43b43843614f0a8afa469801db0/contourpy-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7", size = 1403932, upload-time = "2025-07-26T12:01:51.979Z" }, + { url = "https://files.pythonhosted.org/packages/a6/2e/adc197a37443f934594112222ac1aa7dc9a98faf9c3842884df9a9d8751d/contourpy-1.3.3-cp313-cp313-win32.whl", hash = "sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d", size = 185024, upload-time = "2025-07-26T12:01:53.245Z" }, + { url = "https://files.pythonhosted.org/packages/18/0b/0098c214843213759692cc638fce7de5c289200a830e5035d1791d7a2338/contourpy-1.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263", size = 226578, upload-time = "2025-07-26T12:01:54.422Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9a/2f6024a0c5995243cd63afdeb3651c984f0d2bc727fd98066d40e141ad73/contourpy-1.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9", size = 193524, upload-time = "2025-07-26T12:01:55.73Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b3/f8a1a86bd3298513f500e5b1f5fd92b69896449f6cab6a146a5d52715479/contourpy-1.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d", size = 306730, upload-time = "2025-07-26T12:01:57.051Z" }, + { url = "https://files.pythonhosted.org/packages/3f/11/4780db94ae62fc0c2053909b65dc3246bd7cecfc4f8a20d957ad43aa4ad8/contourpy-1.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216", size = 287897, upload-time = "2025-07-26T12:01:58.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/15/e59f5f3ffdd6f3d4daa3e47114c53daabcb18574a26c21f03dc9e4e42ff0/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae", size = 326751, upload-time = "2025-07-26T12:02:00.343Z" }, + { url = "https://files.pythonhosted.org/packages/0f/81/03b45cfad088e4770b1dcf72ea78d3802d04200009fb364d18a493857210/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20", size = 375486, upload-time = "2025-07-26T12:02:02.128Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ba/49923366492ffbdd4486e970d421b289a670ae8cf539c1ea9a09822b371a/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99", size = 388106, upload-time = "2025-07-26T12:02:03.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/52/5b00ea89525f8f143651f9f03a0df371d3cbd2fccd21ca9b768c7a6500c2/contourpy-1.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b", size = 352548, upload-time = "2025-07-26T12:02:05.165Z" }, + { url = "https://files.pythonhosted.org/packages/32/1d/a209ec1a3a3452d490f6b14dd92e72280c99ae3d1e73da74f8277d4ee08f/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a", size = 1322297, upload-time = "2025-07-26T12:02:07.379Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9e/46f0e8ebdd884ca0e8877e46a3f4e633f6c9c8c4f3f6e72be3fe075994aa/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e", size = 1391023, upload-time = "2025-07-26T12:02:10.171Z" }, + { url = "https://files.pythonhosted.org/packages/b9/70/f308384a3ae9cd2209e0849f33c913f658d3326900d0ff5d378d6a1422d2/contourpy-1.3.3-cp313-cp313t-win32.whl", hash = "sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3", size = 196157, upload-time = "2025-07-26T12:02:11.488Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/880f890a6663b84d9e34a6f88cded89d78f0091e0045a284427cb6b18521/contourpy-1.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8", size = 240570, upload-time = "2025-07-26T12:02:12.754Z" }, + { url = "https://files.pythonhosted.org/packages/80/99/2adc7d8ffead633234817ef8e9a87115c8a11927a94478f6bb3d3f4d4f7d/contourpy-1.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301", size = 199713, upload-time = "2025-07-26T12:02:14.4Z" }, + { url = "https://files.pythonhosted.org/packages/72/8b/4546f3ab60f78c514ffb7d01a0bd743f90de36f0019d1be84d0a708a580a/contourpy-1.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a", size = 292189, upload-time = "2025-07-26T12:02:16.095Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e1/3542a9cb596cadd76fcef413f19c79216e002623158befe6daa03dbfa88c/contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77", size = 273251, upload-time = "2025-07-26T12:02:17.524Z" }, + { url = "https://files.pythonhosted.org/packages/b1/71/f93e1e9471d189f79d0ce2497007731c1e6bf9ef6d1d61b911430c3db4e5/contourpy-1.3.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5", size = 335810, upload-time = "2025-07-26T12:02:18.9Z" }, + { url = "https://files.pythonhosted.org/packages/91/f9/e35f4c1c93f9275d4e38681a80506b5510e9327350c51f8d4a5a724d178c/contourpy-1.3.3-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4", size = 382871, upload-time = "2025-07-26T12:02:20.418Z" }, + { url = "https://files.pythonhosted.org/packages/b5/71/47b512f936f66a0a900d81c396a7e60d73419868fba959c61efed7a8ab46/contourpy-1.3.3-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36", size = 386264, upload-time = "2025-07-26T12:02:21.916Z" }, + { url = "https://files.pythonhosted.org/packages/04/5f/9ff93450ba96b09c7c2b3f81c94de31c89f92292f1380261bd7195bea4ea/contourpy-1.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3", size = 363819, upload-time = "2025-07-26T12:02:23.759Z" }, + { url = "https://files.pythonhosted.org/packages/3e/a6/0b185d4cc480ee494945cde102cb0149ae830b5fa17bf855b95f2e70ad13/contourpy-1.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b", size = 1333650, upload-time = "2025-07-26T12:02:26.181Z" }, + { url = "https://files.pythonhosted.org/packages/43/d7/afdc95580ca56f30fbcd3060250f66cedbde69b4547028863abd8aa3b47e/contourpy-1.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36", size = 1404833, upload-time = "2025-07-26T12:02:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e2/366af18a6d386f41132a48f033cbd2102e9b0cf6345d35ff0826cd984566/contourpy-1.3.3-cp314-cp314-win32.whl", hash = "sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d", size = 189692, upload-time = "2025-07-26T12:02:30.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/c2/57f54b03d0f22d4044b8afb9ca0e184f8b1afd57b4f735c2fa70883dc601/contourpy-1.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd", size = 232424, upload-time = "2025-07-26T12:02:31.395Z" }, + { url = "https://files.pythonhosted.org/packages/18/79/a9416650df9b525737ab521aa181ccc42d56016d2123ddcb7b58e926a42c/contourpy-1.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339", size = 198300, upload-time = "2025-07-26T12:02:32.956Z" }, + { url = "https://files.pythonhosted.org/packages/1f/42/38c159a7d0f2b7b9c04c64ab317042bb6952b713ba875c1681529a2932fe/contourpy-1.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772", size = 306769, upload-time = "2025-07-26T12:02:34.2Z" }, + { url = "https://files.pythonhosted.org/packages/c3/6c/26a8205f24bca10974e77460de68d3d7c63e282e23782f1239f226fcae6f/contourpy-1.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77", size = 287892, upload-time = "2025-07-26T12:02:35.807Z" }, + { url = "https://files.pythonhosted.org/packages/66/06/8a475c8ab718ebfd7925661747dbb3c3ee9c82ac834ccb3570be49d129f4/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13", size = 326748, upload-time = "2025-07-26T12:02:37.193Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a3/c5ca9f010a44c223f098fccd8b158bb1cb287378a31ac141f04730dc49be/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe", size = 375554, upload-time = "2025-07-26T12:02:38.894Z" }, + { url = "https://files.pythonhosted.org/packages/80/5b/68bd33ae63fac658a4145088c1e894405e07584a316738710b636c6d0333/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f", size = 388118, upload-time = "2025-07-26T12:02:40.642Z" }, + { url = "https://files.pythonhosted.org/packages/40/52/4c285a6435940ae25d7410a6c36bda5145839bc3f0beb20c707cda18b9d2/contourpy-1.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0", size = 352555, upload-time = "2025-07-26T12:02:42.25Z" }, + { url = "https://files.pythonhosted.org/packages/24/ee/3e81e1dd174f5c7fefe50e85d0892de05ca4e26ef1c9a59c2a57e43b865a/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4", size = 1322295, upload-time = "2025-07-26T12:02:44.668Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/6d913d4d04e14379de429057cd169e5e00f6c2af3bb13e1710bcbdb5da12/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f", size = 1391027, upload-time = "2025-07-26T12:02:47.09Z" }, + { url = "https://files.pythonhosted.org/packages/93/8a/68a4ec5c55a2971213d29a9374913f7e9f18581945a7a31d1a39b5d2dfe5/contourpy-1.3.3-cp314-cp314t-win32.whl", hash = "sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae", size = 202428, upload-time = "2025-07-26T12:02:48.691Z" }, + { url = "https://files.pythonhosted.org/packages/fa/96/fd9f641ffedc4fa3ace923af73b9d07e869496c9cc7a459103e6e978992f/contourpy-1.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc", size = 250331, upload-time = "2025-07-26T12:02:50.137Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8c/469afb6465b853afff216f9528ffda78a915ff880ed58813ba4faf4ba0b6/contourpy-1.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b", size = 203831, upload-time = "2025-07-26T12:02:51.449Z" }, +] + +[[package]] +name = "cotengra" +version = "0.7.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "autoray" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f2/42/041a65c3a12646156ae584a474a7843da977e51453403365aec9ec54bc7c/cotengra-0.7.5.tar.gz", hash = "sha256:f3cee6c0cd29fd239a1e9868c3b719c574cc56204dbf7e658ba10f3fd93dce98", size = 2830534, upload-time = "2025-06-12T23:53:13.954Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/0e/5356269a34f7860fb506b6690e74f4d0062e0e50bf6345fb5405e294b1ec/cotengra-0.7.5-py3-none-any.whl", hash = "sha256:0d269883ee87e4a08ce6c91ca38aafbd3d56e177a3b3b54d61e3fe314fe67e8b", size = 195379, upload-time = "2025-06-12T23:53:11.971Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "cython" +version = "3.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/36/cce2972e13e83ffe58bc73bfd9d37340b5e5113e8243841a57511c7ae1c2/cython-3.2.1.tar.gz", hash = "sha256:2be1e4d0cbdf7f4cd4d9b8284a034e1989b59fd060f6bd4d24bf3729394d2ed8", size = 3270455, upload-time = "2025-11-12T19:02:59.847Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/28/c6e36c214baeb27ae45b518552e74457536c7c964b1a55b5900b047fa467/cython-3.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b4e850fc7a2f72d19679dd083fe4d20bf66860fceabb4f3207112f240249d708", size = 2957307, upload-time = "2025-11-12T19:03:32.471Z" }, + { url = "https://files.pythonhosted.org/packages/c8/c8/b0b9ba64f81f2875c42aab5c0979d6454cd1ac6b3c1e2373ad552701565d/cython-3.2.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3d20ca4afe993f7dccad3aeddbf4c3536cb0fd3ad6dc7a225935a666a5655af2", size = 3210919, upload-time = "2025-11-12T19:03:34.274Z" }, + { url = "https://files.pythonhosted.org/packages/f9/33/5d9ca6abba0e77e1851b843dd1b3c4095fbc6373166935e83c4414f80e88/cython-3.2.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f5a54a757d01ca6a260b02ce5baf17d9db1c2253566ab5844ee4966ff2a69c19", size = 3373350, upload-time = "2025-11-12T19:03:35.927Z" }, + { url = "https://files.pythonhosted.org/packages/e4/29/4408c3486ff380a2d6ae0d4b71da5195efcef3c4360017113ee7d1cb7335/cython-3.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:1b81e56584727a328e00d91c164f8f0f2c59b02bf6857c3f000cd830fa571453", size = 2753425, upload-time = "2025-11-12T19:03:38.157Z" }, + { url = "https://files.pythonhosted.org/packages/f0/32/c1aa03ccadda89487ff31b90d8651c3706ce2744bf4f2c2ae213147e89bd/cython-3.2.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d7af6ad01c0fe1965d1d3badaeb6df53c1f37383ebae1ccb405b73f628f87713", size = 2967833, upload-time = "2025-11-12T19:03:40.233Z" }, + { url = "https://files.pythonhosted.org/packages/ff/dc/3488d3ade0635408a2ebb05561a3009e2f54616bfefd1f107088dfeb2c4c/cython-3.2.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e3ea7cd085b62acb67c0fbde5cd17a7d9e47992c965e81ec977cf9ea7c59cd65", size = 3256237, upload-time = "2025-11-12T19:03:42.005Z" }, + { url = "https://files.pythonhosted.org/packages/7b/ba/f3d35d3803c9a424fa8812893847114deb9e2440c1bc67a31ab9ec4b9355/cython-3.2.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:986aea38fdf231e78d73745f83271c5654852c822dc5141a1d3fba64429a6aa6", size = 3383100, upload-time = "2025-11-12T19:03:43.675Z" }, + { url = "https://files.pythonhosted.org/packages/86/dc/d72dbb2f8e7ca95d2d18fd86f32b2e385996576230e7ecddd7d250786825/cython-3.2.1-cp314-cp314-win_amd64.whl", hash = "sha256:4960e26cd34c1385f21646339f2e0361fcdd2ed3c01cdb50fe734add577ec56a", size = 2790322, upload-time = "2025-11-12T19:03:45.373Z" }, + { url = "https://files.pythonhosted.org/packages/5a/7e/1194f4ba98b981bbdca945a292e4f49e87ea09d69516b24445409e7cf611/cython-3.2.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:4e9167316bf6ecfea33dcca62f074605648fb93cc053ef46b5deb3e5d12fc0d3", size = 2872858, upload-time = "2025-11-12T19:03:55.074Z" }, + { url = "https://files.pythonhosted.org/packages/6b/1a/393ca8ffec7ad3f02b8e4bffaba3dba4fb62c4a1c4c0b6dbf3b80e709fe3/cython-3.2.1-cp39-abi3-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3095df6cd470064742f428c937bed7200c5123b9e19ee04aa09ec61281e565a3", size = 3209664, upload-time = "2025-11-12T19:03:56.771Z" }, + { url = "https://files.pythonhosted.org/packages/37/57/f209f64c609d3d8fac60a572e56da2f621dc1789e399c58db61d5645a31f/cython-3.2.1-cp39-abi3-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:db3f53b2d9afb206075a2605f1150aa019f0733c7795a38eccc6119c2e9c3f7b", size = 2854607, upload-time = "2025-11-12T19:03:59.413Z" }, + { url = "https://files.pythonhosted.org/packages/fc/af/1e5c73fe52423f40776130b0be914fd9f9f8dc26c4f6ea4c2ed04772d558/cython-3.2.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0fc5e7687ac8f8e2b2fb95648f43e9e074ebaa72fd5cb3d8e20e5f1e8b8e02d9", size = 2991567, upload-time = "2025-11-12T19:04:02.209Z" }, + { url = "https://files.pythonhosted.org/packages/39/2c/3ea175b6b1fdfb429f9e9c395240d894155b3c0615caced05fef43264cba/cython-3.2.1-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:bbb3bc152bc0de82b031c8d355418fa4890a92424209d59366c2c0bc9e6cf53c", size = 2889178, upload-time = "2025-11-12T19:04:05.272Z" }, + { url = "https://files.pythonhosted.org/packages/f1/88/b2ab22a3a3feac78c62354a823c5c0c33659909e9918f53aa05904532b4b/cython-3.2.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:a2022bc48ad0c2c0e0485bf0b54902913a3d81086b7d435f4437620c667799f6", size = 3223755, upload-time = "2025-11-12T19:04:07.262Z" }, + { url = "https://files.pythonhosted.org/packages/0b/56/9ba58629a03cbffb5965a3c65ccd91fa683d95d588c21a875da72fdc249b/cython-3.2.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:99fdd4ffc2dcb513f4be9ce71c6fedd895b96b1f814655b6bbab196df497b090", size = 3113456, upload-time = "2025-11-12T19:04:09.175Z" }, + { url = "https://files.pythonhosted.org/packages/56/5b/148c1a7ea5aebe460a70cad716a77e5fd0205be2de9fc5250491eb13ad8c/cython-3.2.1-cp39-abi3-win32.whl", hash = "sha256:06071f85bd5ce040464d43b2f9f287742a79f905e81b709fe904567230f1ed51", size = 2434223, upload-time = "2025-11-12T19:04:11.294Z" }, + { url = "https://files.pythonhosted.org/packages/7a/54/bb9b0c9db2a92a5e93747ca3027cfc645741411f8f1c6af2fb2a7b82df5d/cython-3.2.1-cp39-abi3-win_arm64.whl", hash = "sha256:e87c131d59480aee1ebac622b64f287c0e1d665ad1a1b7d498ac48accdb36c6b", size = 2439268, upload-time = "2025-11-12T19:04:12.931Z" }, + { url = "https://files.pythonhosted.org/packages/aa/30/373775b8d933d781d055c1dd0f110f275a101f320dab724c8c63a7c1b945/cython-3.2.1-py3-none-any.whl", hash = "sha256:cd72c46e7bffe8250c52d400e72c8d5d3086437b6aeec5b0eca99ccd337f5834", size = 1254219, upload-time = "2025-11-12T19:02:56.14Z" }, +] + +[[package]] +name = "cytoolz" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "toolz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/d4/16916f3dc20a3f5455b63c35dcb260b3716f59ce27a93586804e70e431d5/cytoolz-1.1.0.tar.gz", hash = "sha256:13a7bf254c3c0d28b12e2290b82aed0f0977a4c2a2bf84854fcdc7796a29f3b0", size = 642510, upload-time = "2025-10-19T00:44:56.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/4a/b3ddb3ee44fe0045e95dd973746f93f033b6f92cce1fc3cbbe24b329943c/cytoolz-1.1.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:76c9b58555300be6dde87a41faf1f97966d79b9a678b7a526fcff75d28ef4945", size = 976728, upload-time = "2025-10-19T00:41:26.5Z" }, + { url = "https://files.pythonhosted.org/packages/42/21/a3681434aa425875dd828bb515924b0f12c37a55c7d2bc5c0c5de3aeb0b4/cytoolz-1.1.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:d1d638b10d3144795655e9395566ce35807df09219fd7cacd9e6acbdef67946a", size = 986057, upload-time = "2025-10-19T00:41:28.911Z" }, + { url = "https://files.pythonhosted.org/packages/d9/cb/efc1b29e211e0670a6953222afaac84dcbba5cb940b130c0e49858978040/cytoolz-1.1.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:26801c1a165e84786a99e03c9c9973356caaca002d66727b761fb1042878ef06", size = 992632, upload-time = "2025-10-19T00:41:30.612Z" }, + { url = "https://files.pythonhosted.org/packages/be/b0/e50621d21e939338c97faab651f58ea7fa32101226a91de79ecfb89d71e1/cytoolz-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2a9a464542912d3272f6dccc5142df057c71c6a5cbd30439389a732df401afb7", size = 1317534, upload-time = "2025-10-19T00:41:32.625Z" }, + { url = "https://files.pythonhosted.org/packages/0d/6b/25aa9739b0235a5bc4c1ea293186bc6822a4c6607acfe1422423287e7400/cytoolz-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ed6104fa942aa5784bf54f339563de637557e3443b105760bc4de8f16a7fc79b", size = 992336, upload-time = "2025-10-19T00:41:34.073Z" }, + { url = "https://files.pythonhosted.org/packages/e1/53/5f4deb0ff958805309d135d899c764364c1e8a632ce4994bd7c45fb98df2/cytoolz-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:56161f0ab60dc4159ec343509abaf809dc88e85c7e420e354442c62e3e7cbb77", size = 986118, upload-time = "2025-10-19T00:41:35.7Z" }, + { url = "https://files.pythonhosted.org/packages/1c/e3/f6255b76c8cc0debbe1c0779130777dc0434da6d9b28a90d9f76f8cb67cd/cytoolz-1.1.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:832bd36cc9123535f1945acf6921f8a2a15acc19cfe4065b1c9b985a28671886", size = 2679563, upload-time = "2025-10-19T00:41:37.926Z" }, + { url = "https://files.pythonhosted.org/packages/59/8a/acc6e39a84e930522b965586ad3a36694f9bf247b23188ee0eb47b1c9ed1/cytoolz-1.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1842636b6e034f229bf084c2bcdcfd36c8437e752eefd2c74ce9e2f10415cb6e", size = 2813020, upload-time = "2025-10-19T00:41:39.935Z" }, + { url = "https://files.pythonhosted.org/packages/db/f5/0083608286ad1716eda7c41f868e85ac549f6fd6b7646993109fa0bdfd98/cytoolz-1.1.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:823df012ab90d2f2a0f92fea453528539bf71ac1879e518524cd0c86aa6df7b9", size = 2669312, upload-time = "2025-10-19T00:41:41.55Z" }, + { url = "https://files.pythonhosted.org/packages/47/a8/d16080b575520fe5da00cede1ece4e0a4180ec23f88dcdc6a2f5a90a7f7f/cytoolz-1.1.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2f1fcf9e7e7b3487883ff3f815abc35b89dcc45c4cf81c72b7ee457aa72d197b", size = 2922147, upload-time = "2025-10-19T00:41:43.252Z" }, + { url = "https://files.pythonhosted.org/packages/7e/bc/716c9c1243701e58cad511eb3937fd550e645293c5ed1907639c5d66f194/cytoolz-1.1.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4cdb3fa1772116827f263f25b0cdd44c663b6701346a56411960534a06c082de", size = 2981602, upload-time = "2025-10-19T00:41:45.354Z" }, + { url = "https://files.pythonhosted.org/packages/14/bc/571b232996846b27f4ac0c957dc8bf60261e9b4d0d01c8d955e82329544e/cytoolz-1.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d1b5c95041741b81430454db65183e133976f45ac3c03454cfa8147952568529", size = 2830103, upload-time = "2025-10-19T00:41:47.959Z" }, + { url = "https://files.pythonhosted.org/packages/5b/55/c594afb46ecd78e4b7e1fb92c947ed041807875661ceda73baaf61baba4f/cytoolz-1.1.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b2079fd9f1a65f4c61e6278c8a6d4f85edf30c606df8d5b32f1add88cbbe2286", size = 2533802, upload-time = "2025-10-19T00:41:49.683Z" }, + { url = "https://files.pythonhosted.org/packages/93/83/1edcf95832555a78fc43b975f3ebe8ceadcc9664dd47fd33747a14df5069/cytoolz-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a92a320d72bef1c7e2d4c6d875125cf57fc38be45feb3fac1bfa64ea401f54a4", size = 2706071, upload-time = "2025-10-19T00:41:51.386Z" }, + { url = "https://files.pythonhosted.org/packages/e2/df/035a408df87f25cfe3611557818b250126cd2281b2104cd88395de205583/cytoolz-1.1.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:06d1c79aa51e6a92a90b0e456ebce2288f03dd6a76c7f582bfaa3eda7692e8a5", size = 2707575, upload-time = "2025-10-19T00:41:53.305Z" }, + { url = "https://files.pythonhosted.org/packages/7a/a4/ef78e13e16e93bf695a9331321d75fbc834a088d941f1c19e6b63314e257/cytoolz-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e1d7be25f6971e986a52b6d3a0da28e1941850985417c35528f6823aef2cfec5", size = 2660486, upload-time = "2025-10-19T00:41:55.542Z" }, + { url = "https://files.pythonhosted.org/packages/30/7a/2c3d60682b26058d435416c4e90d4a94db854de5be944dfd069ed1be648a/cytoolz-1.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:964b248edc31efc50a65e9eaa0c845718503823439d2fa5f8d2c7e974c2b5409", size = 2819605, upload-time = "2025-10-19T00:41:58.257Z" }, + { url = "https://files.pythonhosted.org/packages/45/92/19b722a1d83cc443fbc0c16e0dc376f8a451437890d3d9ee370358cf0709/cytoolz-1.1.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c9ff2b3c57c79b65cb5be14a18c6fd4a06d5036fb3f33e973a9f70e9ac13ca28", size = 2533559, upload-time = "2025-10-19T00:42:00.324Z" }, + { url = "https://files.pythonhosted.org/packages/1d/15/fa3b7891da51115204416f14192081d3dea0eaee091f123fdc1347de8dd1/cytoolz-1.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:22290b73086af600042d99f5ce52a43d4ad9872c382610413176e19fc1d4fd2d", size = 2839171, upload-time = "2025-10-19T00:42:01.881Z" }, + { url = "https://files.pythonhosted.org/packages/46/40/d3519d5cd86eebebf1e8b7174ec32dfb6ecec67b48b0cfb92bf226659b5a/cytoolz-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a2ade74fccd080ea793382968913ee38d7a35c921df435bbf0a6aeecf0d17574", size = 2743379, upload-time = "2025-10-19T00:42:03.809Z" }, + { url = "https://files.pythonhosted.org/packages/93/e2/a9e7511f0a13fdbefa5bf73cf8e4763878140de9453fd3e50d6ac57b6be7/cytoolz-1.1.0-cp313-cp313-win32.whl", hash = "sha256:db5dbcfda1c00e937426cbf9bdc63c24ebbc358c3263bfcbc1ab4a88dc52aa8e", size = 900844, upload-time = "2025-10-19T00:42:05.967Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a4/fb7eb403c6a4c81e5a30363f34a71adcc8bf5292dc8ea32e2440aa5668f2/cytoolz-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:9e2d3fe3b45c3eb7233746f7aca37789be3dceec3e07dcc406d3e045ea0f7bdc", size = 946461, upload-time = "2025-10-19T00:42:07.983Z" }, + { url = "https://files.pythonhosted.org/packages/93/bb/1c8c33d353548d240bc6e8677ee8c3560ce5fa2f084e928facf7c35a6dcf/cytoolz-1.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:32c559f95ff44a9ebcbd934acaa1e6dc8f3e6ffce4762a79a88528064873d6d5", size = 902673, upload-time = "2025-10-19T00:42:09.982Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ba/4a53acc60f59030fcaf48c7766e3c4c81bd997379425aa45b129396557b5/cytoolz-1.1.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:9e2cd93b28f667c5870a070ab2b8bb4397470a85c4b204f2454b0ad001cd1ca3", size = 1372336, upload-time = "2025-10-19T00:42:12.104Z" }, + { url = "https://files.pythonhosted.org/packages/ac/90/f28fd8ad8319d8f5c8da69a2c29b8cf52a6d2c0161602d92b366d58926ab/cytoolz-1.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f494124e141a9361f31d79875fe7ea459a3be2b9dadd90480427c0c52a0943d4", size = 1011930, upload-time = "2025-10-19T00:42:14.231Z" }, + { url = "https://files.pythonhosted.org/packages/c9/95/4561c4e0ad1c944f7673d6d916405d68080f10552cfc5d69a1cf2475a9a1/cytoolz-1.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:53a3262bf221f19437ed544bf8c0e1980c81ac8e2a53d87a9bc075dba943d36f", size = 1020610, upload-time = "2025-10-19T00:42:15.877Z" }, + { url = "https://files.pythonhosted.org/packages/c3/14/b2e1ffa4995ec36e1372e243411ff36325e4e6d7ffa34eb4098f5357d176/cytoolz-1.1.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:47663e57d3f3f124921f38055e86a1022d0844c444ede2e8f090d3bbf80deb65", size = 2917327, upload-time = "2025-10-19T00:42:17.706Z" }, + { url = "https://files.pythonhosted.org/packages/4a/29/7cab6c609b4514ac84cca2f7dca6c509977a8fc16d27c3a50e97f105fa6a/cytoolz-1.1.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a5a8755c4104ee4e3d5ba434c543b5f85fdee6a1f1df33d93f518294da793a60", size = 3108951, upload-time = "2025-10-19T00:42:19.363Z" }, + { url = "https://files.pythonhosted.org/packages/9a/71/1d1103b819458679277206ad07d78ca6b31c4bb88d6463fd193e19bfb270/cytoolz-1.1.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4d96ff3d381423af1b105295f97de86d1db51732c9566eb37378bab6670c5010", size = 2807149, upload-time = "2025-10-19T00:42:20.964Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d4/3d83a05a21e7d2ed2b9e6daf489999c29934b005de9190272b8a2e3735d0/cytoolz-1.1.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0ec96b3d537cdf47d4e76ded199f7440715f4c71029b45445cff92c1248808c2", size = 3111608, upload-time = "2025-10-19T00:42:22.684Z" }, + { url = "https://files.pythonhosted.org/packages/51/88/96f68354c3d4af68de41f0db4fe41a23b96a50a4a416636cea325490cfeb/cytoolz-1.1.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:208e2f2ef90a32b0acbff3303d90d89b13570a228d491d2e622a7883a3c68148", size = 3179373, upload-time = "2025-10-19T00:42:24.395Z" }, + { url = "https://files.pythonhosted.org/packages/ce/50/ed87a5cd8e6f27ffbb64c39e9730e18ec66c37631db2888ae711909f10c9/cytoolz-1.1.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0d416a81bb0bd517558668e49d30a7475b5445f9bbafaab7dcf066f1e9adba36", size = 3003120, upload-time = "2025-10-19T00:42:26.18Z" }, + { url = "https://files.pythonhosted.org/packages/d3/a7/acde155b050d6eaa8e9c7845c98fc5fb28501568e78e83ebbf44f8855274/cytoolz-1.1.0-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f32e94c91ffe49af04835ee713ebd8e005c85ebe83e7e1fdcc00f27164c2d636", size = 2703225, upload-time = "2025-10-19T00:42:27.93Z" }, + { url = "https://files.pythonhosted.org/packages/1b/b6/9d518597c5bdea626b61101e8d2ff94124787a42259dafd9f5fc396f346a/cytoolz-1.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15d0c6405efc040499c46df44056a5c382f551a7624a41cf3e4c84a96b988a15", size = 2956033, upload-time = "2025-10-19T00:42:29.993Z" }, + { url = "https://files.pythonhosted.org/packages/89/7a/93e5f860926165538c85e1c5e1670ad3424f158df810f8ccd269da652138/cytoolz-1.1.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:bf069c5381d757debae891401b88b3a346ba3a28ca45ba9251103b282463fad8", size = 2862950, upload-time = "2025-10-19T00:42:31.803Z" }, + { url = "https://files.pythonhosted.org/packages/76/e6/99d6af00487bedc27597b54c9fcbfd5c833a69c6b7a9b9f0fff777bfc7aa/cytoolz-1.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7d5cf15892e63411ec1bd67deff0e84317d974e6ab2cdfefdd4a7cea2989df66", size = 2861757, upload-time = "2025-10-19T00:42:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/71/ca/adfa1fb7949478135a37755cb8e88c20cd6b75c22a05f1128f05f3ab2c60/cytoolz-1.1.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:3e3872c21170f8341656f8692f8939e8800dcee6549ad2474d4c817bdefd62cd", size = 2979049, upload-time = "2025-10-19T00:42:35.377Z" }, + { url = "https://files.pythonhosted.org/packages/70/4c/7bf47a03a4497d500bc73d4204e2d907771a017fa4457741b2a1d7c09319/cytoolz-1.1.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:b9ddeff8e8fd65eb1fcefa61018100b2b627e759ea6ad275d2e2a93ffac147bf", size = 2699492, upload-time = "2025-10-19T00:42:37.133Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e7/3d034b0e4817314f07aa465d5864e9b8df9d25cb260a53dd84583e491558/cytoolz-1.1.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:02feeeda93e1fa3b33414eb57c2b0aefd1db8f558dd33fdfcce664a0f86056e4", size = 2995646, upload-time = "2025-10-19T00:42:38.912Z" }, + { url = "https://files.pythonhosted.org/packages/c1/62/be357181c71648d9fe1d1ce91cd42c63457dcf3c158e144416fd51dced83/cytoolz-1.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d08154ad45349162b6c37f12d5d1b2e6eef338e657b85e1621e4e6a4a69d64cb", size = 2919481, upload-time = "2025-10-19T00:42:40.85Z" }, + { url = "https://files.pythonhosted.org/packages/62/d5/bf5434fde726c4f80cb99912b2d8e0afa1587557e2a2d7e0315eb942f2de/cytoolz-1.1.0-cp313-cp313t-win32.whl", hash = "sha256:10ae4718a056948d73ca3e1bb9ab1f95f897ec1e362f829b9d37cc29ab566c60", size = 951595, upload-time = "2025-10-19T00:42:42.877Z" }, + { url = "https://files.pythonhosted.org/packages/64/29/39c161e9204a9715321ddea698cbd0abc317e78522c7c642363c20589e71/cytoolz-1.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:1bb77bc6197e5cb19784b6a42bb0f8427e81737a630d9d7dda62ed31733f9e6c", size = 1004445, upload-time = "2025-10-19T00:42:44.855Z" }, + { url = "https://files.pythonhosted.org/packages/e2/5a/7cbff5e9a689f558cb0bdf277f9562b2ac51acf7cd15e055b8c3efb0e1ef/cytoolz-1.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:563dda652c6ff52d215704fbe6b491879b78d7bbbb3a9524ec8e763483cb459f", size = 926207, upload-time = "2025-10-19T00:42:46.456Z" }, + { url = "https://files.pythonhosted.org/packages/b7/e8/297a85ba700f437c01eba962428e6ab4572f6c3e68e8ff442ce5c9d3a496/cytoolz-1.1.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:d542cee7c7882d2a914a33dec4d3600416fb336734df979473249d4c53d207a1", size = 980613, upload-time = "2025-10-19T00:42:47.988Z" }, + { url = "https://files.pythonhosted.org/packages/e8/d7/2b02c9d18e9cc263a0e22690f78080809f1eafe72f26b29ccc115d3bf5c8/cytoolz-1.1.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:31922849b701b0f24bb62e56eb2488dcd3aa6ae3057694bd6b3b7c4c2bc27c2f", size = 990476, upload-time = "2025-10-19T00:42:49.653Z" }, + { url = "https://files.pythonhosted.org/packages/89/26/b6b159d2929310fca0eff8a4989cd4b1ecbdf7c46fdff46c7a20fcae55c8/cytoolz-1.1.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:e68308d32afd31943314735c1335e4ab5696110e96b405f6bdb8f2a8dc771a16", size = 992712, upload-time = "2025-10-19T00:42:51.306Z" }, + { url = "https://files.pythonhosted.org/packages/42/a0/f7c572aa151ed466b0fce4a327c3cc916d3ef3c82e341be59ea4b9bee9e4/cytoolz-1.1.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fc4bb48b3b866e1867f7c6411a4229e5b44be3989060663713e10efc24c9bd5f", size = 1322596, upload-time = "2025-10-19T00:42:52.978Z" }, + { url = "https://files.pythonhosted.org/packages/72/7c/a55d035e20b77b6725e85c8f1a418b3a4c23967288b8b0c2d1a40f158cbe/cytoolz-1.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:456f77207d1445025d7ef262b8370a05492dcb1490cb428b0f3bf1bd744a89b0", size = 992825, upload-time = "2025-10-19T00:42:55.026Z" }, + { url = "https://files.pythonhosted.org/packages/03/af/39d2d3db322136e12e9336a1f13bab51eab88b386bfb11f91d3faff8ba34/cytoolz-1.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:174ebc71ebb20a9baeffce6ee07ee2cd913754325c93f99d767380d8317930f7", size = 990525, upload-time = "2025-10-19T00:42:56.666Z" }, + { url = "https://files.pythonhosted.org/packages/a6/bd/65d7a869d307f9b10ad45c2c1cbb40b81a8d0ed1138fa17fd904f5c83298/cytoolz-1.1.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8b3604fef602bcd53415055a4f68468339192fd17be39e687ae24f476d23d56e", size = 2672409, upload-time = "2025-10-19T00:42:58.81Z" }, + { url = "https://files.pythonhosted.org/packages/2d/fb/74dfd844bfd67e810bd36e8e3903a143035447245828e7fcd7c81351d775/cytoolz-1.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3604b959a01f64c366e7d10ec7634d5f5cfe10301e27a8f090f6eb3b2a628a18", size = 2808477, upload-time = "2025-10-19T00:43:00.577Z" }, + { url = "https://files.pythonhosted.org/packages/d6/1f/587686c43e31c19241ec317da66438d093523921ea7749bbc65558a30df9/cytoolz-1.1.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6db2127a3c1bc2f59f08010d2ae53a760771a9de2f67423ad8d400e9ba4276e8", size = 2636881, upload-time = "2025-10-19T00:43:02.24Z" }, + { url = "https://files.pythonhosted.org/packages/bc/6d/90468cd34f77cb38a11af52c4dc6199efcc97a486395a21bef72e9b7602e/cytoolz-1.1.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:56584745ac647993a016a21bc76399113b7595e312f8d0a1b140c9fcf9b58a27", size = 2937315, upload-time = "2025-10-19T00:43:03.954Z" }, + { url = "https://files.pythonhosted.org/packages/d9/50/7b92cd78c613b92e3509e6291d3fb7e0d72ebda999a8df806a96c40ca9ab/cytoolz-1.1.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:db2c4c3a7f7bd7e03bb1a236a125c8feb86c75802f4ecda6ecfaf946610b2930", size = 2959988, upload-time = "2025-10-19T00:43:05.758Z" }, + { url = "https://files.pythonhosted.org/packages/44/d5/34b5a28a8d9bb329f984b4c2259407ca3f501d1abeb01bacea07937d85d1/cytoolz-1.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:48cb8a692111a285d2b9acd16d185428176bfbffa8a7c274308525fccd01dd42", size = 2795116, upload-time = "2025-10-19T00:43:07.411Z" }, + { url = "https://files.pythonhosted.org/packages/f5/d9/5dd829e33273ec03bdc3c812e6c3281987ae2c5c91645582f6c331544a64/cytoolz-1.1.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d2f344ba5eb17dcf38ee37fdde726f69053f54927db8f8a1bed6ac61e5b1890d", size = 2535390, upload-time = "2025-10-19T00:43:09.104Z" }, + { url = "https://files.pythonhosted.org/packages/87/1f/7f9c58068a8eec2183110df051bc6b69dd621143f84473eeb6dc1b32905a/cytoolz-1.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:abf76b1c1abd031f098f293b6d90ee08bdaa45f8b5678430e331d991b82684b1", size = 2704834, upload-time = "2025-10-19T00:43:10.942Z" }, + { url = "https://files.pythonhosted.org/packages/d2/90/667def5665333575d01a65fe3ec0ca31b897895f6e3bc1a42d6ea3659369/cytoolz-1.1.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:ddf9a38a5b686091265ff45b53d142e44a538cd6c2e70610d3bc6be094219032", size = 2658441, upload-time = "2025-10-19T00:43:12.655Z" }, + { url = "https://files.pythonhosted.org/packages/23/79/6615f9a14960bd29ac98b823777b6589357833f65cf1a11b5abc1587c120/cytoolz-1.1.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:946786755274f07bb2be0400f28adb31d7d85a7c7001873c0a8e24a503428fb3", size = 2654766, upload-time = "2025-10-19T00:43:14.325Z" }, + { url = "https://files.pythonhosted.org/packages/b0/99/be59c6e0ae02153ef10ae1ff0f380fb19d973c651b50cf829a731f6c9e79/cytoolz-1.1.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:d5b8f78b9fed79cf185ad4ddec099abeef45951bdcb416c5835ba05f0a1242c7", size = 2827649, upload-time = "2025-10-19T00:43:16.132Z" }, + { url = "https://files.pythonhosted.org/packages/19/b7/854ddcf9f9618844108677c20d48f4611b5c636956adea0f0e85e027608f/cytoolz-1.1.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:fccde6efefdbc02e676ccb352a2ccc8a8e929f59a1c6d3d60bb78e923a49ca44", size = 2533456, upload-time = "2025-10-19T00:43:17.764Z" }, + { url = "https://files.pythonhosted.org/packages/45/66/bfe6fbb2bdcf03c8377c8c2f542576e15f3340c905a09d78a6cb3badd39a/cytoolz-1.1.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:717b7775313da5f51b0fbf50d865aa9c39cb241bd4cb605df3cf2246d6567397", size = 2826455, upload-time = "2025-10-19T00:43:19.561Z" }, + { url = "https://files.pythonhosted.org/packages/c3/0c/cce4047bd927e95f59e73319c02c9bc86bd3d76392e0eb9e41a1147a479c/cytoolz-1.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5158744a09d0e0e4a4f82225e3a3c4ebf38f9ae74467aaa905467270e52f2794", size = 2714897, upload-time = "2025-10-19T00:43:21.291Z" }, + { url = "https://files.pythonhosted.org/packages/ac/9a/061323bb289b565802bad14fb7ab59fcd8713105df142bcf4dd9ff64f8ac/cytoolz-1.1.0-cp314-cp314-win32.whl", hash = "sha256:1ed534bdbbf063b2bb28fca7d0f6723a3e5a72b086e7c7fe6d74ae8c3e4d00e2", size = 901490, upload-time = "2025-10-19T00:43:22.895Z" }, + { url = "https://files.pythonhosted.org/packages/a3/20/1f3a733d710d2a25d6f10b463bef55ada52fe6392a5d233c8d770191f48a/cytoolz-1.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:472c1c9a085f5ad973ec0ad7f0b9ba0969faea6f96c9e397f6293d386f3a25ec", size = 946730, upload-time = "2025-10-19T00:43:24.838Z" }, + { url = "https://files.pythonhosted.org/packages/f2/22/2d657db4a5d1c10a152061800f812caba9ef20d7bd2406f51a5fd800c180/cytoolz-1.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:a7ad7ca3386fa86bd301be3fa36e7f0acb024f412f665937955acfc8eb42deff", size = 905722, upload-time = "2025-10-19T00:43:26.439Z" }, + { url = "https://files.pythonhosted.org/packages/19/97/b4a8c76796a9a8b9bc90c7992840fa1589a1af8e0426562dea4ce9b384a7/cytoolz-1.1.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:64b63ed4b71b1ba813300ad0f06b8aff19a12cf51116e0e4f1ed837cea4debcf", size = 1372606, upload-time = "2025-10-19T00:43:28.491Z" }, + { url = "https://files.pythonhosted.org/packages/08/d4/a1bb1a32b454a2d650db8374ff3bf875ba0fc1c36e6446ec02a83b9140a1/cytoolz-1.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:a60ba6f2ed9eb0003a737e1ee1e9fa2258e749da6477946008d4324efa25149f", size = 1012189, upload-time = "2025-10-19T00:43:30.177Z" }, + { url = "https://files.pythonhosted.org/packages/21/4b/2f5cbbd81588918ee7dd70cffb66731608f578a9b72166aafa991071af7d/cytoolz-1.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1aa58e2434d732241f7f051e6f17657e969a89971025e24578b5cbc6f1346485", size = 1020624, upload-time = "2025-10-19T00:43:31.712Z" }, + { url = "https://files.pythonhosted.org/packages/f5/99/c4954dd86cd593cd776a038b36795a259b8b5c12cbab6363edf5f6d9c909/cytoolz-1.1.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:6965af3fc7214645970e312deb9bd35a213a1eaabcfef4f39115e60bf2f76867", size = 2917016, upload-time = "2025-10-19T00:43:33.531Z" }, + { url = "https://files.pythonhosted.org/packages/b2/7c/f1f70a17e272b433232bc8a27df97e46b202d6cc07e3b0d63f7f41ba0f2d/cytoolz-1.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ddd2863f321d67527d3b67a93000a378ad6f967056f68c06467fe011278a6d0e", size = 3107634, upload-time = "2025-10-19T00:43:35.57Z" }, + { url = "https://files.pythonhosted.org/packages/8f/bd/c3226a57474b4aef1f90040510cba30d0decd3515fed48dc229b37c2f898/cytoolz-1.1.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4e6b428e9eb5126053c2ae0efa62512ff4b38ed3951f4d0888ca7005d63e56f5", size = 2806221, upload-time = "2025-10-19T00:43:37.707Z" }, + { url = "https://files.pythonhosted.org/packages/c3/47/2f7bfe4aaa1e07dc9828bea228ed744faf73b26aee0c1bdf3b5520bf1909/cytoolz-1.1.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d758e5ef311d2671e0ae8c214c52e44617cf1e58bef8f022b547b9802a5a7f30", size = 3107671, upload-time = "2025-10-19T00:43:39.401Z" }, + { url = "https://files.pythonhosted.org/packages/4d/12/6ff3b04fbd1369d0fcd5f8b5910ba6e427e33bf113754c4c35ec3f747924/cytoolz-1.1.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a95416eca473e6c1179b48d86adcf528b59c63ce78f4cb9934f2e413afa9b56b", size = 3176350, upload-time = "2025-10-19T00:43:41.148Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8c/6691d986b728e77b5d2872743ebcd962d37a2d0f7e9ad95a81b284fbf905/cytoolz-1.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:36c8ede93525cf11e2cc787b7156e5cecd7340193ef800b816a16f1404a8dc6d", size = 3001173, upload-time = "2025-10-19T00:43:42.923Z" }, + { url = "https://files.pythonhosted.org/packages/7a/cb/f59d83a5058e1198db5a1f04e4a124c94d60390e4fa89b6d2e38ee8288a0/cytoolz-1.1.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c949755b6d8a649c5fbc888bc30915926f1b09fe42fea9f289e297c2f6ddd3", size = 2701374, upload-time = "2025-10-19T00:43:44.716Z" }, + { url = "https://files.pythonhosted.org/packages/b7/f0/1ae6d28df503b0bdae094879da2072b8ba13db5919cd3798918761578411/cytoolz-1.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e1b6d37545816905a76d9ed59fa4e332f929e879f062a39ea0f6f620405cdc27", size = 2953081, upload-time = "2025-10-19T00:43:47.103Z" }, + { url = "https://files.pythonhosted.org/packages/f4/06/d86fe811c6222dc32d3e08f5d88d2be598a6055b4d0590e7c1428d55c386/cytoolz-1.1.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:05332112d4087904842b36954cd1d3fc0e463a2f4a7ef9477bd241427c593c3b", size = 2862228, upload-time = "2025-10-19T00:43:49.353Z" }, + { url = "https://files.pythonhosted.org/packages/ae/32/978ef6f42623be44a0a03ae9de875ab54aa26c7e38c5c4cd505460b0927d/cytoolz-1.1.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:31538ca2fad2d688cbd962ccc3f1da847329e2258a52940f10a2ac0719e526be", size = 2861971, upload-time = "2025-10-19T00:43:51.028Z" }, + { url = "https://files.pythonhosted.org/packages/ee/f7/74c69497e756b752b359925d1feef68b91df024a4124a823740f675dacd3/cytoolz-1.1.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:747562aa70abf219ea16f07d50ac0157db856d447f7f498f592e097cbc77df0b", size = 2975304, upload-time = "2025-10-19T00:43:52.99Z" }, + { url = "https://files.pythonhosted.org/packages/5b/2b/3ce0e6889a6491f3418ad4d84ae407b8456b02169a5a1f87990dbba7433b/cytoolz-1.1.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:3dc15c48b20c0f467e15e341e102896c8422dccf8efc6322def5c1b02f074629", size = 2697371, upload-time = "2025-10-19T00:43:55.312Z" }, + { url = "https://files.pythonhosted.org/packages/15/87/c616577f0891d97860643c845f7221e95240aa589586de727e28a5eb6e52/cytoolz-1.1.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:3c03137ee6103ba92d5d6ad6a510e86fded69cd67050bd8a1843f15283be17ac", size = 2992436, upload-time = "2025-10-19T00:43:57.253Z" }, + { url = "https://files.pythonhosted.org/packages/e7/9f/490c81bffb3428ab1fa114051fbb5ba18aaa2e2fe4da5bf4170ca524e6b3/cytoolz-1.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:be8e298d88f88bd172b59912240558be3b7a04959375646e7fd4996401452941", size = 2917612, upload-time = "2025-10-19T00:43:59.423Z" }, + { url = "https://files.pythonhosted.org/packages/66/35/0fec2769660ca6472bbf3317ab634675827bb706d193e3240aaf20eab961/cytoolz-1.1.0-cp314-cp314t-win32.whl", hash = "sha256:3d407140f5604a89578285d4aac7b18b8eafa055cf776e781aabb89c48738fad", size = 960842, upload-time = "2025-10-19T00:44:01.143Z" }, + { url = "https://files.pythonhosted.org/packages/46/b4/b7ce3d3cd20337becfec978ecfa6d0ef64884d0cf32d44edfed8700914b9/cytoolz-1.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:56e5afb69eb6e1b3ffc34716ee5f92ffbdb5cb003b3a5ca4d4b0fe700e217162", size = 1020835, upload-time = "2025-10-19T00:44:03.246Z" }, + { url = "https://files.pythonhosted.org/packages/2c/1f/0498009aa563a9c5d04f520aadc6e1c0942434d089d0b2f51ea986470f55/cytoolz-1.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:27b19b4a286b3ff52040efa42dbe403730aebe5fdfd2def704eb285e2125c63e", size = 927963, upload-time = "2025-10-19T00:44:04.85Z" }, +] + +[[package]] +name = "debugpy" +version = "1.8.17" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/15/ad/71e708ff4ca377c4230530d6a7aa7992592648c122a2cd2b321cf8b35a76/debugpy-1.8.17.tar.gz", hash = "sha256:fd723b47a8c08892b1a16b2c6239a8b96637c62a59b94bb5dab4bac592a58a8e", size = 1644129, upload-time = "2025-09-17T16:33:20.633Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/76/597e5cb97d026274ba297af8d89138dfd9e695767ba0e0895edb20963f40/debugpy-1.8.17-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:857c1dd5d70042502aef1c6d1c2801211f3ea7e56f75e9c335f434afb403e464", size = 2538386, upload-time = "2025-09-17T16:33:54.594Z" }, + { url = "https://files.pythonhosted.org/packages/5f/60/ce5c34fcdfec493701f9d1532dba95b21b2f6394147234dce21160bd923f/debugpy-1.8.17-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:3bea3b0b12f3946e098cce9b43c3c46e317b567f79570c3f43f0b96d00788088", size = 4292100, upload-time = "2025-09-17T16:33:56.353Z" }, + { url = "https://files.pythonhosted.org/packages/e8/95/7873cf2146577ef71d2a20bf553f12df865922a6f87b9e8ee1df04f01785/debugpy-1.8.17-cp313-cp313-win32.whl", hash = "sha256:e34ee844c2f17b18556b5bbe59e1e2ff4e86a00282d2a46edab73fd7f18f4a83", size = 5277002, upload-time = "2025-09-17T16:33:58.231Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/18c79a1cee5ff539a94ec4aa290c1c069a5580fd5cfd2fb2e282f8e905da/debugpy-1.8.17-cp313-cp313-win_amd64.whl", hash = "sha256:6c5cd6f009ad4fca8e33e5238210dc1e5f42db07d4b6ab21ac7ffa904a196420", size = 5319047, upload-time = "2025-09-17T16:34:00.586Z" }, + { url = "https://files.pythonhosted.org/packages/de/45/115d55b2a9da6de812696064ceb505c31e952c5d89c4ed1d9bb983deec34/debugpy-1.8.17-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:045290c010bcd2d82bc97aa2daf6837443cd52f6328592698809b4549babcee1", size = 2536899, upload-time = "2025-09-17T16:34:02.657Z" }, + { url = "https://files.pythonhosted.org/packages/5a/73/2aa00c7f1f06e997ef57dc9b23d61a92120bec1437a012afb6d176585197/debugpy-1.8.17-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:b69b6bd9dba6a03632534cdf67c760625760a215ae289f7489a452af1031fe1f", size = 4268254, upload-time = "2025-09-17T16:34:04.486Z" }, + { url = "https://files.pythonhosted.org/packages/86/b5/ed3e65c63c68a6634e3ba04bd10255c8e46ec16ebed7d1c79e4816d8a760/debugpy-1.8.17-cp314-cp314-win32.whl", hash = "sha256:5c59b74aa5630f3a5194467100c3b3d1c77898f9ab27e3f7dc5d40fc2f122670", size = 5277203, upload-time = "2025-09-17T16:34:06.65Z" }, + { url = "https://files.pythonhosted.org/packages/b0/26/394276b71c7538445f29e792f589ab7379ae70fd26ff5577dfde71158e96/debugpy-1.8.17-cp314-cp314-win_amd64.whl", hash = "sha256:893cba7bb0f55161de4365584b025f7064e1f88913551bcd23be3260b231429c", size = 5318493, upload-time = "2025-09-17T16:34:08.483Z" }, + { url = "https://files.pythonhosted.org/packages/b0/d0/89247ec250369fc76db477720a26b2fce7ba079ff1380e4ab4529d2fe233/debugpy-1.8.17-py2.py3-none-any.whl", hash = "sha256:60c7dca6571efe660ccb7a9508d73ca14b8796c4ed484c2002abba714226cfef", size = 5283210, upload-time = "2025-09-17T16:34:25.835Z" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, +] + +[[package]] +name = "duet" +version = "0.2.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/b8/ef7c1a8a515d5195970ba5fdf420400052346873d3370de75f8b97e413bd/duet-0.2.9.tar.gz", hash = "sha256:d6fa39582e6a3dce1096c47e5fbcbda648a633eed94a38943e68662afa2587f3", size = 24438, upload-time = "2023-07-26T06:39:02.351Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/95/03c8215f675349ff719cb44cd837c2468fdc0c05f55f523f3cad86bbdcc6/duet-0.2.9-py3-none-any.whl", hash = "sha256:a16088b68b0faee8aee12cdf4d0a8af060ed958badb44f3e32f123f13f64119a", size = 29560, upload-time = "2023-07-26T06:38:58.931Z" }, +] + +[[package]] +name = "executing" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488, upload-time = "2025-09-01T09:48:10.866Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317, upload-time = "2025-09-01T09:48:08.5Z" }, +] + +[[package]] +name = "fastjsonschema" +version = "2.21.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/b5/23b216d9d985a956623b6bd12d4086b60f0059b27799f23016af04a74ea1/fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de", size = 374130, upload-time = "2025-08-14T18:49:36.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024, upload-time = "2025-08-14T18:49:34.776Z" }, +] + +[[package]] +name = "ffmpeg" +version = "1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/cc/3b7408b8ecf7c1d20ad480c3eaed7619857bf1054b690226e906fdf14258/ffmpeg-1.4.tar.gz", hash = "sha256:6931692c890ff21d39938433c2189747815dca0c60ddc7f9bb97f199dba0b5b9", size = 5055, upload-time = "2018-10-08T07:50:05.748Z" } + +[[package]] +name = "filelock" +version = "3.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/46/0028a82567109b5ef6e4d2a1f04a583fb513e6cf9527fcdd09afd817deeb/filelock-3.20.0.tar.gz", hash = "sha256:711e943b4ec6be42e1d4e6690b48dc175c822967466bb31c0c293f34334c13f4", size = 18922, upload-time = "2025-10-08T18:03:50.056Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/91/7216b27286936c16f5b4d0c530087e4a54eead683e6b0b73dd0c64844af6/filelock-3.20.0-py3-none-any.whl", hash = "sha256:339b4732ffda5cd79b13f4e2711a31b0365ce445d95d243bb996273d072546a2", size = 16054, upload-time = "2025-10-08T18:03:48.35Z" }, +] + +[[package]] +name = "fonttools" +version = "4.60.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4b/42/97a13e47a1e51a5a7142475bbcf5107fe3a68fc34aef331c897d5fb98ad0/fonttools-4.60.1.tar.gz", hash = "sha256:ef00af0439ebfee806b25f24c8f92109157ff3fac5731dc7867957812e87b8d9", size = 3559823, upload-time = "2025-09-29T21:13:27.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/5b/cdd2c612277b7ac7ec8c0c9bc41812c43dc7b2d5f2b0897e15fdf5a1f915/fonttools-4.60.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6f68576bb4bbf6060c7ab047b1574a1ebe5c50a17de62830079967b211059ebb", size = 2825777, upload-time = "2025-09-29T21:12:01.22Z" }, + { url = "https://files.pythonhosted.org/packages/d6/8a/de9cc0540f542963ba5e8f3a1f6ad48fa211badc3177783b9d5cadf79b5d/fonttools-4.60.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:eedacb5c5d22b7097482fa834bda0dafa3d914a4e829ec83cdea2a01f8c813c4", size = 2348080, upload-time = "2025-09-29T21:12:03.785Z" }, + { url = "https://files.pythonhosted.org/packages/2d/8b/371ab3cec97ee3fe1126b3406b7abd60c8fec8975fd79a3c75cdea0c3d83/fonttools-4.60.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b33a7884fabd72bdf5f910d0cf46be50dce86a0362a65cfc746a4168c67eb96c", size = 4903082, upload-time = "2025-09-29T21:12:06.382Z" }, + { url = "https://files.pythonhosted.org/packages/04/05/06b1455e4bc653fcb2117ac3ef5fa3a8a14919b93c60742d04440605d058/fonttools-4.60.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2409d5fb7b55fd70f715e6d34e7a6e4f7511b8ad29a49d6df225ee76da76dd77", size = 4960125, upload-time = "2025-09-29T21:12:09.314Z" }, + { url = "https://files.pythonhosted.org/packages/8e/37/f3b840fcb2666f6cb97038793606bdd83488dca2d0b0fc542ccc20afa668/fonttools-4.60.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c8651e0d4b3bdeda6602b85fdc2abbefc1b41e573ecb37b6779c4ca50753a199", size = 4901454, upload-time = "2025-09-29T21:12:11.931Z" }, + { url = "https://files.pythonhosted.org/packages/fd/9e/eb76f77e82f8d4a46420aadff12cec6237751b0fb9ef1de373186dcffb5f/fonttools-4.60.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:145daa14bf24824b677b9357c5e44fd8895c2a8f53596e1b9ea3496081dc692c", size = 5044495, upload-time = "2025-09-29T21:12:15.241Z" }, + { url = "https://files.pythonhosted.org/packages/f8/b3/cede8f8235d42ff7ae891bae8d619d02c8ac9fd0cfc450c5927a6200c70d/fonttools-4.60.1-cp313-cp313-win32.whl", hash = "sha256:2299df884c11162617a66b7c316957d74a18e3758c0274762d2cc87df7bc0272", size = 2217028, upload-time = "2025-09-29T21:12:17.96Z" }, + { url = "https://files.pythonhosted.org/packages/75/4d/b022c1577807ce8b31ffe055306ec13a866f2337ecee96e75b24b9b753ea/fonttools-4.60.1-cp313-cp313-win_amd64.whl", hash = "sha256:a3db56f153bd4c5c2b619ab02c5db5192e222150ce5a1bc10f16164714bc39ac", size = 2266200, upload-time = "2025-09-29T21:12:20.14Z" }, + { url = "https://files.pythonhosted.org/packages/9a/83/752ca11c1aa9a899b793a130f2e466b79ea0cf7279c8d79c178fc954a07b/fonttools-4.60.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:a884aef09d45ba1206712c7dbda5829562d3fea7726935d3289d343232ecb0d3", size = 2822830, upload-time = "2025-09-29T21:12:24.406Z" }, + { url = "https://files.pythonhosted.org/packages/57/17/bbeab391100331950a96ce55cfbbff27d781c1b85ebafb4167eae50d9fe3/fonttools-4.60.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8a44788d9d91df72d1a5eac49b31aeb887a5f4aab761b4cffc4196c74907ea85", size = 2345524, upload-time = "2025-09-29T21:12:26.819Z" }, + { url = "https://files.pythonhosted.org/packages/3d/2e/d4831caa96d85a84dd0da1d9f90d81cec081f551e0ea216df684092c6c97/fonttools-4.60.1-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e852d9dda9f93ad3651ae1e3bb770eac544ec93c3807888798eccddf84596537", size = 4843490, upload-time = "2025-09-29T21:12:29.123Z" }, + { url = "https://files.pythonhosted.org/packages/49/13/5e2ea7c7a101b6fc3941be65307ef8df92cbbfa6ec4804032baf1893b434/fonttools-4.60.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:154cb6ee417e417bf5f7c42fe25858c9140c26f647c7347c06f0cc2d47eff003", size = 4944184, upload-time = "2025-09-29T21:12:31.414Z" }, + { url = "https://files.pythonhosted.org/packages/0c/2b/cf9603551c525b73fc47c52ee0b82a891579a93d9651ed694e4e2cd08bb8/fonttools-4.60.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:5664fd1a9ea7f244487ac8f10340c4e37664675e8667d6fee420766e0fb3cf08", size = 4890218, upload-time = "2025-09-29T21:12:33.936Z" }, + { url = "https://files.pythonhosted.org/packages/fd/2f/933d2352422e25f2376aae74f79eaa882a50fb3bfef3c0d4f50501267101/fonttools-4.60.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:583b7f8e3c49486e4d489ad1deacfb8d5be54a8ef34d6df824f6a171f8511d99", size = 4999324, upload-time = "2025-09-29T21:12:36.637Z" }, + { url = "https://files.pythonhosted.org/packages/38/99/234594c0391221f66216bc2c886923513b3399a148defaccf81dc3be6560/fonttools-4.60.1-cp314-cp314-win32.whl", hash = "sha256:66929e2ea2810c6533a5184f938502cfdaea4bc3efb7130d8cc02e1c1b4108d6", size = 2220861, upload-time = "2025-09-29T21:12:39.108Z" }, + { url = "https://files.pythonhosted.org/packages/3e/1d/edb5b23726dde50fc4068e1493e4fc7658eeefcaf75d4c5ffce067d07ae5/fonttools-4.60.1-cp314-cp314-win_amd64.whl", hash = "sha256:f3d5be054c461d6a2268831f04091dc82753176f6ea06dc6047a5e168265a987", size = 2270934, upload-time = "2025-09-29T21:12:41.339Z" }, + { url = "https://files.pythonhosted.org/packages/fb/da/1392aaa2170adc7071fe7f9cfd181a5684a7afcde605aebddf1fb4d76df5/fonttools-4.60.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:b6379e7546ba4ae4b18f8ae2b9bc5960936007a1c0e30b342f662577e8bc3299", size = 2894340, upload-time = "2025-09-29T21:12:43.774Z" }, + { url = "https://files.pythonhosted.org/packages/bf/a7/3b9f16e010d536ce567058b931a20b590d8f3177b2eda09edd92e392375d/fonttools-4.60.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9d0ced62b59e0430b3690dbc5373df1c2aa7585e9a8ce38eff87f0fd993c5b01", size = 2375073, upload-time = "2025-09-29T21:12:46.437Z" }, + { url = "https://files.pythonhosted.org/packages/9b/b5/e9bcf51980f98e59bb5bb7c382a63c6f6cac0eec5f67de6d8f2322382065/fonttools-4.60.1-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:875cb7764708b3132637f6c5fb385b16eeba0f7ac9fa45a69d35e09b47045801", size = 4849758, upload-time = "2025-09-29T21:12:48.694Z" }, + { url = "https://files.pythonhosted.org/packages/e3/dc/1d2cf7d1cba82264b2f8385db3f5960e3d8ce756b4dc65b700d2c496f7e9/fonttools-4.60.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a184b2ea57b13680ab6d5fbde99ccef152c95c06746cb7718c583abd8f945ccc", size = 5085598, upload-time = "2025-09-29T21:12:51.081Z" }, + { url = "https://files.pythonhosted.org/packages/5d/4d/279e28ba87fb20e0c69baf72b60bbf1c4d873af1476806a7b5f2b7fac1ff/fonttools-4.60.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:026290e4ec76583881763fac284aca67365e0be9f13a7fb137257096114cb3bc", size = 4957603, upload-time = "2025-09-29T21:12:53.423Z" }, + { url = "https://files.pythonhosted.org/packages/78/d4/ff19976305e0c05aa3340c805475abb00224c954d3c65e82c0a69633d55d/fonttools-4.60.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f0e8817c7d1a0c2eedebf57ef9a9896f3ea23324769a9a2061a80fe8852705ed", size = 4974184, upload-time = "2025-09-29T21:12:55.962Z" }, + { url = "https://files.pythonhosted.org/packages/63/22/8553ff6166f5cd21cfaa115aaacaa0dc73b91c079a8cfd54a482cbc0f4f5/fonttools-4.60.1-cp314-cp314t-win32.whl", hash = "sha256:1410155d0e764a4615774e5c2c6fc516259fe3eca5882f034eb9bfdbee056259", size = 2282241, upload-time = "2025-09-29T21:12:58.179Z" }, + { url = "https://files.pythonhosted.org/packages/8a/cb/fa7b4d148e11d5a72761a22e595344133e83a9507a4c231df972e657579b/fonttools-4.60.1-cp314-cp314t-win_amd64.whl", hash = "sha256:022beaea4b73a70295b688f817ddc24ed3e3418b5036ffcd5658141184ef0d0c", size = 2345760, upload-time = "2025-09-29T21:13:00.375Z" }, + { url = "https://files.pythonhosted.org/packages/c7/93/0dd45cd283c32dea1545151d8c3637b4b8c53cdb3a625aeb2885b184d74d/fonttools-4.60.1-py3-none-any.whl", hash = "sha256:906306ac7afe2156fcf0042173d6ebbb05416af70f6b370967b47f8f00103bbb", size = 1143175, upload-time = "2025-09-29T21:13:24.134Z" }, +] + +[[package]] +name = "fqdn" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload-time = "2021-03-11T07:16:29.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, +] + +[[package]] +name = "google-api-core" +version = "2.25.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'darwin'", + "python_full_version >= '3.14' and sys_platform == 'linux'", + "python_full_version >= '3.14' and sys_platform != 'darwin' and sys_platform != 'linux'", +] +dependencies = [ + { name = "google-auth", marker = "python_full_version >= '3.14'" }, + { name = "googleapis-common-protos", marker = "python_full_version >= '3.14'" }, + { name = "proto-plus", marker = "python_full_version >= '3.14'" }, + { name = "protobuf", marker = "python_full_version >= '3.14'" }, + { name = "requests", marker = "python_full_version >= '3.14'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/cd/63f1557235c2440fe0577acdbc32577c5c002684c58c7f4d770a92366a24/google_api_core-2.25.2.tar.gz", hash = "sha256:1c63aa6af0d0d5e37966f157a77f9396d820fba59f9e43e9415bc3dc5baff300", size = 166266, upload-time = "2025-10-03T00:07:34.778Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/d8/894716a5423933f5c8d2d5f04b16f052a515f78e815dab0c2c6f1fd105dc/google_api_core-2.25.2-py3-none-any.whl", hash = "sha256:e9a8f62d363dc8424a8497f4c2a47d6bcda6c16514c935629c257ab5d10210e7", size = 162489, upload-time = "2025-10-03T00:07:32.924Z" }, +] + +[package.optional-dependencies] +grpc = [ + { name = "grpcio", marker = "python_full_version >= '3.14'" }, + { name = "grpcio-status", marker = "python_full_version >= '3.14'" }, +] + +[[package]] +name = "google-api-core" +version = "2.28.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.14' and sys_platform == 'darwin'", + "python_full_version < '3.14' and sys_platform == 'linux'", + "python_full_version < '3.14' and sys_platform != 'darwin' and sys_platform != 'linux'", +] +dependencies = [ + { name = "google-auth", marker = "python_full_version < '3.14'" }, + { name = "googleapis-common-protos", marker = "python_full_version < '3.14'" }, + { name = "proto-plus", marker = "python_full_version < '3.14'" }, + { name = "protobuf", marker = "python_full_version < '3.14'" }, + { name = "requests", marker = "python_full_version < '3.14'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/da/83d7043169ac2c8c7469f0e375610d78ae2160134bf1b80634c482fa079c/google_api_core-2.28.1.tar.gz", hash = "sha256:2b405df02d68e68ce0fbc138559e6036559e685159d148ae5861013dc201baf8", size = 176759, upload-time = "2025-10-28T21:34:51.529Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/d4/90197b416cb61cefd316964fd9e7bd8324bcbafabf40eef14a9f20b81974/google_api_core-2.28.1-py3-none-any.whl", hash = "sha256:4021b0f8ceb77a6fb4de6fde4502cecab45062e66ff4f2895169e0b35bc9466c", size = 173706, upload-time = "2025-10-28T21:34:50.151Z" }, +] + +[package.optional-dependencies] +grpc = [ + { name = "grpcio", marker = "python_full_version < '3.14'" }, + { name = "grpcio-status", marker = "python_full_version < '3.14'" }, +] + +[[package]] +name = "google-auth" +version = "2.43.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachetools" }, + { name = "pyasn1-modules" }, + { name = "rsa" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ff/ef/66d14cf0e01b08d2d51ffc3c20410c4e134a1548fc246a6081eae585a4fe/google_auth-2.43.0.tar.gz", hash = "sha256:88228eee5fc21b62a1b5fe773ca15e67778cb07dc8363adcb4a8827b52d81483", size = 296359, upload-time = "2025-11-06T00:13:36.587Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/d1/385110a9ae86d91cc14c5282c61fe9f4dc41c0b9f7d423c6ad77038c4448/google_auth-2.43.0-py2.py3-none-any.whl", hash = "sha256:af628ba6fa493f75c7e9dbe9373d148ca9f4399b5ea29976519e0a3848eddd16", size = 223114, upload-time = "2025-11-06T00:13:35.209Z" }, +] + +[[package]] +name = "googleapis-common-protos" +version = "1.72.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e5/7b/adfd75544c415c487b33061fe7ae526165241c1ea133f9a9125a56b39fd8/googleapis_common_protos-1.72.0.tar.gz", hash = "sha256:e55a601c1b32b52d7a3e65f43563e2aa61bcd737998ee672ac9b951cd49319f5", size = 147433, upload-time = "2025-11-06T18:29:24.087Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/ab/09169d5a4612a5f92490806649ac8d41e3ec9129c636754575b3553f4ea4/googleapis_common_protos-1.72.0-py3-none-any.whl", hash = "sha256:4299c5a82d5ae1a9702ada957347726b167f9f8d1fc352477702a1e851ff4038", size = 297515, upload-time = "2025-11-06T18:29:13.14Z" }, +] + +[[package]] +name = "grpcio" +version = "1.76.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/e0/318c1ce3ae5a17894d5791e87aea147587c9e702f24122cc7a5c8bbaeeb1/grpcio-1.76.0.tar.gz", hash = "sha256:7be78388d6da1a25c0d5ec506523db58b18be22d9c37d8d3a32c08be4987bd73", size = 12785182, upload-time = "2025-10-21T16:23:12.106Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/ed/71467ab770effc9e8cef5f2e7388beb2be26ed642d567697bb103a790c72/grpcio-1.76.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:26ef06c73eb53267c2b319f43e6634c7556ea37672029241a056629af27c10e2", size = 5807716, upload-time = "2025-10-21T16:21:48.475Z" }, + { url = "https://files.pythonhosted.org/packages/2c/85/c6ed56f9817fab03fa8a111ca91469941fb514e3e3ce6d793cb8f1e1347b/grpcio-1.76.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:45e0111e73f43f735d70786557dc38141185072d7ff8dc1829d6a77ac1471468", size = 11821522, upload-time = "2025-10-21T16:21:51.142Z" }, + { url = "https://files.pythonhosted.org/packages/ac/31/2b8a235ab40c39cbc141ef647f8a6eb7b0028f023015a4842933bc0d6831/grpcio-1.76.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:83d57312a58dcfe2a3a0f9d1389b299438909a02db60e2f2ea2ae2d8034909d3", size = 6362558, upload-time = "2025-10-21T16:21:54.213Z" }, + { url = "https://files.pythonhosted.org/packages/bd/64/9784eab483358e08847498ee56faf8ff6ea8e0a4592568d9f68edc97e9e9/grpcio-1.76.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:3e2a27c89eb9ac3d81ec8835e12414d73536c6e620355d65102503064a4ed6eb", size = 7049990, upload-time = "2025-10-21T16:21:56.476Z" }, + { url = "https://files.pythonhosted.org/packages/2b/94/8c12319a6369434e7a184b987e8e9f3b49a114c489b8315f029e24de4837/grpcio-1.76.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61f69297cba3950a524f61c7c8ee12e55c486cb5f7db47ff9dcee33da6f0d3ae", size = 6575387, upload-time = "2025-10-21T16:21:59.051Z" }, + { url = "https://files.pythonhosted.org/packages/15/0f/f12c32b03f731f4a6242f771f63039df182c8b8e2cf8075b245b409259d4/grpcio-1.76.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6a15c17af8839b6801d554263c546c69c4d7718ad4321e3166175b37eaacca77", size = 7166668, upload-time = "2025-10-21T16:22:02.049Z" }, + { url = "https://files.pythonhosted.org/packages/ff/2d/3ec9ce0c2b1d92dd59d1c3264aaec9f0f7c817d6e8ac683b97198a36ed5a/grpcio-1.76.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:25a18e9810fbc7e7f03ec2516addc116a957f8cbb8cbc95ccc80faa072743d03", size = 8124928, upload-time = "2025-10-21T16:22:04.984Z" }, + { url = "https://files.pythonhosted.org/packages/1a/74/fd3317be5672f4856bcdd1a9e7b5e17554692d3db9a3b273879dc02d657d/grpcio-1.76.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:931091142fd8cc14edccc0845a79248bc155425eee9a98b2db2ea4f00a235a42", size = 7589983, upload-time = "2025-10-21T16:22:07.881Z" }, + { url = "https://files.pythonhosted.org/packages/45/bb/ca038cf420f405971f19821c8c15bcbc875505f6ffadafe9ffd77871dc4c/grpcio-1.76.0-cp313-cp313-win32.whl", hash = "sha256:5e8571632780e08526f118f74170ad8d50fb0a48c23a746bef2a6ebade3abd6f", size = 3984727, upload-time = "2025-10-21T16:22:10.032Z" }, + { url = "https://files.pythonhosted.org/packages/41/80/84087dc56437ced7cdd4b13d7875e7439a52a261e3ab4e06488ba6173b0a/grpcio-1.76.0-cp313-cp313-win_amd64.whl", hash = "sha256:f9f7bd5faab55f47231ad8dba7787866b69f5e93bc306e3915606779bbfb4ba8", size = 4702799, upload-time = "2025-10-21T16:22:12.709Z" }, + { url = "https://files.pythonhosted.org/packages/b4/46/39adac80de49d678e6e073b70204091e76631e03e94928b9ea4ecf0f6e0e/grpcio-1.76.0-cp314-cp314-linux_armv7l.whl", hash = "sha256:ff8a59ea85a1f2191a0ffcc61298c571bc566332f82e5f5be1b83c9d8e668a62", size = 5808417, upload-time = "2025-10-21T16:22:15.02Z" }, + { url = "https://files.pythonhosted.org/packages/9c/f5/a4531f7fb8b4e2a60b94e39d5d924469b7a6988176b3422487be61fe2998/grpcio-1.76.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:06c3d6b076e7b593905d04fdba6a0525711b3466f43b3400266f04ff735de0cd", size = 11828219, upload-time = "2025-10-21T16:22:17.954Z" }, + { url = "https://files.pythonhosted.org/packages/4b/1c/de55d868ed7a8bd6acc6b1d6ddc4aa36d07a9f31d33c912c804adb1b971b/grpcio-1.76.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fd5ef5932f6475c436c4a55e4336ebbe47bd3272be04964a03d316bbf4afbcbc", size = 6367826, upload-time = "2025-10-21T16:22:20.721Z" }, + { url = "https://files.pythonhosted.org/packages/59/64/99e44c02b5adb0ad13ab3adc89cb33cb54bfa90c74770f2607eea629b86f/grpcio-1.76.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b331680e46239e090f5b3cead313cc772f6caa7d0fc8de349337563125361a4a", size = 7049550, upload-time = "2025-10-21T16:22:23.637Z" }, + { url = "https://files.pythonhosted.org/packages/43/28/40a5be3f9a86949b83e7d6a2ad6011d993cbe9b6bd27bea881f61c7788b6/grpcio-1.76.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2229ae655ec4e8999599469559e97630185fdd53ae1e8997d147b7c9b2b72cba", size = 6575564, upload-time = "2025-10-21T16:22:26.016Z" }, + { url = "https://files.pythonhosted.org/packages/4b/a9/1be18e6055b64467440208a8559afac243c66a8b904213af6f392dc2212f/grpcio-1.76.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:490fa6d203992c47c7b9e4a9d39003a0c2bcc1c9aa3c058730884bbbb0ee9f09", size = 7176236, upload-time = "2025-10-21T16:22:28.362Z" }, + { url = "https://files.pythonhosted.org/packages/0f/55/dba05d3fcc151ce6e81327541d2cc8394f442f6b350fead67401661bf041/grpcio-1.76.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:479496325ce554792dba6548fae3df31a72cef7bad71ca2e12b0e58f9b336bfc", size = 8125795, upload-time = "2025-10-21T16:22:31.075Z" }, + { url = "https://files.pythonhosted.org/packages/4a/45/122df922d05655f63930cf42c9e3f72ba20aadb26c100ee105cad4ce4257/grpcio-1.76.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1c9b93f79f48b03ada57ea24725d83a30284a012ec27eab2cf7e50a550cbbbcc", size = 7592214, upload-time = "2025-10-21T16:22:33.831Z" }, + { url = "https://files.pythonhosted.org/packages/4a/6e/0b899b7f6b66e5af39e377055fb4a6675c9ee28431df5708139df2e93233/grpcio-1.76.0-cp314-cp314-win32.whl", hash = "sha256:747fa73efa9b8b1488a95d0ba1039c8e2dca0f741612d80415b1e1c560febf4e", size = 4062961, upload-time = "2025-10-21T16:22:36.468Z" }, + { url = "https://files.pythonhosted.org/packages/19/41/0b430b01a2eb38ee887f88c1f07644a1df8e289353b78e82b37ef988fb64/grpcio-1.76.0-cp314-cp314-win_amd64.whl", hash = "sha256:922fa70ba549fce362d2e2871ab542082d66e2aaf0c19480ea453905b01f384e", size = 4834462, upload-time = "2025-10-21T16:22:39.772Z" }, +] + +[[package]] +name = "grpcio-status" +version = "1.71.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "googleapis-common-protos" }, + { name = "grpcio" }, + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/d1/b6e9877fedae3add1afdeae1f89d1927d296da9cf977eca0eb08fb8a460e/grpcio_status-1.71.2.tar.gz", hash = "sha256:c7a97e176df71cdc2c179cd1847d7fc86cca5832ad12e9798d7fed6b7a1aab50", size = 13677, upload-time = "2025-06-28T04:24:05.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/58/317b0134129b556a93a3b0afe00ee675b5657f0155509e22fcb853bafe2d/grpcio_status-1.71.2-py3-none-any.whl", hash = "sha256:803c98cb6a8b7dc6dbb785b1111aed739f241ab5e9da0bba96888aa74704cfd3", size = 14424, upload-time = "2025-06-28T04:23:42.136Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "idna" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, +] + +[[package]] +name = "ipykernel" +version = "7.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "matplotlib-inline" }, + { name = "nest-asyncio" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/a4/4948be6eb88628505b83a1f2f40d90254cab66abf2043b3c40fa07dfce0f/ipykernel-7.1.0.tar.gz", hash = "sha256:58a3fc88533d5930c3546dc7eac66c6d288acde4f801e2001e65edc5dc9cf0db", size = 174579, upload-time = "2025-10-27T09:46:39.471Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/17/20c2552266728ceba271967b87919664ecc0e33efca29c3efc6baf88c5f9/ipykernel-7.1.0-py3-none-any.whl", hash = "sha256:763b5ec6c5b7776f6a8d7ce09b267693b4e5ce75cb50ae696aaefb3c85e1ea4c", size = 117968, upload-time = "2025-10-27T09:46:37.805Z" }, +] + +[[package]] +name = "ipython" +version = "9.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "ipython-pygments-lexers" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/29/e6/48c74d54039241a456add616464ea28c6ebf782e4110d419411b83dae06f/ipython-9.7.0.tar.gz", hash = "sha256:5f6de88c905a566c6a9d6c400a8fed54a638e1f7543d17aae2551133216b1e4e", size = 4422115, upload-time = "2025-11-05T12:18:54.646Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/aa/62893d6a591d337aa59dcc4c6f6c842f1fe20cd72c8c5c1f980255243252/ipython-9.7.0-py3-none-any.whl", hash = "sha256:bce8ac85eb9521adc94e1845b4c03d88365fd6ac2f4908ec4ed1eb1b0a065f9f", size = 618911, upload-time = "2025-11-05T12:18:52.484Z" }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, +] + +[[package]] +name = "isoduration" +version = "20.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arrow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload-time = "2020-11-01T11:00:00.312Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload-time = "2020-11-01T10:59:58.02Z" }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "jmespath" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843, upload-time = "2022-06-17T18:00:12.224Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256, upload-time = "2022-06-17T18:00:10.251Z" }, +] + +[[package]] +name = "json5" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/12/ae/929aee9619e9eba9015207a9d2c1c54db18311da7eb4dcf6d41ad6f0eb67/json5-0.12.1.tar.gz", hash = "sha256:b2743e77b3242f8d03c143dd975a6ec7c52e2f2afe76ed934e53503dd4ad4990", size = 52191, upload-time = "2025-08-12T19:47:42.583Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/e2/05328bd2621be49a6fed9e3030b1e51a2d04537d3f816d211b9cc53c5262/json5-0.12.1-py3-none-any.whl", hash = "sha256:d9c9b3bc34a5f54d43c35e11ef7cb87d8bdd098c6ace87117a7b7e83e705c1d5", size = 36119, upload-time = "2025-08-12T19:47:41.131Z" }, +] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.25.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hash = "sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85", size = 357342, upload-time = "2025-08-18T17:03:50.038Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl", hash = "sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63", size = 90040, upload-time = "2025-08-18T17:03:48.373Z" }, +] + +[package.optional-dependencies] +format-nongpl = [ + { name = "fqdn" }, + { name = "idna" }, + { name = "isoduration" }, + { name = "jsonpointer" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "rfc3987-syntax" }, + { name = "uri-template" }, + { name = "webcolors" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, +] + +[[package]] +name = "juliacall" +version = "0.9.30" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "juliapkg" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/60/51/3e364cac1f70cd6a9f6f0aa26d5bfecfa07054d58c21d33d100e14a5fa27/juliacall-0.9.30.tar.gz", hash = "sha256:23de1645c2aa16e1a00f0c1cc004a15fb5d4205ec084f03bf9216c36fe063747", size = 495629, upload-time = "2025-11-18T15:51:43.003Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/5d/15b1436d3a7a5de7d062335bde1086119eb747b8b4587938bd5f625a32a6/juliacall-0.9.30-py3-none-any.whl", hash = "sha256:bf76a85954fa23fee57e164896835e1ab62678669fde3008cd6ba21c9fc5f318", size = 12257, upload-time = "2025-11-18T15:51:41.561Z" }, +] + +[[package]] +name = "juliapkg" +version = "0.1.22" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "semver" }, + { name = "tomli" }, + { name = "tomlkit" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ce/fe/1e329a4244855924d1130138625860b57e8f94397a0357a9d4cd66fd50a7/juliapkg-0.1.22.tar.gz", hash = "sha256:4358d8853a4e741a73906737ae433ae2f4c6e00f4f7969512d90880c0e22aae6", size = 23462, upload-time = "2025-10-08T20:04:37.62Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/6e/361d176cc94ccb8aac22a39677e146a91406005f8f6bb098b15606c523f6/juliapkg-0.1.22-py3-none-any.whl", hash = "sha256:fc197c21087345e296036190c769b888f7701bf1fb47d7036a20d01221ec550a", size = 21860, upload-time = "2025-10-08T20:04:36.389Z" }, +] + +[[package]] +name = "jupyter-client" +version = "8.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload-time = "2024-09-17T10:44:17.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/02/49/9d1284d0dc65e2c757b74c6687b6d319b02f822ad039e5c512df9194d9dd/jupyter_core-5.9.1.tar.gz", hash = "sha256:4d09aaff303b9566c3ce657f580bd089ff5c91f5f89cf7d8846c3cdf465b5508", size = 89814, upload-time = "2025-10-16T19:19:18.444Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl", hash = "sha256:ebf87fdc6073d142e114c72c9e29a9d7ca03fad818c5d300ce2adc1fb0743407", size = 29032, upload-time = "2025-10-16T19:19:16.783Z" }, +] + +[[package]] +name = "jupyter-events" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonschema", extra = ["format-nongpl"] }, + { name = "packaging" }, + { name = "python-json-logger" }, + { name = "pyyaml" }, + { name = "referencing" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196, upload-time = "2025-02-03T17:23:41.485Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430, upload-time = "2025-02-03T17:23:38.643Z" }, +] + +[[package]] +name = "jupyter-lsp" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/5a/9066c9f8e94ee517133cd98dba393459a16cd48bba71a82f16a65415206c/jupyter_lsp-2.3.0.tar.gz", hash = "sha256:458aa59339dc868fb784d73364f17dbce8836e906cd75fd471a325cba02e0245", size = 54823, upload-time = "2025-08-27T17:47:34.671Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/60/1f6cee0c46263de1173894f0fafcb3475ded276c472c14d25e0280c18d6d/jupyter_lsp-2.3.0-py3-none-any.whl", hash = "sha256:e914a3cb2addf48b1c7710914771aaf1819d46b2e5a79b0f917b5478ec93f34f", size = 76687, upload-time = "2025-08-27T17:47:33.15Z" }, +] + +[[package]] +name = "jupyter-server" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "argon2-cffi" }, + { name = "jinja2" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "jupyter-events" }, + { name = "jupyter-server-terminals" }, + { name = "nbconvert" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "prometheus-client" }, + { name = "pywinpty", marker = "os_name == 'nt' and sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "pyzmq" }, + { name = "send2trash" }, + { name = "terminado" }, + { name = "tornado" }, + { name = "traitlets" }, + { name = "websocket-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/ac/e040ec363d7b6b1f11304cc9f209dac4517ece5d5e01821366b924a64a50/jupyter_server-2.17.0.tar.gz", hash = "sha256:c38ea898566964c888b4772ae1ed58eca84592e88251d2cfc4d171f81f7e99d5", size = 731949, upload-time = "2025-08-21T14:42:54.042Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/80/a24767e6ca280f5a49525d987bf3e4d7552bf67c8be07e8ccf20271f8568/jupyter_server-2.17.0-py3-none-any.whl", hash = "sha256:e8cb9c7db4251f51ed307e329b81b72ccf2056ff82d50524debde1ee1870e13f", size = 388221, upload-time = "2025-08-21T14:42:52.034Z" }, +] + +[[package]] +name = "jupyter-server-terminals" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pywinpty", marker = "os_name == 'nt' and sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "terminado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430, upload-time = "2024-03-12T14:37:03.049Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656, upload-time = "2024-03-12T14:37:00.708Z" }, +] + +[[package]] +name = "jupyterlab" +version = "4.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "async-lru" }, + { name = "httpx" }, + { name = "ipykernel" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyter-lsp" }, + { name = "jupyter-server" }, + { name = "jupyterlab-server" }, + { name = "notebook-shim" }, + { name = "packaging" }, + { name = "setuptools" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/e5/4fa382a796a6d8e2cd867816b64f1ff27f906e43a7a83ad9eb389e448cd8/jupyterlab-4.5.0.tar.gz", hash = "sha256:aec33d6d8f1225b495ee2cf20f0514f45e6df8e360bdd7ac9bace0b7ac5177ea", size = 23989880, upload-time = "2025-11-18T13:19:00.365Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/1e/5a4d5498eba382fee667ed797cf64ae5d1b13b04356df62f067f48bb0f61/jupyterlab-4.5.0-py3-none-any.whl", hash = "sha256:88e157c75c1afff64c7dc4b801ec471450b922a4eae4305211ddd40da8201c8a", size = 12380641, upload-time = "2025-11-18T13:18:56.252Z" }, +] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload-time = "2023-11-23T09:26:37.44Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload-time = "2023-11-23T09:26:34.325Z" }, +] + +[[package]] +name = "jupyterlab-server" +version = "2.28.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "jinja2" }, + { name = "json5" }, + { name = "jsonschema" }, + { name = "jupyter-server" }, + { name = "packaging" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d6/2c/90153f189e421e93c4bb4f9e3f59802a1f01abd2ac5cf40b152d7f735232/jupyterlab_server-2.28.0.tar.gz", hash = "sha256:35baa81898b15f93573e2deca50d11ac0ae407ebb688299d3a5213265033712c", size = 76996, upload-time = "2025-10-22T13:59:18.37Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/07/a000fe835f76b7e1143242ab1122e6362ef1c03f23f83a045c38859c2ae0/jupyterlab_server-2.28.0-py3-none-any.whl", hash = "sha256:e4355b148fdcf34d312bbbc80f22467d6d20460e8b8736bf235577dd18506968", size = 59830, upload-time = "2025-10-22T13:59:16.767Z" }, +] + +[[package]] +name = "kirin-toolchain" +version = "0.21.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beartype" }, + { name = "rich" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/c2/f03fcb699cefa0846b2f0ede278fef86bd4ff4f85ce9282a65a6bde7fdf1/kirin_toolchain-0.21.0.tar.gz", hash = "sha256:ffe4a662decf40f4d0ff70b627fb9fe13a9e9161e878838569e0e3b812ed7e34", size = 1201198, upload-time = "2025-11-07T15:57:59.892Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/26/7e0b1eb0ba1d6bbc234988135925a4268bff774577d4f4335a769bc8f94c/kirin_toolchain-0.21.0-py3-none-any.whl", hash = "sha256:d7d91ee24386ee3fed820d3dff24f98abbd41f2ee2b005114bb8c69210781bc1", size = 250537, upload-time = "2025-11-07T15:57:57.976Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/3c/85844f1b0feb11ee581ac23fe5fce65cd049a200c1446708cc1b7f922875/kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d", size = 97564, upload-time = "2025-08-10T21:27:49.279Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/c1/c2686cda909742ab66c7388e9a1a8521a59eb89f8bcfbee28fc980d07e24/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8", size = 123681, upload-time = "2025-08-10T21:26:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/ca/f0/f44f50c9f5b1a1860261092e3bc91ecdc9acda848a8b8c6abfda4a24dd5c/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2", size = 66464, upload-time = "2025-08-10T21:26:27.733Z" }, + { url = "https://files.pythonhosted.org/packages/2d/7a/9d90a151f558e29c3936b8a47ac770235f436f2120aca41a6d5f3d62ae8d/kiwisolver-1.4.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f", size = 64961, upload-time = "2025-08-10T21:26:28.729Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e9/f218a2cb3a9ffbe324ca29a9e399fa2d2866d7f348ec3a88df87fc248fc5/kiwisolver-1.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b67e6efbf68e077dd71d1a6b37e43e1a99d0bff1a3d51867d45ee8908b931098", size = 1474607, upload-time = "2025-08-10T21:26:29.798Z" }, + { url = "https://files.pythonhosted.org/packages/d9/28/aac26d4c882f14de59041636292bc838db8961373825df23b8eeb807e198/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5656aa670507437af0207645273ccdfee4f14bacd7f7c67a4306d0dcaeaf6eed", size = 1276546, upload-time = "2025-08-10T21:26:31.401Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ad/8bfc1c93d4cc565e5069162f610ba2f48ff39b7de4b5b8d93f69f30c4bed/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bfc08add558155345129c7803b3671cf195e6a56e7a12f3dde7c57d9b417f525", size = 1294482, upload-time = "2025-08-10T21:26:32.721Z" }, + { url = "https://files.pythonhosted.org/packages/da/f1/6aca55ff798901d8ce403206d00e033191f63d82dd708a186e0ed2067e9c/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:40092754720b174e6ccf9e845d0d8c7d8e12c3d71e7fc35f55f3813e96376f78", size = 1343720, upload-time = "2025-08-10T21:26:34.032Z" }, + { url = "https://files.pythonhosted.org/packages/d1/91/eed031876c595c81d90d0f6fc681ece250e14bf6998c3d7c419466b523b7/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:497d05f29a1300d14e02e6441cf0f5ee81c1ff5a304b0d9fb77423974684e08b", size = 2224907, upload-time = "2025-08-10T21:26:35.824Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ec/4d1925f2e49617b9cca9c34bfa11adefad49d00db038e692a559454dfb2e/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdd1a81a1860476eb41ac4bc1e07b3f07259e6d55bbf739b79c8aaedcf512799", size = 2321334, upload-time = "2025-08-10T21:26:37.534Z" }, + { url = "https://files.pythonhosted.org/packages/43/cb/450cd4499356f68802750c6ddc18647b8ea01ffa28f50d20598e0befe6e9/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e6b93f13371d341afee3be9f7c5964e3fe61d5fa30f6a30eb49856935dfe4fc3", size = 2488313, upload-time = "2025-08-10T21:26:39.191Z" }, + { url = "https://files.pythonhosted.org/packages/71/67/fc76242bd99f885651128a5d4fa6083e5524694b7c88b489b1b55fdc491d/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d75aa530ccfaa593da12834b86a0724f58bff12706659baa9227c2ccaa06264c", size = 2291970, upload-time = "2025-08-10T21:26:40.828Z" }, + { url = "https://files.pythonhosted.org/packages/75/bd/f1a5d894000941739f2ae1b65a32892349423ad49c2e6d0771d0bad3fae4/kiwisolver-1.4.9-cp313-cp313-win_amd64.whl", hash = "sha256:dd0a578400839256df88c16abddf9ba14813ec5f21362e1fe65022e00c883d4d", size = 73894, upload-time = "2025-08-10T21:26:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/95/38/dce480814d25b99a391abbddadc78f7c117c6da34be68ca8b02d5848b424/kiwisolver-1.4.9-cp313-cp313-win_arm64.whl", hash = "sha256:d4188e73af84ca82468f09cadc5ac4db578109e52acb4518d8154698d3a87ca2", size = 64995, upload-time = "2025-08-10T21:26:43.889Z" }, + { url = "https://files.pythonhosted.org/packages/e2/37/7d218ce5d92dadc5ebdd9070d903e0c7cf7edfe03f179433ac4d13ce659c/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:5a0f2724dfd4e3b3ac5a82436a8e6fd16baa7d507117e4279b660fe8ca38a3a1", size = 126510, upload-time = "2025-08-10T21:26:44.915Z" }, + { url = "https://files.pythonhosted.org/packages/23/b0/e85a2b48233daef4b648fb657ebbb6f8367696a2d9548a00b4ee0eb67803/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1b11d6a633e4ed84fc0ddafd4ebfd8ea49b3f25082c04ad12b8315c11d504dc1", size = 67903, upload-time = "2025-08-10T21:26:45.934Z" }, + { url = "https://files.pythonhosted.org/packages/44/98/f2425bc0113ad7de24da6bb4dae1343476e95e1d738be7c04d31a5d037fd/kiwisolver-1.4.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61874cdb0a36016354853593cffc38e56fc9ca5aa97d2c05d3dcf6922cd55a11", size = 66402, upload-time = "2025-08-10T21:26:47.101Z" }, + { url = "https://files.pythonhosted.org/packages/98/d8/594657886df9f34c4177cc353cc28ca7e6e5eb562d37ccc233bff43bbe2a/kiwisolver-1.4.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:60c439763a969a6af93b4881db0eed8fadf93ee98e18cbc35bc8da868d0c4f0c", size = 1582135, upload-time = "2025-08-10T21:26:48.665Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c6/38a115b7170f8b306fc929e166340c24958347308ea3012c2b44e7e295db/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92a2f997387a1b79a75e7803aa7ded2cfbe2823852ccf1ba3bcf613b62ae3197", size = 1389409, upload-time = "2025-08-10T21:26:50.335Z" }, + { url = "https://files.pythonhosted.org/packages/bf/3b/e04883dace81f24a568bcee6eb3001da4ba05114afa622ec9b6fafdc1f5e/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a31d512c812daea6d8b3be3b2bfcbeb091dbb09177706569bcfc6240dcf8b41c", size = 1401763, upload-time = "2025-08-10T21:26:51.867Z" }, + { url = "https://files.pythonhosted.org/packages/9f/80/20ace48e33408947af49d7d15c341eaee69e4e0304aab4b7660e234d6288/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:52a15b0f35dad39862d376df10c5230155243a2c1a436e39eb55623ccbd68185", size = 1453643, upload-time = "2025-08-10T21:26:53.592Z" }, + { url = "https://files.pythonhosted.org/packages/64/31/6ce4380a4cd1f515bdda976a1e90e547ccd47b67a1546d63884463c92ca9/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a30fd6fdef1430fd9e1ba7b3398b5ee4e2887783917a687d86ba69985fb08748", size = 2330818, upload-time = "2025-08-10T21:26:55.051Z" }, + { url = "https://files.pythonhosted.org/packages/fa/e9/3f3fcba3bcc7432c795b82646306e822f3fd74df0ee81f0fa067a1f95668/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cc9617b46837c6468197b5945e196ee9ca43057bb7d9d1ae688101e4e1dddf64", size = 2419963, upload-time = "2025-08-10T21:26:56.421Z" }, + { url = "https://files.pythonhosted.org/packages/99/43/7320c50e4133575c66e9f7dadead35ab22d7c012a3b09bb35647792b2a6d/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:0ab74e19f6a2b027ea4f845a78827969af45ce790e6cb3e1ebab71bdf9f215ff", size = 2594639, upload-time = "2025-08-10T21:26:57.882Z" }, + { url = "https://files.pythonhosted.org/packages/65/d6/17ae4a270d4a987ef8a385b906d2bdfc9fce502d6dc0d3aea865b47f548c/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dba5ee5d3981160c28d5490f0d1b7ed730c22470ff7f6cc26cfcfaacb9896a07", size = 2391741, upload-time = "2025-08-10T21:26:59.237Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8f/8f6f491d595a9e5912971f3f863d81baddccc8a4d0c3749d6a0dd9ffc9df/kiwisolver-1.4.9-cp313-cp313t-win_arm64.whl", hash = "sha256:0749fd8f4218ad2e851e11cc4dc05c7cbc0cbc4267bdfdb31782e65aace4ee9c", size = 68646, upload-time = "2025-08-10T21:27:00.52Z" }, + { url = "https://files.pythonhosted.org/packages/6b/32/6cc0fbc9c54d06c2969faa9c1d29f5751a2e51809dd55c69055e62d9b426/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:9928fe1eb816d11ae170885a74d074f57af3a0d65777ca47e9aeb854a1fba386", size = 123806, upload-time = "2025-08-10T21:27:01.537Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/2bfb1d4a4823d92e8cbb420fe024b8d2167f72079b3bb941207c42570bdf/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d0005b053977e7b43388ddec89fa567f43d4f6d5c2c0affe57de5ebf290dc552", size = 66605, upload-time = "2025-08-10T21:27:03.335Z" }, + { url = "https://files.pythonhosted.org/packages/f7/69/00aafdb4e4509c2ca6064646cba9cd4b37933898f426756adb2cb92ebbed/kiwisolver-1.4.9-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2635d352d67458b66fd0667c14cb1d4145e9560d503219034a18a87e971ce4f3", size = 64925, upload-time = "2025-08-10T21:27:04.339Z" }, + { url = "https://files.pythonhosted.org/packages/43/dc/51acc6791aa14e5cb6d8a2e28cefb0dc2886d8862795449d021334c0df20/kiwisolver-1.4.9-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:767c23ad1c58c9e827b649a9ab7809fd5fd9db266a9cf02b0e926ddc2c680d58", size = 1472414, upload-time = "2025-08-10T21:27:05.437Z" }, + { url = "https://files.pythonhosted.org/packages/3d/bb/93fa64a81db304ac8a246f834d5094fae4b13baf53c839d6bb6e81177129/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72d0eb9fba308b8311685c2268cf7d0a0639a6cd027d8128659f72bdd8a024b4", size = 1281272, upload-time = "2025-08-10T21:27:07.063Z" }, + { url = "https://files.pythonhosted.org/packages/70/e6/6df102916960fb8d05069d4bd92d6d9a8202d5a3e2444494e7cd50f65b7a/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f68e4f3eeca8fb22cc3d731f9715a13b652795ef657a13df1ad0c7dc0e9731df", size = 1298578, upload-time = "2025-08-10T21:27:08.452Z" }, + { url = "https://files.pythonhosted.org/packages/7c/47/e142aaa612f5343736b087864dbaebc53ea8831453fb47e7521fa8658f30/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d84cd4061ae292d8ac367b2c3fa3aad11cb8625a95d135fe93f286f914f3f5a6", size = 1345607, upload-time = "2025-08-10T21:27:10.125Z" }, + { url = "https://files.pythonhosted.org/packages/54/89/d641a746194a0f4d1a3670fb900d0dbaa786fb98341056814bc3f058fa52/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a60ea74330b91bd22a29638940d115df9dc00af5035a9a2a6ad9399ffb4ceca5", size = 2230150, upload-time = "2025-08-10T21:27:11.484Z" }, + { url = "https://files.pythonhosted.org/packages/aa/6b/5ee1207198febdf16ac11f78c5ae40861b809cbe0e6d2a8d5b0b3044b199/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ce6a3a4e106cf35c2d9c4fa17c05ce0b180db622736845d4315519397a77beaf", size = 2325979, upload-time = "2025-08-10T21:27:12.917Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ff/b269eefd90f4ae14dcc74973d5a0f6d28d3b9bb1afd8c0340513afe6b39a/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:77937e5e2a38a7b48eef0585114fe7930346993a88060d0bf886086d2aa49ef5", size = 2491456, upload-time = "2025-08-10T21:27:14.353Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d4/10303190bd4d30de547534601e259a4fbf014eed94aae3e5521129215086/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:24c175051354f4a28c5d6a31c93906dc653e2bf234e8a4bbfb964892078898ce", size = 2294621, upload-time = "2025-08-10T21:27:15.808Z" }, + { url = "https://files.pythonhosted.org/packages/28/e0/a9a90416fce5c0be25742729c2ea52105d62eda6c4be4d803c2a7be1fa50/kiwisolver-1.4.9-cp314-cp314-win_amd64.whl", hash = "sha256:0763515d4df10edf6d06a3c19734e2566368980d21ebec439f33f9eb936c07b7", size = 75417, upload-time = "2025-08-10T21:27:17.436Z" }, + { url = "https://files.pythonhosted.org/packages/1f/10/6949958215b7a9a264299a7db195564e87900f709db9245e4ebdd3c70779/kiwisolver-1.4.9-cp314-cp314-win_arm64.whl", hash = "sha256:0e4e2bf29574a6a7b7f6cb5fa69293b9f96c928949ac4a53ba3f525dffb87f9c", size = 66582, upload-time = "2025-08-10T21:27:18.436Z" }, + { url = "https://files.pythonhosted.org/packages/ec/79/60e53067903d3bc5469b369fe0dfc6b3482e2133e85dae9daa9527535991/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d976bbb382b202f71c67f77b0ac11244021cfa3f7dfd9e562eefcea2df711548", size = 126514, upload-time = "2025-08-10T21:27:19.465Z" }, + { url = "https://files.pythonhosted.org/packages/25/d1/4843d3e8d46b072c12a38c97c57fab4608d36e13fe47d47ee96b4d61ba6f/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2489e4e5d7ef9a1c300a5e0196e43d9c739f066ef23270607d45aba368b91f2d", size = 67905, upload-time = "2025-08-10T21:27:20.51Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ae/29ffcbd239aea8b93108de1278271ae764dfc0d803a5693914975f200596/kiwisolver-1.4.9-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e2ea9f7ab7fbf18fffb1b5434ce7c69a07582f7acc7717720f1d69f3e806f90c", size = 66399, upload-time = "2025-08-10T21:27:21.496Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ae/d7ba902aa604152c2ceba5d352d7b62106bedbccc8e95c3934d94472bfa3/kiwisolver-1.4.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b34e51affded8faee0dfdb705416153819d8ea9250bbbf7ea1b249bdeb5f1122", size = 1582197, upload-time = "2025-08-10T21:27:22.604Z" }, + { url = "https://files.pythonhosted.org/packages/f2/41/27c70d427eddb8bc7e4f16420a20fefc6f480312122a59a959fdfe0445ad/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8aacd3d4b33b772542b2e01beb50187536967b514b00003bdda7589722d2a64", size = 1390125, upload-time = "2025-08-10T21:27:24.036Z" }, + { url = "https://files.pythonhosted.org/packages/41/42/b3799a12bafc76d962ad69083f8b43b12bf4fe78b097b12e105d75c9b8f1/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7cf974dd4e35fa315563ac99d6287a1024e4dc2077b8a7d7cd3d2fb65d283134", size = 1402612, upload-time = "2025-08-10T21:27:25.773Z" }, + { url = "https://files.pythonhosted.org/packages/d2/b5/a210ea073ea1cfaca1bb5c55a62307d8252f531beb364e18aa1e0888b5a0/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:85bd218b5ecfbee8c8a82e121802dcb519a86044c9c3b2e4aef02fa05c6da370", size = 1453990, upload-time = "2025-08-10T21:27:27.089Z" }, + { url = "https://files.pythonhosted.org/packages/5f/ce/a829eb8c033e977d7ea03ed32fb3c1781b4fa0433fbadfff29e39c676f32/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0856e241c2d3df4efef7c04a1e46b1936b6120c9bcf36dd216e3acd84bc4fb21", size = 2331601, upload-time = "2025-08-10T21:27:29.343Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4b/b5e97eb142eb9cd0072dacfcdcd31b1c66dc7352b0f7c7255d339c0edf00/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9af39d6551f97d31a4deebeac6f45b156f9755ddc59c07b402c148f5dbb6482a", size = 2422041, upload-time = "2025-08-10T21:27:30.754Z" }, + { url = "https://files.pythonhosted.org/packages/40/be/8eb4cd53e1b85ba4edc3a9321666f12b83113a178845593307a3e7891f44/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:bb4ae2b57fc1d8cbd1cf7b1d9913803681ffa903e7488012be5b76dedf49297f", size = 2594897, upload-time = "2025-08-10T21:27:32.803Z" }, + { url = "https://files.pythonhosted.org/packages/99/dd/841e9a66c4715477ea0abc78da039832fbb09dac5c35c58dc4c41a407b8a/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:aedff62918805fb62d43a4aa2ecd4482c380dc76cd31bd7c8878588a61bd0369", size = 2391835, upload-time = "2025-08-10T21:27:34.23Z" }, + { url = "https://files.pythonhosted.org/packages/0c/28/4b2e5c47a0da96896fdfdb006340ade064afa1e63675d01ea5ac222b6d52/kiwisolver-1.4.9-cp314-cp314t-win_amd64.whl", hash = "sha256:1fa333e8b2ce4d9660f2cda9c0e1b6bafcfb2457a9d259faa82289e73ec24891", size = 79988, upload-time = "2025-08-10T21:27:35.587Z" }, + { url = "https://files.pythonhosted.org/packages/80/be/3578e8afd18c88cdf9cb4cffde75a96d2be38c5a903f1ed0ceec061bd09e/kiwisolver-1.4.9-cp314-cp314t-win_arm64.whl", hash = "sha256:4a48a2ce79d65d363597ef7b567ce3d14d68783d2b2263d98db3d9477805ba32", size = 70260, upload-time = "2025-08-10T21:27:36.606Z" }, +] + +[[package]] +name = "lark" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/34/28fff3ab31ccff1fd4f6c7c7b0ceb2b6968d8ea4950663eadcb5720591a0/lark-1.3.1.tar.gz", hash = "sha256:b426a7a6d6d53189d318f2b6236ab5d6429eaf09259f1ca33eb716eed10d2905", size = 382732, upload-time = "2025-10-27T18:25:56.653Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/3d/14ce75ef66813643812f3093ab17e46d3a206942ce7376d31ec2d36229e7/lark-1.3.1-py3-none-any.whl", hash = "sha256:c629b661023a014c37da873b4ff58a817398d12635d3bbb2c5a03be7fe5d1e12", size = 113151, upload-time = "2025-10-27T18:25:54.882Z" }, +] + +[[package]] +name = "llvmlite" +version = "0.45.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/99/8d/5baf1cef7f9c084fb35a8afbde88074f0d6a727bc63ef764fe0e7543ba40/llvmlite-0.45.1.tar.gz", hash = "sha256:09430bb9d0bb58fc45a45a57c7eae912850bedc095cd0810a57de109c69e1c32", size = 185600, upload-time = "2025-10-01T17:59:52.046Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/e2/c185bb7e88514d5025f93c6c4092f6120c6cea8fe938974ec9860fb03bbb/llvmlite-0.45.1-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:d9ea9e6f17569a4253515cc01dade70aba536476e3d750b2e18d81d7e670eb15", size = 43043524, upload-time = "2025-10-01T18:03:43.249Z" }, + { url = "https://files.pythonhosted.org/packages/09/b8/b5437b9ecb2064e89ccf67dccae0d02cd38911705112dd0dcbfa9cd9a9de/llvmlite-0.45.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:c9f3cadee1630ce4ac18ea38adebf2a4f57a89bd2740ce83746876797f6e0bfb", size = 37253121, upload-time = "2025-10-01T18:04:30.557Z" }, + { url = "https://files.pythonhosted.org/packages/f7/97/ad1a907c0173a90dd4df7228f24a3ec61058bc1a9ff8a0caec20a0cc622e/llvmlite-0.45.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:57c48bf2e1083eedbc9406fb83c4e6483017879714916fe8be8a72a9672c995a", size = 56288210, upload-time = "2025-10-01T18:01:40.26Z" }, + { url = "https://files.pythonhosted.org/packages/32/d8/c99c8ac7a326e9735401ead3116f7685a7ec652691aeb2615aa732b1fc4a/llvmlite-0.45.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3aa3dfceda4219ae39cf18806c60eeb518c1680ff834b8b311bd784160b9ce40", size = 55140957, upload-time = "2025-10-01T18:02:46.244Z" }, + { url = "https://files.pythonhosted.org/packages/09/56/ed35668130e32dbfad2eb37356793b0a95f23494ab5be7d9bf5cb75850ee/llvmlite-0.45.1-cp313-cp313-win_amd64.whl", hash = "sha256:080e6f8d0778a8239cd47686d402cb66eb165e421efa9391366a9b7e5810a38b", size = 38132232, upload-time = "2025-10-01T18:05:14.477Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.10.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/e2/d2d5295be2f44c678ebaf3544ba32d20c1f9ef08c49fe47f496180e1db15/matplotlib-3.10.7.tar.gz", hash = "sha256:a06ba7e2a2ef9131c79c49e63dad355d2d878413a0376c1727c8b9335ff731c7", size = 34804865, upload-time = "2025-10-09T00:28:00.669Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/9c/207547916a02c78f6bdd83448d9b21afbc42f6379ed887ecf610984f3b4e/matplotlib-3.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1d9d3713a237970569156cfb4de7533b7c4eacdd61789726f444f96a0d28f57f", size = 8273212, upload-time = "2025-10-09T00:26:56.752Z" }, + { url = "https://files.pythonhosted.org/packages/bc/d0/b3d3338d467d3fc937f0bb7f256711395cae6f78e22cef0656159950adf0/matplotlib-3.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:37a1fea41153dd6ee061d21ab69c9cf2cf543160b1b85d89cd3d2e2a7902ca4c", size = 8128713, upload-time = "2025-10-09T00:26:59.001Z" }, + { url = "https://files.pythonhosted.org/packages/22/ff/6425bf5c20d79aa5b959d1ce9e65f599632345391381c9a104133fe0b171/matplotlib-3.10.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b3c4ea4948d93c9c29dc01c0c23eef66f2101bf75158c291b88de6525c55c3d1", size = 8698527, upload-time = "2025-10-09T00:27:00.69Z" }, + { url = "https://files.pythonhosted.org/packages/d0/7f/ccdca06f4c2e6c7989270ed7829b8679466682f4cfc0f8c9986241c023b6/matplotlib-3.10.7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22df30ffaa89f6643206cf13877191c63a50e8f800b038bc39bee9d2d4957632", size = 9529690, upload-time = "2025-10-09T00:27:02.664Z" }, + { url = "https://files.pythonhosted.org/packages/b8/95/b80fc2c1f269f21ff3d193ca697358e24408c33ce2b106a7438a45407b63/matplotlib-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b69676845a0a66f9da30e87f48be36734d6748024b525ec4710be40194282c84", size = 9593732, upload-time = "2025-10-09T00:27:04.653Z" }, + { url = "https://files.pythonhosted.org/packages/e1/b6/23064a96308b9aeceeffa65e96bcde459a2ea4934d311dee20afde7407a0/matplotlib-3.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:744991e0cc863dd669c8dc9136ca4e6e0082be2070b9d793cbd64bec872a6815", size = 8122727, upload-time = "2025-10-09T00:27:06.814Z" }, + { url = "https://files.pythonhosted.org/packages/b3/a6/2faaf48133b82cf3607759027f82b5c702aa99cdfcefb7f93d6ccf26a424/matplotlib-3.10.7-cp313-cp313-win_arm64.whl", hash = "sha256:fba2974df0bf8ce3c995fa84b79cde38326e0f7b5409e7a3a481c1141340bcf7", size = 7992958, upload-time = "2025-10-09T00:27:08.567Z" }, + { url = "https://files.pythonhosted.org/packages/4a/f0/b018fed0b599bd48d84c08794cb242227fe3341952da102ee9d9682db574/matplotlib-3.10.7-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:932c55d1fa7af4423422cb6a492a31cbcbdbe68fd1a9a3f545aa5e7a143b5355", size = 8316849, upload-time = "2025-10-09T00:27:10.254Z" }, + { url = "https://files.pythonhosted.org/packages/b0/b7/bb4f23856197659f275e11a2a164e36e65e9b48ea3e93c4ec25b4f163198/matplotlib-3.10.7-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e38c2d581d62ee729a6e144c47a71b3f42fb4187508dbbf4fe71d5612c3433b", size = 8178225, upload-time = "2025-10-09T00:27:12.241Z" }, + { url = "https://files.pythonhosted.org/packages/62/56/0600609893ff277e6f3ab3c0cef4eafa6e61006c058e84286c467223d4d5/matplotlib-3.10.7-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:786656bb13c237bbcebcd402f65f44dd61ead60ee3deb045af429d889c8dbc67", size = 8711708, upload-time = "2025-10-09T00:27:13.879Z" }, + { url = "https://files.pythonhosted.org/packages/d8/1a/6bfecb0cafe94d6658f2f1af22c43b76cf7a1c2f0dc34ef84cbb6809617e/matplotlib-3.10.7-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09d7945a70ea43bf9248f4b6582734c2fe726723204a76eca233f24cffc7ef67", size = 9541409, upload-time = "2025-10-09T00:27:15.684Z" }, + { url = "https://files.pythonhosted.org/packages/08/50/95122a407d7f2e446fd865e2388a232a23f2b81934960ea802f3171518e4/matplotlib-3.10.7-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d0b181e9fa8daf1d9f2d4c547527b167cb8838fc587deabca7b5c01f97199e84", size = 9594054, upload-time = "2025-10-09T00:27:17.547Z" }, + { url = "https://files.pythonhosted.org/packages/13/76/75b194a43b81583478a81e78a07da8d9ca6ddf50dd0a2ccabf258059481d/matplotlib-3.10.7-cp313-cp313t-win_amd64.whl", hash = "sha256:31963603041634ce1a96053047b40961f7a29eb8f9a62e80cc2c0427aa1d22a2", size = 8200100, upload-time = "2025-10-09T00:27:20.039Z" }, + { url = "https://files.pythonhosted.org/packages/f5/9e/6aefebdc9f8235c12bdeeda44cc0383d89c1e41da2c400caf3ee2073a3ce/matplotlib-3.10.7-cp313-cp313t-win_arm64.whl", hash = "sha256:aebed7b50aa6ac698c90f60f854b47e48cd2252b30510e7a1feddaf5a3f72cbf", size = 8042131, upload-time = "2025-10-09T00:27:21.608Z" }, + { url = "https://files.pythonhosted.org/packages/0d/4b/e5bc2c321b6a7e3a75638d937d19ea267c34bd5a90e12bee76c4d7c7a0d9/matplotlib-3.10.7-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d883460c43e8c6b173fef244a2341f7f7c0e9725c7fe68306e8e44ed9c8fb100", size = 8273787, upload-time = "2025-10-09T00:27:23.27Z" }, + { url = "https://files.pythonhosted.org/packages/86/ad/6efae459c56c2fbc404da154e13e3a6039129f3c942b0152624f1c621f05/matplotlib-3.10.7-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:07124afcf7a6504eafcb8ce94091c5898bbdd351519a1beb5c45f7a38c67e77f", size = 8131348, upload-time = "2025-10-09T00:27:24.926Z" }, + { url = "https://files.pythonhosted.org/packages/a6/5a/a4284d2958dee4116359cc05d7e19c057e64ece1b4ac986ab0f2f4d52d5a/matplotlib-3.10.7-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c17398b709a6cce3d9fdb1595c33e356d91c098cd9486cb2cc21ea2ea418e715", size = 9533949, upload-time = "2025-10-09T00:27:26.704Z" }, + { url = "https://files.pythonhosted.org/packages/de/ff/f3781b5057fa3786623ad8976fc9f7b0d02b2f28534751fd5a44240de4cf/matplotlib-3.10.7-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7146d64f561498764561e9cd0ed64fcf582e570fc519e6f521e2d0cfd43365e1", size = 9804247, upload-time = "2025-10-09T00:27:28.514Z" }, + { url = "https://files.pythonhosted.org/packages/47/5a/993a59facb8444efb0e197bf55f545ee449902dcee86a4dfc580c3b61314/matplotlib-3.10.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:90ad854c0a435da3104c01e2c6f0028d7e719b690998a2333d7218db80950722", size = 9595497, upload-time = "2025-10-09T00:27:30.418Z" }, + { url = "https://files.pythonhosted.org/packages/0d/a5/77c95aaa9bb32c345cbb49626ad8eb15550cba2e6d4c88081a6c2ac7b08d/matplotlib-3.10.7-cp314-cp314-win_amd64.whl", hash = "sha256:4645fc5d9d20ffa3a39361fcdbcec731382763b623b72627806bf251b6388866", size = 8252732, upload-time = "2025-10-09T00:27:32.332Z" }, + { url = "https://files.pythonhosted.org/packages/74/04/45d269b4268d222390d7817dae77b159651909669a34ee9fdee336db5883/matplotlib-3.10.7-cp314-cp314-win_arm64.whl", hash = "sha256:9257be2f2a03415f9105c486d304a321168e61ad450f6153d77c69504ad764bb", size = 8124240, upload-time = "2025-10-09T00:27:33.94Z" }, + { url = "https://files.pythonhosted.org/packages/4b/c7/ca01c607bb827158b439208c153d6f14ddb9fb640768f06f7ca3488ae67b/matplotlib-3.10.7-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1e4bbad66c177a8fdfa53972e5ef8be72a5f27e6a607cec0d8579abd0f3102b1", size = 8316938, upload-time = "2025-10-09T00:27:35.534Z" }, + { url = "https://files.pythonhosted.org/packages/84/d2/5539e66e9f56d2fdec94bb8436f5e449683b4e199bcc897c44fbe3c99e28/matplotlib-3.10.7-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d8eb7194b084b12feb19142262165832fc6ee879b945491d1c3d4660748020c4", size = 8178245, upload-time = "2025-10-09T00:27:37.334Z" }, + { url = "https://files.pythonhosted.org/packages/77/b5/e6ca22901fd3e4fe433a82e583436dd872f6c966fca7e63cf806b40356f8/matplotlib-3.10.7-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4d41379b05528091f00e1728004f9a8d7191260f3862178b88e8fd770206318", size = 9541411, upload-time = "2025-10-09T00:27:39.387Z" }, + { url = "https://files.pythonhosted.org/packages/9e/99/a4524db57cad8fee54b7237239a8f8360bfcfa3170d37c9e71c090c0f409/matplotlib-3.10.7-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4a74f79fafb2e177f240579bc83f0b60f82cc47d2f1d260f422a0627207008ca", size = 9803664, upload-time = "2025-10-09T00:27:41.492Z" }, + { url = "https://files.pythonhosted.org/packages/e6/a5/85e2edf76ea0ad4288d174926d9454ea85f3ce5390cc4e6fab196cbf250b/matplotlib-3.10.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:702590829c30aada1e8cef0568ddbffa77ca747b4d6e36c6d173f66e301f89cc", size = 9594066, upload-time = "2025-10-09T00:27:43.694Z" }, + { url = "https://files.pythonhosted.org/packages/39/69/9684368a314f6d83fe5c5ad2a4121a3a8e03723d2e5c8ea17b66c1bad0e7/matplotlib-3.10.7-cp314-cp314t-win_amd64.whl", hash = "sha256:f79d5de970fc90cd5591f60053aecfce1fcd736e0303d9f0bf86be649fa68fb8", size = 8342832, upload-time = "2025-10-09T00:27:45.543Z" }, + { url = "https://files.pythonhosted.org/packages/04/5f/e22e08da14bc1a0894184640d47819d2338b792732e20d292bf86e5ab785/matplotlib-3.10.7-cp314-cp314t-win_arm64.whl", hash = "sha256:cb783436e47fcf82064baca52ce748af71725d0352e1d31564cbe9c95df92b9c", size = 8172585, upload-time = "2025-10-09T00:27:47.185Z" }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/74/97e72a36efd4ae2bccb3463284300f8953f199b5ffbc04cbbb0ec78f74b1/matplotlib_inline-0.2.1.tar.gz", hash = "sha256:e1ee949c340d771fc39e241ea75683deb94762c8fa5f2927ec57c83c4dffa9fe", size = 8110, upload-time = "2025-10-23T09:00:22.126Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/33/ee4519fa02ed11a94aef9559552f3b17bb863f2ecfe1a35dc7f548cde231/matplotlib_inline-0.2.1-py3-none-any.whl", hash = "sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76", size = 9516, upload-time = "2025-10-23T09:00:20.675Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "mistune" +version = "3.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/02/a7fb8b21d4d55ac93cdcde9d3638da5dd0ebdd3a4fed76c7725e10b81cbe/mistune-3.1.4.tar.gz", hash = "sha256:b5a7f801d389f724ec702840c11d8fc48f2b33519102fc7ee739e8177b672164", size = 94588, upload-time = "2025-08-29T07:20:43.594Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/f0/8282d9641415e9e33df173516226b404d367a0fc55e1a60424a152913abc/mistune-3.1.4-py3-none-any.whl", hash = "sha256:93691da911e5d9d2e23bc54472892aff676df27a75274962ff9edc210364266d", size = 53481, upload-time = "2025-08-29T07:20:42.218Z" }, +] + +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "narwhals" +version = "2.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/93/f8/e1c28f24b641871c14ccae7ba6381f3c7827789a06e947ce975ae8a9075a/narwhals-2.12.0.tar.gz", hash = "sha256:075b6d56f3a222613793e025744b129439ecdff9292ea6615dd983af7ba6ea44", size = 590404, upload-time = "2025-11-17T10:53:28.381Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/9a/c6f79de7ba3a0a8473129936b7b90aa461d3d46fec6f1627672b1dccf4e9/narwhals-2.12.0-py3-none-any.whl", hash = "sha256:baeba5d448a30b04c299a696bd9ee5ff73e4742143e06c49ca316b46539a7cbb", size = 425014, upload-time = "2025-11-17T10:53:26.65Z" }, +] + +[[package]] +name = "nbclient" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "nbformat" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload-time = "2024-12-19T10:32:27.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload-time = "2024-12-19T10:32:24.139Z" }, +] + +[[package]] +name = "nbconvert" +version = "7.16.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "bleach", extra = ["css"] }, + { name = "defusedxml" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyterlab-pygments" }, + { name = "markupsafe" }, + { name = "mistune" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "pandocfilters" }, + { name = "pygments" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload-time = "2025-01-28T09:29:14.724Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload-time = "2025-01-28T09:29:12.551Z" }, +] + +[[package]] +name = "nbformat" +version = "5.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastjsonschema" }, + { name = "jsonschema" }, + { name = "jupyter-core" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, +] + +[[package]] +name = "networkx" +version = "3.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065, upload-time = "2025-05-29T11:35:07.804Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload-time = "2025-05-29T11:35:04.961Z" }, +] + +[[package]] +name = "notebook" +version = "7.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, + { name = "jupyterlab" }, + { name = "jupyterlab-server" }, + { name = "notebook-shim" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/ac/a97041621250a4fc5af379fb377942841eea2ca146aab166b8fcdfba96c2/notebook-7.5.0.tar.gz", hash = "sha256:3b27eaf9913033c28dde92d02139414c608992e1df4b969c843219acf2ff95e4", size = 14052074, upload-time = "2025-11-19T08:36:20.093Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/96/00df2a4760f10f5af0f45c4955573cae6189931f9a30265a35865f8c1031/notebook-7.5.0-py3-none-any.whl", hash = "sha256:3300262d52905ca271bd50b22617681d95f08a8360d099e097726e6d2efb5811", size = 14460968, upload-time = "2025-11-19T08:36:15.869Z" }, +] + +[[package]] +name = "notebook-shim" +version = "0.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167, upload-time = "2024-02-14T23:35:18.353Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307, upload-time = "2024-02-14T23:35:16.286Z" }, +] + +[[package]] +name = "numba" +version = "0.62.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llvmlite" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/20/33dbdbfe60e5fd8e3dbfde299d106279a33d9f8308346022316781368591/numba-0.62.1.tar.gz", hash = "sha256:7b774242aa890e34c21200a1fc62e5b5757d5286267e71103257f4e2af0d5161", size = 2749817, upload-time = "2025-09-29T10:46:31.551Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/76/501ea2c07c089ef1386868f33dff2978f43f51b854e34397b20fc55e0a58/numba-0.62.1-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:b72489ba8411cc9fdcaa2458d8f7677751e94f0109eeb53e5becfdc818c64afb", size = 2685766, upload-time = "2025-09-29T10:43:49.161Z" }, + { url = "https://files.pythonhosted.org/packages/80/68/444986ed95350c0611d5c7b46828411c222ce41a0c76707c36425d27ce29/numba-0.62.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:44a1412095534a26fb5da2717bc755b57da5f3053965128fe3dc286652cc6a92", size = 2688741, upload-time = "2025-09-29T10:44:10.07Z" }, + { url = "https://files.pythonhosted.org/packages/78/7e/bf2e3634993d57f95305c7cee4c9c6cb3c9c78404ee7b49569a0dfecfe33/numba-0.62.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8c9460b9e936c5bd2f0570e20a0a5909ee6e8b694fd958b210e3bde3a6dba2d7", size = 3804576, upload-time = "2025-09-29T10:42:59.53Z" }, + { url = "https://files.pythonhosted.org/packages/e8/b6/8a1723fff71f63bbb1354bdc60a1513a068acc0f5322f58da6f022d20247/numba-0.62.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:728f91a874192df22d74e3fd42c12900b7ce7190b1aad3574c6c61b08313e4c5", size = 3503367, upload-time = "2025-09-29T10:43:26.326Z" }, + { url = "https://files.pythonhosted.org/packages/9c/ec/9d414e7a80d6d1dc4af0e07c6bfe293ce0b04ea4d0ed6c45dad9bd6e72eb/numba-0.62.1-cp313-cp313-win_amd64.whl", hash = "sha256:bbf3f88b461514287df66bc8d0307e949b09f2b6f67da92265094e8fa1282dd8", size = 2745529, upload-time = "2025-09-29T10:44:31.738Z" }, +] + +[[package]] +name = "numpy" +version = "2.3.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/65/21b3bc86aac7b8f2862db1e808f1ea22b028e30a225a34a5ede9bf8678f2/numpy-2.3.5.tar.gz", hash = "sha256:784db1dcdab56bf0517743e746dfb0f885fc68d948aba86eeec2cba234bdf1c0", size = 20584950, upload-time = "2025-11-16T22:52:42.067Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/69/9cde09f36da4b5a505341180a3f2e6fadc352fd4d2b7096ce9778db83f1a/numpy-2.3.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d0f23b44f57077c1ede8c5f26b30f706498b4862d3ff0a7298b8411dd2f043ff", size = 16728251, upload-time = "2025-11-16T22:50:19.013Z" }, + { url = "https://files.pythonhosted.org/packages/79/fb/f505c95ceddd7027347b067689db71ca80bd5ecc926f913f1a23e65cf09b/numpy-2.3.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:aa5bc7c5d59d831d9773d1170acac7893ce3a5e130540605770ade83280e7188", size = 12254652, upload-time = "2025-11-16T22:50:21.487Z" }, + { url = "https://files.pythonhosted.org/packages/78/da/8c7738060ca9c31b30e9301ee0cf6c5ffdbf889d9593285a1cead337f9a5/numpy-2.3.5-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:ccc933afd4d20aad3c00bcef049cb40049f7f196e0397f1109dba6fed63267b0", size = 5083172, upload-time = "2025-11-16T22:50:24.562Z" }, + { url = "https://files.pythonhosted.org/packages/a4/b4/ee5bb2537fb9430fd2ef30a616c3672b991a4129bb1c7dcc42aa0abbe5d7/numpy-2.3.5-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:afaffc4393205524af9dfa400fa250143a6c3bc646c08c9f5e25a9f4b4d6a903", size = 6622990, upload-time = "2025-11-16T22:50:26.47Z" }, + { url = "https://files.pythonhosted.org/packages/95/03/dc0723a013c7d7c19de5ef29e932c3081df1c14ba582b8b86b5de9db7f0f/numpy-2.3.5-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c75442b2209b8470d6d5d8b1c25714270686f14c749028d2199c54e29f20b4d", size = 14248902, upload-time = "2025-11-16T22:50:28.861Z" }, + { url = "https://files.pythonhosted.org/packages/f5/10/ca162f45a102738958dcec8023062dad0cbc17d1ab99d68c4e4a6c45fb2b/numpy-2.3.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11e06aa0af8c0f05104d56450d6093ee639e15f24ecf62d417329d06e522e017", size = 16597430, upload-time = "2025-11-16T22:50:31.56Z" }, + { url = "https://files.pythonhosted.org/packages/2a/51/c1e29be863588db58175175f057286900b4b3327a1351e706d5e0f8dd679/numpy-2.3.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed89927b86296067b4f81f108a2271d8926467a8868e554eaf370fc27fa3ccaf", size = 16024551, upload-time = "2025-11-16T22:50:34.242Z" }, + { url = "https://files.pythonhosted.org/packages/83/68/8236589d4dbb87253d28259d04d9b814ec0ecce7cb1c7fed29729f4c3a78/numpy-2.3.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51c55fe3451421f3a6ef9a9c1439e82101c57a2c9eab9feb196a62b1a10b58ce", size = 18533275, upload-time = "2025-11-16T22:50:37.651Z" }, + { url = "https://files.pythonhosted.org/packages/40/56/2932d75b6f13465239e3b7b7e511be27f1b8161ca2510854f0b6e521c395/numpy-2.3.5-cp313-cp313-win32.whl", hash = "sha256:1978155dd49972084bd6ef388d66ab70f0c323ddee6f693d539376498720fb7e", size = 6277637, upload-time = "2025-11-16T22:50:40.11Z" }, + { url = "https://files.pythonhosted.org/packages/0c/88/e2eaa6cffb115b85ed7c7c87775cb8bcf0816816bc98ca8dbfa2ee33fe6e/numpy-2.3.5-cp313-cp313-win_amd64.whl", hash = "sha256:00dc4e846108a382c5869e77c6ed514394bdeb3403461d25a829711041217d5b", size = 12779090, upload-time = "2025-11-16T22:50:42.503Z" }, + { url = "https://files.pythonhosted.org/packages/8f/88/3f41e13a44ebd4034ee17baa384acac29ba6a4fcc2aca95f6f08ca0447d1/numpy-2.3.5-cp313-cp313-win_arm64.whl", hash = "sha256:0472f11f6ec23a74a906a00b48a4dcf3849209696dff7c189714511268d103ae", size = 10194710, upload-time = "2025-11-16T22:50:44.971Z" }, + { url = "https://files.pythonhosted.org/packages/13/cb/71744144e13389d577f867f745b7df2d8489463654a918eea2eeb166dfc9/numpy-2.3.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:414802f3b97f3c1eef41e530aaba3b3c1620649871d8cb38c6eaff034c2e16bd", size = 16827292, upload-time = "2025-11-16T22:50:47.715Z" }, + { url = "https://files.pythonhosted.org/packages/71/80/ba9dc6f2a4398e7f42b708a7fdc841bb638d353be255655498edbf9a15a8/numpy-2.3.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5ee6609ac3604fa7780e30a03e5e241a7956f8e2fcfe547d51e3afa5247ac47f", size = 12378897, upload-time = "2025-11-16T22:50:51.327Z" }, + { url = "https://files.pythonhosted.org/packages/2e/6d/db2151b9f64264bcceccd51741aa39b50150de9b602d98ecfe7e0c4bff39/numpy-2.3.5-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:86d835afea1eaa143012a2d7a3f45a3adce2d7adc8b4961f0b362214d800846a", size = 5207391, upload-time = "2025-11-16T22:50:54.542Z" }, + { url = "https://files.pythonhosted.org/packages/80/ae/429bacace5ccad48a14c4ae5332f6aa8ab9f69524193511d60ccdfdc65fa/numpy-2.3.5-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:30bc11310e8153ca664b14c5f1b73e94bd0503681fcf136a163de856f3a50139", size = 6721275, upload-time = "2025-11-16T22:50:56.794Z" }, + { url = "https://files.pythonhosted.org/packages/74/5b/1919abf32d8722646a38cd527bc3771eb229a32724ee6ba340ead9b92249/numpy-2.3.5-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1062fde1dcf469571705945b0f221b73928f34a20c904ffb45db101907c3454e", size = 14306855, upload-time = "2025-11-16T22:50:59.208Z" }, + { url = "https://files.pythonhosted.org/packages/a5/87/6831980559434973bebc30cd9c1f21e541a0f2b0c280d43d3afd909b66d0/numpy-2.3.5-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce581db493ea1a96c0556360ede6607496e8bf9b3a8efa66e06477267bc831e9", size = 16657359, upload-time = "2025-11-16T22:51:01.991Z" }, + { url = "https://files.pythonhosted.org/packages/dd/91/c797f544491ee99fd00495f12ebb7802c440c1915811d72ac5b4479a3356/numpy-2.3.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:cc8920d2ec5fa99875b670bb86ddeb21e295cb07aa331810d9e486e0b969d946", size = 16093374, upload-time = "2025-11-16T22:51:05.291Z" }, + { url = "https://files.pythonhosted.org/packages/74/a6/54da03253afcbe7a72785ec4da9c69fb7a17710141ff9ac5fcb2e32dbe64/numpy-2.3.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:9ee2197ef8c4f0dfe405d835f3b6a14f5fee7782b5de51ba06fb65fc9b36e9f1", size = 18594587, upload-time = "2025-11-16T22:51:08.585Z" }, + { url = "https://files.pythonhosted.org/packages/80/e9/aff53abbdd41b0ecca94285f325aff42357c6b5abc482a3fcb4994290b18/numpy-2.3.5-cp313-cp313t-win32.whl", hash = "sha256:70b37199913c1bd300ff6e2693316c6f869c7ee16378faf10e4f5e3275b299c3", size = 6405940, upload-time = "2025-11-16T22:51:11.541Z" }, + { url = "https://files.pythonhosted.org/packages/d5/81/50613fec9d4de5480de18d4f8ef59ad7e344d497edbef3cfd80f24f98461/numpy-2.3.5-cp313-cp313t-win_amd64.whl", hash = "sha256:b501b5fa195cc9e24fe102f21ec0a44dffc231d2af79950b451e0d99cea02234", size = 12920341, upload-time = "2025-11-16T22:51:14.312Z" }, + { url = "https://files.pythonhosted.org/packages/bb/ab/08fd63b9a74303947f34f0bd7c5903b9c5532c2d287bead5bdf4c556c486/numpy-2.3.5-cp313-cp313t-win_arm64.whl", hash = "sha256:a80afd79f45f3c4a7d341f13acbe058d1ca8ac017c165d3fa0d3de6bc1a079d7", size = 10262507, upload-time = "2025-11-16T22:51:16.846Z" }, + { url = "https://files.pythonhosted.org/packages/ba/97/1a914559c19e32d6b2e233cf9a6a114e67c856d35b1d6babca571a3e880f/numpy-2.3.5-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:bf06bc2af43fa8d32d30fae16ad965663e966b1a3202ed407b84c989c3221e82", size = 16735706, upload-time = "2025-11-16T22:51:19.558Z" }, + { url = "https://files.pythonhosted.org/packages/57/d4/51233b1c1b13ecd796311216ae417796b88b0616cfd8a33ae4536330748a/numpy-2.3.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:052e8c42e0c49d2575621c158934920524f6c5da05a1d3b9bab5d8e259e045f0", size = 12264507, upload-time = "2025-11-16T22:51:22.492Z" }, + { url = "https://files.pythonhosted.org/packages/45/98/2fe46c5c2675b8306d0b4a3ec3494273e93e1226a490f766e84298576956/numpy-2.3.5-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:1ed1ec893cff7040a02c8aa1c8611b94d395590d553f6b53629a4461dc7f7b63", size = 5093049, upload-time = "2025-11-16T22:51:25.171Z" }, + { url = "https://files.pythonhosted.org/packages/ce/0e/0698378989bb0ac5f1660c81c78ab1fe5476c1a521ca9ee9d0710ce54099/numpy-2.3.5-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:2dcd0808a421a482a080f89859a18beb0b3d1e905b81e617a188bd80422d62e9", size = 6626603, upload-time = "2025-11-16T22:51:27Z" }, + { url = "https://files.pythonhosted.org/packages/5e/a6/9ca0eecc489640615642a6cbc0ca9e10df70df38c4d43f5a928ff18d8827/numpy-2.3.5-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:727fd05b57df37dc0bcf1a27767a3d9a78cbbc92822445f32cc3436ba797337b", size = 14262696, upload-time = "2025-11-16T22:51:29.402Z" }, + { url = "https://files.pythonhosted.org/packages/c8/f6/07ec185b90ec9d7217a00eeeed7383b73d7e709dae2a9a021b051542a708/numpy-2.3.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fffe29a1ef00883599d1dc2c51aa2e5d80afe49523c261a74933df395c15c520", size = 16597350, upload-time = "2025-11-16T22:51:32.167Z" }, + { url = "https://files.pythonhosted.org/packages/75/37/164071d1dde6a1a84c9b8e5b414fa127981bad47adf3a6b7e23917e52190/numpy-2.3.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8f7f0e05112916223d3f438f293abf0727e1181b5983f413dfa2fefc4098245c", size = 16040190, upload-time = "2025-11-16T22:51:35.403Z" }, + { url = "https://files.pythonhosted.org/packages/08/3c/f18b82a406b04859eb026d204e4e1773eb41c5be58410f41ffa511d114ae/numpy-2.3.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2e2eb32ddb9ccb817d620ac1d8dae7c3f641c1e5f55f531a33e8ab97960a75b8", size = 18536749, upload-time = "2025-11-16T22:51:39.698Z" }, + { url = "https://files.pythonhosted.org/packages/40/79/f82f572bf44cf0023a2fe8588768e23e1592585020d638999f15158609e1/numpy-2.3.5-cp314-cp314-win32.whl", hash = "sha256:66f85ce62c70b843bab1fb14a05d5737741e74e28c7b8b5a064de10142fad248", size = 6335432, upload-time = "2025-11-16T22:51:42.476Z" }, + { url = "https://files.pythonhosted.org/packages/a3/2e/235b4d96619931192c91660805e5e49242389742a7a82c27665021db690c/numpy-2.3.5-cp314-cp314-win_amd64.whl", hash = "sha256:e6a0bc88393d65807d751a614207b7129a310ca4fe76a74e5c7da5fa5671417e", size = 12919388, upload-time = "2025-11-16T22:51:45.275Z" }, + { url = "https://files.pythonhosted.org/packages/07/2b/29fd75ce45d22a39c61aad74f3d718e7ab67ccf839ca8b60866054eb15f8/numpy-2.3.5-cp314-cp314-win_arm64.whl", hash = "sha256:aeffcab3d4b43712bb7a60b65f6044d444e75e563ff6180af8f98dd4b905dfd2", size = 10476651, upload-time = "2025-11-16T22:51:47.749Z" }, + { url = "https://files.pythonhosted.org/packages/17/e1/f6a721234ebd4d87084cfa68d081bcba2f5cfe1974f7de4e0e8b9b2a2ba1/numpy-2.3.5-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:17531366a2e3a9e30762c000f2c43a9aaa05728712e25c11ce1dbe700c53ad41", size = 16834503, upload-time = "2025-11-16T22:51:50.443Z" }, + { url = "https://files.pythonhosted.org/packages/5c/1c/baf7ffdc3af9c356e1c135e57ab7cf8d247931b9554f55c467efe2c69eff/numpy-2.3.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d21644de1b609825ede2f48be98dfde4656aefc713654eeee280e37cadc4e0ad", size = 12381612, upload-time = "2025-11-16T22:51:53.609Z" }, + { url = "https://files.pythonhosted.org/packages/74/91/f7f0295151407ddc9ba34e699013c32c3c91944f9b35fcf9281163dc1468/numpy-2.3.5-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:c804e3a5aba5460c73955c955bdbd5c08c354954e9270a2c1565f62e866bdc39", size = 5210042, upload-time = "2025-11-16T22:51:56.213Z" }, + { url = "https://files.pythonhosted.org/packages/2e/3b/78aebf345104ec50dd50a4d06ddeb46a9ff5261c33bcc58b1c4f12f85ec2/numpy-2.3.5-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:cc0a57f895b96ec78969c34f682c602bf8da1a0270b09bc65673df2e7638ec20", size = 6724502, upload-time = "2025-11-16T22:51:58.584Z" }, + { url = "https://files.pythonhosted.org/packages/02/c6/7c34b528740512e57ef1b7c8337ab0b4f0bddf34c723b8996c675bc2bc91/numpy-2.3.5-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:900218e456384ea676e24ea6a0417f030a3b07306d29d7ad843957b40a9d8d52", size = 14308962, upload-time = "2025-11-16T22:52:01.698Z" }, + { url = "https://files.pythonhosted.org/packages/80/35/09d433c5262bc32d725bafc619e095b6a6651caf94027a03da624146f655/numpy-2.3.5-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:09a1bea522b25109bf8e6f3027bd810f7c1085c64a0c7ce050c1676ad0ba010b", size = 16655054, upload-time = "2025-11-16T22:52:04.267Z" }, + { url = "https://files.pythonhosted.org/packages/7a/ab/6a7b259703c09a88804fa2430b43d6457b692378f6b74b356155283566ac/numpy-2.3.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:04822c00b5fd0323c8166d66c701dc31b7fbd252c100acd708c48f763968d6a3", size = 16091613, upload-time = "2025-11-16T22:52:08.651Z" }, + { url = "https://files.pythonhosted.org/packages/c2/88/330da2071e8771e60d1038166ff9d73f29da37b01ec3eb43cb1427464e10/numpy-2.3.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d6889ec4ec662a1a37eb4b4fb26b6100841804dac55bd9df579e326cdc146227", size = 18591147, upload-time = "2025-11-16T22:52:11.453Z" }, + { url = "https://files.pythonhosted.org/packages/51/41/851c4b4082402d9ea860c3626db5d5df47164a712cb23b54be028b184c1c/numpy-2.3.5-cp314-cp314t-win32.whl", hash = "sha256:93eebbcf1aafdf7e2ddd44c2923e2672e1010bddc014138b229e49725b4d6be5", size = 6479806, upload-time = "2025-11-16T22:52:14.641Z" }, + { url = "https://files.pythonhosted.org/packages/90/30/d48bde1dfd93332fa557cff1972fbc039e055a52021fbef4c2c4b1eefd17/numpy-2.3.5-cp314-cp314t-win_amd64.whl", hash = "sha256:c8a9958e88b65c3b27e22ca2a076311636850b612d6bbfb76e8d156aacde2aaf", size = 13105760, upload-time = "2025-11-16T22:52:17.975Z" }, + { url = "https://files.pythonhosted.org/packages/2d/fd/4b5eb0b3e888d86aee4d198c23acec7d214baaf17ea93c1adec94c9518b9/numpy-2.3.5-cp314-cp314t-win_arm64.whl", hash = "sha256:6203fdf9f3dc5bdaed7319ad8698e685c7a3be10819f41d32a0723e611733b42", size = 10545459, upload-time = "2025-11-16T22:52:20.55Z" }, +] + +[[package]] +name = "openpulse" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "antlr4-python3-runtime" }, + { name = "openqasm3", extra = ["parser"] }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4b/41/0cdb6190148de664b7b200b65496a20a54b952567eb4d040e3f4117b4473/openpulse-1.0.1.tar.gz", hash = "sha256:4c184e3012907ec35f04202ed72621037b1a06d70195769576bfc9e62c01bf94", size = 519151, upload-time = "2024-10-01T16:59:17.386Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/41/429b613fe56124f5714f0d7ff5c1a2c74913e3db2fdde3fd13bf732a116f/openpulse-1.0.1-py3-none-any.whl", hash = "sha256:75fb2d4d7f74db3a86027719744541fcb725e1f5b79e14b78dc5b34ed8c66e87", size = 537758, upload-time = "2024-10-01T16:59:15.568Z" }, +] + +[[package]] +name = "openqasm3" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/92/a0/678ce1e4efbeb1cf06a7728b4056754e52bfd2c5cad174dae0f2a17b2d03/openqasm3-1.0.1.tar.gz", hash = "sha256:c589dc05d4ced50ca24167d14e0f2c916e717499ba0442e0ff2a3030ef312d0a", size = 536861, upload-time = "2025-02-19T22:51:06.204Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/dd/2aa7698341948f3229f7a1cb75e84d9677444d9c730632d1907716574dc5/openqasm3-1.0.1-py3-none-any.whl", hash = "sha256:0d3a1ebe3465e3ea619bcaa369858bba8944cbb0c49604b24f94662d3ec41d41", size = 541545, upload-time = "2025-02-19T22:51:01.852Z" }, +] + +[package.optional-dependencies] +parser = [ + { name = "antlr4-python3-runtime" }, +] + +[[package]] +name = "opt-einsum" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/b9/2ac072041e899a52f20cf9510850ff58295003aa75525e58343591b0cbfb/opt_einsum-3.4.0.tar.gz", hash = "sha256:96ca72f1b886d148241348783498194c577fa30a8faac108586b14f1ba4473ac", size = 63004, upload-time = "2024-09-26T14:33:24.483Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl", hash = "sha256:69bb92469f86a1565195ece4ac0323943e83477171b91d24c35afe028a90d7cd", size = 71932, upload-time = "2024-09-26T14:33:23.039Z" }, +] + +[[package]] +name = "oqpy" +version = "0.3.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "numpy" }, + { name = "openpulse" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/86/5718c689853bbcbca25be639fe94882e0f676fbb84149b8cf03d0ef82632/oqpy-0.3.9.tar.gz", hash = "sha256:9201f7bba247bcbe212e392f23f6d061827dfe4a3f7449f5ca74a35a9d29916b", size = 31750, upload-time = "2025-10-09T15:47:51.839Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/b5/a9e931b4e0c9bd44d3e0b2da37544b22cdba375fbd0c87a67668568e3a6e/oqpy-0.3.9-py3-none-any.whl", hash = "sha256:2219c15ee0761ee210710db790164eddef450b7f3b942aaeb0dd312c87672355", size = 35780, upload-time = "2025-10-09T15:47:51.021Z" }, +] + +[[package]] +name = "ordered-set" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/ca/bfac8bc689799bcca4157e0e0ced07e70ce125193fc2e166d2e685b7e2fe/ordered-set-4.1.0.tar.gz", hash = "sha256:694a8e44c87657c59292ede72891eb91d34131f6531463aab3009191c77364a8", size = 12826, upload-time = "2022-01-26T14:38:56.6Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/55/af02708f230eb77084a299d7b08175cff006dea4f2721074b92cdb0296c0/ordered_set-4.1.0-py3-none-any.whl", hash = "sha256:046e1132c71fcf3330438a539928932caf51ddbc582496833e23de611de14562", size = 7634, upload-time = "2022-01-26T14:38:48.677Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/4b/18b035ee18f97c1040d94debd8f2e737000ad70ccc8f5513f4eefad75f4b/pandas-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713", size = 11544671, upload-time = "2025-09-29T23:21:05.024Z" }, + { url = "https://files.pythonhosted.org/packages/31/94/72fac03573102779920099bcac1c3b05975c2cb5f01eac609faf34bed1ca/pandas-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8", size = 10680807, upload-time = "2025-09-29T23:21:15.979Z" }, + { url = "https://files.pythonhosted.org/packages/16/87/9472cf4a487d848476865321de18cc8c920b8cab98453ab79dbbc98db63a/pandas-2.3.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d", size = 11709872, upload-time = "2025-09-29T23:21:27.165Z" }, + { url = "https://files.pythonhosted.org/packages/15/07/284f757f63f8a8d69ed4472bfd85122bd086e637bf4ed09de572d575a693/pandas-2.3.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac", size = 12306371, upload-time = "2025-09-29T23:21:40.532Z" }, + { url = "https://files.pythonhosted.org/packages/33/81/a3afc88fca4aa925804a27d2676d22dcd2031c2ebe08aabd0ae55b9ff282/pandas-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c", size = 12765333, upload-time = "2025-09-29T23:21:55.77Z" }, + { url = "https://files.pythonhosted.org/packages/8d/0f/b4d4ae743a83742f1153464cf1a8ecfafc3ac59722a0b5c8602310cb7158/pandas-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493", size = 13418120, upload-time = "2025-09-29T23:22:10.109Z" }, + { url = "https://files.pythonhosted.org/packages/4f/c7/e54682c96a895d0c808453269e0b5928a07a127a15704fedb643e9b0a4c8/pandas-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee", size = 10993991, upload-time = "2025-09-29T23:25:04.889Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ca/3f8d4f49740799189e1395812f3bf23b5e8fc7c190827d55a610da72ce55/pandas-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5", size = 12048227, upload-time = "2025-09-29T23:22:24.343Z" }, + { url = "https://files.pythonhosted.org/packages/0e/5a/f43efec3e8c0cc92c4663ccad372dbdff72b60bdb56b2749f04aa1d07d7e/pandas-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21", size = 11411056, upload-time = "2025-09-29T23:22:37.762Z" }, + { url = "https://files.pythonhosted.org/packages/46/b1/85331edfc591208c9d1a63a06baa67b21d332e63b7a591a5ba42a10bb507/pandas-2.3.3-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78", size = 11645189, upload-time = "2025-09-29T23:22:51.688Z" }, + { url = "https://files.pythonhosted.org/packages/44/23/78d645adc35d94d1ac4f2a3c4112ab6f5b8999f4898b8cdf01252f8df4a9/pandas-2.3.3-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110", size = 12121912, upload-time = "2025-09-29T23:23:05.042Z" }, + { url = "https://files.pythonhosted.org/packages/53/da/d10013df5e6aaef6b425aa0c32e1fc1f3e431e4bcabd420517dceadce354/pandas-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86", size = 12712160, upload-time = "2025-09-29T23:23:28.57Z" }, + { url = "https://files.pythonhosted.org/packages/bd/17/e756653095a083d8a37cbd816cb87148debcfcd920129b25f99dd8d04271/pandas-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc", size = 13199233, upload-time = "2025-09-29T23:24:24.876Z" }, + { url = "https://files.pythonhosted.org/packages/04/fd/74903979833db8390b73b3a8a7d30d146d710bd32703724dd9083950386f/pandas-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ee15f284898e7b246df8087fc82b87b01686f98ee67d85a17b7ab44143a3a9a0", size = 11540635, upload-time = "2025-09-29T23:25:52.486Z" }, + { url = "https://files.pythonhosted.org/packages/21/00/266d6b357ad5e6d3ad55093a7e8efc7dd245f5a842b584db9f30b0f0a287/pandas-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1611aedd912e1ff81ff41c745822980c49ce4a7907537be8692c8dbc31924593", size = 10759079, upload-time = "2025-09-29T23:26:33.204Z" }, + { url = "https://files.pythonhosted.org/packages/ca/05/d01ef80a7a3a12b2f8bbf16daba1e17c98a2f039cbc8e2f77a2c5a63d382/pandas-2.3.3-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d2cefc361461662ac48810cb14365a365ce864afe85ef1f447ff5a1e99ea81c", size = 11814049, upload-time = "2025-09-29T23:27:15.384Z" }, + { url = "https://files.pythonhosted.org/packages/15/b2/0e62f78c0c5ba7e3d2c5945a82456f4fac76c480940f805e0b97fcbc2f65/pandas-2.3.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ee67acbbf05014ea6c763beb097e03cd629961c8a632075eeb34247120abcb4b", size = 12332638, upload-time = "2025-09-29T23:27:51.625Z" }, + { url = "https://files.pythonhosted.org/packages/c5/33/dd70400631b62b9b29c3c93d2feee1d0964dc2bae2e5ad7a6c73a7f25325/pandas-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c46467899aaa4da076d5abc11084634e2d197e9460643dd455ac3db5856b24d6", size = 12886834, upload-time = "2025-09-29T23:28:21.289Z" }, + { url = "https://files.pythonhosted.org/packages/d3/18/b5d48f55821228d0d2692b34fd5034bb185e854bdb592e9c640f6290e012/pandas-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6253c72c6a1d990a410bc7de641d34053364ef8bcd3126f7e7450125887dffe3", size = 13409925, upload-time = "2025-09-29T23:28:58.261Z" }, + { url = "https://files.pythonhosted.org/packages/a6/3d/124ac75fcd0ecc09b8fdccb0246ef65e35b012030defb0e0eba2cbbbe948/pandas-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:1b07204a219b3b7350abaae088f451860223a52cfb8a6c53358e7948735158e5", size = 11109071, upload-time = "2025-09-29T23:32:27.484Z" }, + { url = "https://files.pythonhosted.org/packages/89/9c/0e21c895c38a157e0faa1fb64587a9226d6dd46452cac4532d80c3c4a244/pandas-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2462b1a365b6109d275250baaae7b760fd25c726aaca0054649286bcfbb3e8ec", size = 12048504, upload-time = "2025-09-29T23:29:31.47Z" }, + { url = "https://files.pythonhosted.org/packages/d7/82/b69a1c95df796858777b68fbe6a81d37443a33319761d7c652ce77797475/pandas-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0242fe9a49aa8b4d78a4fa03acb397a58833ef6199e9aa40a95f027bb3a1b6e7", size = 11410702, upload-time = "2025-09-29T23:29:54.591Z" }, + { url = "https://files.pythonhosted.org/packages/f9/88/702bde3ba0a94b8c73a0181e05144b10f13f29ebfc2150c3a79062a8195d/pandas-2.3.3-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a21d830e78df0a515db2b3d2f5570610f5e6bd2e27749770e8bb7b524b89b450", size = 11634535, upload-time = "2025-09-29T23:30:21.003Z" }, + { url = "https://files.pythonhosted.org/packages/a4/1e/1bac1a839d12e6a82ec6cb40cda2edde64a2013a66963293696bbf31fbbb/pandas-2.3.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e3ebdb170b5ef78f19bfb71b0dc5dc58775032361fa188e814959b74d726dd5", size = 12121582, upload-time = "2025-09-29T23:30:43.391Z" }, + { url = "https://files.pythonhosted.org/packages/44/91/483de934193e12a3b1d6ae7c8645d083ff88dec75f46e827562f1e4b4da6/pandas-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d051c0e065b94b7a3cea50eb1ec32e912cd96dba41647eb24104b6c6c14c5788", size = 12699963, upload-time = "2025-09-29T23:31:10.009Z" }, + { url = "https://files.pythonhosted.org/packages/70/44/5191d2e4026f86a2a109053e194d3ba7a31a2d10a9c2348368c63ed4e85a/pandas-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3869faf4bd07b3b66a9f462417d0ca3a9df29a9f6abd5d0d0dbab15dac7abe87", size = 13202175, upload-time = "2025-09-29T23:31:59.173Z" }, +] + +[[package]] +name = "pandocfilters" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload-time = "2024-01-18T20:08:13.726Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload-time = "2024-01-18T20:08:11.28Z" }, +] + +[[package]] +name = "parso" +version = "0.8.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/de/53e0bcf53d13e005bd8c92e7855142494f41171b34c2536b86187474184d/parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a", size = 401205, upload-time = "2025-08-23T15:15:28.028Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887", size = 106668, upload-time = "2025-08-23T15:15:25.663Z" }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pillow" +version = "12.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/cace85a1b0c9775a9f8f5d5423c8261c858760e2466c79b2dd184638b056/pillow-12.0.0.tar.gz", hash = "sha256:87d4f8125c9988bfbed67af47dd7a953e2fc7b0cc1e7800ec6d2080d490bb353", size = 47008828, upload-time = "2025-10-15T18:24:14.008Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/f2/de993bb2d21b33a98d031ecf6a978e4b61da207bef02f7b43093774c480d/pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:0869154a2d0546545cde61d1789a6524319fc1897d9ee31218eae7a60ccc5643", size = 4045493, upload-time = "2025-10-15T18:22:25.758Z" }, + { url = "https://files.pythonhosted.org/packages/0e/b6/bc8d0c4c9f6f111a783d045310945deb769b806d7574764234ffd50bc5ea/pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:a7921c5a6d31b3d756ec980f2f47c0cfdbce0fc48c22a39347a895f41f4a6ea4", size = 4120461, upload-time = "2025-10-15T18:22:27.286Z" }, + { url = "https://files.pythonhosted.org/packages/5d/57/d60d343709366a353dc56adb4ee1e7d8a2cc34e3fbc22905f4167cfec119/pillow-12.0.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:1ee80a59f6ce048ae13cda1abf7fbd2a34ab9ee7d401c46be3ca685d1999a399", size = 3576912, upload-time = "2025-10-15T18:22:28.751Z" }, + { url = "https://files.pythonhosted.org/packages/a4/a4/a0a31467e3f83b94d37568294b01d22b43ae3c5d85f2811769b9c66389dd/pillow-12.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c50f36a62a22d350c96e49ad02d0da41dbd17ddc2e29750dbdba4323f85eb4a5", size = 5249132, upload-time = "2025-10-15T18:22:30.641Z" }, + { url = "https://files.pythonhosted.org/packages/83/06/48eab21dd561de2914242711434c0c0eb992ed08ff3f6107a5f44527f5e9/pillow-12.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5193fde9a5f23c331ea26d0cf171fbf67e3f247585f50c08b3e205c7aeb4589b", size = 4650099, upload-time = "2025-10-15T18:22:32.73Z" }, + { url = "https://files.pythonhosted.org/packages/fc/bd/69ed99fd46a8dba7c1887156d3572fe4484e3f031405fcc5a92e31c04035/pillow-12.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bde737cff1a975b70652b62d626f7785e0480918dece11e8fef3c0cf057351c3", size = 6230808, upload-time = "2025-10-15T18:22:34.337Z" }, + { url = "https://files.pythonhosted.org/packages/ea/94/8fad659bcdbf86ed70099cb60ae40be6acca434bbc8c4c0d4ef356d7e0de/pillow-12.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a6597ff2b61d121172f5844b53f21467f7082f5fb385a9a29c01414463f93b07", size = 8037804, upload-time = "2025-10-15T18:22:36.402Z" }, + { url = "https://files.pythonhosted.org/packages/20/39/c685d05c06deecfd4e2d1950e9a908aa2ca8bc4e6c3b12d93b9cafbd7837/pillow-12.0.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b817e7035ea7f6b942c13aa03bb554fc44fea70838ea21f8eb31c638326584e", size = 6345553, upload-time = "2025-10-15T18:22:38.066Z" }, + { url = "https://files.pythonhosted.org/packages/38/57/755dbd06530a27a5ed74f8cb0a7a44a21722ebf318edbe67ddbd7fb28f88/pillow-12.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f4f1231b7dec408e8670264ce63e9c71409d9583dd21d32c163e25213ee2a344", size = 7037729, upload-time = "2025-10-15T18:22:39.769Z" }, + { url = "https://files.pythonhosted.org/packages/ca/b6/7e94f4c41d238615674d06ed677c14883103dce1c52e4af16f000338cfd7/pillow-12.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e51b71417049ad6ab14c49608b4a24d8fb3fe605e5dfabfe523b58064dc3d27", size = 6459789, upload-time = "2025-10-15T18:22:41.437Z" }, + { url = "https://files.pythonhosted.org/packages/9c/14/4448bb0b5e0f22dd865290536d20ec8a23b64e2d04280b89139f09a36bb6/pillow-12.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d120c38a42c234dc9a8c5de7ceaaf899cf33561956acb4941653f8bdc657aa79", size = 7130917, upload-time = "2025-10-15T18:22:43.152Z" }, + { url = "https://files.pythonhosted.org/packages/dd/ca/16c6926cc1c015845745d5c16c9358e24282f1e588237a4c36d2b30f182f/pillow-12.0.0-cp313-cp313-win32.whl", hash = "sha256:4cc6b3b2efff105c6a1656cfe59da4fdde2cda9af1c5e0b58529b24525d0a098", size = 6302391, upload-time = "2025-10-15T18:22:44.753Z" }, + { url = "https://files.pythonhosted.org/packages/6d/2a/dd43dcfd6dae9b6a49ee28a8eedb98c7d5ff2de94a5d834565164667b97b/pillow-12.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:4cf7fed4b4580601c4345ceb5d4cbf5a980d030fd5ad07c4d2ec589f95f09905", size = 7007477, upload-time = "2025-10-15T18:22:46.838Z" }, + { url = "https://files.pythonhosted.org/packages/77/f0/72ea067f4b5ae5ead653053212af05ce3705807906ba3f3e8f58ddf617e6/pillow-12.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:9f0b04c6b8584c2c193babcccc908b38ed29524b29dd464bc8801bf10d746a3a", size = 2435918, upload-time = "2025-10-15T18:22:48.399Z" }, + { url = "https://files.pythonhosted.org/packages/f5/5e/9046b423735c21f0487ea6cb5b10f89ea8f8dfbe32576fe052b5ba9d4e5b/pillow-12.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7fa22993bac7b77b78cae22bad1e2a987ddf0d9015c63358032f84a53f23cdc3", size = 5251406, upload-time = "2025-10-15T18:22:49.905Z" }, + { url = "https://files.pythonhosted.org/packages/12/66/982ceebcdb13c97270ef7a56c3969635b4ee7cd45227fa707c94719229c5/pillow-12.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f135c702ac42262573fe9714dfe99c944b4ba307af5eb507abef1667e2cbbced", size = 4653218, upload-time = "2025-10-15T18:22:51.587Z" }, + { url = "https://files.pythonhosted.org/packages/16/b3/81e625524688c31859450119bf12674619429cab3119eec0e30a7a1029cb/pillow-12.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c85de1136429c524e55cfa4e033b4a7940ac5c8ee4d9401cc2d1bf48154bbc7b", size = 6266564, upload-time = "2025-10-15T18:22:53.215Z" }, + { url = "https://files.pythonhosted.org/packages/98/59/dfb38f2a41240d2408096e1a76c671d0a105a4a8471b1871c6902719450c/pillow-12.0.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:38df9b4bfd3db902c9c2bd369bcacaf9d935b2fff73709429d95cc41554f7b3d", size = 8069260, upload-time = "2025-10-15T18:22:54.933Z" }, + { url = "https://files.pythonhosted.org/packages/dc/3d/378dbea5cd1874b94c312425ca77b0f47776c78e0df2df751b820c8c1d6c/pillow-12.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7d87ef5795da03d742bf49439f9ca4d027cde49c82c5371ba52464aee266699a", size = 6379248, upload-time = "2025-10-15T18:22:56.605Z" }, + { url = "https://files.pythonhosted.org/packages/84/b0/d525ef47d71590f1621510327acec75ae58c721dc071b17d8d652ca494d8/pillow-12.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aff9e4d82d082ff9513bdd6acd4f5bd359f5b2c870907d2b0a9c5e10d40c88fe", size = 7066043, upload-time = "2025-10-15T18:22:58.53Z" }, + { url = "https://files.pythonhosted.org/packages/61/2c/aced60e9cf9d0cde341d54bf7932c9ffc33ddb4a1595798b3a5150c7ec4e/pillow-12.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:8d8ca2b210ada074d57fcee40c30446c9562e542fc46aedc19baf758a93532ee", size = 6490915, upload-time = "2025-10-15T18:23:00.582Z" }, + { url = "https://files.pythonhosted.org/packages/ef/26/69dcb9b91f4e59f8f34b2332a4a0a951b44f547c4ed39d3e4dcfcff48f89/pillow-12.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:99a7f72fb6249302aa62245680754862a44179b545ded638cf1fef59befb57ef", size = 7157998, upload-time = "2025-10-15T18:23:02.627Z" }, + { url = "https://files.pythonhosted.org/packages/61/2b/726235842220ca95fa441ddf55dd2382b52ab5b8d9c0596fe6b3f23dafe8/pillow-12.0.0-cp313-cp313t-win32.whl", hash = "sha256:4078242472387600b2ce8d93ade8899c12bf33fa89e55ec89fe126e9d6d5d9e9", size = 6306201, upload-time = "2025-10-15T18:23:04.709Z" }, + { url = "https://files.pythonhosted.org/packages/c0/3d/2afaf4e840b2df71344ababf2f8edd75a705ce500e5dc1e7227808312ae1/pillow-12.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2c54c1a783d6d60595d3514f0efe9b37c8808746a66920315bfd34a938d7994b", size = 7013165, upload-time = "2025-10-15T18:23:06.46Z" }, + { url = "https://files.pythonhosted.org/packages/6f/75/3fa09aa5cf6ed04bee3fa575798ddf1ce0bace8edb47249c798077a81f7f/pillow-12.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:26d9f7d2b604cd23aba3e9faf795787456ac25634d82cd060556998e39c6fa47", size = 2437834, upload-time = "2025-10-15T18:23:08.194Z" }, + { url = "https://files.pythonhosted.org/packages/54/2a/9a8c6ba2c2c07b71bec92cf63e03370ca5e5f5c5b119b742bcc0cde3f9c5/pillow-12.0.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:beeae3f27f62308f1ddbcfb0690bf44b10732f2ef43758f169d5e9303165d3f9", size = 4045531, upload-time = "2025-10-15T18:23:10.121Z" }, + { url = "https://files.pythonhosted.org/packages/84/54/836fdbf1bfb3d66a59f0189ff0b9f5f666cee09c6188309300df04ad71fa/pillow-12.0.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:d4827615da15cd59784ce39d3388275ec093ae3ee8d7f0c089b76fa87af756c2", size = 4120554, upload-time = "2025-10-15T18:23:12.14Z" }, + { url = "https://files.pythonhosted.org/packages/0d/cd/16aec9f0da4793e98e6b54778a5fbce4f375c6646fe662e80600b8797379/pillow-12.0.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:3e42edad50b6909089750e65c91aa09aaf1e0a71310d383f11321b27c224ed8a", size = 3576812, upload-time = "2025-10-15T18:23:13.962Z" }, + { url = "https://files.pythonhosted.org/packages/f6/b7/13957fda356dc46339298b351cae0d327704986337c3c69bb54628c88155/pillow-12.0.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e5d8efac84c9afcb40914ab49ba063d94f5dbdf5066db4482c66a992f47a3a3b", size = 5252689, upload-time = "2025-10-15T18:23:15.562Z" }, + { url = "https://files.pythonhosted.org/packages/fc/f5/eae31a306341d8f331f43edb2e9122c7661b975433de5e447939ae61c5da/pillow-12.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:266cd5f2b63ff316d5a1bba46268e603c9caf5606d44f38c2873c380950576ad", size = 4650186, upload-time = "2025-10-15T18:23:17.379Z" }, + { url = "https://files.pythonhosted.org/packages/86/62/2a88339aa40c4c77e79108facbd307d6091e2c0eb5b8d3cf4977cfca2fe6/pillow-12.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:58eea5ebe51504057dd95c5b77d21700b77615ab0243d8152793dc00eb4faf01", size = 6230308, upload-time = "2025-10-15T18:23:18.971Z" }, + { url = "https://files.pythonhosted.org/packages/c7/33/5425a8992bcb32d1cb9fa3dd39a89e613d09a22f2c8083b7bf43c455f760/pillow-12.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f13711b1a5ba512d647a0e4ba79280d3a9a045aaf7e0cc6fbe96b91d4cdf6b0c", size = 8039222, upload-time = "2025-10-15T18:23:20.909Z" }, + { url = "https://files.pythonhosted.org/packages/d8/61/3f5d3b35c5728f37953d3eec5b5f3e77111949523bd2dd7f31a851e50690/pillow-12.0.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6846bd2d116ff42cba6b646edf5bf61d37e5cbd256425fa089fee4ff5c07a99e", size = 6346657, upload-time = "2025-10-15T18:23:23.077Z" }, + { url = "https://files.pythonhosted.org/packages/3a/be/ee90a3d79271227e0f0a33c453531efd6ed14b2e708596ba5dd9be948da3/pillow-12.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c98fa880d695de164b4135a52fd2e9cd7b7c90a9d8ac5e9e443a24a95ef9248e", size = 7038482, upload-time = "2025-10-15T18:23:25.005Z" }, + { url = "https://files.pythonhosted.org/packages/44/34/a16b6a4d1ad727de390e9bd9f19f5f669e079e5826ec0f329010ddea492f/pillow-12.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fa3ed2a29a9e9d2d488b4da81dcb54720ac3104a20bf0bd273f1e4648aff5af9", size = 6461416, upload-time = "2025-10-15T18:23:27.009Z" }, + { url = "https://files.pythonhosted.org/packages/b6/39/1aa5850d2ade7d7ba9f54e4e4c17077244ff7a2d9e25998c38a29749eb3f/pillow-12.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d034140032870024e6b9892c692fe2968493790dd57208b2c37e3fb35f6df3ab", size = 7131584, upload-time = "2025-10-15T18:23:29.752Z" }, + { url = "https://files.pythonhosted.org/packages/bf/db/4fae862f8fad0167073a7733973bfa955f47e2cac3dc3e3e6257d10fab4a/pillow-12.0.0-cp314-cp314-win32.whl", hash = "sha256:1b1b133e6e16105f524a8dec491e0586d072948ce15c9b914e41cdadd209052b", size = 6400621, upload-time = "2025-10-15T18:23:32.06Z" }, + { url = "https://files.pythonhosted.org/packages/2b/24/b350c31543fb0107ab2599464d7e28e6f856027aadda995022e695313d94/pillow-12.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:8dc232e39d409036af549c86f24aed8273a40ffa459981146829a324e0848b4b", size = 7142916, upload-time = "2025-10-15T18:23:34.71Z" }, + { url = "https://files.pythonhosted.org/packages/0f/9b/0ba5a6fd9351793996ef7487c4fdbde8d3f5f75dbedc093bb598648fddf0/pillow-12.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:d52610d51e265a51518692045e372a4c363056130d922a7351429ac9f27e70b0", size = 2523836, upload-time = "2025-10-15T18:23:36.967Z" }, + { url = "https://files.pythonhosted.org/packages/f5/7a/ceee0840aebc579af529b523d530840338ecf63992395842e54edc805987/pillow-12.0.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1979f4566bb96c1e50a62d9831e2ea2d1211761e5662afc545fa766f996632f6", size = 5255092, upload-time = "2025-10-15T18:23:38.573Z" }, + { url = "https://files.pythonhosted.org/packages/44/76/20776057b4bfd1aef4eeca992ebde0f53a4dce874f3ae693d0ec90a4f79b/pillow-12.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b2e4b27a6e15b04832fe9bf292b94b5ca156016bbc1ea9c2c20098a0320d6cf6", size = 4653158, upload-time = "2025-10-15T18:23:40.238Z" }, + { url = "https://files.pythonhosted.org/packages/82/3f/d9ff92ace07be8836b4e7e87e6a4c7a8318d47c2f1463ffcf121fc57d9cb/pillow-12.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fb3096c30df99fd01c7bf8e544f392103d0795b9f98ba71a8054bcbf56b255f1", size = 6267882, upload-time = "2025-10-15T18:23:42.434Z" }, + { url = "https://files.pythonhosted.org/packages/9f/7a/4f7ff87f00d3ad33ba21af78bfcd2f032107710baf8280e3722ceec28cda/pillow-12.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7438839e9e053ef79f7112c881cef684013855016f928b168b81ed5835f3e75e", size = 8071001, upload-time = "2025-10-15T18:23:44.29Z" }, + { url = "https://files.pythonhosted.org/packages/75/87/fcea108944a52dad8cca0715ae6247e271eb80459364a98518f1e4f480c1/pillow-12.0.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d5c411a8eaa2299322b647cd932586b1427367fd3184ffbb8f7a219ea2041ca", size = 6380146, upload-time = "2025-10-15T18:23:46.065Z" }, + { url = "https://files.pythonhosted.org/packages/91/52/0d31b5e571ef5fd111d2978b84603fce26aba1b6092f28e941cb46570745/pillow-12.0.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d7e091d464ac59d2c7ad8e7e08105eaf9dafbc3883fd7265ffccc2baad6ac925", size = 7067344, upload-time = "2025-10-15T18:23:47.898Z" }, + { url = "https://files.pythonhosted.org/packages/7b/f4/2dd3d721f875f928d48e83bb30a434dee75a2531bca839bb996bb0aa5a91/pillow-12.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:792a2c0be4dcc18af9d4a2dfd8a11a17d5e25274a1062b0ec1c2d79c76f3e7f8", size = 6491864, upload-time = "2025-10-15T18:23:49.607Z" }, + { url = "https://files.pythonhosted.org/packages/30/4b/667dfcf3d61fc309ba5a15b141845cece5915e39b99c1ceab0f34bf1d124/pillow-12.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:afbefa430092f71a9593a99ab6a4e7538bc9eabbf7bf94f91510d3503943edc4", size = 7158911, upload-time = "2025-10-15T18:23:51.351Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2f/16cabcc6426c32218ace36bf0d55955e813f2958afddbf1d391849fee9d1/pillow-12.0.0-cp314-cp314t-win32.whl", hash = "sha256:3830c769decf88f1289680a59d4f4c46c72573446352e2befec9a8512104fa52", size = 6408045, upload-time = "2025-10-15T18:23:53.177Z" }, + { url = "https://files.pythonhosted.org/packages/35/73/e29aa0c9c666cf787628d3f0dcf379f4791fba79f4936d02f8b37165bdf8/pillow-12.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:905b0365b210c73afb0ebe9101a32572152dfd1c144c7e28968a331b9217b94a", size = 7148282, upload-time = "2025-10-15T18:23:55.316Z" }, + { url = "https://files.pythonhosted.org/packages/c1/70/6b41bdcddf541b437bbb9f47f94d2db5d9ddef6c37ccab8c9107743748a4/pillow-12.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:99353a06902c2e43b43e8ff74ee65a7d90307d82370604746738a1e0661ccca7", size = 2525630, upload-time = "2025-10-15T18:23:57.149Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/61/33/9611380c2bdb1225fdef633e2a9610622310fed35ab11dac9620972ee088/platformdirs-4.5.0.tar.gz", hash = "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312", size = 21632, upload-time = "2025-10-08T17:44:48.791Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/cb/ac7874b3e5d58441674fb70742e6c374b28b0c7cb988d37d991cde47166c/platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3", size = 18651, upload-time = "2025-10-08T17:44:47.223Z" }, +] + +[[package]] +name = "plotext" +version = "5.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/d7/f75f397af966fe252d0d34ffd3cae765317fce2134f925f95e7d6725d1ce/plotext-5.3.2.tar.gz", hash = "sha256:52d1e932e67c177bf357a3f0fe6ce14d1a96f7f7d5679d7b455b929df517068e", size = 61967, upload-time = "2024-09-24T15:13:37.728Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/1e/12fe7c40cd2099a1f454518754ed229b01beaf3bbb343127f0cc13ce6c22/plotext-5.3.2-py3-none-any.whl", hash = "sha256:394362349c1ddbf319548cfac17ca65e6d5dfc03200c40dfdc0503b3e95a2283", size = 64047, upload-time = "2024-09-24T15:13:36.296Z" }, +] + +[[package]] +name = "plum-dispatch" +version = "2.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beartype" }, + { name = "rich" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9b/49/1da3299aceee66bb48e8f89b85d4a5af95ac863df39c2c295a1a238c91fc/plum_dispatch-2.6.0.tar.gz", hash = "sha256:09367134541a05f965e3f58c191f4f45b91ef1d87613835171790617bb87ce6d", size = 35394, upload-time = "2025-10-28T13:05:58.358Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/6a/f435b9d12f34e03548949a51c7475775feda4c3e5b5373e180d70fd7fbe4/plum_dispatch-2.6.0-py3-none-any.whl", hash = "sha256:8e9b8f20c5119f944720fa5b93f84338a9f604329f016a5132e419e4894cddf1", size = 42251, upload-time = "2025-10-28T13:05:56.874Z" }, +] + +[[package]] +name = "ply" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130, upload-time = "2018-02-15T19:01:31.097Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567, upload-time = "2018-02-15T19:01:27.172Z" }, +] + +[[package]] +name = "prometheus-client" +version = "0.23.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/23/53/3edb5d68ecf6b38fcbcc1ad28391117d2a322d9a1a3eff04bfdb184d8c3b/prometheus_client-0.23.1.tar.gz", hash = "sha256:6ae8f9081eaaaf153a2e959d2e6c4f4fb57b12ef76c8c7980202f1e57b48b2ce", size = 80481, upload-time = "2025-09-18T20:47:25.043Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/db/14bafcb4af2139e046d03fd00dea7873e48eafe18b7d2797e73d6681f210/prometheus_client-0.23.1-py3-none-any.whl", hash = "sha256:dd1913e6e76b59cfe44e7a4b83e01afc9873c1bdfd2ed8739f1e76aeca115f99", size = 61145, upload-time = "2025-09-18T20:47:23.875Z" }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.52" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198, upload-time = "2025-08-27T15:24:02.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload-time = "2025-08-27T15:23:59.498Z" }, +] + +[[package]] +name = "proto-plus" +version = "1.26.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/ac/87285f15f7cce6d4a008f33f1757fb5a13611ea8914eb58c3d0d26243468/proto_plus-1.26.1.tar.gz", hash = "sha256:21a515a4c4c0088a773899e23c7bbade3d18f9c66c73edd4c7ee3816bc96a012", size = 56142, upload-time = "2025-03-10T15:54:38.843Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/6d/280c4c2ce28b1593a19ad5239c8b826871fc6ec275c21afc8e1820108039/proto_plus-1.26.1-py3-none-any.whl", hash = "sha256:13285478c2dcf2abb829db158e1047e2f1e8d63a077d94263c2b88b043c75a66", size = 50163, upload-time = "2025-03-10T15:54:37.335Z" }, +] + +[[package]] +name = "protobuf" +version = "5.29.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/29/d09e70352e4e88c9c7a198d5645d7277811448d76c23b00345670f7c8a38/protobuf-5.29.5.tar.gz", hash = "sha256:bc1463bafd4b0929216c35f437a8e28731a2b7fe3d98bb77a600efced5a15c84", size = 425226, upload-time = "2025-05-28T23:51:59.82Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/11/6e40e9fc5bba02988a214c07cf324595789ca7820160bfd1f8be96e48539/protobuf-5.29.5-cp310-abi3-win32.whl", hash = "sha256:3f1c6468a2cfd102ff4703976138844f78ebd1fb45f49011afc5139e9e283079", size = 422963, upload-time = "2025-05-28T23:51:41.204Z" }, + { url = "https://files.pythonhosted.org/packages/81/7f/73cefb093e1a2a7c3ffd839e6f9fcafb7a427d300c7f8aef9c64405d8ac6/protobuf-5.29.5-cp310-abi3-win_amd64.whl", hash = "sha256:3f76e3a3675b4a4d867b52e4a5f5b78a2ef9565549d4037e06cf7b0942b1d3fc", size = 434818, upload-time = "2025-05-28T23:51:44.297Z" }, + { url = "https://files.pythonhosted.org/packages/dd/73/10e1661c21f139f2c6ad9b23040ff36fee624310dc28fba20d33fdae124c/protobuf-5.29.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e38c5add5a311f2a6eb0340716ef9b039c1dfa428b28f25a7838ac329204a671", size = 418091, upload-time = "2025-05-28T23:51:45.907Z" }, + { url = "https://files.pythonhosted.org/packages/6c/04/98f6f8cf5b07ab1294c13f34b4e69b3722bb609c5b701d6c169828f9f8aa/protobuf-5.29.5-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:fa18533a299d7ab6c55a238bf8629311439995f2e7eca5caaff08663606e9015", size = 319824, upload-time = "2025-05-28T23:51:47.545Z" }, + { url = "https://files.pythonhosted.org/packages/85/e4/07c80521879c2d15f321465ac24c70efe2381378c00bf5e56a0f4fbac8cd/protobuf-5.29.5-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:63848923da3325e1bf7e9003d680ce6e14b07e55d0473253a690c3a8b8fd6e61", size = 319942, upload-time = "2025-05-28T23:51:49.11Z" }, + { url = "https://files.pythonhosted.org/packages/7e/cc/7e77861000a0691aeea8f4566e5d3aa716f2b1dece4a24439437e41d3d25/protobuf-5.29.5-py3-none-any.whl", hash = "sha256:6cf42630262c59b2d8de33954443d94b746c952b01434fc58a417fdbd2e84bd5", size = 172823, upload-time = "2025-05-28T23:51:58.157Z" }, +] + +[[package]] +name = "psutil" +version = "7.1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/88/bdd0a41e5857d5d703287598cbf08dad90aed56774ea52ae071bae9071b6/psutil-7.1.3.tar.gz", hash = "sha256:6c86281738d77335af7aec228328e944b30930899ea760ecf33a4dba66be5e74", size = 489059, upload-time = "2025-11-02T12:25:54.619Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/93/0c49e776b8734fef56ec9c5c57f923922f2cf0497d62e0f419465f28f3d0/psutil-7.1.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0005da714eee687b4b8decd3d6cc7c6db36215c9e74e5ad2264b90c3df7d92dc", size = 239751, upload-time = "2025-11-02T12:25:58.161Z" }, + { url = "https://files.pythonhosted.org/packages/6f/8d/b31e39c769e70780f007969815195a55c81a63efebdd4dbe9e7a113adb2f/psutil-7.1.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:19644c85dcb987e35eeeaefdc3915d059dac7bd1167cdcdbf27e0ce2df0c08c0", size = 240368, upload-time = "2025-11-02T12:26:00.491Z" }, + { url = "https://files.pythonhosted.org/packages/62/61/23fd4acc3c9eebbf6b6c78bcd89e5d020cfde4acf0a9233e9d4e3fa698b4/psutil-7.1.3-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95ef04cf2e5ba0ab9eaafc4a11eaae91b44f4ef5541acd2ee91d9108d00d59a7", size = 287134, upload-time = "2025-11-02T12:26:02.613Z" }, + { url = "https://files.pythonhosted.org/packages/30/1c/f921a009ea9ceb51aa355cb0cc118f68d354db36eae18174bab63affb3e6/psutil-7.1.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1068c303be3a72f8e18e412c5b2a8f6d31750fb152f9cb106b54090296c9d251", size = 289904, upload-time = "2025-11-02T12:26:05.207Z" }, + { url = "https://files.pythonhosted.org/packages/a6/82/62d68066e13e46a5116df187d319d1724b3f437ddd0f958756fc052677f4/psutil-7.1.3-cp313-cp313t-win_amd64.whl", hash = "sha256:18349c5c24b06ac5612c0428ec2a0331c26443d259e2a0144a9b24b4395b58fa", size = 249642, upload-time = "2025-11-02T12:26:07.447Z" }, + { url = "https://files.pythonhosted.org/packages/df/ad/c1cd5fe965c14a0392112f68362cfceb5230819dbb5b1888950d18a11d9f/psutil-7.1.3-cp313-cp313t-win_arm64.whl", hash = "sha256:c525ffa774fe4496282fb0b1187725793de3e7c6b29e41562733cae9ada151ee", size = 245518, upload-time = "2025-11-02T12:26:09.719Z" }, + { url = "https://files.pythonhosted.org/packages/2e/bb/6670bded3e3236eb4287c7bcdc167e9fae6e1e9286e437f7111caed2f909/psutil-7.1.3-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b403da1df4d6d43973dc004d19cee3b848e998ae3154cc8097d139b77156c353", size = 239843, upload-time = "2025-11-02T12:26:11.968Z" }, + { url = "https://files.pythonhosted.org/packages/b8/66/853d50e75a38c9a7370ddbeefabdd3d3116b9c31ef94dc92c6729bc36bec/psutil-7.1.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ad81425efc5e75da3f39b3e636293360ad8d0b49bed7df824c79764fb4ba9b8b", size = 240369, upload-time = "2025-11-02T12:26:14.358Z" }, + { url = "https://files.pythonhosted.org/packages/41/bd/313aba97cb5bfb26916dc29cf0646cbe4dd6a89ca69e8c6edce654876d39/psutil-7.1.3-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f33a3702e167783a9213db10ad29650ebf383946e91bc77f28a5eb083496bc9", size = 288210, upload-time = "2025-11-02T12:26:16.699Z" }, + { url = "https://files.pythonhosted.org/packages/c2/fa/76e3c06e760927a0cfb5705eb38164254de34e9bd86db656d4dbaa228b04/psutil-7.1.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fac9cd332c67f4422504297889da5ab7e05fd11e3c4392140f7370f4208ded1f", size = 291182, upload-time = "2025-11-02T12:26:18.848Z" }, + { url = "https://files.pythonhosted.org/packages/0f/1d/5774a91607035ee5078b8fd747686ebec28a962f178712de100d00b78a32/psutil-7.1.3-cp314-cp314t-win_amd64.whl", hash = "sha256:3792983e23b69843aea49c8f5b8f115572c5ab64c153bada5270086a2123c7e7", size = 250466, upload-time = "2025-11-02T12:26:21.183Z" }, + { url = "https://files.pythonhosted.org/packages/00/ca/e426584bacb43a5cb1ac91fae1937f478cd8fbe5e4ff96574e698a2c77cd/psutil-7.1.3-cp314-cp314t-win_arm64.whl", hash = "sha256:31d77fcedb7529f27bb3a0472bea9334349f9a04160e8e6e5020f22c59893264", size = 245756, upload-time = "2025-11-02T12:26:23.148Z" }, + { url = "https://files.pythonhosted.org/packages/ef/94/46b9154a800253e7ecff5aaacdf8ebf43db99de4a2dfa18575b02548654e/psutil-7.1.3-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2bdbcd0e58ca14996a42adf3621a6244f1bb2e2e528886959c72cf1e326677ab", size = 238359, upload-time = "2025-11-02T12:26:25.284Z" }, + { url = "https://files.pythonhosted.org/packages/68/3a/9f93cff5c025029a36d9a92fef47220ab4692ee7f2be0fba9f92813d0cb8/psutil-7.1.3-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:bc31fa00f1fbc3c3802141eede66f3a2d51d89716a194bf2cd6fc68310a19880", size = 239171, upload-time = "2025-11-02T12:26:27.23Z" }, + { url = "https://files.pythonhosted.org/packages/ce/b1/5f49af514f76431ba4eea935b8ad3725cdeb397e9245ab919dbc1d1dc20f/psutil-7.1.3-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3bb428f9f05c1225a558f53e30ccbad9930b11c3fc206836242de1091d3e7dd3", size = 263261, upload-time = "2025-11-02T12:26:29.48Z" }, + { url = "https://files.pythonhosted.org/packages/e0/95/992c8816a74016eb095e73585d747e0a8ea21a061ed3689474fabb29a395/psutil-7.1.3-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56d974e02ca2c8eb4812c3f76c30e28836fffc311d55d979f1465c1feeb2b68b", size = 264635, upload-time = "2025-11-02T12:26:31.74Z" }, + { url = "https://files.pythonhosted.org/packages/55/4c/c3ed1a622b6ae2fd3c945a366e64eb35247a31e4db16cf5095e269e8eb3c/psutil-7.1.3-cp37-abi3-win_amd64.whl", hash = "sha256:f39c2c19fe824b47484b96f9692932248a54c43799a84282cfe58d05a6449efd", size = 247633, upload-time = "2025-11-02T12:26:33.887Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ad/33b2ccec09bf96c2b2ef3f9a6f66baac8253d7565d8839e024a6b905d45d/psutil-7.1.3-cp37-abi3-win_arm64.whl", hash = "sha256:bd0d69cee829226a761e92f28140bec9a5ee9d5b4fb4b0cc589068dbfff559b1", size = 244608, upload-time = "2025-11-02T12:26:36.136Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, +] + +[[package]] +name = "pyasn1" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322, upload-time = "2024-09-10T22:41:42.55Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135, upload-time = "2024-09-11T16:00:36.122Z" }, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/e6/78ebbb10a8c8e4b61a59249394a4a594c1a7af95593dc933a349c8d00964/pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6", size = 307892, upload-time = "2025-03-28T02:41:22.17Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" }, +] + +[[package]] +name = "pycparser" +version = "2.23" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload-time = "2025-09-09T13:23:47.91Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload-time = "2025-09-09T13:23:46.651Z" }, +] + +[[package]] +name = "pydantic" +version = "2.10.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b7/ae/d5220c5c52b158b1de7ca89fc5edb72f304a70a4c540c84c8844bf4008de/pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236", size = 761681, upload-time = "2025-01-24T01:42:12.693Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", size = 431696, upload-time = "2025-01-24T01:42:10.371Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.27.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/01/f3e5ac5e7c25833db5eb555f7b7ab24cd6f8c322d3a3ad2d67a952dc0abc/pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", size = 413443, upload-time = "2024-12-18T11:31:54.917Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/b1/9bc383f48f8002f99104e3acff6cba1231b29ef76cfa45d1506a5cad1f84/pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b", size = 1892709, upload-time = "2024-12-18T11:29:03.193Z" }, + { url = "https://files.pythonhosted.org/packages/10/6c/e62b8657b834f3eb2961b49ec8e301eb99946245e70bf42c8817350cbefc/pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154", size = 1811273, upload-time = "2024-12-18T11:29:05.306Z" }, + { url = "https://files.pythonhosted.org/packages/ba/15/52cfe49c8c986e081b863b102d6b859d9defc63446b642ccbbb3742bf371/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9", size = 1823027, upload-time = "2024-12-18T11:29:07.294Z" }, + { url = "https://files.pythonhosted.org/packages/b1/1c/b6f402cfc18ec0024120602bdbcebc7bdd5b856528c013bd4d13865ca473/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9", size = 1868888, upload-time = "2024-12-18T11:29:09.249Z" }, + { url = "https://files.pythonhosted.org/packages/bd/7b/8cb75b66ac37bc2975a3b7de99f3c6f355fcc4d89820b61dffa8f1e81677/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1", size = 2037738, upload-time = "2024-12-18T11:29:11.23Z" }, + { url = "https://files.pythonhosted.org/packages/c8/f1/786d8fe78970a06f61df22cba58e365ce304bf9b9f46cc71c8c424e0c334/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a", size = 2685138, upload-time = "2024-12-18T11:29:16.396Z" }, + { url = "https://files.pythonhosted.org/packages/a6/74/d12b2cd841d8724dc8ffb13fc5cef86566a53ed358103150209ecd5d1999/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e", size = 1997025, upload-time = "2024-12-18T11:29:20.25Z" }, + { url = "https://files.pythonhosted.org/packages/a0/6e/940bcd631bc4d9a06c9539b51f070b66e8f370ed0933f392db6ff350d873/pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4", size = 2004633, upload-time = "2024-12-18T11:29:23.877Z" }, + { url = "https://files.pythonhosted.org/packages/50/cc/a46b34f1708d82498c227d5d80ce615b2dd502ddcfd8376fc14a36655af1/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27", size = 1999404, upload-time = "2024-12-18T11:29:25.872Z" }, + { url = "https://files.pythonhosted.org/packages/ca/2d/c365cfa930ed23bc58c41463bae347d1005537dc8db79e998af8ba28d35e/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee", size = 2130130, upload-time = "2024-12-18T11:29:29.252Z" }, + { url = "https://files.pythonhosted.org/packages/f4/d7/eb64d015c350b7cdb371145b54d96c919d4db516817f31cd1c650cae3b21/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1", size = 2157946, upload-time = "2024-12-18T11:29:31.338Z" }, + { url = "https://files.pythonhosted.org/packages/a4/99/bddde3ddde76c03b65dfd5a66ab436c4e58ffc42927d4ff1198ffbf96f5f/pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130", size = 1834387, upload-time = "2024-12-18T11:29:33.481Z" }, + { url = "https://files.pythonhosted.org/packages/71/47/82b5e846e01b26ac6f1893d3c5f9f3a2eb6ba79be26eef0b759b4fe72946/pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee", size = 1990453, upload-time = "2024-12-18T11:29:35.533Z" }, + { url = "https://files.pythonhosted.org/packages/51/b2/b2b50d5ecf21acf870190ae5d093602d95f66c9c31f9d5de6062eb329ad1/pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b", size = 1885186, upload-time = "2024-12-18T11:29:37.649Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pylatex" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ordered-set" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/a8/10cf6b955b5fa19438790d9949867e04c785ae845e631c5ef6db444401d1/PyLaTeX-1.4.2.tar.gz", hash = "sha256:bb7b21bec57ecdba3f6f44c856ebebdf6549fd6e80661bd44fd5094236729242", size = 59710, upload-time = "2023-10-19T16:22:54.096Z" } + +[[package]] +name = "pyparsing" +version = "3.2.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/a5/181488fc2b9d093e3972d2a472855aae8a03f000592dbfce716a512b3359/pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6", size = 1099274, upload-time = "2025-09-21T04:11:06.277Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e", size = 113890, upload-time = "2025-09-21T04:11:04.117Z" }, +] + +[[package]] +name = "pyqasm" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "openqasm3", extra = ["parser"] }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cb/f5/12402c14b6e9cc531173ccb18e5e0e896db9eda7552b01f608fac54c9b1b/pyqasm-1.0.0.tar.gz", hash = "sha256:5b7fb7e36496099797d7016b91ee073e9cdd4792a93c65c5ccb370a0cd5b7042", size = 107451, upload-time = "2025-09-19T06:33:55.944Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/7e/cf5d9fb9c749bfe6cc4b2ddf0e6a34266db278da8aad9231784a06313c8f/pyqasm-1.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6a2047a312980256320b285e9a43176dbf3037a7e384989fb90df823e315273a", size = 222336, upload-time = "2025-09-19T06:33:50.497Z" }, + { url = "https://files.pythonhosted.org/packages/12/1f/ea089318475689c4a28c7bdbfeaeb33cb8c7aaeddc07404aebe47d93eceb/pyqasm-1.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6eeae5e474dff121fb641a68ece38b115b04719a08091bb89913df880c5c97c2", size = 215377, upload-time = "2025-09-19T06:33:51.93Z" }, + { url = "https://files.pythonhosted.org/packages/dd/f4/9e623e5afc49cde1815dd8b9fabdccb0374026fd5303f5d8fa55cf32e609/pyqasm-1.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:71a49965e58a51c7cdd72bc48ed168c9eb04ac8a755b46b29fbb8e72c4c9e70e", size = 729854, upload-time = "2025-09-19T06:33:53.138Z" }, + { url = "https://files.pythonhosted.org/packages/28/93/d0891f1f12d11192ada4ff4c639a395c9d6c5bc0ec730741e9ebf239e028/pyqasm-1.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:e3bdcd5ac943effeefd4d9aa636b4f496cb46ab353cd4540c00d5323eaebe514", size = 210816, upload-time = "2025-09-19T06:33:54.202Z" }, +] + +[[package]] +name = "pyqrack-cpu" +version = "1.69.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/44/7b663de655e700b83b86e9a907599b7b9842e4e283021a264afcc83d240a/pyqrack_cpu-1.69.1.tar.gz", hash = "sha256:62a2ebb00e6dc4b9cc4f4e950dc98dc1fb778204fbf228a2226ad9f303d5d63f", size = 49638, upload-time = "2025-09-29T01:06:38.321Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/2e/e9ab02a36b139a052bb7d5e3cba3f72f730c2de36144e29db90d4254f4a4/pyqrack_cpu-1.69.1-py3-none-macosx_13_0_x86_64.whl", hash = "sha256:557c498965991bab3be9b4009f0cf8265a0cec331953f8e5ff6ba0b1a297bf16", size = 2121543, upload-time = "2025-09-29T01:06:07.365Z" }, + { url = "https://files.pythonhosted.org/packages/ea/43/1ac3667a382a01951db3c3cb00473ae400bfc76d6d1c170b3f5f91e3c932/pyqrack_cpu-1.69.1-py3-none-macosx_14_0_arm64.whl", hash = "sha256:0123f6fb74a9c1b96ad67f434a25db141157f52aff88706b32b003a96b023fa5", size = 1897087, upload-time = "2025-09-29T01:06:10.316Z" }, + { url = "https://files.pythonhosted.org/packages/1e/1b/0a1bf54a6016064728954079e5542116510f5aab7f33fca9a60ac26b44e8/pyqrack_cpu-1.69.1-py3-none-macosx_15_0_arm64.whl", hash = "sha256:2c91d696e7d6d4b846b921b4218e9e16a9d37c54025da96adfdd86e876c18a7d", size = 1876107, upload-time = "2025-09-29T01:06:12.642Z" }, + { url = "https://files.pythonhosted.org/packages/11/26/9817a321ed68b26f5b892d926287cf03895597e8b782402a9afc531871db/pyqrack_cpu-1.69.1-py3-none-manylinux_2_35_x86_64.whl", hash = "sha256:0ab971bf5f0c69da7e51a7fe957a3d083e91d687ab9f83670ef539e0d2f1c24c", size = 2682403, upload-time = "2025-09-29T01:06:15.38Z" }, + { url = "https://files.pythonhosted.org/packages/2f/7e/062dfbd222fc98f0c32ed32755a6f096e71daee287578cfc7c11297878df/pyqrack_cpu-1.69.1-py3-none-manylinux_2_39_x86_64.whl", hash = "sha256:11e4e0ef020fcecacf0440008b2af172623ed308f7616f0d6952f3f8c019c0d5", size = 2712876, upload-time = "2025-09-29T01:06:19.663Z" }, + { url = "https://files.pythonhosted.org/packages/55/02/147a3ec52357cc3cb7ddfa7054788b1f56eeb5da5672f051e17a8004a2bc/pyqrack_cpu-1.69.1-py3-none-win_amd64.whl", hash = "sha256:d910ac73e2c8fb139c2f2040a28663a41680dadcbf8659db12032be1b4184bc1", size = 819230, upload-time = "2025-09-29T01:06:21.632Z" }, +] + +[[package]] +name = "pyqt5" +version = "5.15.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyqt5-qt5", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "pyqt5-sip", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/07/c9ed0bd428df6f87183fca565a79fee19fa7c88c7f00a7f011ab4379e77a/PyQt5-5.15.11.tar.gz", hash = "sha256:fda45743ebb4a27b4b1a51c6d8ef455c4c1b5d610c90d2934c7802b5c1557c52", size = 3216775, upload-time = "2024-07-19T08:39:57.756Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/64/42ec1b0bd72d87f87bde6ceb6869f444d91a2d601f2e67cd05febc0346a1/PyQt5-5.15.11-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:c8b03dd9380bb13c804f0bdb0f4956067f281785b5e12303d529f0462f9afdc2", size = 6579776, upload-time = "2024-07-19T08:39:19.775Z" }, + { url = "https://files.pythonhosted.org/packages/49/f5/3fb696f4683ea45d68b7e77302eff173493ac81e43d63adb60fa760b9f91/PyQt5-5.15.11-cp38-abi3-macosx_11_0_x86_64.whl", hash = "sha256:6cd75628f6e732b1ffcfe709ab833a0716c0445d7aec8046a48d5843352becb6", size = 7016415, upload-time = "2024-07-19T08:39:32.977Z" }, + { url = "https://files.pythonhosted.org/packages/b4/8c/4065950f9d013c4b2e588fe33cf04e564c2322842d84dbcbce5ba1dc28b0/PyQt5-5.15.11-cp38-abi3-manylinux_2_17_x86_64.whl", hash = "sha256:cd672a6738d1ae33ef7d9efa8e6cb0a1525ecf53ec86da80a9e1b6ec38c8d0f1", size = 8188103, upload-time = "2024-07-19T08:39:40.561Z" }, +] + +[[package]] +name = "pyqt5-qt5" +version = "5.15.18" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/90/bf01ac2132400997a3474051dd680a583381ebf98b2f5d64d4e54138dc42/pyqt5_qt5-5.15.18-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:8bb997eb903afa9da3221a0c9e6eaa00413bbeb4394d5706118ad05375684767", size = 39715743, upload-time = "2025-11-09T12:56:42.936Z" }, + { url = "https://files.pythonhosted.org/packages/24/8e/76366484d9f9dbe28e3bdfc688183433a7b82e314216e9b14c89e5fab690/pyqt5_qt5-5.15.18-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c656af9c1e6aaa7f59bf3d8995f2fa09adbf6762b470ed284c31dca80d686a26", size = 36798484, upload-time = "2025-11-09T12:56:59.998Z" }, + { url = "https://files.pythonhosted.org/packages/9a/46/ffe177f99f897a59dc237a20059020427bd2d3853d713992b8081933ddfe/pyqt5_qt5-5.15.18-py3-none-manylinux2014_x86_64.whl", hash = "sha256:bf2457e6371969736b4f660a0c153258fa03dbc6a181348218e6f05421682af7", size = 60864590, upload-time = "2025-11-09T12:57:26.724Z" }, +] + +[[package]] +name = "pyqt5-sip" +version = "12.17.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ea/08/88a20c862f40b5c178c517cdc7e93767967dec5ac1b994e226d517991c9b/pyqt5_sip-12.17.1.tar.gz", hash = "sha256:0eab72bcb628f1926bf5b9ac51259d4fa18e8b2a81d199071135458f7d087ea8", size = 104136, upload-time = "2025-10-08T09:04:19.893Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/58/9ecb688050e79ffe7bbd9fc917aa13f63856a5081ac46bbce87bb11ab971/pyqt5_sip-12.17.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9ebbd7769ccdaaa6295e9c872553b6cde17f38e171056f17300d8af9a14d1fc8", size = 124485, upload-time = "2025-10-08T09:04:17.473Z" }, + { url = "https://files.pythonhosted.org/packages/b1/9f/ae691360a9f18e3e06fd297e854d7ad175367e35ea184fd2fcf6c79b8c25/pyqt5_sip-12.17.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b023da906a70af2cf5e6fc1932f441ede07530f3e164dd52c6c2bb5ab7c6f424", size = 281923, upload-time = "2025-10-08T09:15:37.004Z" }, + { url = "https://files.pythonhosted.org/packages/71/f9/06c09dc94474ffe3f518f80e47fc69d34abf8e4a971ae7e7c667d6ff30a7/pyqt5_sip-12.17.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c49918287e1ad77956d1589f1d3d432a0be7630c646ea02cf652413a48e14458", size = 124400, upload-time = "2025-10-08T08:38:23.927Z" }, + { url = "https://files.pythonhosted.org/packages/40/ae/be6e338ea427deac5cd81a93f51ae3fb6505d99d6d5e5d5341bcc099327e/pyqt5_sip-12.17.1-cp314-cp314-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:944a4bf1e1ee18ad03a54964c1c6433fb6de582313a1f0b17673e7203e22fc83", size = 282291, upload-time = "2025-10-08T08:38:25.735Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-json-logger" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/29/bf/eca6a3d43db1dae7070f70e160ab20b807627ba953663ba07928cdd3dc58/python_json_logger-4.0.0.tar.gz", hash = "sha256:f58e68eb46e1faed27e0f574a55a0455eecd7b8a5b88b85a784519ba3cff047f", size = 17683, upload-time = "2025-10-06T04:15:18.984Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/e5/fecf13f06e5e5f67e8837d777d1bc43fac0ed2b77a676804df5c34744727/python_json_logger-4.0.0-py3-none-any.whl", hash = "sha256:af09c9daf6a813aa4cc7180395f50f2a9e5fa056034c9953aec92e381c5ba1e2", size = 15548, upload-time = "2025-10-06T04:15:17.553Z" }, +] + +[[package]] +name = "pytokens" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4e/8d/a762be14dae1c3bf280202ba3172020b2b0b4c537f94427435f19c413b72/pytokens-0.3.0.tar.gz", hash = "sha256:2f932b14ed08de5fcf0b391ace2642f858f1394c0857202959000b68ed7a458a", size = 17644, upload-time = "2025-11-05T13:36:35.34Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/25/d9db8be44e205a124f6c98bc0324b2bb149b7431c53877fc6d1038dddaf5/pytokens-0.3.0-py3-none-any.whl", hash = "sha256:95b2b5eaf832e469d141a378872480ede3f251a5a5041b8ec6e581d3ac71bbf3", size = 12195, upload-time = "2025-11-05T13:36:33.183Z" }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, +] + +[[package]] +name = "pywinpty" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/bb/a7cc2967c5c4eceb6cc49cfe39447d4bfc56e6c865e7c2249b6eb978935f/pywinpty-3.0.2.tar.gz", hash = "sha256:1505cc4cb248af42cb6285a65c9c2086ee9e7e574078ee60933d5d7fa86fb004", size = 30669, upload-time = "2025-10-03T21:16:29.205Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/19/b757fe28008236a4a713e813283721b8a40aa60cd7d3f83549f2e25a3155/pywinpty-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:18f78b81e4cfee6aabe7ea8688441d30247b73e52cd9657138015c5f4ee13a51", size = 2050057, upload-time = "2025-10-03T21:19:26.732Z" }, + { url = "https://files.pythonhosted.org/packages/cb/44/cbae12ecf6f4fa4129c36871fd09c6bef4f98d5f625ecefb5e2449765508/pywinpty-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:663383ecfab7fc382cc97ea5c4f7f0bb32c2f889259855df6ea34e5df42d305b", size = 2049874, upload-time = "2025-10-03T21:18:53.923Z" }, + { url = "https://files.pythonhosted.org/packages/ca/15/f12c6055e2d7a617d4d5820e8ac4ceaff849da4cb124640ef5116a230771/pywinpty-3.0.2-cp314-cp314-win_amd64.whl", hash = "sha256:28297cecc37bee9f24d8889e47231972d6e9e84f7b668909de54f36ca785029a", size = 2050386, upload-time = "2025-10-03T21:18:50.477Z" }, + { url = "https://files.pythonhosted.org/packages/de/24/c6907c5bb06043df98ad6a0a0ff5db2e0affcecbc3b15c42404393a3f72a/pywinpty-3.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:34b55ae9a1b671fe3eae071d86618110538e8eaad18fcb1531c0830b91a82767", size = 2049834, upload-time = "2025-10-03T21:19:25.688Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "pyzmq" +version = "27.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/0b/3c9baedbdf613ecaa7aa07027780b8867f57b6293b6ee50de316c9f3222b/pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540", size = 281750, upload-time = "2025-09-08T23:10:18.157Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc", size = 1306279, upload-time = "2025-09-08T23:08:03.807Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5e/c3c49fdd0f535ef45eefcc16934648e9e59dace4a37ee88fc53f6cd8e641/pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113", size = 895645, upload-time = "2025-09-08T23:08:05.301Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e5/b0b2504cb4e903a74dcf1ebae157f9e20ebb6ea76095f6cfffea28c42ecd/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233", size = 652574, upload-time = "2025-09-08T23:08:06.828Z" }, + { url = "https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31", size = 840995, upload-time = "2025-09-08T23:08:08.396Z" }, + { url = "https://files.pythonhosted.org/packages/c2/bb/b79798ca177b9eb0825b4c9998c6af8cd2a7f15a6a1a4272c1d1a21d382f/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28", size = 1642070, upload-time = "2025-09-08T23:08:09.989Z" }, + { url = "https://files.pythonhosted.org/packages/9c/80/2df2e7977c4ede24c79ae39dcef3899bfc5f34d1ca7a5b24f182c9b7a9ca/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856", size = 2021121, upload-time = "2025-09-08T23:08:11.907Z" }, + { url = "https://files.pythonhosted.org/packages/46/bd/2d45ad24f5f5ae7e8d01525eb76786fa7557136555cac7d929880519e33a/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496", size = 1878550, upload-time = "2025-09-08T23:08:13.513Z" }, + { url = "https://files.pythonhosted.org/packages/e6/2f/104c0a3c778d7c2ab8190e9db4f62f0b6957b53c9d87db77c284b69f33ea/pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd", size = 559184, upload-time = "2025-09-08T23:08:15.163Z" }, + { url = "https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf", size = 619480, upload-time = "2025-09-08T23:08:17.192Z" }, + { url = "https://files.pythonhosted.org/packages/78/c2/c012beae5f76b72f007a9e91ee9401cb88c51d0f83c6257a03e785c81cc2/pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f", size = 552993, upload-time = "2025-09-08T23:08:18.926Z" }, + { url = "https://files.pythonhosted.org/packages/60/cb/84a13459c51da6cec1b7b1dc1a47e6db6da50b77ad7fd9c145842750a011/pyzmq-27.1.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5", size = 1122436, upload-time = "2025-09-08T23:08:20.801Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b6/94414759a69a26c3dd674570a81813c46a078767d931a6c70ad29fc585cb/pyzmq-27.1.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6", size = 1156301, upload-time = "2025-09-08T23:08:22.47Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ad/15906493fd40c316377fd8a8f6b1f93104f97a752667763c9b9c1b71d42d/pyzmq-27.1.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7", size = 1341197, upload-time = "2025-09-08T23:08:24.286Z" }, + { url = "https://files.pythonhosted.org/packages/14/1d/d343f3ce13db53a54cb8946594e567410b2125394dafcc0268d8dda027e0/pyzmq-27.1.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05", size = 897275, upload-time = "2025-09-08T23:08:26.063Z" }, + { url = "https://files.pythonhosted.org/packages/69/2d/d83dd6d7ca929a2fc67d2c3005415cdf322af7751d773524809f9e585129/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9", size = 660469, upload-time = "2025-09-08T23:08:27.623Z" }, + { url = "https://files.pythonhosted.org/packages/3e/cd/9822a7af117f4bc0f1952dbe9ef8358eb50a24928efd5edf54210b850259/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128", size = 847961, upload-time = "2025-09-08T23:08:29.672Z" }, + { url = "https://files.pythonhosted.org/packages/9a/12/f003e824a19ed73be15542f172fd0ec4ad0b60cf37436652c93b9df7c585/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39", size = 1650282, upload-time = "2025-09-08T23:08:31.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4a/e82d788ed58e9a23995cee70dbc20c9aded3d13a92d30d57ec2291f1e8a3/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97", size = 2024468, upload-time = "2025-09-08T23:08:33.543Z" }, + { url = "https://files.pythonhosted.org/packages/d9/94/2da0a60841f757481e402b34bf4c8bf57fa54a5466b965de791b1e6f747d/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db", size = 1885394, upload-time = "2025-09-08T23:08:35.51Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6f/55c10e2e49ad52d080dc24e37adb215e5b0d64990b57598abc2e3f01725b/pyzmq-27.1.0-cp313-cp313t-win32.whl", hash = "sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c", size = 574964, upload-time = "2025-09-08T23:08:37.178Z" }, + { url = "https://files.pythonhosted.org/packages/87/4d/2534970ba63dd7c522d8ca80fb92777f362c0f321900667c615e2067cb29/pyzmq-27.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2", size = 641029, upload-time = "2025-09-08T23:08:40.595Z" }, + { url = "https://files.pythonhosted.org/packages/f6/fa/f8aea7a28b0641f31d40dea42d7ef003fded31e184ef47db696bc74cd610/pyzmq-27.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e", size = 561541, upload-time = "2025-09-08T23:08:42.668Z" }, + { url = "https://files.pythonhosted.org/packages/87/45/19efbb3000956e82d0331bafca5d9ac19ea2857722fa2caacefb6042f39d/pyzmq-27.1.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ce980af330231615756acd5154f29813d553ea555485ae712c491cd483df6b7a", size = 1341197, upload-time = "2025-09-08T23:08:44.973Z" }, + { url = "https://files.pythonhosted.org/packages/48/43/d72ccdbf0d73d1343936296665826350cb1e825f92f2db9db3e61c2162a2/pyzmq-27.1.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1779be8c549e54a1c38f805e56d2a2e5c009d26de10921d7d51cfd1c8d4632ea", size = 897175, upload-time = "2025-09-08T23:08:46.601Z" }, + { url = "https://files.pythonhosted.org/packages/2f/2e/a483f73a10b65a9ef0161e817321d39a770b2acf8bcf3004a28d90d14a94/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7200bb0f03345515df50d99d3db206a0a6bee1955fbb8c453c76f5bf0e08fb96", size = 660427, upload-time = "2025-09-08T23:08:48.187Z" }, + { url = "https://files.pythonhosted.org/packages/f5/d2/5f36552c2d3e5685abe60dfa56f91169f7a2d99bbaf67c5271022ab40863/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01c0e07d558b06a60773744ea6251f769cd79a41a97d11b8bf4ab8f034b0424d", size = 847929, upload-time = "2025-09-08T23:08:49.76Z" }, + { url = "https://files.pythonhosted.org/packages/c4/2a/404b331f2b7bf3198e9945f75c4c521f0c6a3a23b51f7a4a401b94a13833/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:80d834abee71f65253c91540445d37c4c561e293ba6e741b992f20a105d69146", size = 1650193, upload-time = "2025-09-08T23:08:51.7Z" }, + { url = "https://files.pythonhosted.org/packages/1c/0b/f4107e33f62a5acf60e3ded67ed33d79b4ce18de432625ce2fc5093d6388/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:544b4e3b7198dde4a62b8ff6685e9802a9a1ebf47e77478a5eb88eca2a82f2fd", size = 2024388, upload-time = "2025-09-08T23:08:53.393Z" }, + { url = "https://files.pythonhosted.org/packages/0d/01/add31fe76512642fd6e40e3a3bd21f4b47e242c8ba33efb6809e37076d9b/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cedc4c68178e59a4046f97eca31b148ddcf51e88677de1ef4e78cf06c5376c9a", size = 1885316, upload-time = "2025-09-08T23:08:55.702Z" }, + { url = "https://files.pythonhosted.org/packages/c4/59/a5f38970f9bf07cee96128de79590bb354917914a9be11272cfc7ff26af0/pyzmq-27.1.0-cp314-cp314t-win32.whl", hash = "sha256:1f0b2a577fd770aa6f053211a55d1c47901f4d537389a034c690291485e5fe92", size = 587472, upload-time = "2025-09-08T23:08:58.18Z" }, + { url = "https://files.pythonhosted.org/packages/70/d8/78b1bad170f93fcf5e3536e70e8fadac55030002275c9a29e8f5719185de/pyzmq-27.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:19c9468ae0437f8074af379e986c5d3d7d7bfe033506af442e8c879732bedbe0", size = 661401, upload-time = "2025-09-08T23:08:59.802Z" }, + { url = "https://files.pythonhosted.org/packages/81/d6/4bfbb40c9a0b42fc53c7cf442f6385db70b40f74a783130c5d0a5aa62228/pyzmq-27.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7", size = 575170, upload-time = "2025-09-08T23:09:01.418Z" }, +] + +[[package]] +name = "qbraid" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "openqasm3", extra = ["parser"] }, + { name = "pydantic" }, + { name = "pydantic-core" }, + { name = "pyqasm" }, + { name = "qbraid-core" }, + { name = "rustworkx" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6f/2b/1c70b99c074cad5d8ae5f3bca0ce572c3788f2d08a5bc498a083fed9e78a/qbraid-0.10.0.tar.gz", hash = "sha256:92360bd214c88954dfbc9db58656f944cbbd5651c4783684a926172e3cabe311", size = 550945, upload-time = "2025-10-14T20:37:24.647Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/fe/6cc21ff5cb20067522f799f1fb3d617ff36ef0c907c295c1f4b63e25fb6f/qbraid-0.10.0-py3-none-any.whl", hash = "sha256:96fb842e20f9f7e7f933346cca09f1af2789b7f3f590f420bbb6f4fe9d7ffefd", size = 296480, upload-time = "2025-10-14T20:37:22.948Z" }, +] + +[[package]] +name = "qbraid-core" +version = "0.1.45" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "requests" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0d/f2/076eb301779341e6b6684752b80a7d9c81fdd87da740427180fd977a8eef/qbraid_core-0.1.45.tar.gz", hash = "sha256:ffc1bc64e878fdbed244026d31fe26c6b30219b41192e90dde15c2d54cad441f", size = 231711, upload-time = "2025-10-20T22:25:29.099Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/5e/286ee750e48ecc83fc3f817acf19e6529c916dd09ad9d589bd09233c39a3/qbraid_core-0.1.45-py3-none-any.whl", hash = "sha256:87bf6a61f1056a8679639761e5d5fe733abff29f1ab9ccb7abc2833610ac9736", size = 84250, upload-time = "2025-10-20T22:25:27.452Z" }, +] + +[[package]] +name = "qec" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "black", extra = ["jupyter"] }, + { name = "bloqade" }, + { name = "cirq" }, + { name = "matplotlib" }, + { name = "notebook" }, + { name = "numpy" }, +] + +[package.dev-dependencies] +dev = [ + { name = "black" }, +] + +[package.metadata] +requires-dist = [ + { name = "black", extras = ["jupyter"], specifier = ">=25.11.0" }, + { name = "bloqade", specifier = ">=0.30.0" }, + { name = "cirq", specifier = ">=1.6.1" }, + { name = "matplotlib", specifier = ">=3.10.7" }, + { name = "notebook", specifier = ">=7.5.0" }, + { name = "numpy", specifier = ">=2.3.5" }, +] + +[package.metadata.requires-dev] +dev = [{ name = "black", specifier = ">=25.11.0" }] + +[[package]] +name = "qpsolvers" +version = "4.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/87/42743adbcc31728798b26c219b14fadf02c12d49d691cd0f5813cb493c51/qpsolvers-4.8.1.tar.gz", hash = "sha256:69548b6871c57312b03b35826cc443b460adfd6d195d45bc21b12de21ca2f915", size = 97660, upload-time = "2025-08-07T05:54:36.105Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e4/02/aa2050f2beba7c07ead8d2efe1f7876a0b8cc538d4718511c46e210d9ff2/qpsolvers-4.8.1-py3-none-any.whl", hash = "sha256:ebbda8f4391968582e634bece6c865d4737f5199e2a35795092ca0ff4891a845", size = 92104, upload-time = "2025-08-07T05:54:33.365Z" }, +] + +[package.optional-dependencies] +clarabel = [ + { name = "clarabel" }, +] + +[[package]] +name = "quimb" +version = "1.11.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "autoray" }, + { name = "cotengra" }, + { name = "cytoolz" }, + { name = "numba" }, + { name = "numpy" }, + { name = "psutil" }, + { name = "scipy" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/db/f6/71786ef5898856fffdbdb4d650d3f81bf3e1cfa92e61405c3858a59c696f/quimb-1.11.2.tar.gz", hash = "sha256:12546651f714e4ff3adb53dc7b620b4c4eb3fd8d8aafad0f92ac4cc04f03440c", size = 10142651, upload-time = "2025-07-31T00:25:26.477Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/be/cc32aaf468c5856e0c738ae7b2e494d12d50db3906c751834ca5f0e157fb/quimb-1.11.2-py3-none-any.whl", hash = "sha256:5c8a66311f54f3894e39f23d83cef4537cc6d41011779733ca303f3e5f09c7b8", size = 2077705, upload-time = "2025-07-31T00:25:24.383Z" }, +] + +[[package]] +name = "referencing" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, +] + +[[package]] +name = "requests" +version = "2.32.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, +] + +[[package]] +name = "requests-aws-sign" +version = "0.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "boto3" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e8/14/27d8eed7ef7870525ed9888eaa273d6c564562367a1678a85496d6b4ccf2/requests_aws_sign-0.1.6.tar.gz", hash = "sha256:17b2d21f7677df638cbe22d531bda59f7dbe36493f0fe0b8f5c19b36780b8111", size = 4042, upload-time = "2020-07-05T12:03:32.069Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/e7/6355fbd71106e2255a8cbf34114af88fc3a59b710f705a2ebd64c2d60701/requests_aws_sign-0.1.6-py3-none-any.whl", hash = "sha256:b4d082e098aeccbfbb40af13f9217bbc50841dac8da72297cfec8098fe0b1974", size = 3008, upload-time = "2020-07-05T12:03:30.395Z" }, +] + +[[package]] +name = "requests-sigv4" +version = "0.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "boto3" }, + { name = "requests" }, + { name = "requests-aws-sign" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cb/1a/87638abd6ef571b0cca1a23e30bd412622f1e86d3de6f51f4ae989d711b3/requests-sigv4-0.1.6.tar.gz", hash = "sha256:92ef3cbebd7e20f33b2564ba0d18f5130d249860dd784840136aa5788c74c308", size = 4829, upload-time = "2022-06-24T20:37:44.224Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/e4/6886a4ae6d33b0eaec1d41673d80b1557089ee5c36dc6b254ff74c3beb91/requests_sigv4-0.1.6-py3-none-any.whl", hash = "sha256:b24b162f1cd38a557ce1b697d2ea2ddbc628d63f69a51987a69048e77dd70326", size = 4826, upload-time = "2022-06-24T20:37:42.034Z" }, +] + +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, +] + +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload-time = "2019-10-28T16:00:19.144Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, +] + +[[package]] +name = "rfc3987-syntax" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lark" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2c/06/37c1a5557acf449e8e406a830a05bf885ac47d33270aec454ef78675008d/rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d", size = 14239, upload-time = "2025-07-18T01:05:05.015Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/71/44ce230e1b7fadd372515a97e32a83011f906ddded8d03e3c6aafbdedbb7/rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f", size = 8046, upload-time = "2025-07-18T01:05:03.843Z" }, +] + +[[package]] +name = "rich" +version = "14.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/d2/8920e102050a0de7bfabeb4c4614a49248cf8d5d7a8d01885fbb24dc767a/rich-14.2.0.tar.gz", hash = "sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4", size = 219990, upload-time = "2025-10-09T14:16:53.064Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd", size = 243393, upload-time = "2025-10-09T14:16:51.245Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.29.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/33/23b3b3419b6a3e0f559c7c0d2ca8fc1b9448382b25245033788785921332/rpds_py-0.29.0.tar.gz", hash = "sha256:fe55fe686908f50154d1dc599232016e50c243b438c3b7432f24e2895b0e5359", size = 69359, upload-time = "2025-11-16T14:50:39.532Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/d9/c5de60d9d371bbb186c3e9bf75f4fc5665e11117a25a06a6b2e0afb7380e/rpds_py-0.29.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1585648d0760b88292eecab5181f5651111a69d90eff35d6b78aa32998886a61", size = 375710, upload-time = "2025-11-16T14:48:41.063Z" }, + { url = "https://files.pythonhosted.org/packages/b3/b3/0860cdd012291dc21272895ce107f1e98e335509ba986dd83d72658b82b9/rpds_py-0.29.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:521807963971a23996ddaf764c682b3e46459b3c58ccd79fefbe16718db43154", size = 360582, upload-time = "2025-11-16T14:48:42.423Z" }, + { url = "https://files.pythonhosted.org/packages/92/8a/a18c2f4a61b3407e56175f6aab6deacdf9d360191a3d6f38566e1eaf7266/rpds_py-0.29.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a8896986efaa243ab713c69e6491a4138410f0fe36f2f4c71e18bd5501e8014", size = 391172, upload-time = "2025-11-16T14:48:43.75Z" }, + { url = "https://files.pythonhosted.org/packages/fd/49/e93354258508c50abc15cdcd5fcf7ac4117f67bb6233ad7859f75e7372a0/rpds_py-0.29.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1d24564a700ef41480a984c5ebed62b74e6ce5860429b98b1fede76049e953e6", size = 409586, upload-time = "2025-11-16T14:48:45.498Z" }, + { url = "https://files.pythonhosted.org/packages/5a/8d/a27860dae1c19a6bdc901f90c81f0d581df1943355802961a57cdb5b6cd1/rpds_py-0.29.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6596b93c010d386ae46c9fba9bfc9fc5965fa8228edeac51576299182c2e31c", size = 516339, upload-time = "2025-11-16T14:48:47.308Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ad/a75e603161e79b7110c647163d130872b271c6b28712c803c65d492100f7/rpds_py-0.29.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5cc58aac218826d054c7da7f95821eba94125d88be673ff44267bb89d12a5866", size = 416201, upload-time = "2025-11-16T14:48:48.615Z" }, + { url = "https://files.pythonhosted.org/packages/b9/42/555b4ee17508beafac135c8b450816ace5a96194ce97fefc49d58e5652ea/rpds_py-0.29.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de73e40ebc04dd5d9556f50180395322193a78ec247e637e741c1b954810f295", size = 395095, upload-time = "2025-11-16T14:48:50.027Z" }, + { url = "https://files.pythonhosted.org/packages/cd/f0/c90b671b9031e800ec45112be42ea9f027f94f9ac25faaac8770596a16a1/rpds_py-0.29.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:295ce5ac7f0cf69a651ea75c8f76d02a31f98e5698e82a50a5f4d4982fbbae3b", size = 410077, upload-time = "2025-11-16T14:48:51.515Z" }, + { url = "https://files.pythonhosted.org/packages/3d/80/9af8b640b81fe21e6f718e9dec36c0b5f670332747243130a5490f292245/rpds_py-0.29.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1ea59b23ea931d494459c8338056fe7d93458c0bf3ecc061cd03916505369d55", size = 424548, upload-time = "2025-11-16T14:48:53.237Z" }, + { url = "https://files.pythonhosted.org/packages/e4/0b/b5647446e991736e6a495ef510e6710df91e880575a586e763baeb0aa770/rpds_py-0.29.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f49d41559cebd608042fdcf54ba597a4a7555b49ad5c1c0c03e0af82692661cd", size = 573661, upload-time = "2025-11-16T14:48:54.769Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b3/1b1c9576839ff583d1428efbf59f9ee70498d8ce6c0b328ac02f1e470879/rpds_py-0.29.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:05a2bd42768ea988294ca328206efbcc66e220d2d9b7836ee5712c07ad6340ea", size = 600937, upload-time = "2025-11-16T14:48:56.247Z" }, + { url = "https://files.pythonhosted.org/packages/6c/7b/b6cfca2f9fee4c4494ce54f7fb1b9f578867495a9aa9fc0d44f5f735c8e0/rpds_py-0.29.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:33ca7bdfedd83339ca55da3a5e1527ee5870d4b8369456b5777b197756f3ca22", size = 564496, upload-time = "2025-11-16T14:48:57.691Z" }, + { url = "https://files.pythonhosted.org/packages/b9/fb/ba29ec7f0f06eb801bac5a23057a9ff7670623b5e8013bd59bec4aa09de8/rpds_py-0.29.0-cp313-cp313-win32.whl", hash = "sha256:20c51ae86a0bb9accc9ad4e6cdeec58d5ebb7f1b09dd4466331fc65e1766aae7", size = 223126, upload-time = "2025-11-16T14:48:59.058Z" }, + { url = "https://files.pythonhosted.org/packages/3c/6b/0229d3bed4ddaa409e6d90b0ae967ed4380e4bdd0dad6e59b92c17d42457/rpds_py-0.29.0-cp313-cp313-win_amd64.whl", hash = "sha256:6410e66f02803600edb0b1889541f4b5cc298a5ccda0ad789cc50ef23b54813e", size = 239771, upload-time = "2025-11-16T14:49:00.872Z" }, + { url = "https://files.pythonhosted.org/packages/e4/38/d2868f058b164f8efd89754d85d7b1c08b454f5c07ac2e6cc2e9bd4bd05b/rpds_py-0.29.0-cp313-cp313-win_arm64.whl", hash = "sha256:56838e1cd9174dc23c5691ee29f1d1be9eab357f27efef6bded1328b23e1ced2", size = 229994, upload-time = "2025-11-16T14:49:02.673Z" }, + { url = "https://files.pythonhosted.org/packages/52/91/5de91c5ec7d41759beec9b251630824dbb8e32d20c3756da1a9a9d309709/rpds_py-0.29.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:37d94eadf764d16b9a04307f2ab1d7af6dc28774bbe0535c9323101e14877b4c", size = 365886, upload-time = "2025-11-16T14:49:04.133Z" }, + { url = "https://files.pythonhosted.org/packages/85/7c/415d8c1b016d5f47ecec5145d9d6d21002d39dce8761b30f6c88810b455a/rpds_py-0.29.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d472cf73efe5726a067dce63eebe8215b14beabea7c12606fd9994267b3cfe2b", size = 355262, upload-time = "2025-11-16T14:49:05.543Z" }, + { url = "https://files.pythonhosted.org/packages/3d/14/bf83e2daa4f980e4dc848aed9299792a8b84af95e12541d9e7562f84a6ef/rpds_py-0.29.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72fdfd5ff8992e4636621826371e3ac5f3e3b8323e9d0e48378e9c13c3dac9d0", size = 384826, upload-time = "2025-11-16T14:49:07.301Z" }, + { url = "https://files.pythonhosted.org/packages/33/b8/53330c50a810ae22b4fbba5e6cf961b68b9d72d9bd6780a7c0a79b070857/rpds_py-0.29.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2549d833abdf8275c901313b9e8ff8fba57e50f6a495035a2a4e30621a2f7cc4", size = 394234, upload-time = "2025-11-16T14:49:08.782Z" }, + { url = "https://files.pythonhosted.org/packages/cc/32/01e2e9645cef0e584f518cfde4567563e57db2257244632b603f61b40e50/rpds_py-0.29.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4448dad428f28a6a767c3e3b80cde3446a22a0efbddaa2360f4bb4dc836d0688", size = 520008, upload-time = "2025-11-16T14:49:10.253Z" }, + { url = "https://files.pythonhosted.org/packages/98/c3/0d1b95a81affae2b10f950782e33a1fd2edd6ce2a479966cac98c9a66f57/rpds_py-0.29.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:115f48170fd4296a33938d8c11f697f5f26e0472e43d28f35624764173a60e4d", size = 409569, upload-time = "2025-11-16T14:49:12.478Z" }, + { url = "https://files.pythonhosted.org/packages/fa/60/aa3b8678f3f009f675b99174fa2754302a7fbfe749162e8043d111de2d88/rpds_py-0.29.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e5bb73ffc029820f4348e9b66b3027493ae00bca6629129cd433fd7a76308ee", size = 385188, upload-time = "2025-11-16T14:49:13.88Z" }, + { url = "https://files.pythonhosted.org/packages/92/02/5546c1c8aa89c18d40c1fcffdcc957ba730dee53fb7c3ca3a46f114761d2/rpds_py-0.29.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:b1581fcde18fcdf42ea2403a16a6b646f8eb1e58d7f90a0ce693da441f76942e", size = 398587, upload-time = "2025-11-16T14:49:15.339Z" }, + { url = "https://files.pythonhosted.org/packages/6c/e0/ad6eeaf47e236eba052fa34c4073078b9e092bd44da6bbb35aaae9580669/rpds_py-0.29.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:16e9da2bda9eb17ea318b4c335ec9ac1818e88922cbe03a5743ea0da9ecf74fb", size = 416641, upload-time = "2025-11-16T14:49:16.832Z" }, + { url = "https://files.pythonhosted.org/packages/1a/93/0acedfd50ad9cdd3879c615a6dc8c5f1ce78d2fdf8b87727468bb5bb4077/rpds_py-0.29.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:28fd300326dd21198f311534bdb6d7e989dd09b3418b3a91d54a0f384c700967", size = 566683, upload-time = "2025-11-16T14:49:18.342Z" }, + { url = "https://files.pythonhosted.org/packages/62/53/8c64e0f340a9e801459fc6456821abc15b3582cb5dc3932d48705a9d9ac7/rpds_py-0.29.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2aba991e041d031c7939e1358f583ae405a7bf04804ca806b97a5c0e0af1ea5e", size = 592730, upload-time = "2025-11-16T14:49:19.767Z" }, + { url = "https://files.pythonhosted.org/packages/85/ef/3109b6584f8c4b0d2490747c916df833c127ecfa82be04d9a40a376f2090/rpds_py-0.29.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:7f437026dbbc3f08c99cc41a5b2570c6e1a1ddbe48ab19a9b814254128d4ea7a", size = 557361, upload-time = "2025-11-16T14:49:21.574Z" }, + { url = "https://files.pythonhosted.org/packages/ff/3b/61586475e82d57f01da2c16edb9115a618afe00ce86fe1b58936880b15af/rpds_py-0.29.0-cp313-cp313t-win32.whl", hash = "sha256:6e97846e9800a5d0fe7be4d008f0c93d0feeb2700da7b1f7528dabafb31dfadb", size = 211227, upload-time = "2025-11-16T14:49:23.03Z" }, + { url = "https://files.pythonhosted.org/packages/3b/3a/12dc43f13594a54ea0c9d7e9d43002116557330e3ad45bc56097ddf266e2/rpds_py-0.29.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f49196aec7c4b406495f60e6f947ad71f317a765f956d74bbd83996b9edc0352", size = 225248, upload-time = "2025-11-16T14:49:24.841Z" }, + { url = "https://files.pythonhosted.org/packages/89/b1/0b1474e7899371d9540d3bbb2a499a3427ae1fc39c998563fe9035a1073b/rpds_py-0.29.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:394d27e4453d3b4d82bb85665dc1fcf4b0badc30fc84282defed71643b50e1a1", size = 363731, upload-time = "2025-11-16T14:49:26.683Z" }, + { url = "https://files.pythonhosted.org/packages/28/12/3b7cf2068d0a334ed1d7b385a9c3c8509f4c2bcba3d4648ea71369de0881/rpds_py-0.29.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:55d827b2ae95425d3be9bc9a5838b6c29d664924f98146557f7715e331d06df8", size = 354343, upload-time = "2025-11-16T14:49:28.24Z" }, + { url = "https://files.pythonhosted.org/packages/eb/73/5afcf8924bc02a749416eda64e17ac9c9b28f825f4737385295a0e99b0c1/rpds_py-0.29.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc31a07ed352e5462d3ee1b22e89285f4ce97d5266f6d1169da1142e78045626", size = 385406, upload-time = "2025-11-16T14:49:29.943Z" }, + { url = "https://files.pythonhosted.org/packages/c8/37/5db736730662508535221737a21563591b6f43c77f2e388951c42f143242/rpds_py-0.29.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c4695dd224212f6105db7ea62197144230b808d6b2bba52238906a2762f1d1e7", size = 396162, upload-time = "2025-11-16T14:49:31.833Z" }, + { url = "https://files.pythonhosted.org/packages/70/0d/491c1017d14f62ce7bac07c32768d209a50ec567d76d9f383b4cfad19b80/rpds_py-0.29.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcae1770b401167f8b9e1e3f566562e6966ffa9ce63639916248a9e25fa8a244", size = 517719, upload-time = "2025-11-16T14:49:33.804Z" }, + { url = "https://files.pythonhosted.org/packages/d7/25/b11132afcb17cd5d82db173f0c8dab270ffdfaba43e5ce7a591837ae9649/rpds_py-0.29.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:90f30d15f45048448b8da21c41703b31c61119c06c216a1bf8c245812a0f0c17", size = 409498, upload-time = "2025-11-16T14:49:35.222Z" }, + { url = "https://files.pythonhosted.org/packages/0f/7d/e6543cedfb2e6403a1845710a5ab0e0ccf8fc288e0b5af9a70bfe2c12053/rpds_py-0.29.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44a91e0ab77bdc0004b43261a4b8cd6d6b451e8d443754cfda830002b5745b32", size = 382743, upload-time = "2025-11-16T14:49:36.704Z" }, + { url = "https://files.pythonhosted.org/packages/75/11/a4ebc9f654293ae9fefb83b2b6be7f3253e85ea42a5db2f77d50ad19aaeb/rpds_py-0.29.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:4aa195e5804d32c682e453b34474f411ca108e4291c6a0f824ebdc30a91c973c", size = 400317, upload-time = "2025-11-16T14:49:39.132Z" }, + { url = "https://files.pythonhosted.org/packages/52/18/97677a60a81c7f0e5f64e51fb3f8271c5c8fcabf3a2df18e97af53d7c2bf/rpds_py-0.29.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7971bdb7bf4ee0f7e6f67fa4c7fbc6019d9850cc977d126904392d363f6f8318", size = 416979, upload-time = "2025-11-16T14:49:40.575Z" }, + { url = "https://files.pythonhosted.org/packages/f0/69/28ab391a9968f6c746b2a2db181eaa4d16afaa859fedc9c2f682d19f7e18/rpds_py-0.29.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8ae33ad9ce580c7a47452c3b3f7d8a9095ef6208e0a0c7e4e2384f9fc5bf8212", size = 567288, upload-time = "2025-11-16T14:49:42.24Z" }, + { url = "https://files.pythonhosted.org/packages/3b/d3/0c7afdcdb830eee94f5611b64e71354ffe6ac8df82d00c2faf2bfffd1d4e/rpds_py-0.29.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:c661132ab2fb4eeede2ef69670fd60da5235209874d001a98f1542f31f2a8a94", size = 593157, upload-time = "2025-11-16T14:49:43.782Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ac/a0fcbc2feed4241cf26d32268c195eb88ddd4bd862adfc9d4b25edfba535/rpds_py-0.29.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:bb78b3a0d31ac1bde132c67015a809948db751cb4e92cdb3f0b242e430b6ed0d", size = 554741, upload-time = "2025-11-16T14:49:45.557Z" }, + { url = "https://files.pythonhosted.org/packages/0f/f1/fcc24137c470df8588674a677f33719d5800ec053aaacd1de8a5d5d84d9e/rpds_py-0.29.0-cp314-cp314-win32.whl", hash = "sha256:f475f103488312e9bd4000bc890a95955a07b2d0b6e8884aef4be56132adbbf1", size = 215508, upload-time = "2025-11-16T14:49:47.562Z" }, + { url = "https://files.pythonhosted.org/packages/7b/c7/1d169b2045512eac019918fc1021ea07c30e84a4343f9f344e3e0aa8c788/rpds_py-0.29.0-cp314-cp314-win_amd64.whl", hash = "sha256:b9cf2359a4fca87cfb6801fae83a76aedf66ee1254a7a151f1341632acf67f1b", size = 228125, upload-time = "2025-11-16T14:49:49.064Z" }, + { url = "https://files.pythonhosted.org/packages/be/36/0cec88aaba70ec4a6e381c444b0d916738497d27f0c30406e3d9fcbd3bc2/rpds_py-0.29.0-cp314-cp314-win_arm64.whl", hash = "sha256:9ba8028597e824854f0f1733d8b964e914ae3003b22a10c2c664cb6927e0feb9", size = 221992, upload-time = "2025-11-16T14:49:50.777Z" }, + { url = "https://files.pythonhosted.org/packages/b1/fa/a2e524631717c9c0eb5d90d30f648cfba6b731047821c994acacb618406c/rpds_py-0.29.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:e71136fd0612556b35c575dc2726ae04a1669e6a6c378f2240312cf5d1a2ab10", size = 366425, upload-time = "2025-11-16T14:49:52.691Z" }, + { url = "https://files.pythonhosted.org/packages/a2/a4/6d43ebe0746ff694a30233f63f454aed1677bd50ab7a59ff6b2bb5ac61f2/rpds_py-0.29.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:76fe96632d53f3bf0ea31ede2f53bbe3540cc2736d4aec3b3801b0458499ef3a", size = 355282, upload-time = "2025-11-16T14:49:54.292Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a7/52fd8270e0320b09eaf295766ae81dd175f65394687906709b3e75c71d06/rpds_py-0.29.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9459a33f077130dbb2c7c3cea72ee9932271fb3126404ba2a2661e4fe9eb7b79", size = 384968, upload-time = "2025-11-16T14:49:55.857Z" }, + { url = "https://files.pythonhosted.org/packages/f4/7d/e6bc526b7a14e1ef80579a52c1d4ad39260a058a51d66c6039035d14db9d/rpds_py-0.29.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5c9546cfdd5d45e562cc0444b6dddc191e625c62e866bf567a2c69487c7ad28a", size = 394714, upload-time = "2025-11-16T14:49:57.343Z" }, + { url = "https://files.pythonhosted.org/packages/c0/3f/f0ade3954e7db95c791e7eaf978aa7e08a756d2046e8bdd04d08146ed188/rpds_py-0.29.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12597d11d97b8f7e376c88929a6e17acb980e234547c92992f9f7c058f1a7310", size = 520136, upload-time = "2025-11-16T14:49:59.162Z" }, + { url = "https://files.pythonhosted.org/packages/87/b3/07122ead1b97009715ab9d4082be6d9bd9546099b2b03fae37c3116f72be/rpds_py-0.29.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28de03cf48b8a9e6ec10318f2197b83946ed91e2891f651a109611be4106ac4b", size = 409250, upload-time = "2025-11-16T14:50:00.698Z" }, + { url = "https://files.pythonhosted.org/packages/c9/c6/dcbee61fd1dc892aedcb1b489ba661313101aa82ec84b1a015d4c63ebfda/rpds_py-0.29.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd7951c964069039acc9d67a8ff1f0a7f34845ae180ca542b17dc1456b1f1808", size = 384940, upload-time = "2025-11-16T14:50:02.312Z" }, + { url = "https://files.pythonhosted.org/packages/47/11/914ecb6f3574cf9bf8b38aced4063e0f787d6e1eb30b181a7efbc6c1da9a/rpds_py-0.29.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:c07d107b7316088f1ac0177a7661ca0c6670d443f6fe72e836069025e6266761", size = 399392, upload-time = "2025-11-16T14:50:03.829Z" }, + { url = "https://files.pythonhosted.org/packages/f5/fd/2f4bd9433f58f816434bb934313584caa47dbc6f03ce5484df8ac8980561/rpds_py-0.29.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de2345af363d25696969befc0c1688a6cb5e8b1d32b515ef84fc245c6cddba3", size = 416796, upload-time = "2025-11-16T14:50:05.558Z" }, + { url = "https://files.pythonhosted.org/packages/79/a5/449f0281af33efa29d5c71014399d74842342ae908d8cd38260320167692/rpds_py-0.29.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:00e56b12d2199ca96068057e1ae7f9998ab6e99cda82431afafd32f3ec98cca9", size = 566843, upload-time = "2025-11-16T14:50:07.243Z" }, + { url = "https://files.pythonhosted.org/packages/ab/32/0a6a1ccee2e37fcb1b7ba9afde762b77182dbb57937352a729c6cd3cf2bb/rpds_py-0.29.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:3919a3bbecee589300ed25000b6944174e07cd20db70552159207b3f4bbb45b8", size = 593956, upload-time = "2025-11-16T14:50:09.029Z" }, + { url = "https://files.pythonhosted.org/packages/4a/3d/eb820f95dce4306f07a495ede02fb61bef36ea201d9137d4fcd5ab94ec1e/rpds_py-0.29.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e7fa2ccc312bbd91e43aa5e0869e46bc03278a3dddb8d58833150a18b0f0283a", size = 557288, upload-time = "2025-11-16T14:50:10.73Z" }, + { url = "https://files.pythonhosted.org/packages/e9/f8/b8ff786f40470462a252918e0836e0db903c28e88e3eec66bc4a7856ee5d/rpds_py-0.29.0-cp314-cp314t-win32.whl", hash = "sha256:97c817863ffc397f1e6a6e9d2d89fe5408c0a9922dac0329672fb0f35c867ea5", size = 211382, upload-time = "2025-11-16T14:50:12.827Z" }, + { url = "https://files.pythonhosted.org/packages/c9/7f/1a65ae870bc9d0576aebb0c501ea5dccf1ae2178fe2821042150ebd2e707/rpds_py-0.29.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2023473f444752f0f82a58dfcbee040d0a1b3d1b3c2ec40e884bd25db6d117d2", size = 225919, upload-time = "2025-11-16T14:50:14.734Z" }, +] + +[[package]] +name = "rsa" +version = "4.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/8a/22b7beea3ee0d44b1916c0c1cb0ee3af23b700b6da9f04991899d0c555d4/rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75", size = 29034, upload-time = "2025-04-16T09:51:18.218Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" }, +] + +[[package]] +name = "rustworkx" +version = "0.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e7/b0/66d96f02120f79eeed86b5c5be04029b6821155f31ed4907a4e9f1460671/rustworkx-0.17.1.tar.gz", hash = "sha256:59ea01b4e603daffa4e8827316c1641eef18ae9032f0b1b14aa0181687e3108e", size = 399407, upload-time = "2025-09-15T16:29:46.429Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/24/8972ed631fa05fdec05a7bb7f1fc0f8e78ee761ab37e8a93d1ed396ba060/rustworkx-0.17.1-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c08fb8db041db052da404839b064ebfb47dcce04ba9a3e2eb79d0c65ab011da4", size = 2257491, upload-time = "2025-08-13T01:43:31.466Z" }, + { url = "https://files.pythonhosted.org/packages/23/ae/7b6bbae5e0487ee42072dc6a46edf5db9731a0701ed648db22121fb7490c/rustworkx-0.17.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:4ef8e327dadf6500edd76fedb83f6d888b9266c58bcdbffd5a40c33835c9dd26", size = 2040175, upload-time = "2025-08-13T01:43:33.762Z" }, + { url = "https://files.pythonhosted.org/packages/cd/ea/c17fb9428c8f0dcc605596f9561627a5b9ef629d356204ee5088cfcf52c6/rustworkx-0.17.1-cp39-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b809e0aa2927c68574b196f993233e269980918101b0dd235289c4f3ddb2115", size = 2324771, upload-time = "2025-08-13T01:43:35.553Z" }, + { url = "https://files.pythonhosted.org/packages/d7/40/ec8b3b8b0f8c0b768690c454b8dcc2781b4f2c767f9f1215539c7909e35b/rustworkx-0.17.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7e82c46a92fb0fd478b7372e15ca524c287485fdecaed37b8bb68f4df2720f2", size = 2068584, upload-time = "2025-08-13T01:43:37.261Z" }, + { url = "https://files.pythonhosted.org/packages/d9/22/713b900d320d06ce8677e71bba0ec5df0037f1d83270bff5db3b271c10d7/rustworkx-0.17.1-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:42170075d8a7319e89ff63062c2f1d1116ced37b6f044f3bf36d10b60a107aa4", size = 2380949, upload-time = "2025-08-13T01:52:17.435Z" }, + { url = "https://files.pythonhosted.org/packages/20/4b/54be84b3b41a19caf0718a2b6bb280dde98c8626c809c969f16aad17458f/rustworkx-0.17.1-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65cba97fa95470239e2d65eb4db1613f78e4396af9f790ff771b0e5476bfd887", size = 2562069, upload-time = "2025-08-13T02:09:27.222Z" }, + { url = "https://files.pythonhosted.org/packages/39/5b/281bb21d091ab4e36cf377088366d55d0875fa2347b3189c580ec62b44c7/rustworkx-0.17.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246cc252053f89e36209535b9c58755960197e6ae08d48d3973760141c62ac95", size = 2221186, upload-time = "2025-08-13T01:43:38.598Z" }, + { url = "https://files.pythonhosted.org/packages/cc/2d/30a941a21b81e9db50c4c3ef8a64c5ee1c8eea3a90506ca0326ce39d021f/rustworkx-0.17.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c10d25e9f0e87d6a273d1ea390b636b4fb3fede2094bf0cb3fe565d696a91b48", size = 2123510, upload-time = "2025-08-13T01:43:40.288Z" }, + { url = "https://files.pythonhosted.org/packages/4f/ef/c9199e4b6336ee5a9f1979c11b5779c5cf9ab6f8386e0b9a96c8ffba7009/rustworkx-0.17.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:48784a673cf8d04f3cd246fa6b53fd1ccc4d83304503463bd561c153517bccc1", size = 2302783, upload-time = "2025-08-13T01:43:42.073Z" }, + { url = "https://files.pythonhosted.org/packages/30/3d/a49ab633e99fca4ccbb9c9f4bd41904186c175ebc25c530435529f71c480/rustworkx-0.17.1-cp39-abi3-win32.whl", hash = "sha256:5dbc567833ff0a8ad4580a4fe4bde92c186d36b4c45fca755fb1792e4fafe9b5", size = 1931541, upload-time = "2025-08-13T01:43:43.415Z" }, + { url = "https://files.pythonhosted.org/packages/a9/ec/cee878c1879b91ab8dc7d564535d011307839a2fea79d2a650413edf53be/rustworkx-0.17.1-cp39-abi3-win_amd64.whl", hash = "sha256:d0a48fb62adabd549f9f02927c3a159b51bf654c7388a12fc16d45452d5703ea", size = 2055049, upload-time = "2025-08-13T01:43:44.926Z" }, +] + +[[package]] +name = "s3transfer" +version = "0.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/62/74/8d69dcb7a9efe8baa2046891735e5dfe433ad558ae23d9e3c14c633d1d58/s3transfer-0.14.0.tar.gz", hash = "sha256:eff12264e7c8b4985074ccce27a3b38a485bb7f7422cc8046fee9be4983e4125", size = 151547, upload-time = "2025-09-09T19:23:31.089Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/f0/ae7ca09223a81a1d890b2557186ea015f6e0502e9b8cb8e1813f1d8cfa4e/s3transfer-0.14.0-py3-none-any.whl", hash = "sha256:ea3b790c7077558ed1f02a3072fb3cb992bbbd253392f4b6e9e8976941c7d456", size = 85712, upload-time = "2025-09-09T19:23:30.041Z" }, +] + +[[package]] +name = "scipy" +version = "1.16.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/ca/d8ace4f98322d01abcd52d381134344bf7b431eba7ed8b42bdea5a3c2ac9/scipy-1.16.3.tar.gz", hash = "sha256:01e87659402762f43bd2fee13370553a17ada367d42e7487800bf2916535aecb", size = 30597883, upload-time = "2025-10-28T17:38:54.068Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/f1/57e8327ab1508272029e27eeef34f2302ffc156b69e7e233e906c2a5c379/scipy-1.16.3-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:d2ec56337675e61b312179a1ad124f5f570c00f920cc75e1000025451b88241c", size = 36617856, upload-time = "2025-10-28T17:33:31.375Z" }, + { url = "https://files.pythonhosted.org/packages/44/13/7e63cfba8a7452eb756306aa2fd9b37a29a323b672b964b4fdeded9a3f21/scipy-1.16.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:16b8bc35a4cc24db80a0ec836a9286d0e31b2503cb2fd7ff7fb0e0374a97081d", size = 28874306, upload-time = "2025-10-28T17:33:36.516Z" }, + { url = "https://files.pythonhosted.org/packages/15/65/3a9400efd0228a176e6ec3454b1fa998fbbb5a8defa1672c3f65706987db/scipy-1.16.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:5803c5fadd29de0cf27fa08ccbfe7a9e5d741bf63e4ab1085437266f12460ff9", size = 20865371, upload-time = "2025-10-28T17:33:42.094Z" }, + { url = "https://files.pythonhosted.org/packages/33/d7/eda09adf009a9fb81827194d4dd02d2e4bc752cef16737cc4ef065234031/scipy-1.16.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:b81c27fc41954319a943d43b20e07c40bdcd3ff7cf013f4fb86286faefe546c4", size = 23524877, upload-time = "2025-10-28T17:33:48.483Z" }, + { url = "https://files.pythonhosted.org/packages/7d/6b/3f911e1ebc364cb81320223a3422aab7d26c9c7973109a9cd0f27c64c6c0/scipy-1.16.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0c3b4dd3d9b08dbce0f3440032c52e9e2ab9f96ade2d3943313dfe51a7056959", size = 33342103, upload-time = "2025-10-28T17:33:56.495Z" }, + { url = "https://files.pythonhosted.org/packages/21/f6/4bfb5695d8941e5c570a04d9fcd0d36bce7511b7d78e6e75c8f9791f82d0/scipy-1.16.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7dc1360c06535ea6116a2220f760ae572db9f661aba2d88074fe30ec2aa1ff88", size = 35697297, upload-time = "2025-10-28T17:34:04.722Z" }, + { url = "https://files.pythonhosted.org/packages/04/e1/6496dadbc80d8d896ff72511ecfe2316b50313bfc3ebf07a3f580f08bd8c/scipy-1.16.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:663b8d66a8748051c3ee9c96465fb417509315b99c71550fda2591d7dd634234", size = 36021756, upload-time = "2025-10-28T17:34:13.482Z" }, + { url = "https://files.pythonhosted.org/packages/fe/bd/a8c7799e0136b987bda3e1b23d155bcb31aec68a4a472554df5f0937eef7/scipy-1.16.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eab43fae33a0c39006a88096cd7b4f4ef545ea0447d250d5ac18202d40b6611d", size = 38696566, upload-time = "2025-10-28T17:34:22.384Z" }, + { url = "https://files.pythonhosted.org/packages/cd/01/1204382461fcbfeb05b6161b594f4007e78b6eba9b375382f79153172b4d/scipy-1.16.3-cp313-cp313-win_amd64.whl", hash = "sha256:062246acacbe9f8210de8e751b16fc37458213f124bef161a5a02c7a39284304", size = 38529877, upload-time = "2025-10-28T17:35:51.076Z" }, + { url = "https://files.pythonhosted.org/packages/7f/14/9d9fbcaa1260a94f4bb5b64ba9213ceb5d03cd88841fe9fd1ffd47a45b73/scipy-1.16.3-cp313-cp313-win_arm64.whl", hash = "sha256:50a3dbf286dbc7d84f176f9a1574c705f277cb6565069f88f60db9eafdbe3ee2", size = 25455366, upload-time = "2025-10-28T17:35:59.014Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a3/9ec205bd49f42d45d77f1730dbad9ccf146244c1647605cf834b3a8c4f36/scipy-1.16.3-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:fb4b29f4cf8cc5a8d628bc8d8e26d12d7278cd1f219f22698a378c3d67db5e4b", size = 37027931, upload-time = "2025-10-28T17:34:31.451Z" }, + { url = "https://files.pythonhosted.org/packages/25/06/ca9fd1f3a4589cbd825b1447e5db3a8ebb969c1eaf22c8579bd286f51b6d/scipy-1.16.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:8d09d72dc92742988b0e7750bddb8060b0c7079606c0d24a8cc8e9c9c11f9079", size = 29400081, upload-time = "2025-10-28T17:34:39.087Z" }, + { url = "https://files.pythonhosted.org/packages/6a/56/933e68210d92657d93fb0e381683bc0e53a965048d7358ff5fbf9e6a1b17/scipy-1.16.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:03192a35e661470197556de24e7cb1330d84b35b94ead65c46ad6f16f6b28f2a", size = 21391244, upload-time = "2025-10-28T17:34:45.234Z" }, + { url = "https://files.pythonhosted.org/packages/a8/7e/779845db03dc1418e215726329674b40576879b91814568757ff0014ad65/scipy-1.16.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:57d01cb6f85e34f0946b33caa66e892aae072b64b034183f3d87c4025802a119", size = 23929753, upload-time = "2025-10-28T17:34:51.793Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4b/f756cf8161d5365dcdef9e5f460ab226c068211030a175d2fc7f3f41ca64/scipy-1.16.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:96491a6a54e995f00a28a3c3badfff58fd093bf26cd5fb34a2188c8c756a3a2c", size = 33496912, upload-time = "2025-10-28T17:34:59.8Z" }, + { url = "https://files.pythonhosted.org/packages/09/b5/222b1e49a58668f23839ca1542a6322bb095ab8d6590d4f71723869a6c2c/scipy-1.16.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cd13e354df9938598af2be05822c323e97132d5e6306b83a3b4ee6724c6e522e", size = 35802371, upload-time = "2025-10-28T17:35:08.173Z" }, + { url = "https://files.pythonhosted.org/packages/c1/8d/5964ef68bb31829bde27611f8c9deeac13764589fe74a75390242b64ca44/scipy-1.16.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:63d3cdacb8a824a295191a723ee5e4ea7768ca5ca5f2838532d9f2e2b3ce2135", size = 36190477, upload-time = "2025-10-28T17:35:16.7Z" }, + { url = "https://files.pythonhosted.org/packages/ab/f2/b31d75cb9b5fa4dd39a0a931ee9b33e7f6f36f23be5ef560bf72e0f92f32/scipy-1.16.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e7efa2681ea410b10dde31a52b18b0154d66f2485328830e45fdf183af5aefc6", size = 38796678, upload-time = "2025-10-28T17:35:26.354Z" }, + { url = "https://files.pythonhosted.org/packages/b4/1e/b3723d8ff64ab548c38d87055483714fefe6ee20e0189b62352b5e015bb1/scipy-1.16.3-cp313-cp313t-win_amd64.whl", hash = "sha256:2d1ae2cf0c350e7705168ff2429962a89ad90c2d49d1dd300686d8b2a5af22fc", size = 38640178, upload-time = "2025-10-28T17:35:35.304Z" }, + { url = "https://files.pythonhosted.org/packages/8e/f3/d854ff38789aca9b0cc23008d607ced9de4f7ab14fa1ca4329f86b3758ca/scipy-1.16.3-cp313-cp313t-win_arm64.whl", hash = "sha256:0c623a54f7b79dd88ef56da19bc2873afec9673a48f3b85b18e4d402bdd29a5a", size = 25803246, upload-time = "2025-10-28T17:35:42.155Z" }, + { url = "https://files.pythonhosted.org/packages/99/f6/99b10fd70f2d864c1e29a28bbcaa0c6340f9d8518396542d9ea3b4aaae15/scipy-1.16.3-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:875555ce62743e1d54f06cdf22c1e0bc47b91130ac40fe5d783b6dfa114beeb6", size = 36606469, upload-time = "2025-10-28T17:36:08.741Z" }, + { url = "https://files.pythonhosted.org/packages/4d/74/043b54f2319f48ea940dd025779fa28ee360e6b95acb7cd188fad4391c6b/scipy-1.16.3-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:bb61878c18a470021fb515a843dc7a76961a8daceaaaa8bad1332f1bf4b54657", size = 28872043, upload-time = "2025-10-28T17:36:16.599Z" }, + { url = "https://files.pythonhosted.org/packages/4d/e1/24b7e50cc1c4ee6ffbcb1f27fe9f4c8b40e7911675f6d2d20955f41c6348/scipy-1.16.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:f2622206f5559784fa5c4b53a950c3c7c1cf3e84ca1b9c4b6c03f062f289ca26", size = 20862952, upload-time = "2025-10-28T17:36:22.966Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3a/3e8c01a4d742b730df368e063787c6808597ccb38636ed821d10b39ca51b/scipy-1.16.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:7f68154688c515cdb541a31ef8eb66d8cd1050605be9dcd74199cbd22ac739bc", size = 23508512, upload-time = "2025-10-28T17:36:29.731Z" }, + { url = "https://files.pythonhosted.org/packages/1f/60/c45a12b98ad591536bfe5330cb3cfe1850d7570259303563b1721564d458/scipy-1.16.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8b3c820ddb80029fe9f43d61b81d8b488d3ef8ca010d15122b152db77dc94c22", size = 33413639, upload-time = "2025-10-28T17:36:37.982Z" }, + { url = "https://files.pythonhosted.org/packages/71/bc/35957d88645476307e4839712642896689df442f3e53b0fa016ecf8a3357/scipy-1.16.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d3837938ae715fc0fe3c39c0202de3a8853aff22ca66781ddc2ade7554b7e2cc", size = 35704729, upload-time = "2025-10-28T17:36:46.547Z" }, + { url = "https://files.pythonhosted.org/packages/3b/15/89105e659041b1ca11c386e9995aefacd513a78493656e57789f9d9eab61/scipy-1.16.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:aadd23f98f9cb069b3bd64ddc900c4d277778242e961751f77a8cb5c4b946fb0", size = 36086251, upload-time = "2025-10-28T17:36:55.161Z" }, + { url = "https://files.pythonhosted.org/packages/1a/87/c0ea673ac9c6cc50b3da2196d860273bc7389aa69b64efa8493bdd25b093/scipy-1.16.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b7c5f1bda1354d6a19bc6af73a649f8285ca63ac6b52e64e658a5a11d4d69800", size = 38716681, upload-time = "2025-10-28T17:37:04.1Z" }, + { url = "https://files.pythonhosted.org/packages/91/06/837893227b043fb9b0d13e4bd7586982d8136cb249ffb3492930dab905b8/scipy-1.16.3-cp314-cp314-win_amd64.whl", hash = "sha256:e5d42a9472e7579e473879a1990327830493a7047506d58d73fc429b84c1d49d", size = 39358423, upload-time = "2025-10-28T17:38:20.005Z" }, + { url = "https://files.pythonhosted.org/packages/95/03/28bce0355e4d34a7c034727505a02d19548549e190bedd13a721e35380b7/scipy-1.16.3-cp314-cp314-win_arm64.whl", hash = "sha256:6020470b9d00245926f2d5bb93b119ca0340f0d564eb6fbaad843eaebf9d690f", size = 26135027, upload-time = "2025-10-28T17:38:24.966Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6f/69f1e2b682efe9de8fe9f91040f0cd32f13cfccba690512ba4c582b0bc29/scipy-1.16.3-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:e1d27cbcb4602680a49d787d90664fa4974063ac9d4134813332a8c53dbe667c", size = 37028379, upload-time = "2025-10-28T17:37:14.061Z" }, + { url = "https://files.pythonhosted.org/packages/7c/2d/e826f31624a5ebbab1cd93d30fd74349914753076ed0593e1d56a98c4fb4/scipy-1.16.3-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:9b9c9c07b6d56a35777a1b4cc8966118fb16cfd8daf6743867d17d36cfad2d40", size = 29400052, upload-time = "2025-10-28T17:37:21.709Z" }, + { url = "https://files.pythonhosted.org/packages/69/27/d24feb80155f41fd1f156bf144e7e049b4e2b9dd06261a242905e3bc7a03/scipy-1.16.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:3a4c460301fb2cffb7f88528f30b3127742cff583603aa7dc964a52c463b385d", size = 21391183, upload-time = "2025-10-28T17:37:29.559Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d3/1b229e433074c5738a24277eca520a2319aac7465eea7310ea6ae0e98ae2/scipy-1.16.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:f667a4542cc8917af1db06366d3f78a5c8e83badd56409f94d1eac8d8d9133fa", size = 23930174, upload-time = "2025-10-28T17:37:36.306Z" }, + { url = "https://files.pythonhosted.org/packages/16/9d/d9e148b0ec680c0f042581a2be79a28a7ab66c0c4946697f9e7553ead337/scipy-1.16.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f379b54b77a597aa7ee5e697df0d66903e41b9c85a6dd7946159e356319158e8", size = 33497852, upload-time = "2025-10-28T17:37:42.228Z" }, + { url = "https://files.pythonhosted.org/packages/2f/22/4e5f7561e4f98b7bea63cf3fd7934bff1e3182e9f1626b089a679914d5c8/scipy-1.16.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4aff59800a3b7f786b70bfd6ab551001cb553244988d7d6b8299cb1ea653b353", size = 35798595, upload-time = "2025-10-28T17:37:48.102Z" }, + { url = "https://files.pythonhosted.org/packages/83/42/6644d714c179429fc7196857866f219fef25238319b650bb32dde7bf7a48/scipy-1.16.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:da7763f55885045036fabcebd80144b757d3db06ab0861415d1c3b7c69042146", size = 36186269, upload-time = "2025-10-28T17:37:53.72Z" }, + { url = "https://files.pythonhosted.org/packages/ac/70/64b4d7ca92f9cf2e6fc6aaa2eecf80bb9b6b985043a9583f32f8177ea122/scipy-1.16.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ffa6eea95283b2b8079b821dc11f50a17d0571c92b43e2b5b12764dc5f9b285d", size = 38802779, upload-time = "2025-10-28T17:37:59.393Z" }, + { url = "https://files.pythonhosted.org/packages/61/82/8d0e39f62764cce5ffd5284131e109f07cf8955aef9ab8ed4e3aa5e30539/scipy-1.16.3-cp314-cp314t-win_amd64.whl", hash = "sha256:d9f48cafc7ce94cf9b15c6bffdc443a81a27bf7075cf2dcd5c8b40f85d10c4e7", size = 39471128, upload-time = "2025-10-28T17:38:05.259Z" }, + { url = "https://files.pythonhosted.org/packages/64/47/a494741db7280eae6dc033510c319e34d42dd41b7ac0c7ead39354d1a2b5/scipy-1.16.3-cp314-cp314t-win_arm64.whl", hash = "sha256:21d9d6b197227a12dcbf9633320a4e34c6b0e51c57268df255a0942983bac562", size = 26464127, upload-time = "2025-10-28T17:38:11.34Z" }, +] + +[[package]] +name = "semver" +version = "3.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/d1/d3159231aec234a59dd7d601e9dd9fe96f3afff15efd33c1070019b26132/semver-3.0.4.tar.gz", hash = "sha256:afc7d8c584a5ed0a11033af086e8af226a9c0b206f313e0301f8dd7b6b589602", size = 269730, upload-time = "2025-01-24T13:19:27.617Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/24/4d91e05817e92e3a61c8a21e08fd0f390f5301f1c448b137c57c4bc6e543/semver-3.0.4-py3-none-any.whl", hash = "sha256:9c824d87ba7f7ab4a1890799cec8596f15c1241cb473404ea1cb0c55e4b04746", size = 17912, upload-time = "2025-01-24T13:19:24.949Z" }, +] + +[[package]] +name = "send2trash" +version = "1.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394, upload-time = "2024-04-07T00:01:09.267Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072, upload-time = "2024-04-07T00:01:07.438Z" }, +] + +[[package]] +name = "setuptools" +version = "80.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958, upload-time = "2025-05-27T00:56:51.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, +] + +[[package]] +name = "simplejson" +version = "3.20.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/41/f4/a1ac5ed32f7ed9a088d62a59d410d4c204b3b3815722e2ccfb491fa8251b/simplejson-3.20.2.tar.gz", hash = "sha256:5fe7a6ce14d1c300d80d08695b7f7e633de6cd72c80644021874d985b3393649", size = 85784, upload-time = "2025-09-26T16:29:36.64Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/9e/f326d43f6bf47f4e7704a4426c36e044c6bedfd24e072fb8e27589a373a5/simplejson-3.20.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:90d311ba8fcd733a3677e0be21804827226a57144130ba01c3c6a325e887dd86", size = 93530, upload-time = "2025-09-26T16:28:18.07Z" }, + { url = "https://files.pythonhosted.org/packages/35/28/5a4b8f3483fbfb68f3f460bc002cef3a5735ef30950e7c4adce9c8da15c7/simplejson-3.20.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:feed6806f614bdf7f5cb6d0123cb0c1c5f40407ef103aa935cffaa694e2e0c74", size = 75846, upload-time = "2025-09-26T16:28:19.12Z" }, + { url = "https://files.pythonhosted.org/packages/7a/4d/30dfef83b9ac48afae1cf1ab19c2867e27b8d22b5d9f8ca7ce5a0a157d8c/simplejson-3.20.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6b1d8d7c3e1a205c49e1aee6ba907dcb8ccea83651e6c3e2cb2062f1e52b0726", size = 75661, upload-time = "2025-09-26T16:28:20.219Z" }, + { url = "https://files.pythonhosted.org/packages/09/1d/171009bd35c7099d72ef6afd4bb13527bab469965c968a17d69a203d62a6/simplejson-3.20.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:552f55745044a24c3cb7ec67e54234be56d5d6d0e054f2e4cf4fb3e297429be5", size = 150579, upload-time = "2025-09-26T16:28:21.337Z" }, + { url = "https://files.pythonhosted.org/packages/61/ae/229bbcf90a702adc6bfa476e9f0a37e21d8c58e1059043038797cbe75b8c/simplejson-3.20.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2da97ac65165d66b0570c9e545786f0ac7b5de5854d3711a16cacbcaa8c472d", size = 158797, upload-time = "2025-09-26T16:28:22.53Z" }, + { url = "https://files.pythonhosted.org/packages/90/c5/fefc0ac6b86b9108e302e0af1cf57518f46da0baedd60a12170791d56959/simplejson-3.20.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f59a12966daa356bf68927fca5a67bebac0033cd18b96de9c2d426cd11756cd0", size = 148851, upload-time = "2025-09-26T16:28:23.733Z" }, + { url = "https://files.pythonhosted.org/packages/43/f1/b392952200f3393bb06fbc4dd975fc63a6843261705839355560b7264eb2/simplejson-3.20.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:133ae2098a8e162c71da97cdab1f383afdd91373b7ff5fe65169b04167da976b", size = 152598, upload-time = "2025-09-26T16:28:24.962Z" }, + { url = "https://files.pythonhosted.org/packages/f4/b4/d6b7279e52a3e9c0fa8c032ce6164e593e8d9cf390698ee981ed0864291b/simplejson-3.20.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7977640af7b7d5e6a852d26622057d428706a550f7f5083e7c4dd010a84d941f", size = 150498, upload-time = "2025-09-26T16:28:26.114Z" }, + { url = "https://files.pythonhosted.org/packages/62/22/ec2490dd859224326d10c2fac1353e8ad5c84121be4837a6dd6638ba4345/simplejson-3.20.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b530ad6d55e71fa9e93e1109cf8182f427a6355848a4ffa09f69cc44e1512522", size = 152129, upload-time = "2025-09-26T16:28:27.552Z" }, + { url = "https://files.pythonhosted.org/packages/33/ce/b60214d013e93dd9e5a705dcb2b88b6c72bada442a97f79828332217f3eb/simplejson-3.20.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bd96a7d981bf64f0e42345584768da4435c05b24fd3c364663f5fbc8fabf82e3", size = 159359, upload-time = "2025-09-26T16:28:28.667Z" }, + { url = "https://files.pythonhosted.org/packages/99/21/603709455827cdf5b9d83abe726343f542491ca8dc6a2528eb08de0cf034/simplejson-3.20.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f28ee755fadb426ba2e464d6fcf25d3f152a05eb6b38e0b4f790352f5540c769", size = 154717, upload-time = "2025-09-26T16:28:30.288Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f9/dc7f7a4bac16cf7eb55a4df03ad93190e11826d2a8950052949d3dfc11e2/simplejson-3.20.2-cp313-cp313-win32.whl", hash = "sha256:472785b52e48e3eed9b78b95e26a256f59bb1ee38339be3075dad799e2e1e661", size = 74289, upload-time = "2025-09-26T16:28:31.809Z" }, + { url = "https://files.pythonhosted.org/packages/87/10/d42ad61230436735c68af1120622b28a782877146a83d714da7b6a2a1c4e/simplejson-3.20.2-cp313-cp313-win_amd64.whl", hash = "sha256:a1a85013eb33e4820286139540accbe2c98d2da894b2dcefd280209db508e608", size = 75972, upload-time = "2025-09-26T16:28:32.883Z" }, + { url = "https://files.pythonhosted.org/packages/05/5b/83e1ff87eb60ca706972f7e02e15c0b33396e7bdbd080069a5d1b53cf0d8/simplejson-3.20.2-py3-none-any.whl", hash = "sha256:3b6bb7fb96efd673eac2e4235200bfffdc2353ad12c54117e1e4e2fc485ac017", size = 57309, upload-time = "2025-09-26T16:29:35.312Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, +] + +[[package]] +name = "sortedcontainers" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594, upload-time = "2021-05-16T22:03:42.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload-time = "2021-05-16T22:03:41.177Z" }, +] + +[[package]] +name = "soupsieve" +version = "2.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/e6/21ccce3262dd4889aa3332e5a119a3491a95e8f60939870a3a035aabac0d/soupsieve-2.8.tar.gz", hash = "sha256:e2dd4a40a628cb5f28f6d4b0db8800b8f581b65bb380b97de22ba5ca8d72572f", size = 103472, upload-time = "2025-08-27T15:39:51.78Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/a0/bb38d3b76b8cae341dad93a2dd83ab7462e6dbcdd84d43f54ee60a8dc167/soupsieve-2.8-py3-none-any.whl", hash = "sha256:0cc76456a30e20f5d7f2e14a98a4ae2ee4e5abdc7c5ea0aafe795f344bc7984c", size = 36679, upload-time = "2025-08-27T15:39:50.179Z" }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + +[[package]] +name = "stim" +version = "1.15.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/77/15/0218eacd61cda992daf398bc36daf9830c8b430157a3ac0c06379598d24a/stim-1.15.0.tar.gz", hash = "sha256:95236006859d6754be99629d4fb44788e742e962ac8c59caad421ca088f7350e", size = 853226, upload-time = "2025-05-07T06:19:30.452Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/7f/825d745dc128321dd2f41da75d18111121a90e7bb711da24f28b1e003c9e/stim-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:673a323402c266b1a1225565d69d31816c3d4a4c259383ed4fa9c15cacd12411", size = 1974528, upload-time = "2025-05-07T06:18:51.125Z" }, + { url = "https://files.pythonhosted.org/packages/bb/99/10604264cd7159573d6d01cdf5f9675c71580dcc3df5c533fccabad59cda/stim-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:35e36d0479015b4dcb4261b8b68be85067cbd4bac5632bdfdb3ee3f8671d05a9", size = 1838700, upload-time = "2025-05-07T06:18:52.95Z" }, + { url = "https://files.pythonhosted.org/packages/25/97/1bf3bf16129667eff1c0d0f3bb95262a2bec8c8d1227aa973b8e2a1935b6/stim-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb9465ab120837ecbd26b5af216a00715f04da087ddcfa09646892c8de720d09", size = 4967782, upload-time = "2025-05-07T06:18:54.94Z" }, +] + +[[package]] +name = "sympy" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, +] + +[[package]] +name = "tabulate" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload-time = "2022-10-06T17:21:48.54Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload-time = "2022-10-06T17:21:44.262Z" }, +] + +[[package]] +name = "terminado" +version = "0.18.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess", marker = "os_name != 'nt'" }, + { name = "pywinpty", marker = "os_name == 'nt' and sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701, upload-time = "2024-03-12T14:34:39.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload-time = "2024-03-12T14:34:36.569Z" }, +] + +[[package]] +name = "tinycss2" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload-time = "2024-10-24T14:58:29.895Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload-time = "2024-10-24T14:58:28.029Z" }, +] + +[[package]] +name = "tokenize-rt" +version = "6.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/69/ed/8f07e893132d5051d86a553e749d5c89b2a4776eb3a579b72ed61f8559ca/tokenize_rt-6.2.0.tar.gz", hash = "sha256:8439c042b330c553fdbe1758e4a05c0ed460dbbbb24a606f11f0dee75da4cad6", size = 5476, upload-time = "2025-05-23T23:48:00.035Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/f0/3fe8c6e69135a845f4106f2ff8b6805638d4e85c264e70114e8126689587/tokenize_rt-6.2.0-py2.py3-none-any.whl", hash = "sha256:a152bf4f249c847a66497a4a95f63376ed68ac6abf092a2f7cfb29d044ecff44", size = 6004, upload-time = "2025-05-23T23:47:58.812Z" }, +] + +[[package]] +name = "tomli" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/ed/3f73f72945444548f33eba9a87fc7a6e969915e7b1acc8260b30e1f76a2f/tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549", size = 17392, upload-time = "2025-10-08T22:01:47.119Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/48/06ee6eabe4fdd9ecd48bf488f4ac783844fd777f547b8d1b61c11939974e/tomli-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5192f562738228945d7b13d4930baffda67b69425a7f0da96d360b0a3888136b", size = 154819, upload-time = "2025-10-08T22:01:17.964Z" }, + { url = "https://files.pythonhosted.org/packages/f1/01/88793757d54d8937015c75dcdfb673c65471945f6be98e6a0410fba167ed/tomli-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:be71c93a63d738597996be9528f4abe628d1adf5e6eb11607bc8fe1a510b5dae", size = 148766, upload-time = "2025-10-08T22:01:18.959Z" }, + { url = "https://files.pythonhosted.org/packages/42/17/5e2c956f0144b812e7e107f94f1cc54af734eb17b5191c0bbfb72de5e93e/tomli-2.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4665508bcbac83a31ff8ab08f424b665200c0e1e645d2bd9ab3d3e557b6185b", size = 240771, upload-time = "2025-10-08T22:01:20.106Z" }, + { url = "https://files.pythonhosted.org/packages/d5/f4/0fbd014909748706c01d16824eadb0307115f9562a15cbb012cd9b3512c5/tomli-2.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4021923f97266babc6ccab9f5068642a0095faa0a51a246a6a02fccbb3514eaf", size = 248586, upload-time = "2025-10-08T22:01:21.164Z" }, + { url = "https://files.pythonhosted.org/packages/30/77/fed85e114bde5e81ecf9bc5da0cc69f2914b38f4708c80ae67d0c10180c5/tomli-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4ea38c40145a357d513bffad0ed869f13c1773716cf71ccaa83b0fa0cc4e42f", size = 244792, upload-time = "2025-10-08T22:01:22.417Z" }, + { url = "https://files.pythonhosted.org/packages/55/92/afed3d497f7c186dc71e6ee6d4fcb0acfa5f7d0a1a2878f8beae379ae0cc/tomli-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ad805ea85eda330dbad64c7ea7a4556259665bdf9d2672f5dccc740eb9d3ca05", size = 248909, upload-time = "2025-10-08T22:01:23.859Z" }, + { url = "https://files.pythonhosted.org/packages/f8/84/ef50c51b5a9472e7265ce1ffc7f24cd4023d289e109f669bdb1553f6a7c2/tomli-2.3.0-cp313-cp313-win32.whl", hash = "sha256:97d5eec30149fd3294270e889b4234023f2c69747e555a27bd708828353ab606", size = 96946, upload-time = "2025-10-08T22:01:24.893Z" }, + { url = "https://files.pythonhosted.org/packages/b2/b7/718cd1da0884f281f95ccfa3a6cc572d30053cba64603f79d431d3c9b61b/tomli-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0c95ca56fbe89e065c6ead5b593ee64b84a26fca063b5d71a1122bf26e533999", size = 107705, upload-time = "2025-10-08T22:01:26.153Z" }, + { url = "https://files.pythonhosted.org/packages/19/94/aeafa14a52e16163008060506fcb6aa1949d13548d13752171a755c65611/tomli-2.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cebc6fe843e0733ee827a282aca4999b596241195f43b4cc371d64fc6639da9e", size = 154244, upload-time = "2025-10-08T22:01:27.06Z" }, + { url = "https://files.pythonhosted.org/packages/db/e4/1e58409aa78eefa47ccd19779fc6f36787edbe7d4cd330eeeedb33a4515b/tomli-2.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4c2ef0244c75aba9355561272009d934953817c49f47d768070c3c94355c2aa3", size = 148637, upload-time = "2025-10-08T22:01:28.059Z" }, + { url = "https://files.pythonhosted.org/packages/26/b6/d1eccb62f665e44359226811064596dd6a366ea1f985839c566cd61525ae/tomli-2.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c22a8bf253bacc0cf11f35ad9808b6cb75ada2631c2d97c971122583b129afbc", size = 241925, upload-time = "2025-10-08T22:01:29.066Z" }, + { url = "https://files.pythonhosted.org/packages/70/91/7cdab9a03e6d3d2bb11beae108da5bdc1c34bdeb06e21163482544ddcc90/tomli-2.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0eea8cc5c5e9f89c9b90c4896a8deefc74f518db5927d0e0e8d4a80953d774d0", size = 249045, upload-time = "2025-10-08T22:01:31.98Z" }, + { url = "https://files.pythonhosted.org/packages/15/1b/8c26874ed1f6e4f1fcfeb868db8a794cbe9f227299402db58cfcc858766c/tomli-2.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b74a0e59ec5d15127acdabd75ea17726ac4c5178ae51b85bfe39c4f8a278e879", size = 245835, upload-time = "2025-10-08T22:01:32.989Z" }, + { url = "https://files.pythonhosted.org/packages/fd/42/8e3c6a9a4b1a1360c1a2a39f0b972cef2cc9ebd56025168c4137192a9321/tomli-2.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b5870b50c9db823c595983571d1296a6ff3e1b88f734a4c8f6fc6188397de005", size = 253109, upload-time = "2025-10-08T22:01:34.052Z" }, + { url = "https://files.pythonhosted.org/packages/22/0c/b4da635000a71b5f80130937eeac12e686eefb376b8dee113b4a582bba42/tomli-2.3.0-cp314-cp314-win32.whl", hash = "sha256:feb0dacc61170ed7ab602d3d972a58f14ee3ee60494292d384649a3dc38ef463", size = 97930, upload-time = "2025-10-08T22:01:35.082Z" }, + { url = "https://files.pythonhosted.org/packages/b9/74/cb1abc870a418ae99cd5c9547d6bce30701a954e0e721821df483ef7223c/tomli-2.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:b273fcbd7fc64dc3600c098e39136522650c49bca95df2d11cf3b626422392c8", size = 107964, upload-time = "2025-10-08T22:01:36.057Z" }, + { url = "https://files.pythonhosted.org/packages/54/78/5c46fff6432a712af9f792944f4fcd7067d8823157949f4e40c56b8b3c83/tomli-2.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:940d56ee0410fa17ee1f12b817b37a4d4e4dc4d27340863cc67236c74f582e77", size = 163065, upload-time = "2025-10-08T22:01:37.27Z" }, + { url = "https://files.pythonhosted.org/packages/39/67/f85d9bd23182f45eca8939cd2bc7050e1f90c41f4a2ecbbd5963a1d1c486/tomli-2.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f85209946d1fe94416debbb88d00eb92ce9cd5266775424ff81bc959e001acaf", size = 159088, upload-time = "2025-10-08T22:01:38.235Z" }, + { url = "https://files.pythonhosted.org/packages/26/5a/4b546a0405b9cc0659b399f12b6adb750757baf04250b148d3c5059fc4eb/tomli-2.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a56212bdcce682e56b0aaf79e869ba5d15a6163f88d5451cbde388d48b13f530", size = 268193, upload-time = "2025-10-08T22:01:39.712Z" }, + { url = "https://files.pythonhosted.org/packages/42/4f/2c12a72ae22cf7b59a7fe75b3465b7aba40ea9145d026ba41cb382075b0e/tomli-2.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5f3ffd1e098dfc032d4d3af5c0ac64f6d286d98bc148698356847b80fa4de1b", size = 275488, upload-time = "2025-10-08T22:01:40.773Z" }, + { url = "https://files.pythonhosted.org/packages/92/04/a038d65dbe160c3aa5a624e93ad98111090f6804027d474ba9c37c8ae186/tomli-2.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e01decd096b1530d97d5d85cb4dff4af2d8347bd35686654a004f8dea20fc67", size = 272669, upload-time = "2025-10-08T22:01:41.824Z" }, + { url = "https://files.pythonhosted.org/packages/be/2f/8b7c60a9d1612a7cbc39ffcca4f21a73bf368a80fc25bccf8253e2563267/tomli-2.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8a35dd0e643bb2610f156cca8db95d213a90015c11fee76c946aa62b7ae7e02f", size = 279709, upload-time = "2025-10-08T22:01:43.177Z" }, + { url = "https://files.pythonhosted.org/packages/7e/46/cc36c679f09f27ded940281c38607716c86cf8ba4a518d524e349c8b4874/tomli-2.3.0-cp314-cp314t-win32.whl", hash = "sha256:a1f7f282fe248311650081faafa5f4732bdbfef5d45fe3f2e702fbc6f2d496e0", size = 107563, upload-time = "2025-10-08T22:01:44.233Z" }, + { url = "https://files.pythonhosted.org/packages/84/ff/426ca8683cf7b753614480484f6437f568fd2fda2edbdf57a2d3d8b27a0b/tomli-2.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:70a251f8d4ba2d9ac2542eecf008b3c8a9fc5c3f9f02c56a9d7952612be2fdba", size = 119756, upload-time = "2025-10-08T22:01:45.234Z" }, + { url = "https://files.pythonhosted.org/packages/77/b8/0135fadc89e73be292b473cb820b4f5a08197779206b33191e801feeae40/tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b", size = 14408, upload-time = "2025-10-08T22:01:46.04Z" }, +] + +[[package]] +name = "tomlkit" +version = "0.13.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207, upload-time = "2025-06-05T07:13:44.947Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload-time = "2025-06-05T07:13:43.546Z" }, +] + +[[package]] +name = "toolz" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/d6/114b492226588d6ff54579d95847662fc69196bdeec318eb45393b24c192/toolz-1.1.0.tar.gz", hash = "sha256:27a5c770d068c110d9ed9323f24f1543e83b2f300a687b7891c1a6d56b697b5b", size = 52613, upload-time = "2025-10-17T04:03:21.661Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/12/5911ae3eeec47800503a238d971e51722ccea5feb8569b735184d5fcdbc0/toolz-1.1.0-py3-none-any.whl", hash = "sha256:15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8", size = 58093, upload-time = "2025-10-17T04:03:20.435Z" }, +] + +[[package]] +name = "tornado" +version = "6.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/09/ce/1eb500eae19f4648281bb2186927bb062d2438c2e5093d1360391afd2f90/tornado-6.5.2.tar.gz", hash = "sha256:ab53c8f9a0fa351e2c0741284e06c7a45da86afb544133201c5cc8578eb076a0", size = 510821, upload-time = "2025-08-08T18:27:00.78Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/48/6a7529df2c9cc12efd2e8f5dd219516184d703b34c06786809670df5b3bd/tornado-6.5.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:2436822940d37cde62771cff8774f4f00b3c8024fe482e16ca8387b8a2724db6", size = 442563, upload-time = "2025-08-08T18:26:42.945Z" }, + { url = "https://files.pythonhosted.org/packages/f2/b5/9b575a0ed3e50b00c40b08cbce82eb618229091d09f6d14bce80fc01cb0b/tornado-6.5.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:583a52c7aa94ee046854ba81d9ebb6c81ec0fd30386d96f7640c96dad45a03ef", size = 440729, upload-time = "2025-08-08T18:26:44.473Z" }, + { url = "https://files.pythonhosted.org/packages/1b/4e/619174f52b120efcf23633c817fd3fed867c30bff785e2cd5a53a70e483c/tornado-6.5.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0fe179f28d597deab2842b86ed4060deec7388f1fd9c1b4a41adf8af058907e", size = 444295, upload-time = "2025-08-08T18:26:46.021Z" }, + { url = "https://files.pythonhosted.org/packages/95/fa/87b41709552bbd393c85dd18e4e3499dcd8983f66e7972926db8d96aa065/tornado-6.5.2-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b186e85d1e3536d69583d2298423744740986018e393d0321df7340e71898882", size = 443644, upload-time = "2025-08-08T18:26:47.625Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/fb15f06e33d7430ca89420283a8762a4e6b8025b800ea51796ab5e6d9559/tornado-6.5.2-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e792706668c87709709c18b353da1f7662317b563ff69f00bab83595940c7108", size = 443878, upload-time = "2025-08-08T18:26:50.599Z" }, + { url = "https://files.pythonhosted.org/packages/11/92/fe6d57da897776ad2e01e279170ea8ae726755b045fe5ac73b75357a5a3f/tornado-6.5.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:06ceb1300fd70cb20e43b1ad8aaee0266e69e7ced38fa910ad2e03285009ce7c", size = 444549, upload-time = "2025-08-08T18:26:51.864Z" }, + { url = "https://files.pythonhosted.org/packages/9b/02/c8f4f6c9204526daf3d760f4aa555a7a33ad0e60843eac025ccfd6ff4a93/tornado-6.5.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:74db443e0f5251be86cbf37929f84d8c20c27a355dd452a5cfa2aada0d001ec4", size = 443973, upload-time = "2025-08-08T18:26:53.625Z" }, + { url = "https://files.pythonhosted.org/packages/ae/2d/f5f5707b655ce2317190183868cd0f6822a1121b4baeae509ceb9590d0bd/tornado-6.5.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b5e735ab2889d7ed33b32a459cac490eda71a1ba6857b0118de476ab6c366c04", size = 443954, upload-time = "2025-08-08T18:26:55.072Z" }, + { url = "https://files.pythonhosted.org/packages/e8/59/593bd0f40f7355806bf6573b47b8c22f8e1374c9b6fd03114bd6b7a3dcfd/tornado-6.5.2-cp39-abi3-win32.whl", hash = "sha256:c6f29e94d9b37a95013bb669616352ddb82e3bfe8326fccee50583caebc8a5f0", size = 445023, upload-time = "2025-08-08T18:26:56.677Z" }, + { url = "https://files.pythonhosted.org/packages/c7/2a/f609b420c2f564a748a2d80ebfb2ee02a73ca80223af712fca591386cafb/tornado-6.5.2-cp39-abi3-win_amd64.whl", hash = "sha256:e56a5af51cc30dd2cae649429af65ca2f6571da29504a07995175df14c18f35f", size = 445427, upload-time = "2025-08-08T18:26:57.91Z" }, + { url = "https://files.pythonhosted.org/packages/5e/4f/e1f65e8f8c76d73658b33d33b81eed4322fb5085350e4328d5c956f0c8f9/tornado-6.5.2-cp39-abi3-win_arm64.whl", hash = "sha256:d6c33dc3672e3a1f3618eb63b7ef4683a7688e7b9e6e8f0d9aa5726360a004af", size = 444456, upload-time = "2025-08-08T18:26:59.207Z" }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, +] + +[[package]] +name = "typedunits" +version = "0.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "cython" }, + { name = "numpy" }, + { name = "protobuf" }, + { name = "pyparsing" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/c2/6029657ae87a5bc8cbdb6c62958d1daca239a15eef11821321076c095860/typedunits-0.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b8b6c4b63db4d28be43724f9db6625964d5fedee1a043680aba894be48e9d5ce", size = 798006, upload-time = "2025-09-24T19:28:10.687Z" }, + { url = "https://files.pythonhosted.org/packages/35/04/d38903897f64b1650a66573dd63ef082e6182c70a9038645b26c9f429721/typedunits-0.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c520e76b4317be331bed9ac8c226fc65639e2414179c251d293fb5249e5220a", size = 755272, upload-time = "2025-09-24T19:28:12.218Z" }, + { url = "https://files.pythonhosted.org/packages/de/c4/6dc3699701404e8ab8ce8450644ff239e3903f99a6f3fe1e25c6391337b7/typedunits-0.0.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:89252d35c6a3b7e5d1e7974553d485c2635b54d16ecc545816a8171e9e9c35cd", size = 2563382, upload-time = "2025-09-24T19:28:13.557Z" }, + { url = "https://files.pythonhosted.org/packages/f0/bd/f2d1fdf177c72057b8dbfd2cbb7a88751f4215b778364f1ef187166ab39f/typedunits-0.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f09ca10d5ff210fe9d6ba6d18a56ef816fc98d52b513349142727d385464a7d3", size = 2720725, upload-time = "2025-09-24T19:28:15.362Z" }, + { url = "https://files.pythonhosted.org/packages/3b/b8/cb5a7e463965979b6b7002e5d7c984d54d2453a79b98c36c7c28a6597dd1/typedunits-0.0.1-cp313-cp313-win32.whl", hash = "sha256:47fb11d0b476a6db5bdb77e5c5eca1b4a9c8fcd5c3d7a253e6215d8aed8001cf", size = 683516, upload-time = "2025-09-24T19:28:17.653Z" }, + { url = "https://files.pythonhosted.org/packages/c0/5c/eee82a4880cf7fdfebe2e6fa1070e198314249825b570e2f25d85d2c0175/typedunits-0.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:1bc3da05b5fbcc22be8dc956fa3e4011c98156937888278fcb74e08d5af5d79c", size = 737869, upload-time = "2025-09-24T19:28:18.855Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "tzdata" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, +] + +[[package]] +name = "uri-template" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload-time = "2023-06-21T01:49:05.374Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload-time = "2023-06-21T01:49:03.467Z" }, +] + +[[package]] +name = "urllib3" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.2.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/30/6b0809f4510673dc723187aeaf24c7f5459922d01e2f794277a3dfb90345/wcwidth-0.2.14.tar.gz", hash = "sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605", size = 102293, upload-time = "2025-09-22T16:29:53.023Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl", hash = "sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1", size = 37286, upload-time = "2025-09-22T16:29:51.641Z" }, +] + +[[package]] +name = "webcolors" +version = "25.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/7a/eb316761ec35664ea5174709a68bbd3389de60d4a1ebab8808bfc264ed67/webcolors-25.10.0.tar.gz", hash = "sha256:62abae86504f66d0f6364c2a8520de4a0c47b80c03fc3a5f1815fedbef7c19bf", size = 53491, upload-time = "2025-10-31T07:51:03.977Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl", hash = "sha256:032c727334856fc0b968f63daa252a1ac93d33db2f5267756623c210e57a4f1d", size = 14905, upload-time = "2025-10-31T07:51:01.778Z" }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, +] + +[[package]] +name = "websocket-client" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/41/aa4bf9664e4cda14c3b39865b12251e8e7d239f4cd0e3cc1b6c2ccde25c1/websocket_client-1.9.0.tar.gz", hash = "sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98", size = 70576, upload-time = "2025-10-07T21:16:36.495Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/db/b10e48aa8fff7407e67470363eac595018441cf32d5e1001567a7aeba5d2/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef", size = 82616, upload-time = "2025-10-07T21:16:34.951Z" }, +] + +[[package]] +name = "xyzservices" +version = "2025.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/2b/58b3db8814e39277dd6c34aa206f7d0231ff0406284e18e03d4920a4bc78/xyzservices-2025.10.0.tar.gz", hash = "sha256:c6b7648276c98e8222fbec84d9c763128cf3653705017a4d6c4c3652480ee144", size = 1135110, upload-time = "2025-10-30T14:46:36.531Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/8f/447cc9cb57456d786204af0f450ffb920039104c5eff6626337c9f403bd1/xyzservices-2025.10.0-py3-none-any.whl", hash = "sha256:cfd6423367c7bc717ed5824d4dd7de2c91486886c1c193db9d8f0fa7fd43bc1b", size = 92737, upload-time = "2025-10-30T14:46:34.923Z" }, +]