diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3af52d8 --- /dev/null +++ b/.envrc @@ -0,0 +1,9 @@ +if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs=" +fi + +watch_file flake.nix +watch_file flake.lock +if ! use flake . --impure; then + echo "devenv could not be built. The devenv environment was not loaded. Make the necessary changes to devenv.nix and hit enter to try again." >&2 +fi diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c63d464..cb414c5 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -12,10 +12,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python-version: [3.9, "3.10", "3.11"] - include: - - os: ubuntu-latest - python-version: 3.8 + python-version: [3.9, "3.10", "3.11", "3.12"] uses: qiboteam/workflows/.github/workflows/deploy-pip-poetry.yml@main with: os: ${{ matrix.os }} diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml index 2a8cdee..2817d00 100644 --- a/.github/workflows/mypy.yml +++ b/.github/workflows/mypy.yml @@ -8,14 +8,21 @@ jobs: mypy: strategy: matrix: - python-version: [3.8, 3.9, "3.10", "3.11"] + python-version: [3.9, "3.10", "3.11", "3.12"] runs-on: ubuntu-latest + steps: - uses: actions/checkout@v3 - name: Setup python uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - - uses: python/mypy@master - with: - paths: "src/" + - name: Install poetry + run: | + pipx install poetry + # and the task runner + pipx inject poetry poethepoet --include-apps + - name: Install dependencies + run: poetry install --with analysis + - name: Check + run: poe mypy diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 11aca46..f1d82dc 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -10,10 +10,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python-version: [3.9, "3.10", "3.11"] - include: - - os: ubuntu-latest - python-version: 3.8 + python-version: [3.9, "3.10", "3.11", "3.12"] uses: qiboteam/workflows/.github/workflows/rules-poetry.yml@main with: os: ${{ matrix.os }} diff --git a/.gitignore b/.gitignore index a66a183..09344ea 100644 --- a/.gitignore +++ b/.gitignore @@ -138,3 +138,6 @@ dmypy.json # Visual Studio Code .vscode *.DS_Store + +# Nix +.devenv/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index caf9b16..4855cd2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,7 +9,7 @@ repos: - id: check-yaml - id: debug-statements - repo: https://github.com/psf/black - rev: 24.4.2 + rev: 24.8.0 hooks: - id: black - repo: https://github.com/pycqa/isort @@ -18,7 +18,7 @@ repos: - id: isort args: ["--profile", "black"] - repo: https://github.com/asottile/pyupgrade - rev: v3.16.0 + rev: v3.17.0 hooks: - id: pyupgrade - repo: https://github.com/hadialqattan/pycln diff --git a/doc/source/getting-started/pulses.rst b/doc/source/getting-started/pulses.rst index 6ceef04..9de3003 100644 --- a/doc/source/getting-started/pulses.rst +++ b/doc/source/getting-started/pulses.rst @@ -63,7 +63,7 @@ The shape objects inherits from :class:`qibosoq.components.pulses.Pulse` and sha .. code-block:: python - from qibosoq.components.pulses import Rectangular, Gaussian, Drag, Arbitrary, FlatTop + from qibosoq.components.pulses import Rectangular, Gaussian, Drag, Arbitrary, FlatTop, Hann pulse = Rectangular(...) @@ -89,6 +89,8 @@ The shape objects inherits from :class:`qibosoq.components.pulses.Pulse` and sha q_values = [...], # list of floats ) + pulse = Hann(...) + Measurements """""""""""" diff --git a/extras/DAC_calibration.ipynb b/extras/DAC_calibration.ipynb new file mode 100644 index 0000000..1d4df05 --- /dev/null +++ b/extras/DAC_calibration.ipynb @@ -0,0 +1,562 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "21674f86-6812-455b-8deb-8ef58253e340", + "metadata": {}, + "source": [ + "# Calibrate QICK units\n", + "\n", + "QICK (and therefore Qibosoq) uses arbitrary units to set the amplitudes of its pulses.\n", + "It is not easy to directly connect a specific value of amplitude to a physical one in volt or dBm because this depends on two factors:\n", + "\n", + "- The frequency\n", + "- The reconstruction waveform employed (what the DAC syntesise between two samples)\n", + "\n", + "In this document we will present a way of calibrating these units from the values measured using a Spectrum Analyzer.\n", + "The final objective is to have a function that, given a frequency and an amplitude, returns the corresponding dBm value." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "5644375f-d7f2-4da9-b2df-4e4fd9f71fb8", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "7ec8ea36-531c-44f9-8697-730850c090fe", + "metadata": {}, + "source": [ + "### Measured data\n", + "\n", + "Data taken with a simple QICK script with a continuous tone. In this case a RFSoC4x2 was used." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "bd89626e-ee87-4438-a2f0-500cfbd5c89e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# measured values for the non-return-to-zero mode (optimal for nqz=1)\n", + "# first column is the frequency, second is the value in dBm\n", + "measured_nrz = [ \n", + " (1, -3.22),\n", + " (1.5, -3.4),\n", + " (2, -4.37),\n", + " (2.5, -4.97),\n", + " (3, -5.78),\n", + " (3.5, -6.54),\n", + " (4, -7.98),\n", + " (4.5, -9.4),\n", + " (5, -9.74),\n", + " (5.5, -12.88),\n", + " (6, -13.06),\n", + " (6.5, -15.02),\n", + " (7, -16.85),\n", + " (7.5, -18.85),\n", + " (8, -21.47),\n", + " (8.5, -25.18),\n", + " (9, -31.33),\n", + " (9.5, -39),\n", + " (10, -47.8),\n", + "]\n", + "\n", + "# measured values for the mix mode (optimal for nqz=2)\n", + "# first column is the frequency, second is the value in dBm\n", + "measured_mix = [\n", + " (1, -18.96),\n", + " (1.5, -15.6),\n", + " (2, -13.91),\n", + " (2.5, -12.5),\n", + " (3, -11.5),\n", + " (3.5, -10.62),\n", + " (4, -10.42),\n", + " (4.5, -10.46),\n", + " (5, -9.44),\n", + " (5.5, -11.19),\n", + " (6, -9.94), \n", + " (6.5, -10.33),\n", + " (7, -10.50),\n", + " (7.5, -10.67),\n", + " (8, -10.98),\n", + " (8.5, -11.82),\n", + " (9, -13.75),\n", + " (9.5, -13.49),\n", + " (10, -16.26),\n", + "]\n", + "\n", + "freqs = np.array([i[0] for i in measured_nrz])\n", + "data = [i[1] for i in measured_nrz]\n", + "plt.plot(freqs*1e9, data, \"o--\", label=\"NRZ measured\")\n", + "\n", + "freqs = np.array([i[0] for i in measured_mix])\n", + "data = [i[1] for i in measured_mix]\n", + "plt.plot(freqs*1e9, data, \"o--\", label=\"MIX measured\")\n", + "\n", + "plt.xlabel(\"Frequency [Hz]\")\n", + "plt.ylabel(\"Measured maximum amplitude [dBm]\") \n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "id": "edea760b-d94a-499f-871d-9bdaa8c5112f", + "metadata": {}, + "source": [ + "### Reconstruction Waveform\n", + "\n", + "The first theoretical component to consider is the reconstruction waveform. \n", + "Each RW (Reconstruction Waveform) has different output attenuation for each frequency. We here consider just the two RW used in QICK." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "5f9ade49-1d6b-49f0-85f4-d2c091692d18", + "metadata": {}, + "outputs": [], + "source": [ + "SAMP = 9.85e9\n", + "T = 1. / SAMP\n", + "\n", + "def nrz(f):\n", + " omega = f * 2 * np.pi\n", + " x = omega * T / 2\n", + " return T * np.exp(-1j * x) * np.sin(x)/x\n", + " \n", + "def mix(f):\n", + " omega = f * 2 * np.pi\n", + " x = omega * T / 4\n", + " return x * T * np.exp(-1j * (omega * T - np.pi) / 2 ) * (np.sin(x)/x)**2" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "954cfcac-1bbd-40ff-ac9d-4f38caa29dba", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-60.0, 5.0)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def to_db(x, ref=1.01e-10):\n", + " return (20 * np.log10(x/ref)).real\n", + "\n", + "freqs = np.arange(1, 1.1*SAMP, 1e8)\n", + "plt.plot(freqs, to_db(nrz(freqs), 1.01e-10), label=\"NRZ\")\n", + "plt.plot(freqs, to_db(mix(freqs), 1.01e-10), label=\"MIX\")\n", + "\n", + "plt.axvline(0, linestyle=\"--\")\n", + "plt.axvline(SAMP/2, linestyle=\"--\")\n", + "plt.axvline(SAMP, linestyle=\"--\")\n", + "\n", + "\n", + "plt.xlabel(\"Frequency [Hz]\")\n", + "plt.ylabel(\"Attenuation [dB]\")\n", + "plt.legend()\n", + "\n", + "\n", + "plt.ylim(-60, 5)\n" + ] + }, + { + "cell_type": "markdown", + "id": "06dc4090-f484-4b5d-802e-dc048cad6ea2", + "metadata": {}, + "source": [ + "### Balun attenuation\n", + "\n", + "Each output of the RFSoC4x2 has a balun filter (https://cdn.macom.com/datasheets/MABA-011118.pdf) that adds some attenuation.\n", + "From its datasheet we can take some of its values and fit it to obtain an analytical function. We use a polynomial of arbitrary degree, in this case 6 since it was enough to generally describe the behaviour." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c6cd410a-88b5-414a-b0ba-8111b032aaa7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkMAAAGwCAYAAACq12GxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB65UlEQVR4nO3deXhMZ/sH8O/MJJN9X2TfiSCItdQSrZZSS1N08VpKtbR+1ireLkp5tUrRaukqtIpWQ22l9r32WLMIiSwSIZFN9pnz+2OSqVSQiZmcWb6f65pLcuacOXeOWe55nvt5HokgCAKIiIiITJRU7ACIiIiIxMRkiIiIiEwakyEiIiIyaUyGiIiIyKQxGSIiIiKTxmSIiIiITBqTISIiIjJpZmIHoO+USiVu3LgBOzs7SCQSscMhIiKiOhAEAYWFhfDy8oJU+vC2HyZDj3Djxg34+vqKHQYRERHVQ1paGnx8fB66D5OhR7CzswOgupj29vYiR0NERER1UVBQAF9fX/Xn+MMwGXqE6q4xe3t7JkNEREQGpi4lLiygJiIiIpPGZIiIiIhMGpMhIiIiMmlMhoiIiMikMRkiIiIik8ZkiIiIiEwakyEiIiIyaUyGiIiIyKQxGSIiIiKTxmSIiIiITBqX4yDSNwoFcOgQkJkJeHoCXbsCMpnYURERGS0mQ0T6JCYGmDgRSE//Z5uPD7B0KRAVJV5cRERGzGC6yXJzczF06FDY29vD0dERo0ePRlFR0UOPycrKwrBhw+Dh4QEbGxu0adMGv//+ewNFTKZKoRSQV1yOzPwS5BSVobxSWbcDY2KAQYNqJkIAkJGh2h4To/1giYjIcFqGhg4diszMTOzatQsVFRV47bXX8MYbb+CXX3554DHDhw9HXl4eNm/eDFdXV/zyyy8YMmQITp06hYiIiAaMnozZrcIy7I2/iWNXc3DxRgFSc4pRrqiZAHk7WqFxI1t0CHRG1xA3tPC2r7mSskKhahEShPtPIAiARAJMmgQMGMAuMyIiLZMIQm3vvvolLi4OzZo1w8mTJ9GuXTsAwI4dO9CnTx+kp6fDy8ur1uNsbW2xfPlyDBs2TL3NxcUFn376KV5//fVajykrK0NZWZn694KCAvj6+iI/Px/29vZa/KvIkAmCgENXbiP6aAoOJN6CQnn/y8hMKkFlLdsBIMDFGi+28cGrHf3gYmsB7N8P9Ojx6BPv2wdERj5e8EREJqCgoAAODg51+vw2iJahY8eOwdHRUZ0IAUDPnj0hlUpx/PhxvPDCC7Ue17lzZ6xfvx59+/aFo6Mjfv31V5SWliLyIR8m8+fPx+zZs7X9J5AROX4tB/O2x+F8er56W7i3AyJD3dDW3wnBbrZoZG8JuZkUlQol8koqkHL7Li5m5OPo1RwcunIbKTnFWLQrEcv2JeHVjn6YkJcFp7qcPDNTZ38XEZGpMohkKCsrC+7u7jW2mZmZwdnZGVlZWQ887tdff8VLL70EFxcXmJmZwdraGhs3bkRISMgDj5k5cyamTJmi/r26ZYgor7gcH22+hE2xNwAAluZSvNzeD8M6+SPYzbbWY8xkUrjaWsDV1gLtApwx8slA3C2rxM5LWVh5JAUXMvKx8kgKfjezw4T2AzH89FbIlZUPDsLTUxd/GhGRSRM1GZoxYwY+/fTTh+4TFxdX78f/4IMPkJeXh927d8PV1RWbNm3CkCFDcOjQIYSHh9d6jIWFBSwsLOp9TjJOR5JuY8qvsbhZUAaJBHilgx+mPNMErraaP1dsLMwQ1cYHL0R443DSbczbFof4rELMfep1bGzeA0u2LETjnLSaB0kkqlFlXbtq6S8iIqJqotYM3bp1Czk5OQ/dJygoCD///DOmTp2KO3fuqLdXVlbC0tISv/32W63dZFevXkVISAguXryI5s2bq7f37NkTISEhWLFiRZ1i1KTPkYyPIAj4/lAy5v8ZB6UABLnZ4PMhrdHa11Fr51AoBWw4nYb5m84jTyGBvLIcM/ZH47XTmyEBVIkQAGzYwOH1RER1ZDA1Q25ubnBzc3vkfp06dUJeXh5Onz6Ntm3bAgD27t0LpVKJjh071npMcXExAEAqrTl7gEwmg1JZx6HOZNIqFUq8t/Ei1p9StdIMaeeD2f1bwEqu3dFcMqkEL7X3Q49Qd7z71V/Yny/HnJ5v4Ix3U3y2fSmsPN2BJUuYCBER6YhBjCYDgOeeew43b97EihUr1EPr27Vrpx5an5GRgaeffhqrV69Ghw4dUFFRgWbNmsHT0xMLFy6Ei4sLNm3ahGnTpmHr1q3o06dPnc7LliHTVFapwMS1sdhxKQtSCfDh880wonNAzeHwOiAIAn46moyPt8ahQgCa20vx7Ztd4e1Se00SERHVTpPPb4OZdHHNmjVo2rQpnn76afTp0wddunTBt99+q76/oqICCQkJ6hYhc3NzbN++HW5ubujXrx9atmyJ1atXY9WqVXVOhMg0VSqUGP/LWey4lAW5TIrl/2mLkU8G6jwRAgCJRILhTwZhzRud4GIjx6UCJQau+BvxWQU6PzcRkakymJYhsbBlyLQolQKmbTiP38+kQ24mxY8j2qNLY1dRYkm/U4zXV51CfFYhHKzMEf1ae0T41WkAPhGRyTPKliEiXRMEAfO2x+H3M+mQSSX4+tU2oiVCAODjZI31b3RCGz9H5JdUYOj3x3H06m3R4iEiMlZMhoiq/Pz3dfxwOBkA8NmglujZrJHIEQEO1ub4aXRHdAlxRXG5Aq+vOoXT13PFDouIyKgwGSICcDIlF7O3XAYAzHiuKaLa+Igc0T9sLMzww8h26NpYlRCN/PEkLmbkP/pAIiKqEyZDZPKy8ksx7uczqFQK6NfKC292CxI7pPtYmMnw7bB26BDgjMKySgz74TiSsgvFDouIyCgwGSKTVqlQ4q01p3G7qAxNPezw6YvhDTJqrD6s5DL8MLIdWvk44E5xBUauPIlbhWWPPpCIiB6KyRCZtGX7knAmNQ92lmb4ZlhbWMv1e7k+O0tz/DiyPfxdrJF+pwSvrz6FknKF2GERERk0JkNksmLT8vDl3iQAwNyBLeDvYiNyRHXjYmuBlSPbw9HaHOfS8jBp/VkolZwhg4iovpgMkUkqLq/E5PWxUCgF9G/lhQGtvcUOSSNBbrb4bng7yGVS7Lx0E8v2JYkdEhGRwWIyRCZpwY4EJN++C08HS3w8oIXY4dRL+wBnzHtBFfvi3YnYF58tckRERIaJyRCZnHNpeVh1LAUA8NmgVnCwNhc3oMcwuJ0vhnb0gyAAE9edxfWcu2KHRERkcJgMkUmpVCjx340XIAhAVIS3qDNMa8uH/Zohws8RBaWVePOn0yyoJiLSEJMhMimrj13HpRsFcLAyx3/7hokdjlZYmMmwfGhbuNrKEZ9ViPc2XRA7JCIig8JkiExGVn4pFv2VAEA1y7SrrYXIEWmPh4Mllr3aBlIJEHMmA3/EZogdEhGRwWAyRCZjwY543C1XoK2/E15q5yt2OFr3RJAL/u+pxgCA9zdeRFpuscgRERkohQLYvx9Yu1b1r4Jdz8aOyRCZhAvp+Yg5q2otmdWvGaRS/Zxl+nH931MhaOfvhMKySkxYdxaVCqXYIREZlpgYICAA6NEDePVV1b8BAartjym/pALxWQU4mnQbR5Nu4/T1O7hZUApB4DxhYtPv6XaJtEAQBMzdplqE9YUIb7T0cRQ3IB0yk0mx5OXWeG7pIZxNzcMXe65gyrOhYodFZBhiYoBBg4B/JycZGartGzYAUVF1frji8krsT7iF3Zdv4tT1O0h9QGutnYUZOgQ6o3uoG/q19IKTjfxx/gqqB4nAlPShCgoK4ODggPz8fNjb24sdDtXDrss3MWb1KViYSbH3nUh4O1qJHZLObT53AxPWnoVUAqx/sxPaBziLHRKRflMoVC1A6em13y+RAD4+QHIyIJM99KGu59zFD4eTsfFMBgrLKmvc52wjh7ONHFIJcLdMgcz8Etw7gbxcJsXzLT3xf083RqCrYcyKr680+fxmyxAZtUqFEvP/jAMAjO4SaBKJEAD0b+WFAwm38PuZdEz77Rz+nNgNVvKHv4ETmbRDhx6cCAGq1qK0NNV+kZG17pJdUIqFfyXg9zMZUFRlOL7OVujd3APdm7gj3NvhvnnNyiuVSLxZiMNJt7Hl3A1culGAmLMZ+OPcDbzawQ/v9g6FnaXhzoVmKJgMkVGLOZuBa7fuwtlGjnGRwWKH06A+7NcMR5JuIyWnGJ/tTMCH/ZqJHRKR/srMrPd+CqWANcev47MdCeqWoMhQN7zeJQidg10eWqMoN5OihbcDWng7YGz3YJxLy8PSPVewNz4bP/19Hbsu38TCwa2MYk40fcYCajJaFQolvthzBQAwrnuwyX27crAyx/wXwwEAK48m40RyrsgREekxT8967ZeWW4xBK47iwz8uobCsEi19HBDzVmdEv9YBXRq7ajxYo5WvI34c2R6/vN4R/i7WyCooxbAfj2PZ3itckFmHmAyR0dpwOh3pd0rgamuB/zzhL3Y4ougR6o6X2vlCEIBpG86huLzy0QcRmaKuXVU1QZIHJC8SCeDrq9qvyq7LN9H3C9VgBVsLM8wZ0Bwb33oSbfycHjucziGu2DGxm/r1u/CvRLzz2zlUcISoTjAZIqNUXqnEsr2qldzHRQabdL3Me8+HwdPBEtdzirFgR4LY4RDpJ5kMWLpU9fO/E6Lq35csAWQyKJUCFuyIx5jVp1BQWolWvo7YMakrhncKgEyL03ZYyWX4dFBLfBIVDplUgpizGXhj9SmUVnDeI21jMkRG6ddTacjIK4G7nQWGdvQTOxxR2Vua49MXWwIAVh1LwdnUOyJHRKSnoqJUw+e9vWtu9/FRD6svq1Rg4vpYfL3/KgBg1JOB+O3NTvBxstZZWC938MN3w9vC0lyKfQm38PaaM2wh0jImQ2R0KhRKLK96o3orMhiW5qbbKlStWxM3vNjGB4IAzIy5wDdSogeJigJSUoB9+4BfflH9m5wMREUhv6QCw384gS3nbsBMKsGiwa3wYb9mkJvp/qP0qaaNsHJkB1iYSbEnPhuT18eyhkiLmAyR0dl6/gYy8krgaivHyx1Mu1XoXu/1DYOTtTniswqx8kiy2OEQ6S+ZTDV8/pVXVP/KZMgvrsCwH47jeHIubC3MEP1aB7zY1qdBw+oU7IJvhrWFuUyCrecz8fmuxAY9vzFjMkRGRRAEfHPgGgDgtScD2Sp0D2cbOWb2CQMALN51hWuXEdVRfnEF/vPDcZxPz4ezjRy/vtlJtKHukaHu+CRK1e29bF8SNp3loszawGSIjMr+hFuIzyqEjVyG/3Q0zRFkDzO4rQ86BDqjpEKBD/+4yDWRiB6hoFSVCF3IUCVCv4zpiGZe4q5G8GJbH/W8aTNiziPxZqGo8RgDJkNkVJYfUNUKvdrR776ZXgmQSCT43wvhMJdJsC/hFv68mCV2SER6q7RCgTdWn6qRCDX10I9lmaY9G4qujV1RWqHEW2vOcNqMx8RkiIzGmdQ7OJGcC3OZBKO7BIkdjt4KcbfFuMgQAMBHmy+hoLRC5IiI9I9CKWDy+lj8fU1VI7R6VAe9SYQAQCqVYPFLreFuZ4Gk7CJ8vPWy2CEZNCZDZDR+OKQqCh7Y2hseDpYiR6Pf3ooMRqCrDbILy7CYRZhE95mz5RL+vJgFuUyKb4e1RQtvB7FDuo+rrQWWvNwaALD2RBoOJN4SNyADxmSIjMKNvBLsuKTq8hndNVDkaPSfpbkMcwY0BwCsPnYdCVmsOSCq9tPf17Hq2HVIJMDnL7VC5xD9XResc7ArRnYOAABM33Ae+SVs6a0PJkNkFH7++zoUSgGdglz0qilbn3Vt7IZezRtBoRTw0eZLLKYmAnDsag5mb74EAJjWKxTPt/QSOaJHe7d3KAKq1jFbuJOzzNcHkyEyeKUVCqw9kQoAGPlkgLjBGJj3+zaDhZkUx67lsJiaTF5abjHeWnMalUoB/Vt5YVz3YLFDqhNruRn+F6ValHnN8eu4mJEvckSGh8kQGbzNsTdwp7gC3o5W6BnWSOxwDIqvszXGVr3hz9sWh5JyrnlEpuluWSXGrD6FO8UVCPd2wIJBLSF50KKteqhzsCueb+kJpQB8+MdFzk6tISZDZNAEQcDKoykAgBGd/bW6SKKpGNs9GN6OVsjIK8Hy/Ulih0PU4ARBwIyYC4jPKoSrrQW+Hd7WICdsfa9vGKzlMpxJzUMMJ2PUCJMhMminrt9BXGYBLM2lGNLOV+xwDJKVXIb3+6pmpl5x8BpSczgzNZmWtSfS1OuNrfhPG3g6WIkdUr14OlhhwtONAQCf/BmHQk6bUWdMhsigrT2uqhXq38oLjtZykaMxXL1beODJEBeUVyrx8TbOV0KmIy6zALO3/FMw3S7AWeSIHs+oJwMR5GqD20Xl+OEw1yCsKyZDZLDyiyuw7UImAOAVLsj6WCQSCT7q1xwyqQS7Lt/E0au3xQ6JSOfullXi7V/OoKxSiR6hbhjT1fAna5WbSfFOr1AAwPeHkpF7t1zkiAwDkyEyWJtiM1BWqURTDzu09nUUOxyD17iRHf7TUZVUzt0aBwULMMmICYKA9zddxLVbd+HpYIlFQ1pDaiQ1h72be6CFtz2KyipZB1hHTIbIIAmCoB5O/3J73weP+lAogP37gbVrVf8qOFrqYSb2bAI7SzNczixAzJn0uh/I60wGZvO5G9h4NgMyqQRfvhIBZxsD72a/5zUoPXgA7/RU1Q6tOnYdmfkl4sZmAAwmGZo3bx46d+4Ma2trODo61ukYQRDw4YcfwtPTE1ZWVujZsyeuXLmi20CpQZxLz0d8ViEszKR4IcKn9p1iYoCAAKBHD+DVV1X/BgSotlOtnG3k+L+nVOuWfbYzoW6LP/I6k4G5kVeC9zddBABMfLqxwdcJ1fYa7P5se3SwU6K8Uokv9rB16FEMJhkqLy/H4MGDMW7cuDofs2DBAnzxxRdYsWIFjh8/DhsbG/Tq1QulpaU6jJQawrqqVqE+4Z61r04fEwMMGgSk/6t1IyNDtZ0f1A80onMAfJ2tkF1Yhm8PXnv4zrzOZGCUSgHTNpxDYWklWvs64q1Iw5hY8YEe8BqUZGRg2oqZAIANp9PYOvQIBpMMzZ49G5MnT0Z4eHid9hcEAUuWLMH777+PAQMGoGXLlli9ejVu3LiBTZs26TZY0qmiskpsPncDgKqL7D4KBTBxIlDb8hLV2yZNYlfOA1iYyTCjt2qo/TcHriEr/wFfHnidyQBFH03BkaQcWJnLsPil1jCTGczH4P0e8Rpsn3EZHW8mokIh4EeOLHsoA34WPFxycjKysrLQs2dP9TYHBwd07NgRx44de+BxZWVlKCgoqHEj/bLl3A0UlysQ5GaDDoG1NG8fOnR/S8W9BAFIS1PtR7XqE+6Btv5OKKlQYOFfD1jriNeZDMyVm4X4ZEc8ANUEhYGuNiJH9Jjq8Boce3ANAOCX46nIL+a8Qw9itMlQVpZqnaVGjWouz9CoUSP1fbWZP38+HBwc1DdfX07kp2/WnUwD8JDC6czMuj1QXfczQRKJRD0R4+9n0mtf64jXmQxIpUKJKb+eQ3mlEpGhbhja0Qim46jDayvy2mk0tVTgbrkCP/2dovuYDJSoydCMGTMgkUgeeouPj2/QmGbOnIn8/Hz1LS0trUHPTw939VYRzqXlQSaVIKrNAwqnPT3r9mB13c9ERfg5oX8rLwiCat2y+1a153UmA/LD4WRcyMiHvaUZPn3RsNYde6A6vLYkAMY1sQYArDySgtIKdlvXRtRkaOrUqYiLi3voLSiofpNgeXh4AABu3rxZY/vNmzfV99XGwsIC9vb2NW6kPzaeUa23072JG1xtLWrfqWtXwMcHeNCbnUQC+Pqq9qOHerd3KORVq9rvicuueSevMxmI5Nt38fmuRADA+883QyN7S5Ej0pI6vgb7DuoOHycr5Nwtx2+n+AW/NqImQ25ubmjatOlDb3J5/eZ+CAwMhIeHB/bs2aPeVlBQgOPHj6NTp07a+hOoASmVAjZWLT44MML7wTvKZMDSpaqf//0mUf37kiWq/eihfJysMbpLIADg0x3xNSdi5HUmA6BUCpj++3mUVSrRtbErBrd9QIuyIarja9BMbo7Xq17H0UdT7m/lJcOpGUpNTUVsbCxSU1OhUCgQGxuL2NhYFBUVqfdp2rQpNm7cCEBV8zBp0iTMnTsXmzdvxoULFzB8+HB4eXlh4MCBIv0V9DhOpuQiI68EthZmeLZZo4fvHBUFbNgAeP8rafLxUW2PitJdoEZmbPdgOFqb40p2EX4//a9iTV5n0nO/nEjFieRcWMtl+N8L4cbRPXavOr4GX2zrAxu5DFdv3cXRqzkiBKrfzMQOoK4+/PBDrFq1Sv17REQEAGDfvn2IjIwEACQkJCA//59Cz3fffRd3797FG2+8gby8PHTp0gU7duyApaWRNJGamOpWoedaeMDSvA6tDVFRwIABqhEXmZmq/vWuXdlSoSEHK3OM7xGCudvi8PmuRPRv7VXz+vM6k566kVeCT/5U1Z1O6xUKX2drkSPSkTq8Bu0szRHVxgc//X0dq4+l4MkQVxED1j8Sge1lD1VQUAAHBwfk5+ezfkhEpRUKtJ+3G4WllfhlTEd0DuYLuSGVVijw9KIDyMgrwYznmmJsdwOfqI6MniAIGL3qFPbGZ6ONnyN+G9sZMiNZe6y+Em8W4tnFByGVAIenPwUvRyuxQ9IpTT6/DaabjEzb3vhsFJZWwsvBEk8EuogdjsmxNJdhyjNNAABf70tCXjFXwib9tuV8JvbGZ0Muk2LBoJYmnwgBQJNGdngiyBlKQTXvEP2DyRAZhJiqUWQDIryNZmVpQzMwwhtNPexQUFqJ5fuvih0O0QMVlFbg462XAQBv9whBiLudyBHpjxGdAgAA606moqySw+yrMRkivZd7txz7E1TDul942Cgy0imZVILpvZsCAFYeTUFGHtc6Iv30+V+JuFVYhkBXG4yNrN/0LMbqmWaN4GFvidtF5fjr0s1HH2AimAyR3tt2/gYqlQKae9mjSSN+wxNTZKgbOgY6o7xSicVV87YQ6ZOLGflYfSwFAPDxgBawMGMh/73MZFIMbqeaXuC3f48ONWFMhkjvbTmvmnJ+QGsvkSMhiUSCmX3+WaYjPotr95H+UCgFvLfpIpQC0K+VF7o05kCL2gyqmmvp0JVbuMEWXgBMhkjP3SwoxcmUXABA35ZMhvRBa19H9An3gCAAn+14wCKuRCJYeyIV59LyYGthhg+q1taj+/m72KBjoDMEAYg5w9YhgMkQ6bk/L2RCEIA2fo7wNvJhoIbknWdDIZNKsCc+G8evcQI3Et+twjIsqFqRfuqzTeBuLEtu6MjgdqpFyH87nc4ZqcFkiPTctguqLjK2CumXIDdbvNxe9Wb6yY54vpmS6OZvj0NBaSWae9lj2BP+Yoej9/qEe8BGLsP1nGKcSM4VOxzRMRkivZWVX4qTKXcAqF64pF8mPt0YVuYynE3Nw85LWWKHQybs2NUcxJzNgEQCzHshHGYyfrQ9irXcDM9XfclkITWTIdJj26tahdr5O8HTgV1k+sbd3hKvd1Ut/rhgZwIqFUqRIyJTVKFQYtbmiwCAVzv4obWvo7gBGZDqUWXbL2SiuLxS5GjExWSI9NY/XWSeIkdCD/JGtyA4WZvj2q272MBvlySCn/++jsSbRXCyNse0XqFih2NQ2vo7wc/ZGsXlCuyOyxY7HFExGSK9dCOvBKev34FEAjzXgsmQvrKzNMfbPUIAAIt3J6KknDPaUsPJKSpTz3f1Tq9QOFrLRY7IsEgkEvRrpXp/3Rx7Q+RoxMVkiPRSdRdZe39neDhwVIg++88T/vB2tMLNgjJEH00ROxwyIQv/SkRBaSWaedrj5fZ+YodjkPq3Us3qfyAxG/nFFSJHIx4mQ6SX2EVmOCzNZZhctYjr8v1JJv2GSg3nYkY+1p1ULTb6Uf/mXIi1nkI97BDayA4VCgE7LmWKHY5omAyR3rmRV4KzqXlVXWQcRWYIXojwRmgj1SKuXx9IEjscMnKCIOCjzZcgCED/Vl7oEOgsdkgGrX/V7P5bzjEZItIbuy6rFg9s5+/EidMMhEwqURevRh9JQWY+p/gn3dl87gZOXb8DK3MZZvZpKnY4Bq9f1RD7o1dvI7uwVORoxMFkiPTOX5dVc9Y824ytQobk6TB3tA9wQlmlEkt3XxE7HDJSd8sq8b/tcQCA8U+FcNoNLfBzsUZrX0coBWD7edNsHWIyRHolr7gcf19TzYb6bPNGIkdDmpBIJJjxnOpb+q+n0pCUXSRyRGSMvt6fhJsFZfBztsboLoFih2M0+rdStQ5tZTJEJL698dlQKAU09bCDv4uN2OGQhtr6O6NnWCMoBWDhTi7iStp1PecuvjuYDAB4v28YLM1lIkdkPHpX1WeeTr1jkl1lTIZIr1Qv6/BsM7YKGap3e4dCKgF2XMrC2dQ7YodDRuTjrXEoVyjRtbErnuF7hFZ5OVqhla8jBOGfuk1TwmSI9EZJuQIHEm8BAJ5tznohQ9WkkR2i2qim+f+Ui7iSlhxIvIXdcTdhJpVgVr9mkEg4lF7belWVJuy8xGSISDSHk26jtEIJb0crNPeyFzscegyTn2kCuZkUf1/LVSe4RPVVoVBizpZLAIARnQMQ4m4nckTGqXfVl9CjSbeRX2Ja84UxGSK9oe4ia96I3/oMnLejFYY/4Q8A+HRHApRKtg5R/f107Dqu3roLFxs5JjzdWOxwjFaQmy2aNLJFpVLA3njTah1iMkR6oVKhxJ441YuPQ+qNw9s9QmBnYYa4zAJsOW/a6x5R/d25W44lu1Xrj019NhQOVuYiR2TcelW1Du24mCVyJA2LyRDphZMpd3CnuAJO1uZoH+AkdjikBU42crzZPQgAsOivRJRXKkWOiAzR4t2q9cfCPO3xUntfscMxetXJ0IHEWya18DKTIdIL1RMtPh3WCGYyPi2NxagugXCzs0BqbjHWnkgVOxwyMIk3C7HmuOp588HzYVx/rAE097KHj5MVSiuUJlXvx08dEp0gCNhd1UXG4bLGxVpupq7x+HLvFdwtqxQ5IjIUgiDg462XoVAK6NW8EToHu4odkkmQSCTqUoXq0gVTwGSIRHf1VhHScksgl0nRJYRveMbm5fa+CHCxxu2icnx/KFnscMhA7I3PxqErtyGXSfFen2Zih2NSnmrqDgDYl3DLZAY/MBki0e2NzwYAPBHsAhsLM5GjIW0zl0kx9VnVIq7fHryKnKIykSMifVdeqcTcbar1x0Z1CYSfi7XIEZmWDoHOsJHLcLuoDBdv5IsdToNgMkSi2xOnSoaervo2Qsanb7gnWnjb4265Asv2JYkdDum51cdSkHz7LlxtLfB2j2CxwzE5cjMpujZ2A/DP+7OxYzJEosovrsCp66olG55iMmS0pFIJpvdWLeK65u9UpOUWixwR6aucojIs3XMFADCtVxPYWXIovRieCqvuKmMyRKRzB6/cgkIpoLG7LXyd2RRuzLo2dkOXEFeUK5RYvCtR7HBIT32+KxGFpZVo7mWPQW05lF4skaGqlqHz6fnILjD+hVuZDJGoquuFqr+FkHGrbh3aGJuBuMwCkaMhfROXWaCeguHD55txKL2I3O0s0dLHAQCwP8H4h9gzGSLRKJQC9idU1wtxSL0pCPdxQN+WnhAE4LOdCWKHQ3qkeii9UgD6hHugY5CL2CGZvOrSheovrcaMyRCJJjZNNeu0g5U52vg5ih0ONZB3ng2FmVSCvfHZOH4tR+xwSE/sunwTR6/mQG4mxcznwsQOh/BPMnToyi2UVRr3bNRMhkg01aMUujdx46zTJiTQ1Ua9rMInO+IhCKYxjwk9WFmlAvO2q4bSj+kayPpBPdHCywGutha4W67A6aqBLsaKn0Akmuqm16dZL2RyJj7dGFbmMpxNzcNfl01nlluqXfSRFFzPKYabnQXeigwROxyqIpVK0K2xaiLcQ1duixyNbjEZIlFk5JUgPqsQUomqZYhMi7u9JUZ1CQCgqh2qVHARV1N1q7AMX+5VzT31bq9QTryqZ7o2qU6GjLuImskQiaK6cLqtvxMcreUiR0NieLN7MBytzZGUXYSYMxlih0Mi+XxXAorKKtHSxwEvtvEROxz6lyerlki6mFFg1LPHMxkiURyoGqrJViHTZW9pjrerukQW705EaYVxF2iaLIUC2L8fWLtW9a/in//nSzfyse5kGgDVUHoph9LrHXc7S4R52gMADicZb1cZkyFqcBUKJY5eVY0i6sZkyKQN6+QPLwdLZOaXYvWxFLHDIW2LiQECAoAePYBXX1X9GxAAxMRAEATM2XIZggA839IT7QKcxY6WHqBbE+OvGzKYZGjevHno3LkzrK2t4ejo+Mj9KyoqMH36dISHh8PGxgZeXl4YPnw4bty4oftg6aHOXL+DorJKONvI0cLLQexwSESW5jJMeqYJAOCrfVeRX1IhckSkNTExwKBBQHp6ze0ZGcCgQdjxwx84npwLCzMpZvbhUHp91q1qnbJDV24Z7ehPg0mGysvLMXjwYIwbN65O+xcXF+PMmTP44IMPcObMGcTExCAhIQH9+/fXcaT0KAerCvG6NnZlszjhxTY+aOxui/ySCnxz4KrY4ZA2KBTAxIlAbR+cgoBSmTn+F6taDf3NbkHwdrRq4ABJE239nWBpLsXNgjIk3iwSOxydMJiy/dmzZwMAoqOj67S/g4MDdu3aVWPbsmXL0KFDB6SmpsLPz6/W48rKylBW9k+RWEEBlwzQtgOJrBeif8ikEkzrFYo3fjqNH48kY0TnADSytxQ7LHochw7d3yJ0jx/b9kearSsaWUgwNpKr0us7S3MZOga64EDiLRy6cguhHnZih6R1BtMypA35+fmQSCQP7WabP38+HBwc1DdfXy4UqE23i8pwMUOVYHZtzGSIVJ5p1ght/Z1QWqHEkt1cxNXgZWY+8K4sWxcs6/wSAGC6ezGs5Qbzndykda2ab6j6y6yxMZlkqLS0FNOnT8crr7wCe3v7B+43c+ZM5Ofnq29paWkNGKXxO1xVgNfM0x5udhYiR0P6QiKRYOZzqkVc159M4yKuhs7T84F3/a/HayiWW6Ft+mW80IzrjxmK6i+vp1LuoLzS+OYFEzUZmjFjBiQSyUNv8fHxj32eiooKDBkyBIIgYPny5Q/d18LCAvb29jVupD3qLrJQtgpRTe0CnNE33BNKAZi3Lc5oCzVNQteugI8PIKlZE3jcpzk2N4uERFBi9oVNkHTrJlKApKkmjWzhYiNHSYUC59LzxA5H60Rtn5w6dSpGjhz50H2CgoIe6xzVidD169exd+9eJjciUioF9Sym3dhFRrWY8VxT7Lp8E4eTbmNvfDaeDmskdkhUHzIZsHSpajSZRAIIAiolUsx6ZiwA4JVzO9Fi1lTVfmQQJBIJngh2wbbzmTialIP2RjYVgqjJkJubG9zcdPehWJ0IXblyBfv27YOLC5tkxXQ5swC3i8phI5ehrb+T2OGQHvJ1tsZrXQLwzYFrmLc9Dt2auMGci/gapqgoYMMG1aiy9HT80vo5xLsHwqHsLqa99pTqfjIonauSoWPXbmMiGosdjlYZzLtMamoqYmNjkZqaCoVCgdjYWMTGxqKo6J9hfk2bNsXGjRsBqBKhQYMG4dSpU1izZg0UCgWysrKQlZWF8vJysf4Mk1bdRdYp2BVyM4N56lEDG98jBC42cly7dRc//31d7HDocURFASkpyN25F4ueU7UKvTOoPZxeYiJkiDoFqRoUzlzPM7oZ4w3mE+nDDz9EREQEZs2ahaKiIkRERCAiIgKnTp1S75OQkID8fNXcFRkZGdi8eTPS09PRunVreHp6qm9Hjx4V688waf8MqXcVORLSZ3aW5pjyrGoixiW7ryCvmF9eDJpMhs+KXJGvkCDM0x6vdgoQOyKqp0BXG3jYW6JcocSZ63fEDkerDCYZio6OhiAI990iIyPV+wiCoK5BCggIqHX/fx9DDaOwtEL94unexF3kaEjfvdTOF00aqSZi/GJPktjh0GO4kJ6PdSdTAQCz+zeHjBOtGiyJRIJOwarWoeollYxFnWqGzp8/r/EDN2vWDGZmnD+CVI5ezUGlUkCAizX8XKzFDof0nJlMivf7NsPwH09g9bEU/OcJPwS52YodFmlIqRQwa/NFCAIwoLUXOgQaV9GtKeoU7IKNZzNw7JoJJkOtW7eGRCKp81BXqVSKxMTExx4JRsbjYFUXGRdmpbrq1sQNPULdsC/hFv63PR7fj2gndkikoZizGTiTmgdruQwzn+P6Y8agum7oXFoe7pZVwsbCOBo96vxXHD9+vE4jvwRBQIsWLR4rKDI+1asdc0g9aeK9vmE4eOU2dsfdxIHEW1zCxYDkl1Tgkz9V88T931ON4eHAJVaMga+zNXycrJB+pwQnU3IRGWocZQ91Soa6d++OkJCQOq0WDwDdunWDlRUX3iOV1JxipOYWw0yqmqeCqK5C3O0wolMAfjySjNmbL2HHpG4ciWggFu5MwO2iMgS52WBUlwCxwyEt6hzsgl9PpePYtRyjSYbq9K6yb9++OidCALB9+3Z4PmQ6djItR66qWoVa+zrC1kiaVKnhTHqmMVxt5bh2+y5+PJIsdjhUB7Fpefj5uGpahLkDW8DCjJMrGpOOgaovtSeTc0WORHv4FYt07kiSKhl6MoRD6klz9pbmmFFVb/LFnivIyi8VOSJ6mEqFEu9tvABBAKIivNE5mK97Y1NdCH8+PR8l5cYx35BGydCVK1fw+++/IzlZ9e1s27Zt6NatG9q3b4958+ZxLSG6j1IpqIdgdmnMN0Wqn6gIb0T4OaK4XIH5f8aJHQ49xOpj13HpRgHsLc3w374smjZGPk5W8HSwRKVSwNk045hvqM7J0MaNG9GsWTO8+uqrCAsLw+rVqzFo0CDY2NigUaNG+Oijj7BgwQJdxkoGKD6rELl3y2Etl6GVj6PY4ZCBkkolmNO/BSQS4I/YGzhuZMN6jUVWfikW/ZUAAJjxXBhcbS1Ejoh0QSKRqNcmO2EkXWV1TobmzZuHd999F6WlpVi+fDnGjh2L+fPn488//8TWrVvx1VdfITo6WoehkiGq7iLrGOjMwld6LOE+Dnilgx8AYNbmS6hUKEWOiP5tztZLuFuuQISfI15u7yt2OKRD7au6yk6mmFgylJCQgFGjRkEikWDEiBEoLy9Hz5491fc/++yzuH6d6whRTYdZL0RaNO3ZUDhamyM+qxCrj/H9Rp/si8/G9gtZkEklmDcwHFLONG3UOlYlQ2eu56HCCL6Y1DkZunv3Luzs7FQHSaWwsrKCtfU/MwlbWVmhrKxM+xGSwSqvVKqbUJkMkTY42cgxrVcoAGDRXwnIzC8ROSICgJJyBT7cfBEAMOrJADTzshc5ItK1EDdbOFqbo6RCgYsZ+WKH89jqnAxJJBJIJJIH/k70b2dT76CkQgFXWzlCG9mJHQ4ZiVfa+yHCzxF3yxX4aPMlscMhAEt2JyIttwSeDpaY1LOJ2OFQA5BKJWjnbzxdZXVOhgRBQJMmTeDs7AxnZ2f1yvHVvzdt2lSXcZIBOlI1iqxTsCubzElrpFIJ5keFw0wqwc5LN/HXpSyxQzJp59Pz8N2hawCAjwe0MJrlGejRqrvKTiQb/oiyOj9rV65cqcs4yAhVF093CeGs06RdTT3s8XrXIKw4cBWzNl9C5xBXTugpgvJKJd7dcB5KAejfygs9mzUSOyRqQPcWUSuVgkF/6a3zu8eIESN0GQcZmcLSCsSm5QFgvRDpxsSnG2PbhRtIyy3B4l2J+OD5ZmKHZHKW77+K+KxCONvIMasfr7+pae5lDytzGfJLKnAluwihHoZbDsGxzqQTJ5JzoVAK8Hexho+T9aMPINKQlVyGuQPDAQArjyTjQrrhF3EaksSbhVi27woAYFa/ZnDhnEImx1wmRYSfIwDg9HXD7iqrUzLk5OSkrg161I0I4JB6ahjdm7ihfysvKAVg5sbznHuogSiUAt7dcB4VCgE9w9zRv5WX2CGRSNr4OQEAzqQadjJUp26yJUuWqH/OycnB3Llz0atXL3Tq1AkAcOzYMezcuRMffPCBToIkw/NPvRCTIdKtD55vhv0J2biYUYBvDl7D2z1CxA7J6K08kozYtDzYWZhh7sBwjiw2YW39q5IhA28ZqlMydG+90Isvvog5c+Zg/Pjx6m0TJkzAsmXLsHv3bkyePFn7UZJByS4sReLNIkgkQKcgFk+TbrnZWWBWv+aY+ts5LN19BT3DGhl07YK+S8ouxGc7VUtuvNc3DB4OliJHRGKq7ia7dvsu7twth5ONXNyA6knjmqGdO3eid+/e923v3bs3du/erZWgyLAdqxpS38zT3mBfGGRYotp4o2eYO8oVSrzz2zmjmBFXH1UolJi8/hzKKpXo1sQNL3HJDZPnaC1HkJsNABj0oq0aJ0MuLi74448/7tv+xx9/wMWFrQD0TzLEeiFqKBKJBP97IRwOVua4kJGPbw5cFTsko/Tlniu4kJEPR2tzfDaoJbvHCMA9dUPX88QN5DFoPDHH7Nmz8frrr2P//v3o2LEjAOD48ePYsWMHvvvuO60HSIbn76oVxZ8IYkE9NRx3e0vM7t8ck9bHYumeK3g6rBHCPLkshLacSb2DZfuSAADzBoajkT27x0iljZ8TNpxON+giao1bhkaOHIkjR47A3t4eMTExiImJgb29PQ4fPoyRI0fqIEQyJJn5JUjJKYZUArQPYDJEDWtAay8806wRKhQCu8u0qLi8ElPWx0IpAANbe6FvS0+xQyI90sbfEQAQm5ZnsCM66zVla8eOHbFmzRptx0JGoLpVKNzbAXaW5iJHQ6ZGIpFg3gstcDIlF5duFODLvUmY8gzXynpc87bFISWnGJ4Olpg9oIXY4ZCeaexuB1sLMxSVVSLhZiGaezmIHZLG6tQyVFBQoNGDFhYW1isYMnzV9UJPcBQZicTdzhJzqj6wl+29YhSLSIppT9xNrDmeCgBYOLgVHKz4JYdqkkklaO3rCAA4k5onaiz1VedJF7Ozs+v8oN7e3rh27Vq9gyLD9fc11QfPE8FMhkg8/Vt5IaqNN5QCMGldLPJLKsQOySDdyCvB1N/OAQBGdwnkoAh6oDZV8w2dNdD5hurUTSYIAr7//nvY2trW6UErKvjGY4oy8kqQmlsMmVTCeiES3ZwBLXAq5Q5Sc4vx340XsOyVCI5+0kClQokJa88ir7gCLX0cML13U7FDIj3Wpmq+IUMtoq5TMuTn56fRSDEPDw+Ym7Mp1dT8ffWfeiGuIE5is7UwwxevRGDQ8qPYdj4TkU3cMLgd58Wpq893JeLU9TuwszDDl69EQG7GpSzpwSJ8VS1DKTnFyCkqM7i16ur0iZWSkqLjMMgYHLvGeiHSL619HTHl2SZYsCMBszZfQoSfI0LcOTv1oxxIvIWv96vmavrkxZbwd7EROSLSdw7W5ghxt0VSdhHOpObhmWaNxA5JI0z1SWuqR5J1Yr0Q6ZE3uwWjc7ALissVGPvzGdwtqxQ7JL2WkVeCKetjAQD/ecKPw+ipzgy5q4zJEGlFWm4x0u+UwEwqQbuqQjoifSCTSrD05Qg0srdAUnYR3v39PARBEDssvVRaocDYn04j5245mnvZ4/2+zcQOiQzIPzNRMxkiE1XdKtTSxwE2rBciPeNmZ4Gvh7aBmVSCbeczsfJIitgh6R1BEPDfjRdwISMfTtbmWPGftrA0l4kdFhmQ6hFlFzLyoVAa1hcOJkOkFawXIn3X1t8Z7/cNAwD8b3sc5x/6l+ijKYg5kwGZVIKvXm0DX2drsUMiAxPsZgtruQzF5QokZReJHY5GmAzRYxMEAcer5hdivRDpsxGdA9C/lRcqlQLG/XwG6XeKxQ5JLxy9ehtzt8UBAGY+1xSdOZ8Q1YNMKkELb9Xs0+fS88QNRkP16s/Iy8vDiRMnkJ2dDaWy5jokw4cP10pgZDjSckuQkVcCc5kEbVkvRHpMIpFgflQ4rmQXIS6zAK+vOoXfxnYy6aVjkrILMfan01AoBQxs7YXRXQLFDokMWCsfB5xIzsX59DwMMaCpLDROhrZs2YKhQ4eiqKgI9vb2NSYxk0gkTIZMUHW9UCsfR1jLWS9E+s3Gwgw/jGiHgV8dQXxWISasPYvvhreDmcz0GsqzC0sxcuVJFJRWoo2fIz55sSUnpqTH0tLHEQBwPj1f3EA0pPGrf+rUqRg1ahSKioqQl5eHO3fuqG+5ueyDN0WsFyJD4+Vohe9HtIOluRT7Em6pu4hMSXF5JUZHn0L6nRIEuFjj+xHtWTBNj61VVTIUl1mAskqFuMFoQONkKCMjAxMmTIC1NYvrSFUvxPmFyBC19HHE50NaA1AVD39/yHTWU6xeaqN65Fj0ax3gbCMXOywyAr7OVnCyNkeFQkB8puEs2q5xMtSrVy+cOnVKF7GQAbqeU4zM/FKYyyTqOSaIDEWfcE/1mltzt8Vh/clUkSPSPYVSwLQN57E7LhtyMym+H9EOAa6cYZq0QyKRIFzdVZYnaiya0LjAo2/fvpg2bRouX76M8PDw+9Yg69+/v9aCIz2jUACHDgGZmYCnJ9C1q7pVKMLXCVZyNrGTAal6Po+9kYm8QBd8k1yBmTEXYGthbrSzLiuVAt7beAEbz2bATCrBslci0NafiyqTdrXyccDBxFs4l56PYWIHU0caJ0NjxowBAMyZM+e++yQSCRQK3fQRzps3D9u2bUNsbCzkcjny8vI0On7s2LH45ptvsHjxYkyaNEknMRq1mBhg4kQgPf2fbT4++HvCVwBkeCKIb6hkQO55PksAzABQEPUu1jbuhknrz8LGQobIUHexo9QqQRAwe8slrDuZBqkEWPJyazzb3EPssMgItTTAliGNu8mUSuUDb7pKhACgvLwcgwcPxrhx4zQ+duPGjfj777/h5eWlg8hMQEwMMGhQzUQIgJCRgePJqqJ5Fk+Twajl+SwBMHfTIvSLO4AKhYA3fzqN/QnZ4sWoZYIgYN62OKw6dh0SCfDZoFZ4viXfD0k3Wvmo5hpKyi4ymLUADWYs6ezZszF58mSEh4drdFxGRgb+7//+D2vWrLmvS4/qQKFQfYOuZS2ndDs3ZNq7wUypQIS3vQjBEWnoIc9nmVKBz7ctxjNpsSirVGLM6lPYeSlLhCC1S6FULbPx/eFkAMC8geF4sa2PyFGRMXO3t4SHvSWUAnAxwzCG2NcrGTpw4AD69euHkJAQhISEoH///jh06JC2Y3tsSqUSw4YNw7Rp09C8efM6HVNWVoaCgoIaN5N26NB9LULVTvqqrmmLrCuwOn60IaMiqp+HPJ8BwFxRia/XzUJfDxkqFALeWnMGm85mNGCA2lVeqcTEdWex9oSqa2zBiy3xakc/scMiE9CyqnXIUOYb0jgZ+vnnn9GzZ09YW1tjwoQJmDBhAqysrPD000/jl19+0UWM9fbpp5/CzMwMEyZMqPMx8+fPh4ODg/rm62s4M2jqRGbmA+864dsCANAh7dJD9yPSG3V4nporFVjqfgdREd5QKAVMWh+Lr/YlGdxK9/nFFRi58gS2ns+EuUyCZa+2wZD2Jv5+Rg2mla8jAMNZlkPjZGjevHlYsGAB1q9fr06G1q9fj08++QQff/yxRo81Y8YMSCSSh97i4+M1DREAcPr0aSxduhTR0dEazag6c+ZM5Ofnq29paWn1Or/R8HzwqJoTPs0AVCVDD9mPSG/U8Xlq5uWJhYNbqZem+GxnAmbGXECFQvmII/VD8u27eOHrIzh6NQc2chm+H9EefcL5GqWGY2gtQxJBw687FhYWuHTpEkJCQmpsT0pKQosWLVBaWlrnx7p16xZycnIeuk9QUBDk8n8mA4uOjsakSZMeOZpsyZIlmDJlCqTSf/I9hUIBqVQKX19fpKSk1CnGgoICODg4ID8/H/b2JlgXo1AAAQFARkaNOovb1g5o939rAACxG6bCMeESIOPQetJzD3g+q0kkgI8PkJysfj6vOpqC2VsuQSkA7QOcsOzVNmhkb9mwcWtgX3w2Jq2PRX5JBbyrZtoO8zTB9y4SVX5xBVrN+QsAcPaDZ+AkwqSemnx+azy03tfXF3v27LkvGdq9e7fGXUpubm5wc3PTNIQ6GTZsGHr27FljW69evTBs2DC89tprOjmnUZLJgKVLVaNvJBL1B8ipqlah0FspcFzwPyZCZBge8HwGoPodAJYsqfF8HtE5AN6OVpi0PhYnU+6g7xeH8eUrEXo343qFQolFfyVixYGrAIDWvo74dnhbuNvpb+JGxsvB2hwBLtZIySnG+Yx8dG+im896bdE4GZo6dSomTJiA2NhYdO7cGQBw5MgRREdHY+nSpVoPsFpqaipyc3ORmpoKhUKB2NhYAEBISAhsbW0BAE2bNsX8+fPxwgsvwMXFBS4uNd+szM3N4eHhgdDQUJ3FaZSiooANG2rMM3TCR1U83b65LxDFiTbJgNTyfAagahFaskR1/7/0bNYIm8c/ibfWnEF8ViGGfv83xnQLwuSeTfRiPa+rt4ow7bdzOJOaBwAY0ckf/+0bBgsz8WMj09XSx1GVDKXlGV8yNG7cOHh4eGDRokX49ddfAQBhYWFYv349BgwYoPUAq3344YdYtWqV+veIiAgAwL59+xAZGQkASEhIQH6+YfRPGpyoKGDAAPUM1CeTHYECJdo/1VbsyIg096/nc/WM6g9r4Qxys8XGt57EB39cxIbT6fjmwDXsjcvGZ4NboXVVsWhDq1Qo8d2hZCzenYjySiXsLMzw6aCWrA8ivRDu7YDN527g0g39H5Wtcc2QqTH5mqFaFJZWoNXsv6AUgGMzn4Kng5XYIRE1qL8uZeG/Gy/gdlE5JBJgUBsfTOsd2mBdUoIgYH/iLczfHofEm0UAgG5N3DA/Khzejnw9kn44evU2Xv3uOHycrHB4+lMNfn6d1gwRnUnNg1JQrU7MRIhM0bPNPdAuwBlzt15GzNkM/HY6HdsvZOK1JwPx2pMBcLG10Ml5BUHAqet38MWeKzh05TYAwNHaHO/3bYYX23hrNHKWSNeae6pGlKXfKUF+cQUcrPV34uM6JUPOzs5ITEyEq6srnJycHvqCy83N1VpwpJ9OVi3B0T6A65GR6XK2kePzl1rjP538MXvLZZxLy8OyfUn4/vA1vNzeDy+199XaKK7SCgX2xGXjh8PX1HVB5jIJRnYOwPgejfX6Q4ZMl4O1OXycrJB+pwSXMvPROdhV7JAeqE7J0OLFi2FnZ6f+md8+TNuJFFUy1IHJEBHa+Dlh47jO+OvyTSzfn4Rz6fmIPpqC6KMpaOZpj/6tvdAlxBXNPO0hldb9vbOgtAInruXir8tZ+PNiFgpLVWs8yc2keLGNN8Z1D4Gfi7Wu/iwirWjh5aBKhjIKDD8ZGjFihPrnkSNH6ioWMgBllQrEpuUBANoHMhkiAgCpVILeLTzQq3kjHEnKwZrj17EnLhuXMwtwOVNVPOpsI0cLbwc0drdFkJsNHK3ksLcyg5lUiuLyShSVVSL9TgmSb99FQlYhLt3Ih/Keik5PB0sMauuD4Z0C4Ganm244Im1r7mWPHZeycOmGfg9u0rhmSCaTITMzE+7u7jW25+TkwN3dXacr15P4LqTno7xSCVdbOYJcbcQOh0ivSCQSdGnsii6NXXHnbjm2nr+BfQm38Pe1HOTeLcfBxFs4mHirzo8X6GqDzsEu6NfKCx0CnDVqWSLSBy28VXVDF/V8RJnGydCDBp+VlZXVmCmajFN1F1k7f2d2lxI9hJONHMM6BWBYpwCUVypxISMfiTcLceVmEa7n3EVBaQUKSytRqRRgI5fBSi6Dp4MVAl1tEORmg7b+ThygQAavuZeqbu7arSIUl1fCWq6f47bqHNUXX3wBQPXN5/vvv1dPdAiolrk4ePAgmjZtqv0ISa+cqC6eZhcZUZ3JzaRo6++Etv5OYodC1KDc7S3hamuB20VliMss1NvXQJ2TocWLFwNQtQytWLECsnsmJ5PL5QgICMCKFSu0HyHpDYVSwOmUOwCAjkyGiIioDlp422N/wi1cvpFv+MlQcnIyAKBHjx6IiYmBk5N+/kGkO/FZBSgsq4SthRkXfiQiojpp7qVKhi5m6G/dkMadd/v27dNFHGQAqucXauPvBBkLOYmIqA5aeKmKqC9l6u+IsnpVMqWnp2Pz5s1ITU1FeXl5jfs+//xzrQRG+udkVRdZhwC2ChIRUd00r0qGErOKUF6phNxMKnJE99M4GdqzZw/69++PoKAgxMfHo0WLFkhJSYEgCGjTpo0uYiQ9IAiCeiQZZ54mIqK68nW2gp2lGQpLK3Elu1CdHOkTjdOzmTNn4p133sGFCxdgaWmJ33//HWlpaejevTsGDx6sixhJD1zPKcatwjLIZVK0EmmFbiIiMjwSiUQ9xF5fV7DXOBmKi4vD8OHDAQBmZmYoKSmBra0t5syZg08//VTrAZJ+qB5S38rXAZbmskfsTUQ6oVAA+/cDa9eq/uUkt2QgqluDLmXoZ92QxsmQjY2Nuk7I09MTV69eVd93+/Zt7UVGeoVdZEQii4kBAgKAHj2AV19V/RsQoNpOpOdaeOt3y5DGNUNPPPEEDh8+jLCwMPTp0wdTp07FhQsXEBMTgyeeeEIXMZIeOJnCyRaJRBMTAwwaBPx7BYCMDNX2DRuAqChxYiOqg+qWocuZBVAoBb0bkaxxMvT555+jqKgIADB79mwUFRVh/fr1aNy4MUeSGansglJczymGRAK9nTCLyGgpFMDEifcnQoBqm0QCTJoEDBgAyNiFTfopyNUGFmZSFJcrkJJzF8Futo8+qAFpnAwFBQWpf7axseGs0yaguosszMMe9pbmIkdDZGIOHQLS0x98vyAAaWmq/SIjGywsIk2YyaQI9bDD+fR8JGQV6l0ypH+D/UnvVE+22IFdZEQNLzNTu/sRiaSphx0AIC5T/+qGNG4ZkkqlD12tXMHRDUbnRNVkiyyeJhKBp6d29yMSSfUyTnGZhSJHcj+Nk6GNGzfW+L2iogJnz57FqlWrMHv2bK0FRvohv6QC8VmqLL59IOuFiBpc166Aj4+qWLq2uiGJRHV/164NHxuRBpp6qJKh6s8UfaJxMjRgwID7tg0aNAjNmzfH+vXrMXr0aK0ERvrh9PVcCAIQ6GoDdztLscMhMj0yGbB0qWrUmERSMyGqbqVfsoTF06T3wjxV3WTpd0pQUFqhVzWoWqsZeuKJJ7Bnzx5tPRzpiRPJ1V1kbBUiEk1UlGr4vLd3ze0+PhxWTwbD0VoOTwfVl+qELP3qKqvXQq3/VlJSgi+++ALe/36hksE7yckWifRDVJRq+PyhQ6piaU9PVdcYW4TIgDT1sENmfiniMwv06nNF42TIycmpRgG1IAgoLCyEtbU1fv75Z60GR+IqrVDgfHoeAI4kI9ILMhmHz5NBC/O0x76EW7isZ0XUGidDS5YsqfG7VCqFm5sbOnbsCCcndqUYk9i0PFQoBLjbWcDP2VrscIiIyMA19dTPImqNk6ERI0boIg7SQ/fOL/Sw6RSIiIjqIqxqrqGErEIolQKkerIsR71qhvLy8nDixAlkZ2dDqVTWuK96RXsyfNUzT7OLjIiItCHQ1QbyqmU50u4Uw9/FRuyQANQjGdqyZQuGDh2KoqIi2Nvb12gxkEgkTIaMRKVCiTPXOdkiERFpj5lMiiaNbHExowBxmQV6kwxpPLR+6tSpGDVqFIqKipCXl4c7d+6ob7m5ubqIkURwObMAd8sVsLc0Q2gjO7HDISIiIxHmoX8zUWucDGVkZGDChAmwtmZBrTE7UVUv1C7AWW/6dImIyPDpYxG1xslQr169cOrUKV3EQnqE8wsREZEuhKkXbNWfliGNa4b69u2LadOm4fLlywgPD4e5ec3ptPv376+14EgcgiDgZNXirB24HhkREWlRdctQam4xisoqYWuhlfmfH4vGEYwZMwYAMGfOnPvuk0gkXLXeCFy9VYTcu+WwMJMi3NtR7HCIiMiIONvI0cjeAjcLypCQVYi2/uJ/6da4m0ypVD7wxkTIOFSvRxbh5wi5mdaWryMiIgLwzwr2cZn6UTf0WJ90paWl2oqD9Eh1vVAH1gsREZEOhOlZEbXGyZBCocDHH38Mb29v2Nra4tq1awCADz74AD/88IPWA6SGVz2SrD0nWyQiIh0I81QVUcfrSRG1xsnQvHnzEB0djQULFkAul6u3t2jRAt9//71Wg6OGdyOvBBl5JZBJJWjjJ34/LhERGZ/Q6mU5bhZCEASRo6lHMrR69Wp8++23GDp0KGQymXp7q1atEB8fr9XgqOFVd5E197KHjR5U+BMRkfEJcrWFmVSCwtJKZBWIX3JTr0kXQ0JC7tuuVCpRUVGhlaBIPNVdZKwXIiIiXZGbSRHoqlqKI37dVmD/fkDEQVgaJ0PNmjXDoUOH7tu+YcMGREREaCUoEg/rhYiISOdiYhB6Yh8AIPHHdUCPHkBAABATI0o4GidDH374IcaPH49PP/0USqUSMTExGDNmDObNm4cPP/xQFzECUNUqde7cGdbW1nB0dKzzcXFxcejfvz8cHBxgY2OD9u3bIzU1VWdxGrI7d8txJbsIAGeeJiIiHYmJAQYNQmiqqrQmwS1AtT0jAxg0SJSESONkaMCAAdiyZQt2794NGxsbfPjhh4iLi8OWLVvwzDPP6CJGAEB5eTkGDx6McePG1fmYq1evokuXLmjatCn279+P8+fP44MPPoClpaXO4jRk1fVCIe62cLaRP2JvIiIiDSkUwMSJgCCgye3rAIAEVz/VfdWF1JMmNXiXWb0qZLt27Ypdu3ZpO5aHmj17NgAgOjq6zse899576NOnDxYsWKDeFhwc/NBjysrKUFZWpv69oEA/5kBoCFyPjIiIdOrQISA9HQAQekuVDF1x9YNCIoVMUKoSorQ01X6RkQ0WlsYtQ0FBQcjJyblve15eHoKCgrQSlDYolUps27YNTZo0Qa9eveDu7o6OHTti06ZNDz1u/vz5cHBwUN98fX0bJmA9cILrkRERkS5lZqp/9MvLgmVFKcrN5Ehx8nzgfg1B42QoJSWl1mU3ysrKkJGRoZWgtCE7OxtFRUX45JNP0Lt3b/z111944YUXEBUVhQMHDjzwuJkzZyI/P199S0tLa8CoxVNcXolLGfkAgA6BLiJHQ0RERsnzn6RHCgFNbqtqeBNd/R+4X0OoczfZ5s2b1T/v3LkTDg4O6t8VCgX27NmDgIAAjU4+Y8YMfPrppw/dJy4uDk2bNtXocQFVyxCgqnGaPHkyAKB169Y4evQoVqxYge7du9d6nIWFBSwsLDQ+n6E7m5qHSqUAb0creDtaiR0OEREZo65dAR8fVbF0Vd3Qec8mSHDzx3OJRwGJRHV/164NGladk6GBAweqfx4xYkSN+8zNzREQEIBFixZpdPKpU6di5MiRD92nvl1vrq6uMDMzQ7NmzWpsDwsLw+HDh+v1mMbsePWQ+gB2kRERkY7IZMDSpapRYxIJWmVewRUXf7gU56sSIQBYskS1XwOqczJU3dISGBiIkydPwtXV9bFP7ubmBjc3t8d+nNrI5XK0b98eCQkJNbYnJibC39//AUeZrpOcX4iIiBpCVBSwYQMwcSKGnd2OYWe3q7b7+qoSoaioBg9J45qh2bNnw87O7r7t5eXlWL16tVaCqk1qaipiY2ORmpoKhUKB2NhYxMbGoqioSL1P06ZNsXHjRvXv06ZNw/r16/Hdd98hKSkJy5Ytw5YtW/DWW2/pLE5DVF6pxNm0quJpjiQjIiJdi4oCUlKAffuAX35R/ZucLEoiBAASQcMV0mQyGTIzM+Hu7l5je05ODtzd3WstrtaGkSNHYtWqVfdt37dvHyKrht9JJBKsXLmyRtfbjz/+iPnz5yM9PR2hoaGYPXs2BgwYUOfzFhQUwMHBAfn5+bC3t3/cP0MvnUm9g6ivj8LJ2hxnPngGkuqmSiIiIgOlyee3xvMMCYJQ64dlenp6jaJqbYuOjn7kHEO15XWjRo3CqFGjdBSVcajuImsX4MxEiIiITE6dk6GIiAhIJBJIJBI8/fTTMDP751CFQoHk5GT07t1bJ0GSblVPttiR9UJERGSCNB5NFhsbi169esHW1lZ9n1wuR0BAAF588UWtB0i6pVQKOFk12SJnniYiIlNU52Ro1qxZAICAgAC89NJLta7vdfHiRbRo0UJ70ZHOJWYXIr+kAtZyGZp7GWdNFBER0cNoPJpsxIgRNRKhwsJCfPvtt+jQoQNatWql1eBI96rrhdr4OcFMpvHTgYiIyODV+9Pv4MGDGDFiBDw9PbFw4UI89dRT+Pvvv7UZGzWAE+wiIyIiE6fRaLKsrCxER0fjhx9+QEFBAYYMGYKysjJs2rTpvpmeSf8JgnDPZIuceZqIiExTnVuG+vXrh9DQUJw/fx5LlizBjRs38OWXX+oyNtKx9DslyCoohblMgghfJkNERGSa6twy9Oeff2LChAkYN24cGjdurMuYqIFUr0cW7u0AK3nDrgNDRESkL+rcMnT48GEUFhaibdu26NixI5YtW4bbt2/rMjbSsRPJOQCADoEuIkdCREQknjonQ0888QS+++47ZGZm4s0338S6devg5eUFpVKJXbt2obCwUJdxkg5Uzy/EyRaJiMiUaTyazMbGBqNGjcLhw4dx4cIFTJ06FZ988gnc3d3Rv39/XcRIOpBdUIrk23chkQBt/FkvREREpuuxJpYJDQ3FggULkJ6ejrVr12orJmoAJ6qW4AjzsIeDlbnI0RAREYlHK7PsyWQyDBw4EJs3b9bGw1EDqB5S34FdZEREZOI45bCJOs5kiIiICACTIZOUX1yBhJuqgnfOPE1ERKaOyZAJOnU9F4IABLnZwM3OQuxwiIiIRMVkyASdqO4iY6sQERERkyFTxHohIiKifzAZMjHF5ZW4mJEPgMkQERERwGTI5JxNzUOlUoCXgyV8nKzFDoeIiEh0TIZMDLvIiIiIamIyZGK4OCsREVFNTIZMSHmlEmdT8wAAHQK5HhkRERHAZMikXMjIQ1mlEs42cgS72YodDhERkV5gMmRCjt8zv5BEIhE5GiIiIv3AZMiEVC/O2p7F00RERGpMhkyEQingVModAEBHJkNERERqTIZMRFxmAQrLKmFrYYYwT3uxwyEiItIbTIZMxMkUVRdZW38nyKSsFyIiIqrGZMhEnOBki0RERLViMmQCBEFQJ0OsFyIiIqqJyZAJuHb7LnLulkNuJkW4j4PY4RAREekVJkMm4Pg1VatQa19HWJjJRI6GiIhIvzAZMgF/X1OtR9YpiOuRERER/RuTISMnCII6GXqCyRAREdF9mAwZueTbd5FdWAa5mRQRfo5ih0NERKR3mAwZuWNVrUJt/Bxhac56ISIion9jMmTk/q4qnmYXGRERUe2YDBkx1gsRERE9GpMhI3b11l3cKiyDhZkUrX0dxQ6HiIhILxlMMjRv3jx07twZ1tbWcHR0rNMxRUVFGD9+PHx8fGBlZYVmzZphxYoVug1Uj/ytrhdyYr0QERHRAxhMMlReXo7Bgwdj3LhxdT5mypQp2LFjB37++WfExcVh0qRJGD9+PDZv3qzDSPUHu8iIiIgezWCSodmzZ2Py5MkIDw+v8zFHjx7FiBEjEBkZiYCAALzxxhto1aoVTpw4ocNI9YOqXqi6eJrrkRERET2IwSRD9dG5c2ds3rwZGRkZEAQB+/btQ2JiIp599tkHHlNWVoaCgoIaN0N09VYRbhdV1QtxfiEiIqIHMupk6Msvv0SzZs3g4+MDuVyO3r1746uvvkK3bt0eeMz8+fPh4OCgvvn6+jZgxNpzrKpVqK2/E9cjIyIieghRk6EZM2ZAIpE89BYfH1/vx//yyy/x999/Y/PmzTh9+jQWLVqEt99+G7t3737gMTNnzkR+fr76lpaWVu/zi4n1QkRERHVjJubJp06dipEjRz50n6CgoHo9dklJCf773/9i48aN6Nu3LwCgZcuWiI2NxcKFC9GzZ89aj7OwsICFhUW9zqkvBEHA8erFWYOZDBERET2MqMmQm5sb3NzcdPLYFRUVqKiogFRas/FLJpNBqVTq5Jz6Iim7CLeLymFpLkVLHwexwyEiItJrBlMzlJqaitjYWKSmpkKhUCA2NhaxsbEoKipS79O0aVNs3LgRAGBvb4/u3btj2rRp2L9/P5KTkxEdHY3Vq1fjhRdeEOvPaBDVXWSsFyIiIno0UVuGNPHhhx9i1apV6t8jIiIAAPv27UNkZCQAICEhAfn5+ep91q1bh5kzZ2Lo0KHIzc2Fv78/5s2bh7FjxzZo7A1NPaQ+kF1kREREjyIRBEEQOwh9VlBQAAcHB+Tn58Pe3l7scB5JqRTQft5u5Nwtx29jO6F9AOcYIiIi06PJ57fBdJNR3cRnFSLnbjms5TK08nEUOxwiIiK9x2TIyBxJug0A6BjoDLkZ/3uJiIgehZ+WRubIVVUy9GSIq8iREBERGQYmQ0akvFKJ41XF00yGiIiI6obJkBE5m3oHJRUKuNrKEdrITuxwiIiIDAKTISNy5Gr1rNOukEolIkdDRERkGJgMGZHq4ukuIZxfiIiIqK6YDBmJwtIKxKblAQA6B7NeiIiIqK6YDBmJE8m5UCgF+LtYw9fZWuxwiIiIDAaTISNxuKqLjK1CREREmmEyZCSOJqmKp7twSD0REZFGmAwZgezCUiTcLIREAnQKZvE0ERGRJpgMGYFjVUPqm3naw9lGLnI0REREhoXJkBE4kHgLALvIiIiI6oPJkIFTKgUcTFQVT3dv4iZyNERERIaHyZCBi8sqwO2iMljLZWgb4CR2OERERAaHyZCBq+4i6xzsAgszmcjREBERGR4mQwbuQIIqGWIXGRERUf0wGTJghaUVOH39DgCgexN3kaMhIiIyTEyGDNjRqzmoVAoIdLWBnwuX4CAiIqoPJkMGrLpeiF1kRERE9cdkyEAJgsB6ISIiIi1gMmSgrt66i4y8EsjNpOgY5Cx2OERERAaLyZCBqu4i6xjoDGu5mcjREBERGS4mQwaK9UJERETawWTIAJVWKHD8mmpxViZDREREj4fJkAE6knQbZZVKeDlYIsTdVuxwiIiIDBqTIQO0Oy4bAPB0WCNIJBKRoyEiIjJsTIYMjFIpYG/8TQDA02GcdZqIiOhxMRkyMBdv5ONmQRls5DJ0CnYROxwiIiKDx2TIwFR3kXVt7MZV6omIiLSAyZCB2RPHLjIiIiJtYjJkQDLzS3DpRgEkEqBHUyZDRERE2sCpiw3InqousghfR7jaWogcDRHR41MqlSgvLxc7DDJA5ubmkMm0Uy7CZMiA7K7qIuvZrJHIkRARPb7y8nIkJydDqVSKHQoZKEdHR3h4eDz2NDNMhgxEQWkFjiTdBgA8E8ZkiIgMmyAIyMzMhEwmg6+vL6RSVm1Q3QmCgOLiYmRnq3pMPD09H+vxmAwZiL1x2ahQCAh2s0HjRnZih0NE9FgqKytRXFwMLy8vWFtbix0OGSArKysAQHZ2Ntzd3R+ry4ypuIHYfiETANAn/PGyXyIifaBQKAAAcrlc5EjIkFUn0hUVFY/1OEyGDMDdskr1KvW9W3iIHA0RkfZwSSF6HNp6/jAZMgD7ErJRVqmEv4s1mnnaix0OERGRUWEyZAD+vJgFQNUqxG9RRESGKyUlBRKJBLGxsXU+Jjo6Go6OjqLHYcwMIhlKSUnB6NGjERgYCCsrKwQHB2PWrFmPnJuitLQUb7/9NlxcXGBra4sXX3wRN2/ebKCotaO0QoF98apq+T4tWC9ERCS2tLQ0jBo1Cl5eXpDL5fD398fEiRORk5PzyGN9fX2RmZmJFi1a1Pl8L730EhITEx8n5HqJjIyERCKBRCKBhYUFvL290a9fP8TExGj8WB999BFat26t/SC1xCCSofj4eCiVSnzzzTe4dOkSFi9ejBUrVuC///3vQ4+bPHkytmzZgt9++w0HDhzAjRs3EBUV1UBRa8eBxFsoLlfA29EKLX0cxA6HiEi/KBTA/v3A2rWqf6sKs3Xl2rVraNeuHa5cuYK1a9ciKSkJK1aswJ49e9CpUyfk5uY+8Njy8nLIZDJ4eHjAzKzug7mtrKzg7i7OqgNjxoxBZmYmrl69it9//x3NmjXDyy+/jDfeeEOUeHRGMFALFiwQAgMDH3h/Xl6eYG5uLvz222/qbXFxcQIA4dixYw88rrS0VMjPz1ff0tLSBABCfn6+VuOvq7fXnBb8p28V5my5JMr5iYh0oaSkRLh8+bJQUlJS/wf5/XdB8PERBOCfm4+ParuO9O7dW/Dx8RGKi4trbM/MzBSsra2FsWPHqrf5+/sLc+bMEYYNGybY2dkJI0aMEJKTkwUAwtmzZ9X7/fHHH0JISIhgYWEhREZGCtHR0QIA4c6dO4IgCMLKlSsFBwcH9f6zZs0SWrVqJaxevVrw9/cX7O3thZdeekkoKChQ7/Pnn38KTz75pODg4CA4OzsLffv2FZKSktT31xbHv3Xv3l2YOHHifdt//PFHAYCwa9cu9bZ3331XaNy4sWBlZSUEBgYK77//vlBeXq6OH0CN28qVKwVBEIRFixYJLVq0EKytrQUfHx9h3LhxQmFh4QNj+reHPY/y8/Pr/PltEC1DtcnPz4ezs/MD7z99+jQqKirQs2dP9bamTZvCz88Px44de+Bx8+fPh4ODg/rm6+ur1bg1UVhagV2XVd16A1t7ixYHEZHeiYkBBg0C0tNrbs/IUG2vR1fOo+Tm5mLnzp1466231HPcVPPw8MDQoUOxfv16CIKg3r5w4UK0atUKZ8+exQcffHDfYyYnJ2PQoEEYOHAgzp07hzfffBPvvffeI2O5evUqNm3ahK1bt2Lr1q04cOAAPvnkE/X9d+/exZQpU3Dq1Cns2bMHUqkUL7zwglZm+x4xYgScnJxqdJfZ2dkhOjoaly9fxtKlS/Hdd99h8eLFAFTdfFOnTkXz5s2RmZmJzMxMvPTSSwAAqVSKL774ApcuXcKqVauwd+9evPvuu48do6YMctLFpKQkfPnll1i4cOED98nKyoJcLr+v6KxRo0bIysp64HEzZ87ElClT1L8XFBSIlhDtuJiFskolgt1s0MKbo8iIiACousImTlS1Bf2bIAASCTBpEjBgAKCltasA4MqVKxAEAWFhYbXeHxYWhjt37uDWrVvqbq2nnnoKU6dOVe+TkpJS45hvvvkGoaGh+OyzzwAAoaGhuHjxIubNm/fQWJRKJaKjo2Fnp5qEd9iwYdizZ4/6uBdffLHG/j/++CPc3Nxw+fJljeqVaiOVStGkSZMaf8v777+v/jkgIADvvPMO1q1bh3fffRdWVlawtbWFmZkZPDxqTg8zadKkGsfNnTsXY8eOxddff/1YMWpK1JahGTNmqIuzHnSLj4+vcUxGRgZ69+6NwYMHY8yYMVqPycLCAvb29jVuYtkUmwEAeCHCm6PIiIiqHTp0f4vQvQQBSEtT7acDQm1J2AO0a9fuofcnJCSgffv2NbZ16NDhkY8bEBCgToQA1XIU1UtTAKrE7ZVXXkFQUBDs7e0REBAAAEhNTa1z7A8jCEKNz6X169fjySefhIeHB2xtbfH+++/X6Vy7d+/G008/DW9vb9jZ2WHYsGHIyclBcXGxVuKsK1GToalTpyIuLu6ht6CgIPX+N27cQI8ePdC5c2d8++23D31sDw8PlJeXIy8vr8b2mzdv3peZ6qObBaU4elU1MmEAu8iIiP6Rmand/eooJCQEEokEcXFxtd4fFxcHJycnuLm5qbfZ2NhoNYZq5ubmNX6XSCQ1usD69euH3NxcfPfddzh+/DiOHz8OAI8chV0XCoUCV65cQWBgIADg2LFjGDp0KPr06YOtW7fi7NmzeO+99x55rpSUFDz//PNo2bIlfv/9d5w+fRpfffWV1uLUhKjdZG5ubjWeNA+TkZGBHj16oG3btli5cuUjF/Vr27YtzM3NsWfPHnVzYUJCAlJTU9GpU6fHjl3XNsfegCAA7QOc4OvMdXuIiNTquijnYy7e+W8uLi545pln8PXXX2Py5Mk16oaysrKwZs0aDB8+XKOW/NDQUGzfvr3GtpMnTz5WnDk5OUhISMB3332Hrl27AgAOHz78WI95r1WrVuHOnTvqz9ajR4/C39+/Rq3T9evXaxwjl8vVS7BUO336NJRKJRYtWqT+TP/111+1FqcmDKKAOiMjA5GRkfDz88PChQtx69YtZGVl1aj9ycjIQNOmTXHixAkAgIODA0aPHo0pU6Zg3759OH36NF577TV06tQJTzzxhFh/Sp1tPKvqIhsYwVYhIqIaunYFfHxUtUG1kUgAX1/Vflq2bNkylJWVoVevXjh48CDS0tKwY8cOPPPMM/D29n5krc+/vfnmm4iPj8f06dORmJiIX3/9FdHR0VV/Rv3KI5ycnODi4oJvv/0WSUlJ2Lt3b41aWE0UFxcjKysL6enp+PvvvzF9+nSMHTsW48aNQ48ePQAAjRs3RmpqKtatW4erV6/iiy++wMaNG2s8TkBAAJKTkxEbG4vbt2+jrKwMISEhqKiowJdffolr167hp59+wooVK+oV5+MyiGRo165dSEpKwp49e+Dj4wNPT0/1rVpFRQUSEhJq9DMuXrwYzz//PF588UV069YNHh4e9ZosqqHFZxXgcmYBzGUS9OXCrERENclkwNKlqp//nTBU/75kiVaLp6s1btwYp06dQlBQEIYMGYLg4GC88cYb6NGjB44dO/bQUc61CQwMxIYNGxATE4OWLVti+fLl6hYWCwuLesUolUqxbt06nD59Gi1atMDkyZPVBdqa+u677+Dp6Yng4GBERUXh8uXLWL9+fY0C5/79+2Py5MkYP348WrdujaNHj943cu7FF19E79690aNHD7i5uWHt2rVo1aoVPv/8c3z66ado0aIF1qxZg/nz59crzsclETSpBDNBBQUFcHBwQH5+foMVU3+0+RKij6agd3MPrBjWtkHOSUTUkEpLS5GcnIzAwEBYWlrW70FiYlSjyu4tpvb1VSVCBjbB7r3mzZuHFStWIC0tTexQ9N7DnkeafH4b5NB6Y1ZaoVB3kb3cQbw5joiI9F5UlGr4/KFDqmJpT09V15gOWoR06euvv0b79u3h4uKCI0eO4LPPPsP48ePFDsukMBnSM39ezER+SQW8Ha3QtXHdisuJiEyWTAZERoodxWO5cuUK5s6di9zcXPj5+WHq1KmYOXOm2GGZFCZDembtcVWz6EvtfSGTcm4hIiJjt3jxYvVszSQOgyigNhXxWQU4kZILqQQY3M5H7HCIiIhMApMhPbLycAoAoHcLD3g6WD18ZyIiItIKJkN6IqeoDBurlt8Y9WSgyNEQERGZDiZDemLtiVSUVyrR0scBbf2dxA6HiIjIZDAZ0gOlFQqsOqaauvy1JwO4KCsREVEDYjKkB9adSMWtwjJ4O1qhb7iX2OEQERGZFCZDIiurVGDFgWsAgLGRwZCb8b+EiMhYRUdHw9HRUeww6uSjjz5C69atNTpGIpFg06ZN9TpfZGQkJk2aVK9jHxc/eUW24XQ6sgpK0cjeAoPbcjg9EZE+GzlyJCQSCSQSCeRyOUJCQjBnzhxUVlaKHZrWvfPOO9izZ49WH/Pe63fvLSkpCTExMfj444/V+wYEBGDJkiVaPf+DcNJFEd0tq8TS3VcAAG92C4aluWFNIU9EZIp69+6NlStXoqysDNu3b8fbb78Nc3Nzo5s12tbWFra2tlp/3Orrdy83NzfIRFxGhS1DIvrm4DVkF5bBz9kaQ5/wEzscIiLRCIKA4vJKUW6arlduYWEBDw8P+Pv7Y9y4cejZsyc2b94MALhz5w6GDx8OJycnWFtb47nnnsOVK1dqfZyUlBRIpVKcOnWqxvYlS5bA398fSqUS+/fvh0QiwZ49e9CuXTtYW1ujc+fOSEhIqHHM8uXLERwcDLlcjtDQUPz000817pdIJPjmm2/w/PPPw9raGmFhYTh27BiSkpIQGRkJGxsbdO7cGVevXlUf8+9uspMnT+KZZ56Bq6srHBwc0L17d5w5c0aja3fv9bv3JpPJanSTRUZG4vr165g8ebK69UiX2DIkkszcu/h2n+oFMtNPAQsOICMiE1ZSoUCzD3eKcu7Lc3rBWl7/j0MrKyvk5OQAUHUDXblyBZs3b4a9vT2mT5+OPn364PLlyzA3N69xXEBAAHr27ImVK1eiXbt26u0rV67EyJEjIZX+017x3nvvYdGiRXBzc8PYsWMxatQoHDlyBACwceNGTJw4EUuWLEHPnj2xdetWvPbaa/Dx8UGPHj3Uj/Hxxx/j888/x+eff47p06fj1VdfRVBQEGbOnAk/Pz+MGjUK48ePx59//lnr31lYWIgRI0bgyy+/hCAIWLRoEfr06YMrV67Azs6u3tevNjExMWjVqhXeeOMNjBkzRquPXRu2DIkhJgaL35iHUiXQPu0Ser/yDBAQAMTEiB0ZERHVkSAI2L17N3bu3ImnnnpKnQR9//336Nq1K1q1aoU1a9YgIyPjgUXFr7/+OtauXYuysjIAwJkzZ3DhwgW89tprNfabN28eunfvjmbNmmHGjBk4evQoSktLAQALFy7EyJEj8dZbb6FJkyaYMmUKoqKisHDhwhqP8dprr2HIkCFo0qQJpk+fjpSUFAwdOhS9evVCWFgYJk6ciP379z/w733qqafwn//8B02bNkVYWBi+/fZbFBcX48CBAxpdt61bt6q74GxtbTF48OD79nF2doZMJoOdnZ269UiX2DLU0GJigEGDMMHOFWVlFRh16g9IACAjAxg0CNiwAYiKEjtKIqIGZWUuw+U5vUQ7tyaqP8wrKiqgVCrx6quv4qOPPsKePXtgZmaGjh07qvd1cXFBaGgo4uLian2sgQMH4u2338bGjRvx8ssvIzo6Gj169EBAQECN/Vq2bKn+2dPTEwCQnZ0NPz8/xMXF4Y033qix/5NPPomlS5c+8DEaNWoEAAgPD6+xrbS0FAUFBbC3t78v1ps3b+L999/H/v37kZ2dDYVCgeLiYqSmpj7sct2nR48eWL58ufp3GxsbjY7XBSZDDUmhACZOBAQBPgW3sHTrPVm7IAASCTBpEjBgACBiIRkRUUOTSCSP1VXVkKo/zOVyOby8vGBmVv+45XI5hg8fjpUrVyIqKgq//PLLfUkMgBpdbNX1M0qlUqNz1fYYmjzuiBEjkJOTg6VLl8Lf3x8WFhbo1KkTysvLNYrDxsYGISEhGh2ja+wma0iHDgHp6Q++XxCAtDTVfkREpJeqP8z9/PxqJEJhYWGorKzE8ePH1dtycnKQkJCAZs2aPfDxXn/9dezevRtff/01KisrEaVh70BYWJi6fqjakSNHHnrO+jhy5AgmTJiAPn36oHnz5rCwsMDt27e1eo57yeVyKBQKnT3+vQwjDTcWmZna3Y+IiPRG48aNMWDAAIwZMwbffPMN7OzsMGPGDHh7e2PAgAEPPC4sLAxPPPEEpk+fjlGjRsHKykqj806bNg1DhgxBREQEevbsiS1btiAmJga7d+9+3D+phsaNG+Onn35Cu3btUFBQgGnTpmkcqyYCAgJw8OBBvPzyy7CwsICrq6vOzsWWoYZU1c+rtf2IiEivrFy5Em3btsXzzz+PTp06QRAEbN++/b6RZP82evRolJeXY9SoURqfc+DAgVi6dCkWLlyI5s2b45tvvsHKlSsRGRlZz7+idj/88APu3LmDNm3aYNiwYZgwYQLc3d21eo57zZkzBykpKQgODoabm5vOzgMAEkHTCRZMTEFBARwcHJCfn19rQZlGFArVqLGMDFWX2L9JJICPD5CczJohIjJqpaWlSE5ORmBgICwtLcUOR3Qff/wxfvvtN5w/f17sUAzKw55Hmnx+s2WoIclkQHVh3L8nkKr+fckSJkJERCaiqKgIFy9exLJly/B///d/YodjspgMNbSoKNXweW/vmtt9fDisnojIxIwfPx5t27ZFZGRkvbrISDvYTfYIWu0mu5dCoRo1lpmpqhHq2pUtQkRkMthNRtqgrW4yjiYTi0wGaLm4jYiIiDTHbjIiIhINOyfocWjr+cNkiIiIGpysqixA09mLie5VXFwMAI+cuuBR2E1GREQNzszMDNbW1rh16xbMzc1rrNBO9CiCIKC4uBjZ2dlwdHRUJ9f1xWSIiIganEQigaenJ5KTk3H9+nWxwyED5ejoqJUV7ZkMERGRKORyORo3bsyuMqoXc3Pzx24RqsZkiIiIRCOVSjm0nkTHTloiIiIyaUyGiIiIyKQxGSIiIiKTxpqhR6ie0KmgoEDkSIiIiKiuqj+36zIxI5OhRygsLAQA+Pr6ihwJERERaaqwsBAODg4P3YcLtT6CUqnEjRs3YGdnB4lEotXHLigogK+vL9LS0rS7CCzVwOvcMHidGwavc8PgdW4YurzOgiCgsLAQXl5ej5zUky1DjyCVSuHj46PTc9jb2/PF1gB4nRsGr3PD4HVuGLzODUNX1/lRLULVWEBNREREJo3JEBEREZk0JkMisrCwwKxZs2BhYSF2KEaN17lh8Do3DF7nhsHr3DD05TqzgJqIiIhMGluGiIiIyKQxGSIiIiKTxmSIiIiITBqTISIiIjJpTIZ07KuvvkJAQAAsLS3RsWNHnDhx4qH7//bbb2jatCksLS0RHh6O7du3N1Ckhk2T6/zdd9+ha9eucHJygpOTE3r27PnI/xdS0fT5XG3dunWQSCQYOHCgbgM0Eppe57y8PLz99tvw9PSEhYUFmjRpwveOOtD0Oi9ZsgShoaGwsrKCr68vJk+ejNLS0gaK1jAdPHgQ/fr1g5eXFyQSCTZt2vTIY/bv3482bdrAwsICISEhiI6O1nmcEEhn1q1bJ8jlcuHHH38ULl26JIwZM0ZwdHQUbt68Wev+R44cEWQymbBgwQLh8uXLwvvvvy+Ym5sLFy5caODIDYum1/nVV18VvvrqK+Hs2bNCXFycMHLkSMHBwUFIT09v4MgNi6bXuVpycrLg7e0tdO3aVRgwYEDDBGvANL3OZWVlQrt27YQ+ffoIhw8fFpKTk4X9+/cLsbGxDRy5YdH0Oq9Zs0awsLAQ1qxZIyQnJws7d+4UPD09hcmTJzdw5IZl+/btwnvvvSfExMQIAISNGzc+dP9r164J1tbWwpQpU4TLly8LX375pSCTyYQdO3boNE4mQzrUoUMH4e2331b/rlAoBC8vL2H+/Pm17j9kyBChb9++NbZ17NhRePPNN3Uap6HT9Dr/W2VlpWBnZyesWrVKVyEahfpc58rKSqFz587C999/L4wYMYLJUB1oep2XL18uBAUFCeXl5Q0VolHQ9Dq//fbbwlNPPVVj25QpU4Qnn3xSp3Eak7okQ++++67QvHnzGtteeukloVevXjqMTBDYTaYj5eXlOH36NHr27KneJpVK0bNnTxw7dqzWY44dO1ZjfwDo1avXA/en+l3nfysuLkZFRQWcnZ11FabBq+91njNnDtzd3TF69OiGCNPg1ec6b968GZ06dcLbb7+NRo0aoUWLFvjf//4HhULRUGEbnPpc586dO+P06dPqrrRr165h+/bt6NOnT4PEbCrE+hzkQq06cvv2bSgUCjRq1KjG9kaNGiE+Pr7WY7KysmrdPysrS2dxGrr6XOd/mz59Ory8vO57AdI/6nOdDx8+jB9++AGxsbENEKFxqM91vnbtGvbu3YuhQ4di+/btSEpKwltvvYWKigrMmjWrIcI2OPW5zq+++ipu376NLl26QBAEVFZWYuzYsfjvf//bECGbjAd9DhYUFKCkpARWVlY6OS9bhsikffLJJ1i3bh02btwIS0tLscMxGoWFhRg2bBi+++47uLq6ih2OUVMqlXB3d8e3336Ltm3b4qWXXsJ7772HFStWiB2aUdm/fz/+97//4euvv8aZM2cQExODbdu24eOPPxY7NNICtgzpiKurK2QyGW7evFlj+82bN+Hh4VHrMR4eHhrtT/W7ztUWLlyITz75BLt370bLli11GabB0/Q6X716FSkpKejXr596m1KpBACYmZkhISEBwcHBug3aANXn+ezp6Qlzc3PIZDL1trCwMGRlZaG8vBxyuVynMRui+lznDz74AMOGDcPrr78OAAgPD8fdu3fxxhtv4L333oNUyrYFbXjQ56C9vb3OWoUAtgzpjFwuR9u2bbFnzx71NqVSiT179qBTp061HtOpU6ca+wPArl27Hrg/1e86A8CCBQvw8ccfY8eOHWjXrl1DhGrQNL3OTZs2xYULFxAbG6u+9e/fHz169EBsbCx8fX0bMnyDUZ/n85NPPomkpCR1sgkAiYmJ8PT0ZCL0APW5zsXFxfclPNUJqMAlPrVGtM9BnZZnm7h169YJFhYWQnR0tHD58mXhjTfeEBwdHYWsrCxBEARh2LBhwowZM9T7HzlyRDAzMxMWLlwoxMXFCbNmzeLQ+jrQ9Dp/8sknglwuFzZs2CBkZmaqb4WFhWL9CQZB0+v8bxxNVjeaXufU1FTBzs5OGD9+vJCQkCBs3bpVcHd3F+bOnSvWn2AQNL3Os2bNEuzs7IS1a9cK165dE/766y8hODhYGDJkiFh/gkEoLCwUzp49K5w9e1YAIHz++efC2bNnhevXrwuCIAgzZswQhg0bpt6/emj9tGnThLi4OOGrr77i0Hpj8OWXXwp+fn6CXC4XOnToIPz999/q+7p37y6MGDGixv6//vqr0KRJE0EulwvNmzcXtm3b1sARGyZNrrO/v78A4L7brFmzGj5wA6Pp8/leTIbqTtPrfPToUaFjx46ChYWFEBQUJMybN0+orKxs4KgNjybXuaKiQvjoo4+E4OBgwdLSUvD19RXeeust4c6dOw0fuAHZt29fre+31dd2xIgRQvfu3e87pnXr1oJcLheCgoKElStX6jxOiSCwfY+IiIhMF2uGiIiIyKQxGSIiIiKTxmSIiIiITBqTISIiIjJpTIaIiIjIpDEZIiIiIpPGZIiIiIhMGpMhIiIi0rqDBw+iX79+8PLygkQiwaZNmzQ6vrS0FCNHjkR4eDjMzMwwcODAWvfbv38/2rRpAwsLC4SEhCA6OlrjWJkMERHp2MiRIyGRSOr1gfAo+/fvVz/2gz4siMRw9+5dtGrVCl999VW9jlcoFLCyssKECRPQs2fPWvdJTk5G37591eseTpo0Ca+//jp27typ0bmYDBGRxu79cL/3lpSUJHZoeqt3797IzMzEc889p972oORo5MiRdU5sOnfujMzMTAwZMkRLkRJpx3PPPYe5c+fihRdeqPX+srIyvPPOO/D29oaNjQ06duyI/fv3q++3sbHB8uXLMWbMGHh4eNT6GCtWrEBgYCAWLVqEsLAwjB8/HoMGDcLixYs1ipXJEBHVS/WH+723wMDA+/YrLy8XITr9Y2FhAQ8PD1hYWGj1ceVyOTw8PGBlZaXVxyXStfHjx+PYsWNYt24dzp8/j8GDB6N37964cuVKnR/j2LFj97Ua9erVC8eOHdMoFiZDRFQv1R/u995kMhkiIyMxfvx4TJo0Ca6urujVqxcA4OLFi3juuedga2uLRo0aYdiwYbh9+7b68e7evYvhw4fD1tYWnp6eWLRoESIjIzFp0iT1PrW1pDg6OtaoEUhLS8OQIUPg6OgIZ2dnDBgwACkpKer7q1tdFi5cCE9PT7i4uODtt99GRUWFep+ysjJMnz4dvr6+6jqEH374AYIgICQkBAsXLqwRQ2xsrM5axlJSUmpthYuMjNT6uYgaSmpqKlauXInffvsNXbt2RXBwMN555x106dIFK1eurPPjZGVloVGjRjW2NWrUCAUFBSgpKanz4zAZIiKtW7VqFeRyOY4cOYIVK1YgLy8PTz31FCIiInDq1Cns2LEDN2/erNG1M23aNBw4cAB//PEH/vrrL+zfvx9nzpzR6LwVFRXo1asX7OzscOjQIRw5cgS2trbo3bt3jRaqffv24erVq9i3bx9WrVqF6OjoGgnV8OHDsXbtWnzxxReIi4vDN998A1tbW0gkEowaNeq+N+uVK1eiW7duCAkJqd8FewhfX98arW9nz56Fi4sLunXrpvVzETWUCxcuQKFQoEmTJrC1tVXfDhw4gKtXrzZ4PGYNfkYiMgpbt26Fra2t+vfnnnsOv/32GwCgcePGWLBggfq+uXPnIiIiAv/73//U23788Uf4+voiMTERXl5e+OGHH/Dzzz/j6aefBqBKqHx8fDSKaf369VAqlfj+++8hkUgAqBIVR0dH7N+/H88++ywAwMnJCcuWLYNMJkPTpk3Rt29f7NmzB2PGjEFiYiJ+/fVX7Nq1S938HhQUpD7HyJEj8eGHH+LEiRPo0KEDKioq8Msvv9zXWlRXr7zyCmQyWY1tZWVl6Nu3LwBAJpOp6yVKS0sxcOBAdOrUCR999FG9zkekD4qKiiCTyXD69On7nv/3vq88ioeHB27evFlj282bN2Fvb69R1zGTISKqlx49emD58uXq321sbNQ/t23btsa+586dw759+2p9k7t69SpKSkpQXl6Ojh07qrc7OzsjNDRUo5jOnTuHpKQk2NnZ1dheWlpa49tm8+bNa7wBe3p64sKFCwBUXV4ymQzdu3ev9RxeXl7o27cvfvzxR3To0AFbtmxBWVkZBg8erFGs1RYvXnxfzcP06dOhUCju23fUqFEoLCzErl27IJWyYZ8MV0REBBQKBbKzs9G1a9d6P06nTp2wffv2Gtt27dqFTp06afQ4TIaIqF5sbGwe2C10b2IEqL4F9uvXD59++ul9+3p6eta51kYikUAQhBrb7q31KSoqQtu2bbFmzZr7jnVzc1P/bG5uft/jKpVKAKjTt8nXX38dw4YNw+LFi7Fy5Uq89NJLsLa2rtPf8G8eHh73XUc7Ozvk5eXV2DZ37lzs3LkTJ06cuC/ZI9JHRUVFNV7bycnJiI2NhbOzM5o0aYKhQ4di+PDhWLRoESIiInDr1i3s2bMHLVu2VLeMXr58GeXl5cjNzUVhYSFiY2MBAK1btwYAjB07FsuWLcO7776LUaNGYe/evfj111+xbds2jWJlMkREOtemTRv8/vvvCAgIgJnZ/W87wcHBMDc3x/Hjx+Hn5wcAuHPnDhITE2u00Li5uSEzM1P9+5UrV1BcXFzjPOvXr4e7uzvs7e3rFWt4eDiUSiUOHDjwwLlN+vTpox72u2PHDhw8eLBe56qr33//HXPmzMGff/6J4OBgnZ6LSFtOnTqFHj16qH+fMmUKAGDEiBGIjo7GypUrMXfuXEydOhUZGRlwdXXFE088geeff159TJ8+fXD9+nX17xEREQCg/lIUGBiIbdu2YfLkyVi6dCl8fHzw/fffqwdu1BXbWYlI595++23k5ubilVdewcmTJ3H16lXs3LkTr732GhQKBWxtbTF69GhMmzYNe/fuxcWLFzFy5Mj7uoKeeuopLFu2DGfPnsWpU6cwduzYGq08Q4cOhaurKwYMGIBDhw4hOTkZ+/fvx4QJE5Cenl6nWAMCAjBixAiMGjUKmzZtUj/Gr7/+qt5HJpNh5MiRmDlzJho3bqxxk7wmLl68iOHDh2P69Olo3rw5srKykJWVhdzcXJ2dk0gbIiMjIQjCfbfqwQrm5uaYPXs2kpOTUV5ejhs3biAmJgbh4eHqx0hJSan1Mf59nrNnz6KsrAxXr17FyJEjNY6VyRAR6ZyXlxeOHDkChUKBZ599FuHh4Zg0aRIcHR3VCc9nn32Grl27ol+/fujZsye6dOlyX+3RokWL4Ovri65du+LVV1/FO++8U6N7ytraGgcPHoSfnx+ioqIQFhaG0aNHo7S0VKOWouXLl2PQoEF466230LRpU4wZMwZ3796tsc/o0aNRXl6O11577TGuzKOdOnUKxcXFmDt3Ljw9PdW3qKgonZ6XyJRIhH+nWEREeiIyMhKtW7fGkiVLxA7lPocOHcLTTz+NtLS0++Y5+beRI0ciLy9P60txNPQ5iIwVW4aIiDRQVlaG9PR0fPTRRxg8ePAjE6Fq1VMRbN26VavxHDp0CLa2trUWjRNR3bCAmohIA2vXrsXo0aPRunVrrF69uk7HLFiwAO+//z4A1eg5bWrXrp16hI0m87MQ0T/YTUZEREQmjd1kREREZNKYDBEREZFJYzJEREREJo3JEBEREZk0JkNERERk0pgMERERkUljMkREREQmjckQERERmbT/B0yQGVeadpoWAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# first column is frequency, second is the attenuation\n", + "balun_data = [\n", + " (0, -2.1),\n", + " (1, -1.4),\n", + " (2, -1),\n", + " (3, -0.8),\n", + " (4, -1),\n", + " (5, -1.4),\n", + " (6, -1.5),\n", + " (7, -1.2),\n", + " (8, -0.9),\n", + " (9, -1),\n", + " (10, -1.6)\n", + "]\n", + "\n", + "freqs = np.array([i[0] for i in balun_data])*1e9\n", + "vals = [i[1] for i in balun_data]\n", + "\n", + "coeffs = np.polyfit(freqs, vals, 6)\n", + "balun_ans = np.poly1d(coeffs)\n", + "freqs_fit = np.linspace(min(freqs), max(freqs), 500)\n", + "\n", + "plt.scatter(freqs, vals, color='red', label='Original Data')\n", + "plt.plot(freqs_fit, balun_ans(freqs_fit), label='Polynomial Fit')\n", + "\n", + "plt.xlabel(\"Frequency [Hz]\")\n", + "plt.ylabel(\"Attenuation [dB]\")\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "id": "afc45ee1-6f1d-47c5-8ca2-f7bb1382f537", + "metadata": {}, + "source": [ + "### Maximum amplitude per frequency\n", + "\n", + "The DACs, finally, indipendently on the RW, have a maximum power that they can output for each frequency.\n", + "We can find this by plotting the expected (DDS + balun) answer and the measured one." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "1267a2c8-213f-4bab-855d-9138dd460bb0", + "metadata": {}, + "outputs": [], + "source": [ + "def dds_balun(x, func=nrz):\n", + " return (to_db(func(x), 1.01e-10) + balun_ans(x)).real" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "e36bfcb7-572a-4e00-9954-15e17c9a1a09", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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B3379uW1116r9pr/+9//uP7669m1axdDhgzhgQceYPTo0YwaNYq4uDhatmzJ6NGjKaukcvz4cQYNGsR//vMf9uzZwzfffMPmzZt54oknjNcsKSnhtddeY/fu3fz444+cPHmSsWPHGo//3//9HwcOHOC3337j4MGDzJs3j4AA8xbtKigoYM6cOSxYsID9+/cTFBTEE088wdatW1m+fDl79uzhrrvuYtCgQRw9ehSAf//9lwkTJvDEE08QHx9Pv379eP311826rxBCWFOAhzNrDyRzw5x13PfZNp5eHs99n23jhjnrrPrHuD2Z3dVVUlKCs7MzAH/++Se33347AO3atau0C6QhiHjp9yqP9WsbyKJxMcQmZFRo6bmcgtryE5uQQc+W6gKJN8xZT0Z+cYVzT84eUqM4hw8fTufOnZkxYwaff/55leeVdWOWtarcfvvttGvXrsJ5BoOBkSNH4uDgwJIlS0yaij148GAefvhhAF566SXmzZtH9+7djS1FU6dOpWfPnqSkpBhbqO6//36eeeYZAFq3bs3777/PjTfeyLx583BxcWH8+PHG64eHh/P+++/TvXt38vLy8PDwIDExkS5dutCtWzdAbXkyV0lJCR9//DGdOnUCIDExkUWLFpGYmEjjxo0BeO6551izZg2LFi1i5syZvPfeewwaNIgpU6YA0KZNG7Zs2cKaNWvMvr8QQlhDWU/ElX+Ul/VEzBsVbdVhGPZgdotPhw4dmD9/Pps2beKPP/5g0KBBAJw7d05WNL4KUweOWXuA2Zw5c/jiiy84eLDqgWWbNm1i586dLF68mDZt2jB//vxKz3vxxRfZunUrP/30E56epk2FjIqKMj4PDg4GoGPHjhX2lXVV7d69m8WLF+Ph4WHcBg4ciMFgICEhAYCdO3cydOhQmjZtiqenJzfeeCOgJicAjz76KMuXL6dz585MmTKFLVu2mBTr5ZycnMrFvnfvXvR6PW3atCkX299//83x48cBOHjwINddd1256/Ts2dPsewshhDWY0hPxyhU9EfWB2S0+c+bMYfjw4bz11luMGTPG+BfwqlWrjF1gDc2BVwdWeUx7sRXE1EFjl5+3earlZ0j16dOHgQMH8sILL5TrDrpcixYt8PHxoW3btqSmpnLPPfewcePGcucsX76ct99+m19++YXWrVubfH9HR0fj87IWosr2GQwGAPLy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3PgdIYQQQpjm3hh1FfrvdpyuVxXazU58Dh8+TJ8+fSrs9/b2JisryxIx1Yi3tzdr164lISGBrl27MnnyZF566SVZw0fYzeLFi/Hx8bF3GEIIUSMDIoLxcXMkKbuQjUcsW4fRnsxOfEJCQjh27FiF/Zs3byY8PNwiQVWnefPmKIpC586dy+2Piopi06ZNFBYWcubMGaZOnWqTeGq7sWPHotFomD17drn9P/74IxrNpQWqNmzYgEajMW6BgYEMHjyYvXv3VnnOlVu/fv1s9nVZgyQrQgihcnHUMbxLEwC+33nGztFYjtmJz8SJE3n66af5999/0Wg0nDt3jiVLlvDcc8/x6KOPWiNGYQEuLi7MmTPnqmsalTl8+DBJSUn8/vvvFBUVMWTIEIqLiwHo1asXSUlJFbZPPvkEjUbDY489Zu0vRQghhI2M6tGM1+7owMwRHe0disWYnfhMmzaNkSNHcvPNN5OXl0efPn148MEHefjhh3nyySetEWPtpShQnG+fzcxVsvv3709ISAizZs2q9tygoCBCQkKIjo7mmWee4fTp0xw6dAhQK52HhISU2zIzM3nuued48cUXueuuu6q8blFREc899xxNmjTB3d2d6667jg0bNgBqcc4OHTqU65o8fvw4np6eLFy4ELjUGvPjjz/SunVrXFxcGDhwIKdPny53n59++ono6GhcXFwIDw/nlVdeobS01Hg8KyuLhx9+mODgYFxcXIiMjOTnn39mw4YNjBs3juzsbGML1ssvv1xt7GUWL15M06ZNcXNzY/jw4aSnp1f7vRZCiNqsZaAHD/RsjrerY/Un1xFmz+rSaDRMnz6d559/nmPHjpGXl0dERAQeHh7WiK92KymAmY3tc+8Xz4GTu8mn63Q6Zs6cyciRI3nqqaeMg8KvJjs7m+XLlwOUWxH7cllZWdxxxx307duX11577arXe+KJJzhw4ADLly+ncePG/PDDDwwaNIi9e/fSunVrlixZwnXXXceQIUO47bbbGDVqFLfccgvjx483XqOgoIA33niDL7/8EicnJx577DHuvfde/vnnH0BdamH06NG8//779O7dm+PHjxuTqRkzZmAwGLj11lvJzc3l66+/pmXLlhw4cACdTkevXr149913eemllzh8+DCA8ee6utj//fdfJkyYwKxZsxg2bBhr1qxhxowZ1X6PhRCiLlEUpdwQ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kZHByy+/rLffw8NDEh8hhHhI4unrZZIegBu3Cpjy5XFixrrXavIjic9foFKpDB5uqmtBQUGEhoYCEB0dXenjDh48yPLly9m1axcREREEBwfz448/olKV302Zl5eHWq3m2LFjqNVqvX2lw0kAubm5nD9/HrVazYULF/D19TXo9eTl5bFw4cIyV50BmJiY0KwKCWJlYxdCCPFo2hKFhd+nl7tPAVTAwu/TeaGbTa0Ne0ni08j4+vpSVFSESqXCx8enUsfk5+cTGBjIlClTGDJkCI6Ojri4uLBmzRqmTJlS7jFubm5otVpyc3Px8vKqsO6goCBcXFwIDg5mwoQJeHt74+zsrNt///59jh49St++fQE4d+4cN2/e1JVxd3fn3LlzdOzYsdz6XV1duXbtGufPny+310ej0aDVag2O3dnZmcOHD+ttO3ToUIWvUwghGqOUrN+5fqugwv0KcP1WASlZv+Ph1KbCctVJEp9GRq1Wk5GRofu5MubOnYuiKERGRgLQvn17oqKimDVrFkOHDi13yKtz586MGTOGgIAAli5dipubG7/++it79uzB1dUVPz8/oqOjSU5O5uTJk9jb27N9+3bGjBnDoUOHdFeLGRkZMXXqVFatWkXTpk0JDQ2lf//+ukQoPDycl156CQcHB1577TWaNGlCWloap0+fJiIigkGDBjFw4EBeffVVli1bRseOHTl79iwqlQpfX1/at29PXl4ee/bsoUePHpiamlYq9mnTpjFgwACioqIYMWIEO3fulGEuIYR4SO6dipOeqpSrDnI5eyPUokULWrRoUamye/fuJTo6mri4OEz/NKw3adIkPD09CQ4OrvDS+ri4OAICApg5cyZdunRh5MiRHDlyBAcHB86ePct7773HZ599hr29PQCfffYZv/32Gx988IGuDlNTU8LCwhg9ejQDBgzAzMyMjRs36vb7+Piwbds2du3aRZ8+fejfvz/Lly/n6aef1pX59ttv6dOnD2+99RbdunVj9uzZul4eT09PJk+ezBtvvIGlpSWffPLJY2MH6N+/P59//jkrV66kR48e7Nq1i/fff79S76kQQjQWVuYm1VquOqgUQ28I08Ddvn2bli1bcuvWLb3koKCggKysLBwdHTExqb0Gaszi4+OZPn06N2/erOtQao18zoQQDYm2ROHZj3/ixq0Cyks2VIBNSxN+CXvuL8/x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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "freqs = np.array([i[0] for i in measured_nrz])*1e9\n", + "data = [i[1] for i in measured_nrz]\n", + "plt.plot(freqs, data, \"o--\", label=\"NRZ measured\")\n", + "plt.plot(freqs, dds_balun(freqs, nrz), label=\"NRZ expected\")\n", + "\n", + "freqs = np.array([i[0] for i in measured_mix])*1e9\n", + "data = [i[1] for i in measured_mix]\n", + "plt.plot(freqs, data, \"o--\", label=\"MIX measured\")\n", + "plt.plot(freqs, dds_balun(freqs, mix), label=\"MIX expected\")\n", + "\n", + "plt.xlabel(\"Frequency [Hz]\")\n", + "plt.ylabel(\"Measured maximum amplitude [dBm]\") \n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "id": "f58e6a64-0eb9-4a0b-be3a-c0706b353ce6", + "metadata": {}, + "source": [ + "If we look at the difference between expected and measured we can see this is almost constant in respect to the RW.\n", + "Therefore we can fit it and obtain an analytical form (again with an arbitrary polynomial):" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "68b8ba95-48d7-43fe-a2fd-f994434aa06f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "freqs = np.array([i[0] for i in measured_nrz])*1e9\n", + "data = np.array([i[1] for i in measured_nrz])\n", + "plt.plot(freqs, data - dds_balun(freqs, nrz), \"o--\", label=\"NRZ difference\")\n", + "\n", + "freqs = np.array([i[0] for i in measured_mix])*1e9\n", + "data = np.array([i[1] for i in measured_mix])\n", + "plt.plot(freqs, data - dds_balun(freqs, mix), \"o--\", label=\"MIX difference\")\n", + "\n", + "plt.xlabel(\"Frequency [Hz]\")\n", + "plt.ylabel(\"Measured maximum amplitude [dBm]\") \n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "5acbf615-bb49-4e0d-9e8e-4b8f00e7f5cd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "coeffs_att = np.polyfit(freqs, data - dds_balun(freqs, mix), 6)\n", + "att_ans = np.poly1d(coeffs_att)\n", + "\n", + "freqs_fit2 = np.linspace(min(freqs), max(freqs), 500)\n", + "# Plot the original data points\n", + "plt.scatter(freqs, data - dds_balun(freqs, mix), color='red', label='Original Data')\n", + "plt.plot(freqs_fit2, att_ans(freqs_fit2), label='Polynomial Fit')\n", + "\n", + "\n", + "plt.xlabel(\"Frequency [Hz]\")\n", + "plt.ylabel(\"Attenuation [dB]\")\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "id": "3d4c6ddb-9bd1-4069-a939-222e63b282d7", + "metadata": {}, + "source": [ + "## Final calculation" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "855b1e17-5c35-4161-a2d9-281ee4e676be", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "poly1d([ 1.51960784e-58, -5.29600302e-48, 6.59521116e-38, -3.46432367e-28,\n", + " 6.21551213e-19, 2.87256959e-10, -2.08667215e+00])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "balun_ans" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "93e3a38a-1f5c-46e3-b62e-cf414befdf1d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "poly1d([ 3.34712268e-59, -1.43657042e-48, 2.29490068e-38, -1.89368959e-28,\n", + " 8.75578939e-19, -2.86407593e-09, 7.08743254e-01])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "att_ans" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "728d4452-7c33-46ae-845d-d28d4a42bc51", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def output_power(freq, func=nrz, amplitude=1):\n", + " return (to_db(func(freq)*amplitude, 1.01e-10) + balun_ans(freq) + att_ans(freq)).real\n", + " \n", + "freqs = np.array([i[0] for i in measured_nrz])*1e9\n", + "data = [i[1] for i in measured_nrz]\n", + "plt.plot(freqs, data, \"o--\", label=\"NRZ measured\")\n", + "plt.plot(freqs, output_power(freqs, nrz), label=\"NRZ expected\")\n", + "freqs = np.array([i[0] for i in measured_mix])*1e9\n", + "data = [i[1] for i in measured_mix]\n", + "plt.plot(freqs, data, \"o--\", label=\"MIX measured\")\n", + "plt.plot(freqs, output_power(freqs, mix), label=\"MIX expected\")\n", + "plt.xlabel(\"Frequency [Hz]\")\n", + "plt.ylabel(\"Measured maximum amplitude [dBm]\")\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dfd42d3b-65d6-4f38-9e7a-75f9adcc015b", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "qick", + "language": "python", + "name": "qick" + }, + "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.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..3ecc128 --- /dev/null +++ b/flake.lock @@ -0,0 +1,458 @@ +{ + "nodes": { + "cachix": { + "inputs": { + "devenv": "devenv_2", + "flake-compat": [ + "devenv", + "flake-compat" + ], + "nixpkgs": [ + "devenv", + "nixpkgs" + ], + "pre-commit-hooks": [ + "devenv", + "pre-commit-hooks" + ] + }, + "locked": { + "lastModified": 1712055811, + "narHash": "sha256-7FcfMm5A/f02yyzuavJe06zLa9hcMHsagE28ADcmQvk=", + "owner": "cachix", + "repo": "cachix", + "rev": "02e38da89851ec7fec3356a5c04bc8349cae0e30", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "cachix", + "type": "github" + } + }, + "devenv": { + "inputs": { + "cachix": "cachix", + "flake-compat": "flake-compat_2", + "nix": "nix_2", + "nixpkgs": [ + "nixpkgs" + ], + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1721213664, + "narHash": "sha256-OqQr3ulhVGCBjW7g1DXaI3wB9YtVVUb4cyaQMAJ/2NQ=", + "owner": "cachix", + "repo": "devenv", + "rev": "1d848fc26376d919458482fa0b4d0e240285a93f", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "devenv", + "type": "github" + } + }, + "devenv_2": { + "inputs": { + "flake-compat": [ + "devenv", + "cachix", + "flake-compat" + ], + "nix": "nix", + "nixpkgs": "nixpkgs", + "poetry2nix": "poetry2nix", + "pre-commit-hooks": [ + "devenv", + "cachix", + "pre-commit-hooks" + ] + }, + "locked": { + "lastModified": 1708704632, + "narHash": "sha256-w+dOIW60FKMaHI1q5714CSibk99JfYxm0CzTinYWr+Q=", + "owner": "cachix", + "repo": "devenv", + "rev": "2ee4450b0f4b95a1b90f2eb5ffea98b90e48c196", + "type": "github" + }, + "original": { + "owner": "cachix", + "ref": "python-rewrite", + "repo": "devenv", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1719994518, + "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "devenv", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "nix": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": [ + "devenv", + "cachix", + "devenv", + "nixpkgs" + ], + "nixpkgs-regression": "nixpkgs-regression" + }, + "locked": { + "lastModified": 1712911606, + "narHash": "sha256-BGvBhepCufsjcUkXnEEXhEVjwdJAwPglCC2+bInc794=", + "owner": "domenkozar", + "repo": "nix", + "rev": "b24a9318ea3f3600c1e24b4a00691ee912d4de12", + "type": "github" + }, + "original": { + "owner": "domenkozar", + "ref": "devenv-2.21", + "repo": "nix", + "type": "github" + } + }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "devenv", + "cachix", + "devenv", + "poetry2nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1688870561, + "narHash": "sha256-4UYkifnPEw1nAzqqPOTL2MvWtm3sNGw1UTYTalkTcGY=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "165b1650b753316aa7f1787f3005a8d2da0f5301", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", + "type": "github" + } + }, + "nix_2": { + "inputs": { + "flake-compat": [ + "devenv", + "flake-compat" + ], + "nixpkgs": [ + "devenv", + "nixpkgs" + ], + "nixpkgs-regression": "nixpkgs-regression_2" + }, + "locked": { + "lastModified": 1712911606, + "narHash": "sha256-BGvBhepCufsjcUkXnEEXhEVjwdJAwPglCC2+bInc794=", + "owner": "domenkozar", + "repo": "nix", + "rev": "b24a9318ea3f3600c1e24b4a00691ee912d4de12", + "type": "github" + }, + "original": { + "owner": "domenkozar", + "ref": "devenv-2.21", + "repo": "nix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1692808169, + "narHash": "sha256-x9Opq06rIiwdwGeK2Ykj69dNc2IvUH1fY55Wm7atwrE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9201b5ff357e781bf014d0330d18555695df7ba8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1719876945, + "narHash": "sha256-Fm2rDDs86sHy0/1jxTOKB1118Q0O3Uc7EC0iXvXKpbI=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/5daf0514482af3f97abaefc78a6606365c9108e2.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/5daf0514482af3f97abaefc78a6606365c9108e2.tar.gz" + } + }, + "nixpkgs-regression": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_2": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1721138476, + "narHash": "sha256-+W5eZOhhemLQxelojLxETfbFbc19NWawsXBlapYpqIA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0b5eed1b6031efaed382844806550c3dcb4206", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "poetry2nix": { + "inputs": { + "flake-utils": "flake-utils", + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "devenv", + "cachix", + "devenv", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1692876271, + "narHash": "sha256-IXfZEkI0Mal5y1jr6IRWMqK8GW2/f28xJenZIPQqkY0=", + "owner": "nix-community", + "repo": "poetry2nix", + "rev": "d5006be9c2c2417dafb2e2e5034d83fabd207ee3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "poetry2nix", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": [ + "devenv", + "flake-compat" + ], + "flake-utils": "flake-utils_2", + "gitignore": "gitignore", + "nixpkgs": [ + "devenv", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1713775815, + "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "root": { + "inputs": { + "devenv": "devenv", + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_2" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..d7fbad0 --- /dev/null +++ b/flake.nix @@ -0,0 +1,56 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + devenv = { + url = "github:cachix/devenv"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + flake-parts.url = "github:hercules-ci/flake-parts"; + }; + + outputs = { + self, + nixpkgs, + devenv, + flake-parts, + ... + } @ inputs: + flake-parts.lib.mkFlake {inherit inputs;} { + imports = [inputs.devenv.flakeModule]; + systems = ["x86_64-linux" "aarch64-darwin"]; + + perSystem = {pkgs, ...}: { + packages.default = pkgs.poetry2nix.mkPoetryApplication { + projectDir = self; + preferWheels = true; + }; + + devenv.shells.default = { + packages = with pkgs; [poethepoet pre-commit stdenv.cc.cc.lib]; + + env = { + PYTHONBREAKPOINT = "pudb.set_trace"; + }; + + languages = { + python = { + enable = true; + poetry = { + enable = true; + install = { + enable = true; + allExtras = true; + groups = ["dev" "analysis" "tests"]; + }; + }; + }; + }; + }; + }; + }; + + nixConfig = { + extra-trusted-public-keys = "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="; + extra-substituters = "https://devenv.cachix.org"; + }; +} diff --git a/poetry.lock b/poetry.lock index 178a81d..6362419 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,50 +1,36 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "alabaster" -version = "0.7.13" -description = "A configurable sidebar-enabled Sphinx theme" +version = "0.7.16" +description = "A light, configurable Sphinx theme" optional = false -python-versions = ">=3.6" +python-versions = ">=3.9" files = [ - {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, - {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, + {file = "alabaster-0.7.16-py3-none-any.whl", hash = "sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92"}, + {file = "alabaster-0.7.16.tar.gz", hash = "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65"}, ] [[package]] name = "annotated-types" -version = "0.6.0" +version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" files = [ - {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, - {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, -] - -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} - -[[package]] -name = "appnope" -version = "0.1.4" -description = "Disable App Nap on macOS >= 10.9" -optional = false -python-versions = ">=3.6" -files = [ - {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, - {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] [[package]] name = "astroid" -version = "3.1.0" +version = "3.2.3" description = "An abstract syntax tree for Python with inference support." optional = false python-versions = ">=3.8.0" files = [ - {file = "astroid-3.1.0-py3-none-any.whl", hash = "sha256:951798f922990137ac090c53af473db7ab4e70c770e6d7fae0cec59f74411819"}, - {file = "astroid-3.1.0.tar.gz", hash = "sha256:ac248253bfa4bd924a0de213707e7ebeeb3138abeb48d798784ead1e56d419d4"}, + {file = "astroid-3.2.3-py3-none-any.whl", hash = "sha256:3eae9ea67c11c858cdd2c91337d2e816bd019ac897ca07d7b346ac10105fceb3"}, + {file = "astroid-3.2.3.tar.gz", hash = "sha256:7099b5a60985529d8d46858befa103b82d0d05a5a5e8b816b5303ed96075e1d9"}, ] [package.dependencies] @@ -89,32 +75,18 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p [[package]] name = "babel" -version = "2.14.0" +version = "2.15.0" description = "Internationalization utilities" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, - {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, + {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, + {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, ] -[package.dependencies] -pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} - [package.extras] dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] -[[package]] -name = "backcall" -version = "0.2.0" -description = "Specifications for callback functions passed in to an API" -optional = false -python-versions = "*" -files = [ - {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, - {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, -] - [[package]] name = "beautifulsoup4" version = "4.12.3" @@ -156,13 +128,13 @@ css = ["tinycss2 (>=1.1.0,<1.3)"] [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.7.4" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, + {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, ] [[package]] @@ -355,63 +327,63 @@ test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] [[package]] name = "coverage" -version = "7.4.4" +version = "7.6.0" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0be5efd5127542ef31f165de269f77560d6cdef525fffa446de6f7e9186cfb2"}, - {file = "coverage-7.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ccd341521be3d1b3daeb41960ae94a5e87abe2f46f17224ba5d6f2b8398016cf"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fa497a8ab37784fbb20ab699c246053ac294d13fc7eb40ec007a5043ec91f8"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1a93009cb80730c9bca5d6d4665494b725b6e8e157c1cb7f2db5b4b122ea562"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:690db6517f09336559dc0b5f55342df62370a48f5469fabf502db2c6d1cffcd2"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:09c3255458533cb76ef55da8cc49ffab9e33f083739c8bd4f58e79fecfe288f7"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8ce1415194b4a6bd0cdcc3a1dfbf58b63f910dcb7330fe15bdff542c56949f87"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b91cbc4b195444e7e258ba27ac33769c41b94967919f10037e6355e998af255c"}, - {file = "coverage-7.4.4-cp310-cp310-win32.whl", hash = "sha256:598825b51b81c808cb6f078dcb972f96af96b078faa47af7dfcdf282835baa8d"}, - {file = "coverage-7.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:09ef9199ed6653989ebbcaacc9b62b514bb63ea2f90256e71fea3ed74bd8ff6f"}, - {file = "coverage-7.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0f9f50e7ef2a71e2fae92774c99170eb8304e3fdf9c8c3c7ae9bab3e7229c5cf"}, - {file = "coverage-7.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:623512f8ba53c422fcfb2ce68362c97945095b864cda94a92edbaf5994201083"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0513b9508b93da4e1716744ef6ebc507aff016ba115ffe8ecff744d1322a7b63"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40209e141059b9370a2657c9b15607815359ab3ef9918f0196b6fccce8d3230f"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a2b2b78c78293782fd3767d53e6474582f62443d0504b1554370bde86cc8227"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:73bfb9c09951125d06ee473bed216e2c3742f530fc5acc1383883125de76d9cd"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f384c3cc76aeedce208643697fb3e8437604b512255de6d18dae3f27655a384"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:54eb8d1bf7cacfbf2a3186019bcf01d11c666bd495ed18717162f7eb1e9dd00b"}, - {file = "coverage-7.4.4-cp311-cp311-win32.whl", hash = "sha256:cac99918c7bba15302a2d81f0312c08054a3359eaa1929c7e4b26ebe41e9b286"}, - {file = "coverage-7.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:b14706df8b2de49869ae03a5ccbc211f4041750cd4a66f698df89d44f4bd30ec"}, - {file = "coverage-7.4.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:201bef2eea65e0e9c56343115ba3814e896afe6d36ffd37bab783261db430f76"}, - {file = "coverage-7.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41c9c5f3de16b903b610d09650e5e27adbfa7f500302718c9ffd1c12cf9d6818"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d898fe162d26929b5960e4e138651f7427048e72c853607f2b200909794ed978"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ea79bb50e805cd6ac058dfa3b5c8f6c040cb87fe83de10845857f5535d1db70"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce4b94265ca988c3f8e479e741693d143026632672e3ff924f25fab50518dd51"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:00838a35b882694afda09f85e469c96367daa3f3f2b097d846a7216993d37f4c"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fdfafb32984684eb03c2d83e1e51f64f0906b11e64482df3c5db936ce3839d48"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:69eb372f7e2ece89f14751fbcbe470295d73ed41ecd37ca36ed2eb47512a6ab9"}, - {file = "coverage-7.4.4-cp312-cp312-win32.whl", hash = "sha256:137eb07173141545e07403cca94ab625cc1cc6bc4c1e97b6e3846270e7e1fea0"}, - {file = "coverage-7.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:d71eec7d83298f1af3326ce0ff1d0ea83c7cb98f72b577097f9083b20bdaf05e"}, - {file = "coverage-7.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d5ae728ff3b5401cc320d792866987e7e7e880e6ebd24433b70a33b643bb0384"}, - {file = "coverage-7.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cc4f1358cb0c78edef3ed237ef2c86056206bb8d9140e73b6b89fbcfcbdd40e1"}, - {file = "coverage-7.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8130a2aa2acb8788e0b56938786c33c7c98562697bf9f4c7d6e8e5e3a0501e4a"}, - {file = "coverage-7.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf271892d13e43bc2b51e6908ec9a6a5094a4df1d8af0bfc360088ee6c684409"}, - {file = "coverage-7.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4cdc86d54b5da0df6d3d3a2f0b710949286094c3a6700c21e9015932b81447e"}, - {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ae71e7ddb7a413dd60052e90528f2f65270aad4b509563af6d03d53e979feafd"}, - {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:38dd60d7bf242c4ed5b38e094baf6401faa114fc09e9e6632374388a404f98e7"}, - {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa5b1c1bfc28384f1f53b69a023d789f72b2e0ab1b3787aae16992a7ca21056c"}, - {file = "coverage-7.4.4-cp38-cp38-win32.whl", hash = "sha256:dfa8fe35a0bb90382837b238fff375de15f0dcdb9ae68ff85f7a63649c98527e"}, - {file = "coverage-7.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:b2991665420a803495e0b90a79233c1433d6ed77ef282e8e152a324bbbc5e0c8"}, - {file = "coverage-7.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b799445b9f7ee8bf299cfaed6f5b226c0037b74886a4e11515e569b36fe310d"}, - {file = "coverage-7.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b4d33f418f46362995f1e9d4f3a35a1b6322cb959c31d88ae56b0298e1c22357"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aadacf9a2f407a4688d700e4ebab33a7e2e408f2ca04dbf4aef17585389eff3e"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c95949560050d04d46b919301826525597f07b33beba6187d04fa64d47ac82e"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff7687ca3d7028d8a5f0ebae95a6e4827c5616b31a4ee1192bdfde697db110d4"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5fc1de20b2d4a061b3df27ab9b7c7111e9a710f10dc2b84d33a4ab25065994ec"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c74880fc64d4958159fbd537a091d2a585448a8f8508bf248d72112723974cbd"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:742a76a12aa45b44d236815d282b03cfb1de3b4323f3e4ec933acfae08e54ade"}, - {file = "coverage-7.4.4-cp39-cp39-win32.whl", hash = "sha256:d89d7b2974cae412400e88f35d86af72208e1ede1a541954af5d944a8ba46c57"}, - {file = "coverage-7.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:9ca28a302acb19b6af89e90f33ee3e1906961f94b54ea37de6737b7ca9d8827c"}, - {file = "coverage-7.4.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:b2c5edc4ac10a7ef6605a966c58929ec6c1bd0917fb8c15cb3363f65aa40e677"}, - {file = "coverage-7.4.4.tar.gz", hash = "sha256:c901df83d097649e257e803be22592aedfd5182f07b3cc87d640bbb9afd50f49"}, + {file = "coverage-7.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dff044f661f59dace805eedb4a7404c573b6ff0cdba4a524141bc63d7be5c7fd"}, + {file = "coverage-7.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8659fd33ee9e6ca03950cfdcdf271d645cf681609153f218826dd9805ab585c"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7792f0ab20df8071d669d929c75c97fecfa6bcab82c10ee4adb91c7a54055463"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4b3cd1ca7cd73d229487fa5caca9e4bc1f0bca96526b922d61053ea751fe791"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7e128f85c0b419907d1f38e616c4f1e9f1d1b37a7949f44df9a73d5da5cd53c"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a94925102c89247530ae1dab7dc02c690942566f22e189cbd53579b0693c0783"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dcd070b5b585b50e6617e8972f3fbbee786afca71b1936ac06257f7e178f00f6"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d50a252b23b9b4dfeefc1f663c568a221092cbaded20a05a11665d0dbec9b8fb"}, + {file = "coverage-7.6.0-cp310-cp310-win32.whl", hash = "sha256:0e7b27d04131c46e6894f23a4ae186a6a2207209a05df5b6ad4caee6d54a222c"}, + {file = "coverage-7.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dece71673b3187c86226c3ca793c5f891f9fc3d8aa183f2e3653da18566169"}, + {file = "coverage-7.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7b525ab52ce18c57ae232ba6f7010297a87ced82a2383b1afd238849c1ff933"}, + {file = "coverage-7.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bea27c4269234e06f621f3fac3925f56ff34bc14521484b8f66a580aacc2e7d"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed8d1d1821ba5fc88d4a4f45387b65de52382fa3ef1f0115a4f7a20cdfab0e94"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01c322ef2bbe15057bc4bf132b525b7e3f7206f071799eb8aa6ad1940bcf5fb1"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03cafe82c1b32b770a29fd6de923625ccac3185a54a5e66606da26d105f37dac"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0d1b923fc4a40c5832be4f35a5dab0e5ff89cddf83bb4174499e02ea089daf57"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4b03741e70fb811d1a9a1d75355cf391f274ed85847f4b78e35459899f57af4d"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a73d18625f6a8a1cbb11eadc1d03929f9510f4131879288e3f7922097a429f63"}, + {file = "coverage-7.6.0-cp311-cp311-win32.whl", hash = "sha256:65fa405b837060db569a61ec368b74688f429b32fa47a8929a7a2f9b47183713"}, + {file = "coverage-7.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:6379688fb4cfa921ae349c76eb1a9ab26b65f32b03d46bb0eed841fd4cb6afb1"}, + {file = "coverage-7.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f7db0b6ae1f96ae41afe626095149ecd1b212b424626175a6633c2999eaad45b"}, + {file = "coverage-7.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bbdf9a72403110a3bdae77948b8011f644571311c2fb35ee15f0f10a8fc082e8"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc44bf0315268e253bf563f3560e6c004efe38f76db03a1558274a6e04bf5d5"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da8549d17489cd52f85a9829d0e1d91059359b3c54a26f28bec2c5d369524807"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0086cd4fc71b7d485ac93ca4239c8f75732c2ae3ba83f6be1c9be59d9e2c6382"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1fad32ee9b27350687035cb5fdf9145bc9cf0a094a9577d43e909948ebcfa27b"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:044a0985a4f25b335882b0966625270a8d9db3d3409ddc49a4eb00b0ef5e8cee"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:76d5f82213aa78098b9b964ea89de4617e70e0d43e97900c2778a50856dac605"}, + {file = "coverage-7.6.0-cp312-cp312-win32.whl", hash = "sha256:3c59105f8d58ce500f348c5b56163a4113a440dad6daa2294b5052a10db866da"}, + {file = "coverage-7.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:ca5d79cfdae420a1d52bf177de4bc2289c321d6c961ae321503b2ca59c17ae67"}, + {file = "coverage-7.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d39bd10f0ae453554798b125d2f39884290c480f56e8a02ba7a6ed552005243b"}, + {file = "coverage-7.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:beb08e8508e53a568811016e59f3234d29c2583f6b6e28572f0954a6b4f7e03d"}, + {file = "coverage-7.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2e16f4cd2bc4d88ba30ca2d3bbf2f21f00f382cf4e1ce3b1ddc96c634bc48ca"}, + {file = "coverage-7.6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6616d1c9bf1e3faea78711ee42a8b972367d82ceae233ec0ac61cc7fec09fa6b"}, + {file = "coverage-7.6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad4567d6c334c46046d1c4c20024de2a1c3abc626817ae21ae3da600f5779b44"}, + {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d17c6a415d68cfe1091d3296ba5749d3d8696e42c37fca5d4860c5bf7b729f03"}, + {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9146579352d7b5f6412735d0f203bbd8d00113a680b66565e205bc605ef81bc6"}, + {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cdab02a0a941af190df8782aafc591ef3ad08824f97850b015c8c6a8b3877b0b"}, + {file = "coverage-7.6.0-cp38-cp38-win32.whl", hash = "sha256:df423f351b162a702c053d5dddc0fc0ef9a9e27ea3f449781ace5f906b664428"}, + {file = "coverage-7.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:f2501d60d7497fd55e391f423f965bbe9e650e9ffc3c627d5f0ac516026000b8"}, + {file = "coverage-7.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7221f9ac9dad9492cecab6f676b3eaf9185141539d5c9689d13fd6b0d7de840c"}, + {file = "coverage-7.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ddaaa91bfc4477d2871442bbf30a125e8fe6b05da8a0015507bfbf4718228ab2"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cbe651f3904e28f3a55d6f371203049034b4ddbce65a54527a3f189ca3b390"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831b476d79408ab6ccfadaaf199906c833f02fdb32c9ab907b1d4aa0713cfa3b"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46c3d091059ad0b9c59d1034de74a7f36dcfa7f6d3bde782c49deb42438f2450"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4d5fae0a22dc86259dee66f2cc6c1d3e490c4a1214d7daa2a93d07491c5c04b6"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:07ed352205574aad067482e53dd606926afebcb5590653121063fbf4e2175166"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:49c76cdfa13015c4560702574bad67f0e15ca5a2872c6a125f6327ead2b731dd"}, + {file = "coverage-7.6.0-cp39-cp39-win32.whl", hash = "sha256:482855914928c8175735a2a59c8dc5806cf7d8f032e4820d52e845d1f731dca2"}, + {file = "coverage-7.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:543ef9179bc55edfd895154a51792b01c017c87af0ebaae092720152e19e42ca"}, + {file = "coverage-7.6.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:6fe885135c8a479d3e37a7aae61cbd3a0fb2deccb4dda3c25f92a49189f766d6"}, + {file = "coverage-7.6.0.tar.gz", hash = "sha256:289cc803fa1dc901f84701ac10c9ee873619320f2f9aff38794db4a4a0268d51"}, ] [package.dependencies] @@ -459,24 +431,24 @@ profile = ["gprof2dot (>=2022.7.29)"] [[package]] name = "docutils" -version = "0.19" +version = "0.21.2" description = "Docutils -- Python Documentation Utilities" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc"}, - {file = "docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6"}, + {file = "docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2"}, + {file = "docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f"}, ] [[package]] name = "exceptiongroup" -version = "1.2.0" +version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, - {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] [package.extras] @@ -498,13 +470,13 @@ tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipyth [[package]] name = "fastjsonschema" -version = "2.19.1" +version = "2.20.0" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" files = [ - {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"}, - {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"}, + {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, + {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"}, ] [package.extras] @@ -529,13 +501,13 @@ sphinx-basic-ng = "*" [[package]] name = "idna" -version = "3.6" +version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, - {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, ] [[package]] @@ -551,40 +523,22 @@ files = [ [[package]] name = "importlib-metadata" -version = "7.0.2" +version = "8.0.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.0.2-py3-none-any.whl", hash = "sha256:f4bc4c0c070c490abf4ce96d715f68e95923320370efb66143df00199bb6c100"}, - {file = "importlib_metadata-7.0.2.tar.gz", hash = "sha256:198f568f3230878cb1b44fbd7975f87906c22336dba2e4a7f05278c281fbd792"}, + {file = "importlib_metadata-8.0.0-py3-none-any.whl", hash = "sha256:15584cf2b1bf449d98ff8a6ff1abef57bf20f3ac6454f431736cd3e660921b2f"}, + {file = "importlib_metadata-8.0.0.tar.gz", hash = "sha256:188bd24e4c346d3f0a933f275c2fec67050326a856b9a359881d7c2a697e8812"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] - -[[package]] -name = "importlib-resources" -version = "6.3.2" -description = "Read resources from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_resources-6.3.2-py3-none-any.whl", hash = "sha256:f41f4098b16cd140a97d256137cfd943d958219007990b2afb00439fc623f580"}, - {file = "importlib_resources-6.3.2.tar.gz", hash = "sha256:963eb79649252b0160c1afcfe5a1d3fe3ad66edd0a8b114beacffb70c0674223"}, -] - -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["jaraco.collections", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)", "zipp (>=3.17)"] +test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] [[package]] name = "iniconfig" @@ -599,42 +553,40 @@ files = [ [[package]] name = "ipython" -version = "8.12.3" +version = "8.18.1" description = "IPython: Productive Interactive Computing" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "ipython-8.12.3-py3-none-any.whl", hash = "sha256:b0340d46a933d27c657b211a329d0be23793c36595acf9e6ef4164bc01a1804c"}, - {file = "ipython-8.12.3.tar.gz", hash = "sha256:3910c4b54543c2ad73d06579aa771041b7d5707b033bd488669b4cf544e3b363"}, + {file = "ipython-8.18.1-py3-none-any.whl", hash = "sha256:e8267419d72d81955ec1177f8a29aaa90ac80ad647499201119e2f05e99aa397"}, + {file = "ipython-8.18.1.tar.gz", hash = "sha256:ca6f079bb33457c66e233e4580ebfc4128855b4cf6370dddd73842a9563e8a27"}, ] [package.dependencies] -appnope = {version = "*", markers = "sys_platform == \"darwin\""} -backcall = "*" colorama = {version = "*", markers = "sys_platform == \"win32\""} decorator = "*" +exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} -pickleshare = "*" -prompt-toolkit = ">=3.0.30,<3.0.37 || >3.0.37,<3.1.0" +prompt-toolkit = ">=3.0.41,<3.1.0" pygments = ">=2.4.0" stack-data = "*" traitlets = ">=5" typing-extensions = {version = "*", markers = "python_version < \"3.10\""} [package.extras] -all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] +all = ["black", "curio", "docrepr", "exceptiongroup", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] black = ["black"] -doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] +doc = ["docrepr", "exceptiongroup", "ipykernel", "matplotlib", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] kernel = ["ipykernel"] nbconvert = ["nbconvert"] nbformat = ["nbformat"] notebook = ["ipywidgets", "notebook"] parallel = ["ipyparallel"] qtconsole = ["qtconsole"] -test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] -test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"] +test = ["pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath"] +test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath", "trio"] [[package]] name = "isort" @@ -671,13 +623,13 @@ testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] [[package]] name = "jinja2" -version = "3.1.3" +version = "3.1.4" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, - {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, ] [package.dependencies] @@ -688,26 +640,24 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jsonschema" -version = "4.21.1" +version = "4.23.0" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, - {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, + {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, + {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, ] [package.dependencies] attrs = ">=22.2.0" -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} jsonschema-specifications = ">=2023.03.6" -pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} referencing = ">=0.28.4" rpds-py = ">=0.7.1" [package.extras] format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=24.6.0)"] [[package]] name = "jsonschema-specifications" @@ -721,18 +671,17 @@ files = [ ] [package.dependencies] -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} referencing = ">=0.31.0" [[package]] name = "jupyter-client" -version = "8.6.1" +version = "8.6.2" description = "Jupyter protocol implementation and client libraries" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_client-8.6.1-py3-none-any.whl", hash = "sha256:3b7bd22f058434e3b9a7ea4b1500ed47de2713872288c0d511d19926f99b459f"}, - {file = "jupyter_client-8.6.1.tar.gz", hash = "sha256:e842515e2bab8e19186d89fdfea7abd15e39dd581f94e399f00e2af5a1652d3f"}, + {file = "jupyter_client-8.6.2-py3-none-any.whl", hash = "sha256:50cbc5c66fd1b8f65ecb66bc490ab73217993632809b6e505687de18e9dea39f"}, + {file = "jupyter_client-8.6.2.tar.gz", hash = "sha256:2bda14d55ee5ba58552a8c53ae43d215ad9868853489213f37da060ced54d8df"}, ] [package.dependencies] @@ -745,7 +694,7 @@ traitlets = ">=5.3" [package.extras] docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] [[package]] name = "jupyter-core" @@ -878,13 +827,13 @@ files = [ [[package]] name = "matplotlib-inline" -version = "0.1.6" +version = "0.1.7" description = "Inline Matplotlib backend for Jupyter" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" files = [ - {file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"}, - {file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"}, + {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, + {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, ] [package.dependencies] @@ -912,6 +861,64 @@ files = [ {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, ] +[[package]] +name = "mypy" +version = "1.10.1" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mypy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e36f229acfe250dc660790840916eb49726c928e8ce10fbdf90715090fe4ae02"}, + {file = "mypy-1.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:51a46974340baaa4145363b9e051812a2446cf583dfaeba124af966fa44593f7"}, + {file = "mypy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:901c89c2d67bba57aaaca91ccdb659aa3a312de67f23b9dfb059727cce2e2e0a"}, + {file = "mypy-1.10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0cd62192a4a32b77ceb31272d9e74d23cd88c8060c34d1d3622db3267679a5d9"}, + {file = "mypy-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:a2cbc68cb9e943ac0814c13e2452d2046c2f2b23ff0278e26599224cf164e78d"}, + {file = "mypy-1.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bd6f629b67bb43dc0d9211ee98b96d8dabc97b1ad38b9b25f5e4c4d7569a0c6a"}, + {file = "mypy-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a1bbb3a6f5ff319d2b9d40b4080d46cd639abe3516d5a62c070cf0114a457d84"}, + {file = "mypy-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8edd4e9bbbc9d7b79502eb9592cab808585516ae1bcc1446eb9122656c6066f"}, + {file = "mypy-1.10.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6166a88b15f1759f94a46fa474c7b1b05d134b1b61fca627dd7335454cc9aa6b"}, + {file = "mypy-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:5bb9cd11c01c8606a9d0b83ffa91d0b236a0e91bc4126d9ba9ce62906ada868e"}, + {file = "mypy-1.10.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d8681909f7b44d0b7b86e653ca152d6dff0eb5eb41694e163c6092124f8246d7"}, + {file = "mypy-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:378c03f53f10bbdd55ca94e46ec3ba255279706a6aacaecac52ad248f98205d3"}, + {file = "mypy-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bacf8f3a3d7d849f40ca6caea5c055122efe70e81480c8328ad29c55c69e93e"}, + {file = "mypy-1.10.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:701b5f71413f1e9855566a34d6e9d12624e9e0a8818a5704d74d6b0402e66c04"}, + {file = "mypy-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:3c4c2992f6ea46ff7fce0072642cfb62af7a2484efe69017ed8b095f7b39ef31"}, + {file = "mypy-1.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:604282c886497645ffb87b8f35a57ec773a4a2721161e709a4422c1636ddde5c"}, + {file = "mypy-1.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37fd87cab83f09842653f08de066ee68f1182b9b5282e4634cdb4b407266bade"}, + {file = "mypy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8addf6313777dbb92e9564c5d32ec122bf2c6c39d683ea64de6a1fd98b90fe37"}, + {file = "mypy-1.10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5cc3ca0a244eb9a5249c7c583ad9a7e881aa5d7b73c35652296ddcdb33b2b9c7"}, + {file = "mypy-1.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:1b3a2ffce52cc4dbaeee4df762f20a2905aa171ef157b82192f2e2f368eec05d"}, + {file = "mypy-1.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe85ed6836165d52ae8b88f99527d3d1b2362e0cb90b005409b8bed90e9059b3"}, + {file = "mypy-1.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2ae450d60d7d020d67ab440c6e3fae375809988119817214440033f26ddf7bf"}, + {file = "mypy-1.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6be84c06e6abd72f960ba9a71561c14137a583093ffcf9bbfaf5e613d63fa531"}, + {file = "mypy-1.10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2189ff1e39db399f08205e22a797383613ce1cb0cb3b13d8bcf0170e45b96cc3"}, + {file = "mypy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:97a131ee36ac37ce9581f4220311247ab6cba896b4395b9c87af0675a13a755f"}, + {file = "mypy-1.10.1-py3-none-any.whl", hash = "sha256:71d8ac0b906354ebda8ef1673e5fde785936ac1f29ff6987c7483cfbd5a4235a"}, + {file = "mypy-1.10.1.tar.gz", hash = "sha256:1f8f492d7db9e3593ef42d4f115f04e556130f2819ad33ab84551403e97dd4c0"}, +] + +[package.dependencies] +mypy-extensions = ">=1.0.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = ">=4.1.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + [[package]] name = "nbclient" version = "0.10.0" @@ -936,13 +943,13 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= [[package]] name = "nbconvert" -version = "7.16.2" +version = "7.16.4" description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." optional = false python-versions = ">=3.8" files = [ - {file = "nbconvert-7.16.2-py3-none-any.whl", hash = "sha256:0c01c23981a8de0220255706822c40b751438e32467d6a686e26be08ba784382"}, - {file = "nbconvert-7.16.2.tar.gz", hash = "sha256:8310edd41e1c43947e4ecf16614c61469ebc024898eb808cce0999860fc9fb16"}, + {file = "nbconvert-7.16.4-py3-none-any.whl", hash = "sha256:05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3"}, + {file = "nbconvert-7.16.4.tar.gz", hash = "sha256:86ca91ba266b0a448dc96fa6c5b9d98affabde2867b363258703536807f9f7f4"}, ] [package.dependencies] @@ -964,29 +971,29 @@ tinycss2 = "*" traitlets = ">=5.1" [package.extras] -all = ["nbconvert[docs,qtpdf,serve,test,webpdf]"] +all = ["flaky", "ipykernel", "ipython", "ipywidgets (>=7.5)", "myst-parser", "nbsphinx (>=0.2.12)", "playwright", "pydata-sphinx-theme", "pyqtwebengine (>=5.15)", "pytest (>=7)", "sphinx (==5.0.2)", "sphinxcontrib-spelling", "tornado (>=6.1)"] docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"] -qtpdf = ["nbconvert[qtpng]"] +qtpdf = ["pyqtwebengine (>=5.15)"] qtpng = ["pyqtwebengine (>=5.15)"] serve = ["tornado (>=6.1)"] -test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest"] +test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest (>=7)"] webpdf = ["playwright"] [[package]] name = "nbformat" -version = "5.10.3" +version = "5.10.4" description = "The Jupyter Notebook format" optional = false python-versions = ">=3.8" files = [ - {file = "nbformat-5.10.3-py3-none-any.whl", hash = "sha256:d9476ca28676799af85385f409b49d95e199951477a159a576ef2a675151e5e8"}, - {file = "nbformat-5.10.3.tar.gz", hash = "sha256:60ed5e910ef7c6264b87d644f276b1b49e24011930deef54605188ddeb211685"}, + {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, + {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, ] [package.dependencies] -fastjsonschema = "*" +fastjsonschema = ">=2.15" jsonschema = ">=2.6" -jupyter-core = "*" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" traitlets = ">=5.1" [package.extras] @@ -995,19 +1002,19 @@ test = ["pep440", "pre-commit", "pytest", "testpath"] [[package]] name = "nbsphinx" -version = "0.9.3" +version = "0.9.4" description = "Jupyter Notebook Tools for Sphinx" optional = false python-versions = ">=3.6" files = [ - {file = "nbsphinx-0.9.3-py3-none-any.whl", hash = "sha256:6e805e9627f4a358bd5720d5cbf8bf48853989c79af557afd91a5f22e163029f"}, - {file = "nbsphinx-0.9.3.tar.gz", hash = "sha256:ec339c8691b688f8676104a367a4b8cf3ea01fd089dc28d24dec22d563b11562"}, + {file = "nbsphinx-0.9.4-py3-none-any.whl", hash = "sha256:22cb1d974a8300e8118ca71aea1f649553743c0c5830a54129dcd446e6a8ba17"}, + {file = "nbsphinx-0.9.4.tar.gz", hash = "sha256:042a60806fc23d519bc5bef59d95570713913fe442fda759d53e3aaf62104794"}, ] [package.dependencies] -docutils = "*" +docutils = ">=0.18.1" jinja2 = "*" -nbconvert = "!=5.4" +nbconvert = ">=5.3,<5.4 || >5.4" nbformat = "*" sphinx = ">=1.8" traitlets = ">=5" @@ -1025,50 +1032,58 @@ files = [ [[package]] name = "numpy" -version = "1.24.4" +version = "1.26.4" description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.8" -files = [ - {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"}, - {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"}, - {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"}, - {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"}, - {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"}, - {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"}, - {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"}, - {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"}, - {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"}, - {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"}, - {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"}, - {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"}, - {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"}, - {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"}, - {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"}, - {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"}, - {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"}, - {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"}, - {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"}, - {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"}, - {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"}, - {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"}, - {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"}, - {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"}, - {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"}, +python-versions = ">=3.9" +files = [ + {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, + {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, + {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, + {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, + {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, + {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, + {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, + {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, + {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, + {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, ] [[package]] name = "packaging" -version = "24.0" +version = "24.1" description = "Core utilities for Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] [[package]] @@ -1084,18 +1099,18 @@ files = [ [[package]] name = "parso" -version = "0.8.3" +version = "0.8.4" description = "A Python Parser" optional = false python-versions = ">=3.6" files = [ - {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"}, - {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"}, + {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, + {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, ] [package.extras] -qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] -testing = ["docopt", "pytest (<6.0.0)"] +qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] +testing = ["docopt", "pytest"] [[package]] name = "pexpect" @@ -1111,52 +1126,31 @@ files = [ [package.dependencies] ptyprocess = ">=0.5" -[[package]] -name = "pickleshare" -version = "0.7.5" -description = "Tiny 'shelve'-like database with concurrency support" -optional = false -python-versions = "*" -files = [ - {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, - {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, -] - -[[package]] -name = "pkgutil-resolve-name" -version = "1.3.10" -description = "Resolve a name to an object." -optional = false -python-versions = ">=3.6" -files = [ - {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, - {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, -] - [[package]] name = "platformdirs" -version = "4.2.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +version = "4.2.2" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, - {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, + {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, + {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, ] [package.extras] docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +type = ["mypy (>=1.8)"] [[package]] name = "pluggy" -version = "1.4.0" +version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, - {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] @@ -1165,13 +1159,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "prompt-toolkit" -version = "3.0.43" +version = "3.0.47" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"}, - {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"}, + {file = "prompt_toolkit-3.0.47-py3-none-any.whl", hash = "sha256:0d7bfa67001d5e39d02c224b663abc33687405033a8c422d0d675a5a13361d10"}, + {file = "prompt_toolkit-3.0.47.tar.gz", hash = "sha256:1e1b29cb58080b1e69f207c893a1a7bf16d127a5c30c9d17a25a5d77792e5360"}, ] [package.dependencies] @@ -1188,6 +1182,27 @@ files = [ {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, ] +[[package]] +name = "pudb" +version = "2024.1.1" +description = "A full-screen, console-based Python debugger" +optional = false +python-versions = "~=3.8" +files = [ + {file = "pudb-2024.1.1-py3-none-any.whl", hash = "sha256:b184af80036ea379a4f79ba7859ecf4fe0681a2b6f46e807f49d1900668f7c66"}, + {file = "pudb-2024.1.1.tar.gz", hash = "sha256:ff5f5395e36a19a65f22f522fd6027d27a36ab783de4511b41c91484ab614975"}, +] + +[package.dependencies] +jedi = ">=0.18,<1" +packaging = ">=20.0" +pygments = ">=2.7.4" +urwid = ">=2.4" +urwid-readline = "*" + +[package.extras] +completion = ["shtab"] + [[package]] name = "pure-eval" version = "0.2.2" @@ -1238,120 +1253,130 @@ pybtex = ">=0.16" [[package]] name = "pycparser" -version = "2.21" +version = "2.22" description = "C parser in Python" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.8" files = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] [[package]] name = "pydantic" -version = "2.6.4" +version = "2.8.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.6.4-py3-none-any.whl", hash = "sha256:cc46fce86607580867bdc3361ad462bab9c222ef042d3da86f2fb333e1d916c5"}, - {file = "pydantic-2.6.4.tar.gz", hash = "sha256:b1704e0847db01817624a6b86766967f552dd9dbf3afba4004409f908dcc84e6"}, + {file = "pydantic-2.8.2-py3-none-any.whl", hash = "sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8"}, + {file = "pydantic-2.8.2.tar.gz", hash = "sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.16.3" -typing-extensions = ">=4.6.1" +pydantic-core = "2.20.1" +typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} [package.extras] email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.16.3" -description = "" +version = "2.20.1" +description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.16.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:75b81e678d1c1ede0785c7f46690621e4c6e63ccd9192af1f0bd9d504bbb6bf4"}, - {file = "pydantic_core-2.16.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c865a7ee6f93783bd5d781af5a4c43dadc37053a5b42f7d18dc019f8c9d2bd1"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:162e498303d2b1c036b957a1278fa0899d02b2842f1ff901b6395104c5554a45"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f583bd01bbfbff4eaee0868e6fc607efdfcc2b03c1c766b06a707abbc856187"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b926dd38db1519ed3043a4de50214e0d600d404099c3392f098a7f9d75029ff8"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:716b542728d4c742353448765aa7cdaa519a7b82f9564130e2b3f6766018c9ec"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4ad7f7ee1a13d9cb49d8198cd7d7e3aa93e425f371a68235f784e99741561f"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bd87f48924f360e5d1c5f770d6155ce0e7d83f7b4e10c2f9ec001c73cf475c99"}, - {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0df446663464884297c793874573549229f9eca73b59360878f382a0fc085979"}, - {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4df8a199d9f6afc5ae9a65f8f95ee52cae389a8c6b20163762bde0426275b7db"}, - {file = "pydantic_core-2.16.3-cp310-none-win32.whl", hash = "sha256:456855f57b413f077dff513a5a28ed838dbbb15082ba00f80750377eed23d132"}, - {file = "pydantic_core-2.16.3-cp310-none-win_amd64.whl", hash = "sha256:732da3243e1b8d3eab8c6ae23ae6a58548849d2e4a4e03a1924c8ddf71a387cb"}, - {file = "pydantic_core-2.16.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:519ae0312616026bf4cedc0fe459e982734f3ca82ee8c7246c19b650b60a5ee4"}, - {file = "pydantic_core-2.16.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b3992a322a5617ded0a9f23fd06dbc1e4bd7cf39bc4ccf344b10f80af58beacd"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d62da299c6ecb04df729e4b5c52dc0d53f4f8430b4492b93aa8de1f541c4aac"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2acca2be4bb2f2147ada8cac612f8a98fc09f41c89f87add7256ad27332c2fda"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b662180108c55dfbf1280d865b2d116633d436cfc0bba82323554873967b340"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e7c6ed0dc9d8e65f24f5824291550139fe6f37fac03788d4580da0d33bc00c97"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1bb0827f56654b4437955555dc3aeeebeddc47c2d7ed575477f082622c49e"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e56f8186d6210ac7ece503193ec84104da7ceb98f68ce18c07282fcc2452e76f"}, - {file = "pydantic_core-2.16.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:936e5db01dd49476fa8f4383c259b8b1303d5dd5fb34c97de194560698cc2c5e"}, - {file = "pydantic_core-2.16.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:33809aebac276089b78db106ee692bdc9044710e26f24a9a2eaa35a0f9fa70ba"}, - {file = "pydantic_core-2.16.3-cp311-none-win32.whl", hash = "sha256:ded1c35f15c9dea16ead9bffcde9bb5c7c031bff076355dc58dcb1cb436c4721"}, - {file = "pydantic_core-2.16.3-cp311-none-win_amd64.whl", hash = "sha256:d89ca19cdd0dd5f31606a9329e309d4fcbb3df860960acec32630297d61820df"}, - {file = "pydantic_core-2.16.3-cp311-none-win_arm64.whl", hash = "sha256:6162f8d2dc27ba21027f261e4fa26f8bcb3cf9784b7f9499466a311ac284b5b9"}, - {file = "pydantic_core-2.16.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f56ae86b60ea987ae8bcd6654a887238fd53d1384f9b222ac457070b7ac4cff"}, - {file = "pydantic_core-2.16.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9bd22a2a639e26171068f8ebb5400ce2c1bc7d17959f60a3b753ae13c632975"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4204e773b4b408062960e65468d5346bdfe139247ee5f1ca2a378983e11388a2"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f651dd19363c632f4abe3480a7c87a9773be27cfe1341aef06e8759599454120"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aaf09e615a0bf98d406657e0008e4a8701b11481840be7d31755dc9f97c44053"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8e47755d8152c1ab5b55928ab422a76e2e7b22b5ed8e90a7d584268dd49e9c6b"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:500960cb3a0543a724a81ba859da816e8cf01b0e6aaeedf2c3775d12ee49cade"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cf6204fe865da605285c34cf1172879d0314ff267b1c35ff59de7154f35fdc2e"}, - {file = "pydantic_core-2.16.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d33dd21f572545649f90c38c227cc8631268ba25c460b5569abebdd0ec5974ca"}, - {file = "pydantic_core-2.16.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:49d5d58abd4b83fb8ce763be7794d09b2f50f10aa65c0f0c1696c677edeb7cbf"}, - {file = "pydantic_core-2.16.3-cp312-none-win32.whl", hash = "sha256:f53aace168a2a10582e570b7736cc5bef12cae9cf21775e3eafac597e8551fbe"}, - {file = "pydantic_core-2.16.3-cp312-none-win_amd64.whl", hash = "sha256:0d32576b1de5a30d9a97f300cc6a3f4694c428d956adbc7e6e2f9cad279e45ed"}, - {file = "pydantic_core-2.16.3-cp312-none-win_arm64.whl", hash = "sha256:ec08be75bb268473677edb83ba71e7e74b43c008e4a7b1907c6d57e940bf34b6"}, - {file = "pydantic_core-2.16.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:b1f6f5938d63c6139860f044e2538baeee6f0b251a1816e7adb6cbce106a1f01"}, - {file = "pydantic_core-2.16.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2a1ef6a36fdbf71538142ed604ad19b82f67b05749512e47f247a6ddd06afdc7"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:704d35ecc7e9c31d48926150afada60401c55efa3b46cd1ded5a01bdffaf1d48"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d937653a696465677ed583124b94a4b2d79f5e30b2c46115a68e482c6a591c8a"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9803edf8e29bd825f43481f19c37f50d2b01899448273b3a7758441b512acf8"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72282ad4892a9fb2da25defeac8c2e84352c108705c972db82ab121d15f14e6d"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f752826b5b8361193df55afcdf8ca6a57d0232653494ba473630a83ba50d8c9"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4384a8f68ddb31a0b0c3deae88765f5868a1b9148939c3f4121233314ad5532c"}, - {file = "pydantic_core-2.16.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a4b2bf78342c40b3dc830880106f54328928ff03e357935ad26c7128bbd66ce8"}, - {file = "pydantic_core-2.16.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:13dcc4802961b5f843a9385fc821a0b0135e8c07fc3d9949fd49627c1a5e6ae5"}, - {file = "pydantic_core-2.16.3-cp38-none-win32.whl", hash = "sha256:e3e70c94a0c3841e6aa831edab1619ad5c511199be94d0c11ba75fe06efe107a"}, - {file = "pydantic_core-2.16.3-cp38-none-win_amd64.whl", hash = "sha256:ecdf6bf5f578615f2e985a5e1f6572e23aa632c4bd1dc67f8f406d445ac115ed"}, - {file = "pydantic_core-2.16.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:bda1ee3e08252b8d41fa5537413ffdddd58fa73107171a126d3b9ff001b9b820"}, - {file = "pydantic_core-2.16.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:21b888c973e4f26b7a96491c0965a8a312e13be108022ee510248fe379a5fa23"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be0ec334369316fa73448cc8c982c01e5d2a81c95969d58b8f6e272884df0074"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b5b6079cc452a7c53dd378c6f881ac528246b3ac9aae0f8eef98498a75657805"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ee8d5f878dccb6d499ba4d30d757111847b6849ae07acdd1205fffa1fc1253c"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7233d65d9d651242a68801159763d09e9ec96e8a158dbf118dc090cd77a104c9"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6119dc90483a5cb50a1306adb8d52c66e447da88ea44f323e0ae1a5fcb14256"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:578114bc803a4c1ff9946d977c221e4376620a46cf78da267d946397dc9514a8"}, - {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d8f99b147ff3fcf6b3cc60cb0c39ea443884d5559a30b1481e92495f2310ff2b"}, - {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4ac6b4ce1e7283d715c4b729d8f9dab9627586dafce81d9eaa009dd7f25dd972"}, - {file = "pydantic_core-2.16.3-cp39-none-win32.whl", hash = "sha256:e7774b570e61cb998490c5235740d475413a1f6de823169b4cf94e2fe9e9f6b2"}, - {file = "pydantic_core-2.16.3-cp39-none-win_amd64.whl", hash = "sha256:9091632a25b8b87b9a605ec0e61f241c456e9248bfdcf7abdf344fdb169c81cf"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:36fa178aacbc277bc6b62a2c3da95226520da4f4e9e206fdf076484363895d2c"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:dcca5d2bf65c6fb591fff92da03f94cd4f315972f97c21975398bd4bd046854a"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a72fb9963cba4cd5793854fd12f4cfee731e86df140f59ff52a49b3552db241"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b60cc1a081f80a2105a59385b92d82278b15d80ebb3adb200542ae165cd7d183"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cbcc558401de90a746d02ef330c528f2e668c83350f045833543cd57ecead1ad"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fee427241c2d9fb7192b658190f9f5fd6dfe41e02f3c1489d2ec1e6a5ab1e04a"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f4cb85f693044e0f71f394ff76c98ddc1bc0953e48c061725e540396d5c8a2e1"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b29eeb887aa931c2fcef5aa515d9d176d25006794610c264ddc114c053bf96fe"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a425479ee40ff021f8216c9d07a6a3b54b31c8267c6e17aa88b70d7ebd0e5e5b"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5c5cbc703168d1b7a838668998308018a2718c2130595e8e190220238addc96f"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99b6add4c0b39a513d323d3b93bc173dac663c27b99860dd5bf491b240d26137"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f76ee558751746d6a38f89d60b6228fa174e5172d143886af0f85aa306fd89"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:287073c66748f624be4cef893ef9174e3eb88fe0b8a78dc22e88eca4bc357ca6"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed25e1835c00a332cb10c683cd39da96a719ab1dfc08427d476bce41b92531fc"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:86b3d0033580bd6bbe07590152007275bd7af95f98eaa5bd36f3da219dcd93da"}, - {file = "pydantic_core-2.16.3.tar.gz", hash = "sha256:1cac689f80a3abab2d3c0048b29eea5751114054f032a941a32de4c852c59cad"}, + {file = "pydantic_core-2.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3"}, + {file = "pydantic_core-2.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840"}, + {file = "pydantic_core-2.20.1-cp310-none-win32.whl", hash = "sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250"}, + {file = "pydantic_core-2.20.1-cp310-none-win_amd64.whl", hash = "sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c"}, + {file = "pydantic_core-2.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312"}, + {file = "pydantic_core-2.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25e9185e2d06c16ee438ed39bf62935ec436474a6ac4f9358524220f1b236e43"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:150906b40ff188a3260cbee25380e7494ee85048584998c1e66df0c7a11c17a6"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ad4aeb3e9a97286573c03df758fc7627aecdd02f1da04516a86dc159bf70121"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0dae11d8f5ded51699c74d9548dcc5938e0804cc8298ec0aa0da95c21fff57b"}, + {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27"}, + {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9dc1b507c12eb0481d071f3c1808f0529ad41dc415d0ca11f7ebfc666e66a18b"}, + {file = "pydantic_core-2.20.1-cp311-none-win32.whl", hash = "sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a"}, + {file = "pydantic_core-2.20.1-cp311-none-win_amd64.whl", hash = "sha256:40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2"}, + {file = "pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231"}, + {file = "pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e97fdf088d4b31ff4ba35db26d9cc472ac7ef4a2ff2badeabf8d727b3377fc52"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc633a9fe1eb87e250b5c57d389cf28998e4292336926b0b6cdaee353f89a237"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d573faf8eb7e6b1cbbcb4f5b247c60ca8be39fe2c674495df0eb4318303137fe"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:33499e85e739a4b60c9dac710c20a08dc73cb3240c9a0e22325e671b27b70d24"}, + {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bebb4d6715c814597f85297c332297c6ce81e29436125ca59d1159b07f423eb1"}, + {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:516d9227919612425c8ef1c9b869bbbee249bc91912c8aaffb66116c0b447ebd"}, + {file = "pydantic_core-2.20.1-cp312-none-win32.whl", hash = "sha256:469f29f9093c9d834432034d33f5fe45699e664f12a13bf38c04967ce233d688"}, + {file = "pydantic_core-2.20.1-cp312-none-win_amd64.whl", hash = "sha256:035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d"}, + {file = "pydantic_core-2.20.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0827505a5c87e8aa285dc31e9ec7f4a17c81a813d45f70b1d9164e03a813a686"}, + {file = "pydantic_core-2.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19c0fa39fa154e7e0b7f82f88ef85faa2a4c23cc65aae2f5aea625e3c13c735a"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa223cd1e36b642092c326d694d8bf59b71ddddc94cdb752bbbb1c5c91d833b"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c336a6d235522a62fef872c6295a42ecb0c4e1d0f1a3e500fe949415761b8a19"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7eb6a0587eded33aeefea9f916899d42b1799b7b14b8f8ff2753c0ac1741edac"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70c8daf4faca8da5a6d655f9af86faf6ec2e1768f4b8b9d0226c02f3d6209703"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9fa4c9bf273ca41f940bceb86922a7667cd5bf90e95dbb157cbb8441008482c"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:11b71d67b4725e7e2a9f6e9c0ac1239bbc0c48cce3dc59f98635efc57d6dac83"}, + {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:270755f15174fb983890c49881e93f8f1b80f0b5e3a3cc1394a255706cabd203"}, + {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0"}, + {file = "pydantic_core-2.20.1-cp313-none-win32.whl", hash = "sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e"}, + {file = "pydantic_core-2.20.1-cp313-none-win_amd64.whl", hash = "sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20"}, + {file = "pydantic_core-2.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4745f4ac52cc6686390c40eaa01d48b18997cb130833154801a442323cc78f91"}, + {file = "pydantic_core-2.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a8ad4c766d3f33ba8fd692f9aa297c9058970530a32c728a2c4bfd2616d3358b"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41e81317dd6a0127cabce83c0c9c3fbecceae981c8391e6f1dec88a77c8a569a"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04024d270cf63f586ad41fff13fde4311c4fc13ea74676962c876d9577bcc78f"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eaad4ff2de1c3823fddf82f41121bdf453d922e9a238642b1dedb33c4e4f98ad"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26ab812fa0c845df815e506be30337e2df27e88399b985d0bb4e3ecfe72df31c"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c5ebac750d9d5f2706654c638c041635c385596caf68f81342011ddfa1e5598"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2aafc5a503855ea5885559eae883978c9b6d8c8993d67766ee73d82e841300dd"}, + {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4868f6bd7c9d98904b748a2653031fc9c2f85b6237009d475b1008bfaeb0a5aa"}, + {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa2f457b4af386254372dfa78a2eda2563680d982422641a85f271c859df1987"}, + {file = "pydantic_core-2.20.1-cp38-none-win32.whl", hash = "sha256:225b67a1f6d602de0ce7f6c1c3ae89a4aa25d3de9be857999e9124f15dab486a"}, + {file = "pydantic_core-2.20.1-cp38-none-win_amd64.whl", hash = "sha256:6b507132dcfc0dea440cce23ee2182c0ce7aba7054576efc65634f080dbe9434"}, + {file = "pydantic_core-2.20.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b03f7941783b4c4a26051846dea594628b38f6940a2fdc0df00b221aed39314c"}, + {file = "pydantic_core-2.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1eedfeb6089ed3fad42e81a67755846ad4dcc14d73698c120a82e4ccf0f1f9f6"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:635fee4e041ab9c479e31edda27fcf966ea9614fff1317e280d99eb3e5ab6fe2"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:77bf3ac639c1ff567ae3b47f8d4cc3dc20f9966a2a6dd2311dcc055d3d04fb8a"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ed1b0132f24beeec5a78b67d9388656d03e6a7c837394f99257e2d55b461611"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6514f963b023aeee506678a1cf821fe31159b925c4b76fe2afa94cc70b3222b"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d4204d8ca33146e761c79f83cc861df20e7ae9f6487ca290a97702daf56006"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2d036c7187b9422ae5b262badb87a20a49eb6c5238b2004e96d4da1231badef1"}, + {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ebfef07dbe1d93efb94b4700f2d278494e9162565a54f124c404a5656d7ff09"}, + {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6b9d9bb600328a1ce523ab4f454859e9d439150abb0906c5a1983c146580ebab"}, + {file = "pydantic_core-2.20.1-cp39-none-win32.whl", hash = "sha256:784c1214cb6dd1e3b15dd8b91b9a53852aed16671cc3fbe4786f4f1db07089e2"}, + {file = "pydantic_core-2.20.1-cp39-none-win_amd64.whl", hash = "sha256:d2fe69c5434391727efa54b47a1e7986bb0186e72a41b203df8f5b0a19a4f669"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:407653af5617f0757261ae249d3fba09504d7a71ab36ac057c938572d1bc9331"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:c693e916709c2465b02ca0ad7b387c4f8423d1db7b4649c551f27a529181c5ad"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b5ff4911aea936a47d9376fd3ab17e970cc543d1b68921886e7f64bd28308d1"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177f55a886d74f1808763976ac4efd29b7ed15c69f4d838bbd74d9d09cf6fa86"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:964faa8a861d2664f0c7ab0c181af0bea66098b1919439815ca8803ef136fc4e"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4dd484681c15e6b9a977c785a345d3e378d72678fd5f1f3c0509608da24f2ac0"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f6d6cff3538391e8486a431569b77921adfcdef14eb18fbf19b7c0a5294d4e6a"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a6d511cc297ff0883bc3708b465ff82d7560193169a8b93260f74ecb0a5e08a7"}, + {file = "pydantic_core-2.20.1.tar.gz", hash = "sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4"}, ] [package.dependencies] @@ -1359,36 +1384,36 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pygments" -version = "2.17.2" +version = "2.18.0" description = "Pygments is a syntax highlighting package written in Python." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, - {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, ] [package.extras] -plugins = ["importlib-metadata"] windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pylint" -version = "3.1.0" +version = "3.2.5" description = "python code static checker" optional = false python-versions = ">=3.8.0" files = [ - {file = "pylint-3.1.0-py3-none-any.whl", hash = "sha256:507a5b60953874766d8a366e8e8c7af63e058b26345cfcb5f91f89d987fd6b74"}, - {file = "pylint-3.1.0.tar.gz", hash = "sha256:6a69beb4a6f63debebaab0a3477ecd0f559aa726af4954fc948c51f7a2549e23"}, + {file = "pylint-3.2.5-py3-none-any.whl", hash = "sha256:32cd6c042b5004b8e857d727708720c54a676d1e22917cf1a2df9b4d4868abd6"}, + {file = "pylint-3.2.5.tar.gz", hash = "sha256:e9b7171e242dcc6ebd0aaa7540481d1a72860748a0a7816b8fe6cf6c80a6fe7e"}, ] [package.dependencies] -astroid = ">=3.1.0,<=3.2.0-dev0" +astroid = ">=3.2.2,<=3.3.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ {version = ">=0.2", markers = "python_version < \"3.11\""}, - {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, + {version = ">=0.3.7", markers = "python_version >= \"3.12\""}, + {version = ">=0.3.6", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, ] isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" mccabe = ">=0.6,<0.8" @@ -1453,13 +1478,13 @@ tqdm = "*" [[package]] name = "pytest" -version = "8.1.1" +version = "8.2.2" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.1.1-py3-none-any.whl", hash = "sha256:2a8386cfc11fa9d2c50ee7b2a57e7d898ef90470a7a34c4b949ff59662bb78b7"}, - {file = "pytest-8.1.1.tar.gz", hash = "sha256:ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044"}, + {file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, + {file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, ] [package.dependencies] @@ -1467,11 +1492,11 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=1.4,<2.0" +pluggy = ">=1.5,<2.0" tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-cov" @@ -1493,17 +1518,17 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale [[package]] name = "pytest-mock" -version = "3.12.0" +version = "3.14.0" description = "Thin-wrapper around the mock package for easier use with pytest" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-mock-3.12.0.tar.gz", hash = "sha256:31a40f038c22cad32287bb43932054451ff5583ff094bca6f675df2f8bc1a6e9"}, - {file = "pytest_mock-3.12.0-py3-none-any.whl", hash = "sha256:0972719a7263072da3a21c7f4773069bcc7486027d7e8e1f81d98a47e701bc4f"}, + {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, + {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, ] [package.dependencies] -pytest = ">=5.0" +pytest = ">=6.2.5" [package.extras] dev = ["pre-commit", "pytest-asyncio", "tox"] @@ -1533,17 +1558,6 @@ files = [ {file = "python_magic-0.4.27-py2.py3-none-any.whl", hash = "sha256:c212960ad306f700aa0d01e5d7a325d20548ff97eb9920dcd29513174f0294d3"}, ] -[[package]] -name = "pytz" -version = "2024.1" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, -] - [[package]] name = "pywin32" version = "306" @@ -1592,6 +1606,7 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -1628,104 +1643,99 @@ files = [ [[package]] name = "pyzmq" -version = "25.1.2" +version = "26.0.3" description = "Python bindings for 0MQ" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"}, - {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"}, - {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"}, - {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"}, - {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"}, - {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"}, - {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"}, - {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"}, - {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"}, - {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"}, - {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"}, - {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"}, - {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"}, - {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"}, - {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"}, - {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"}, - {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"}, - {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"}, - {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"}, - {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"}, - {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"}, - {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"}, - {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"}, - {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"}, - {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"}, - {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"}, - {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"}, - {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"}, - {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"}, - {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"}, - {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"}, - {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"}, - {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"}, - {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"}, - {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"}, - {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"}, - {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"}, - {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"}, - {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"}, - {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"}, - {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"}, - {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"}, - {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"}, - {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"}, - {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"}, - {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"}, - {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"}, - {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"}, - {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"}, - {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"}, - {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"}, - {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"}, - {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"}, - {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"}, - {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"}, - {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"}, - {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"}, + {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:44dd6fc3034f1eaa72ece33588867df9e006a7303725a12d64c3dff92330f625"}, + {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:acb704195a71ac5ea5ecf2811c9ee19ecdc62b91878528302dd0be1b9451cc90"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dbb9c997932473a27afa93954bb77a9f9b786b4ccf718d903f35da3232317de"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bcb34f869d431799c3ee7d516554797f7760cb2198ecaa89c3f176f72d062be"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ece17ec5f20d7d9b442e5174ae9f020365d01ba7c112205a4d59cf19dc38ee"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ba6e5e6588e49139a0979d03a7deb9c734bde647b9a8808f26acf9c547cab1bf"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3bf8b000a4e2967e6dfdd8656cd0757d18c7e5ce3d16339e550bd462f4857e59"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2136f64fbb86451dbbf70223635a468272dd20075f988a102bf8a3f194a411dc"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e8918973fbd34e7814f59143c5f600ecd38b8038161239fd1a3d33d5817a38b8"}, + {file = "pyzmq-26.0.3-cp310-cp310-win32.whl", hash = "sha256:0aaf982e68a7ac284377d051c742610220fd06d330dcd4c4dbb4cdd77c22a537"}, + {file = "pyzmq-26.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:f1a9b7d00fdf60b4039f4455afd031fe85ee8305b019334b72dcf73c567edc47"}, + {file = "pyzmq-26.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:80b12f25d805a919d53efc0a5ad7c0c0326f13b4eae981a5d7b7cc343318ebb7"}, + {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:a72a84570f84c374b4c287183debc776dc319d3e8ce6b6a0041ce2e400de3f32"}, + {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ca684ee649b55fd8f378127ac8462fb6c85f251c2fb027eb3c887e8ee347bcd"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e222562dc0f38571c8b1ffdae9d7adb866363134299264a1958d077800b193b7"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f17cde1db0754c35a91ac00b22b25c11da6eec5746431d6e5092f0cd31a3fea9"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7c0c0b3244bb2275abe255d4a30c050d541c6cb18b870975553f1fb6f37527"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ac97a21de3712afe6a6c071abfad40a6224fd14fa6ff0ff8d0c6e6cd4e2f807a"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:88b88282e55fa39dd556d7fc04160bcf39dea015f78e0cecec8ff4f06c1fc2b5"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:72b67f966b57dbd18dcc7efbc1c7fc9f5f983e572db1877081f075004614fcdd"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4b6cecbbf3b7380f3b61de3a7b93cb721125dc125c854c14ddc91225ba52f83"}, + {file = "pyzmq-26.0.3-cp311-cp311-win32.whl", hash = "sha256:eed56b6a39216d31ff8cd2f1d048b5bf1700e4b32a01b14379c3b6dde9ce3aa3"}, + {file = "pyzmq-26.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:3191d312c73e3cfd0f0afdf51df8405aafeb0bad71e7ed8f68b24b63c4f36500"}, + {file = "pyzmq-26.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:b6907da3017ef55139cf0e417c5123a84c7332520e73a6902ff1f79046cd3b94"}, + {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:068ca17214038ae986d68f4a7021f97e187ed278ab6dccb79f837d765a54d753"}, + {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7821d44fe07335bea256b9f1f41474a642ca55fa671dfd9f00af8d68a920c2d4"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eeb438a26d87c123bb318e5f2b3d86a36060b01f22fbdffd8cf247d52f7c9a2b"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:69ea9d6d9baa25a4dc9cef5e2b77b8537827b122214f210dd925132e34ae9b12"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7daa3e1369355766dea11f1d8ef829905c3b9da886ea3152788dc25ee6079e02"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6ca7a9a06b52d0e38ccf6bca1aeff7be178917893f3883f37b75589d42c4ac20"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1b7d0e124948daa4d9686d421ef5087c0516bc6179fdcf8828b8444f8e461a77"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e746524418b70f38550f2190eeee834db8850088c834d4c8406fbb9bc1ae10b2"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:6b3146f9ae6af82c47a5282ac8803523d381b3b21caeae0327ed2f7ecb718798"}, + {file = "pyzmq-26.0.3-cp312-cp312-win32.whl", hash = "sha256:2b291d1230845871c00c8462c50565a9cd6026fe1228e77ca934470bb7d70ea0"}, + {file = "pyzmq-26.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:926838a535c2c1ea21c903f909a9a54e675c2126728c21381a94ddf37c3cbddf"}, + {file = "pyzmq-26.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:5bf6c237f8c681dfb91b17f8435b2735951f0d1fad10cc5dfd96db110243370b"}, + {file = "pyzmq-26.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c0991f5a96a8e620f7691e61178cd8f457b49e17b7d9cfa2067e2a0a89fc1d5"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dbf012d8fcb9f2cf0643b65df3b355fdd74fc0035d70bb5c845e9e30a3a4654b"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:01fbfbeb8249a68d257f601deb50c70c929dc2dfe683b754659569e502fbd3aa"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c8eb19abe87029c18f226d42b8a2c9efdd139d08f8bf6e085dd9075446db450"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5344b896e79800af86ad643408ca9aa303a017f6ebff8cee5a3163c1e9aec987"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:204e0f176fd1d067671157d049466869b3ae1fc51e354708b0dc41cf94e23a3a"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a42db008d58530efa3b881eeee4991146de0b790e095f7ae43ba5cc612decbc5"}, + {file = "pyzmq-26.0.3-cp37-cp37m-win32.whl", hash = "sha256:8d7a498671ca87e32b54cb47c82a92b40130a26c5197d392720a1bce1b3c77cf"}, + {file = "pyzmq-26.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:3b4032a96410bdc760061b14ed6a33613ffb7f702181ba999df5d16fb96ba16a"}, + {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2cc4e280098c1b192c42a849de8de2c8e0f3a84086a76ec5b07bfee29bda7d18"}, + {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5bde86a2ed3ce587fa2b207424ce15b9a83a9fa14422dcc1c5356a13aed3df9d"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:34106f68e20e6ff253c9f596ea50397dbd8699828d55e8fa18bd4323d8d966e6"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ebbbd0e728af5db9b04e56389e2299a57ea8b9dd15c9759153ee2455b32be6ad"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6b1d1c631e5940cac5a0b22c5379c86e8df6a4ec277c7a856b714021ab6cfad"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e891ce81edd463b3b4c3b885c5603c00141151dd9c6936d98a680c8c72fe5c67"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9b273ecfbc590a1b98f014ae41e5cf723932f3b53ba9367cfb676f838038b32c"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b32bff85fb02a75ea0b68f21e2412255b5731f3f389ed9aecc13a6752f58ac97"}, + {file = "pyzmq-26.0.3-cp38-cp38-win32.whl", hash = "sha256:f6c21c00478a7bea93caaaef9e7629145d4153b15a8653e8bb4609d4bc70dbfc"}, + {file = "pyzmq-26.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:3401613148d93ef0fd9aabdbddb212de3db7a4475367f49f590c837355343972"}, + {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:2ed8357f4c6e0daa4f3baf31832df8a33334e0fe5b020a61bc8b345a3db7a606"}, + {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1c8f2a2ca45292084c75bb6d3a25545cff0ed931ed228d3a1810ae3758f975f"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b63731993cdddcc8e087c64e9cf003f909262b359110070183d7f3025d1c56b5"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3cd31f859b662ac5d7f4226ec7d8bd60384fa037fc02aee6ff0b53ba29a3ba8"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:115f8359402fa527cf47708d6f8a0f8234f0e9ca0cab7c18c9c189c194dbf620"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:715bdf952b9533ba13dfcf1f431a8f49e63cecc31d91d007bc1deb914f47d0e4"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e1258c639e00bf5e8a522fec6c3eaa3e30cf1c23a2f21a586be7e04d50c9acab"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:15c59e780be8f30a60816a9adab900c12a58d79c1ac742b4a8df044ab2a6d920"}, + {file = "pyzmq-26.0.3-cp39-cp39-win32.whl", hash = "sha256:d0cdde3c78d8ab5b46595054e5def32a755fc028685add5ddc7403e9f6de9879"}, + {file = "pyzmq-26.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:ce828058d482ef860746bf532822842e0ff484e27f540ef5c813d516dd8896d2"}, + {file = "pyzmq-26.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:788f15721c64109cf720791714dc14afd0f449d63f3a5487724f024345067381"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c18645ef6294d99b256806e34653e86236eb266278c8ec8112622b61db255de"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e6bc96ebe49604df3ec2c6389cc3876cabe475e6bfc84ced1bf4e630662cb35"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:971e8990c5cc4ddcff26e149398fc7b0f6a042306e82500f5e8db3b10ce69f84"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8416c23161abd94cc7da80c734ad7c9f5dbebdadfdaa77dad78244457448223"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:082a2988364b60bb5de809373098361cf1dbb239623e39e46cb18bc035ed9c0c"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d57dfbf9737763b3a60d26e6800e02e04284926329aee8fb01049635e957fe81"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77a85dca4c2430ac04dc2a2185c2deb3858a34fe7f403d0a946fa56970cf60a1"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c82a6d952a1d555bf4be42b6532927d2a5686dd3c3e280e5f63225ab47ac1f5"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4496b1282c70c442809fc1b151977c3d967bfb33e4e17cedbf226d97de18f709"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:e4946d6bdb7ba972dfda282f9127e5756d4f299028b1566d1245fa0d438847e6"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:03c0ae165e700364b266876d712acb1ac02693acd920afa67da2ebb91a0b3c09"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3e3070e680f79887d60feeda051a58d0ac36622e1759f305a41059eff62c6da7"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6ca08b840fe95d1c2bd9ab92dac5685f949fc6f9ae820ec16193e5ddf603c3b2"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e76654e9dbfb835b3518f9938e565c7806976c07b37c33526b574cc1a1050480"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:871587bdadd1075b112e697173e946a07d722459d20716ceb3d1bd6c64bd08ce"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d0a2d1bd63a4ad79483049b26514e70fa618ce6115220da9efdff63688808b17"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0270b49b6847f0d106d64b5086e9ad5dc8a902413b5dbbb15d12b60f9c1747a4"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:703c60b9910488d3d0954ca585c34f541e506a091a41930e663a098d3b794c67"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74423631b6be371edfbf7eabb02ab995c2563fee60a80a30829176842e71722a"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4adfbb5451196842a88fda3612e2c0414134874bffb1c2ce83ab4242ec9e027d"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3516119f4f9b8671083a70b6afaa0a070f5683e431ab3dc26e9215620d7ca1ad"}, + {file = "pyzmq-26.0.3.tar.gz", hash = "sha256:dba7d9f2e047dfa2bca3b01f4f84aa5246725203d6284e3790f2ca15fba6b40a"}, ] [package.dependencies] @@ -1768,13 +1778,13 @@ sphinx = ">=1.3.1" [[package]] name = "referencing" -version = "0.34.0" +version = "0.35.1" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.34.0-py3-none-any.whl", hash = "sha256:d53ae300ceddd3169f1ffa9caf2cb7b769e92657e4fafb23d34b93679116dfd4"}, - {file = "referencing-0.34.0.tar.gz", hash = "sha256:5773bd84ef41799a5a8ca72dc34590c041eb01bf9aa02632b4a973fb0181a844"}, + {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, + {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, ] [package.dependencies] @@ -1783,13 +1793,13 @@ rpds-py = ">=0.7.0" [[package]] name = "requests" -version = "2.31.0" +version = "2.32.3" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -1804,127 +1814,127 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "rpds-py" -version = "0.18.0" +version = "0.19.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"}, - {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"}, - {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"}, - {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"}, - {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"}, - {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"}, - {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"}, - {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"}, - {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"}, - {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"}, - {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"}, - {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"}, - {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"}, - {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"}, - {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"}, - {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"}, - {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"}, - {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"}, - {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"}, - {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"}, - {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"}, - {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"}, - {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"}, - {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"}, - {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"}, - {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"}, - {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"}, - {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"}, - {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"}, - {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"}, - {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"}, - {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"}, - {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"}, + {file = "rpds_py-0.19.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:fb37bd599f031f1a6fb9e58ec62864ccf3ad549cf14bac527dbfa97123edcca4"}, + {file = "rpds_py-0.19.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3384d278df99ec2c6acf701d067147320b864ef6727405d6470838476e44d9e8"}, + {file = "rpds_py-0.19.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e54548e0be3ac117595408fd4ca0ac9278fde89829b0b518be92863b17ff67a2"}, + {file = "rpds_py-0.19.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8eb488ef928cdbc05a27245e52de73c0d7c72a34240ef4d9893fdf65a8c1a955"}, + {file = "rpds_py-0.19.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5da93debdfe27b2bfc69eefb592e1831d957b9535e0943a0ee8b97996de21b5"}, + {file = "rpds_py-0.19.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:79e205c70afddd41f6ee79a8656aec738492a550247a7af697d5bd1aee14f766"}, + {file = "rpds_py-0.19.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:959179efb3e4a27610e8d54d667c02a9feaa86bbabaf63efa7faa4dfa780d4f1"}, + {file = "rpds_py-0.19.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a6e605bb9edcf010f54f8b6a590dd23a4b40a8cb141255eec2a03db249bc915b"}, + {file = "rpds_py-0.19.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9133d75dc119a61d1a0ded38fb9ba40a00ef41697cc07adb6ae098c875195a3f"}, + {file = "rpds_py-0.19.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dd36b712d35e757e28bf2f40a71e8f8a2d43c8b026d881aa0c617b450d6865c9"}, + {file = "rpds_py-0.19.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:354f3a91718489912f2e0fc331c24eaaf6a4565c080e00fbedb6015857c00582"}, + {file = "rpds_py-0.19.0-cp310-none-win32.whl", hash = "sha256:ebcbf356bf5c51afc3290e491d3722b26aaf5b6af3c1c7f6a1b757828a46e336"}, + {file = "rpds_py-0.19.0-cp310-none-win_amd64.whl", hash = "sha256:75a6076289b2df6c8ecb9d13ff79ae0cad1d5fb40af377a5021016d58cd691ec"}, + {file = "rpds_py-0.19.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6d45080095e585f8c5097897313def60caa2046da202cdb17a01f147fb263b81"}, + {file = "rpds_py-0.19.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c5c9581019c96f865483d031691a5ff1cc455feb4d84fc6920a5ffc48a794d8a"}, + {file = "rpds_py-0.19.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1540d807364c84516417115c38f0119dfec5ea5c0dd9a25332dea60b1d26fc4d"}, + {file = "rpds_py-0.19.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9e65489222b410f79711dc3d2d5003d2757e30874096b2008d50329ea4d0f88c"}, + {file = "rpds_py-0.19.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9da6f400eeb8c36f72ef6646ea530d6d175a4f77ff2ed8dfd6352842274c1d8b"}, + {file = "rpds_py-0.19.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37f46bb11858717e0efa7893c0f7055c43b44c103e40e69442db5061cb26ed34"}, + {file = "rpds_py-0.19.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:071d4adc734de562bd11d43bd134330fb6249769b2f66b9310dab7460f4bf714"}, + {file = "rpds_py-0.19.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9625367c8955e4319049113ea4f8fee0c6c1145192d57946c6ffcd8fe8bf48dd"}, + {file = "rpds_py-0.19.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e19509145275d46bc4d1e16af0b57a12d227c8253655a46bbd5ec317e941279d"}, + {file = "rpds_py-0.19.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d438e4c020d8c39961deaf58f6913b1bf8832d9b6f62ec35bd93e97807e9cbc"}, + {file = "rpds_py-0.19.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:90bf55d9d139e5d127193170f38c584ed3c79e16638890d2e36f23aa1630b952"}, + {file = "rpds_py-0.19.0-cp311-none-win32.whl", hash = "sha256:8d6ad132b1bc13d05ffe5b85e7a01a3998bf3a6302ba594b28d61b8c2cf13aaf"}, + {file = "rpds_py-0.19.0-cp311-none-win_amd64.whl", hash = "sha256:7ec72df7354e6b7f6eb2a17fa6901350018c3a9ad78e48d7b2b54d0412539a67"}, + {file = "rpds_py-0.19.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:5095a7c838a8647c32aa37c3a460d2c48debff7fc26e1136aee60100a8cd8f68"}, + {file = "rpds_py-0.19.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f2f78ef14077e08856e788fa482107aa602636c16c25bdf59c22ea525a785e9"}, + {file = "rpds_py-0.19.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7cc6cb44f8636fbf4a934ca72f3e786ba3c9f9ba4f4d74611e7da80684e48d2"}, + {file = "rpds_py-0.19.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cf902878b4af334a09de7a45badbff0389e7cf8dc2e4dcf5f07125d0b7c2656d"}, + {file = "rpds_py-0.19.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:688aa6b8aa724db1596514751ffb767766e02e5c4a87486ab36b8e1ebc1aedac"}, + {file = "rpds_py-0.19.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57dbc9167d48e355e2569346b5aa4077f29bf86389c924df25c0a8b9124461fb"}, + {file = "rpds_py-0.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b4cf5a9497874822341c2ebe0d5850fed392034caadc0bad134ab6822c0925b"}, + {file = "rpds_py-0.19.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8a790d235b9d39c70a466200d506bb33a98e2ee374a9b4eec7a8ac64c2c261fa"}, + {file = "rpds_py-0.19.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1d16089dfa58719c98a1c06f2daceba6d8e3fb9b5d7931af4a990a3c486241cb"}, + {file = "rpds_py-0.19.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:bc9128e74fe94650367fe23f37074f121b9f796cabbd2f928f13e9661837296d"}, + {file = "rpds_py-0.19.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c8f77e661ffd96ff104bebf7d0f3255b02aa5d5b28326f5408d6284c4a8b3248"}, + {file = "rpds_py-0.19.0-cp312-none-win32.whl", hash = "sha256:5f83689a38e76969327e9b682be5521d87a0c9e5a2e187d2bc6be4765f0d4600"}, + {file = "rpds_py-0.19.0-cp312-none-win_amd64.whl", hash = "sha256:06925c50f86da0596b9c3c64c3837b2481337b83ef3519e5db2701df695453a4"}, + {file = "rpds_py-0.19.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:52e466bea6f8f3a44b1234570244b1cff45150f59a4acae3fcc5fd700c2993ca"}, + {file = "rpds_py-0.19.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e21cc693045fda7f745c790cb687958161ce172ffe3c5719ca1764e752237d16"}, + {file = "rpds_py-0.19.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b31f059878eb1f5da8b2fd82480cc18bed8dcd7fb8fe68370e2e6285fa86da6"}, + {file = "rpds_py-0.19.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dd46f309e953927dd018567d6a9e2fb84783963650171f6c5fe7e5c41fd5666"}, + {file = "rpds_py-0.19.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34a01a4490e170376cd79258b7f755fa13b1a6c3667e872c8e35051ae857a92b"}, + {file = "rpds_py-0.19.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bcf426a8c38eb57f7bf28932e68425ba86def6e756a5b8cb4731d8e62e4e0223"}, + {file = "rpds_py-0.19.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f68eea5df6347d3f1378ce992d86b2af16ad7ff4dcb4a19ccdc23dea901b87fb"}, + {file = "rpds_py-0.19.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dab8d921b55a28287733263c0e4c7db11b3ee22aee158a4de09f13c93283c62d"}, + {file = "rpds_py-0.19.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6fe87efd7f47266dfc42fe76dae89060038f1d9cb911f89ae7e5084148d1cc08"}, + {file = "rpds_py-0.19.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:535d4b52524a961d220875688159277f0e9eeeda0ac45e766092bfb54437543f"}, + {file = "rpds_py-0.19.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:8b1a94b8afc154fbe36978a511a1f155f9bd97664e4f1f7a374d72e180ceb0ae"}, + {file = "rpds_py-0.19.0-cp38-none-win32.whl", hash = "sha256:7c98298a15d6b90c8f6e3caa6457f4f022423caa5fa1a1ca7a5e9e512bdb77a4"}, + {file = "rpds_py-0.19.0-cp38-none-win_amd64.whl", hash = "sha256:b0da31853ab6e58a11db3205729133ce0df26e6804e93079dee095be3d681dc1"}, + {file = "rpds_py-0.19.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5039e3cef7b3e7a060de468a4a60a60a1f31786da94c6cb054e7a3c75906111c"}, + {file = "rpds_py-0.19.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab1932ca6cb8c7499a4d87cb21ccc0d3326f172cfb6a64021a889b591bb3045c"}, + {file = "rpds_py-0.19.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2afd2164a1e85226fcb6a1da77a5c8896c18bfe08e82e8ceced5181c42d2179"}, + {file = "rpds_py-0.19.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b1c30841f5040de47a0046c243fc1b44ddc87d1b12435a43b8edff7e7cb1e0d0"}, + {file = "rpds_py-0.19.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f757f359f30ec7dcebca662a6bd46d1098f8b9fb1fcd661a9e13f2e8ce343ba1"}, + {file = "rpds_py-0.19.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15e65395a59d2e0e96caf8ee5389ffb4604e980479c32742936ddd7ade914b22"}, + {file = "rpds_py-0.19.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb0f6eb3a320f24b94d177e62f4074ff438f2ad9d27e75a46221904ef21a7b05"}, + {file = "rpds_py-0.19.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b228e693a2559888790936e20f5f88b6e9f8162c681830eda303bad7517b4d5a"}, + {file = "rpds_py-0.19.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2575efaa5d949c9f4e2cdbe7d805d02122c16065bfb8d95c129372d65a291a0b"}, + {file = "rpds_py-0.19.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:5c872814b77a4e84afa293a1bee08c14daed1068b2bb1cc312edbf020bbbca2b"}, + {file = "rpds_py-0.19.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:850720e1b383df199b8433a20e02b25b72f0fded28bc03c5bd79e2ce7ef050be"}, + {file = "rpds_py-0.19.0-cp39-none-win32.whl", hash = "sha256:ce84a7efa5af9f54c0aa7692c45861c1667080814286cacb9958c07fc50294fb"}, + {file = "rpds_py-0.19.0-cp39-none-win_amd64.whl", hash = "sha256:1c26da90b8d06227d7769f34915913911222d24ce08c0ab2d60b354e2d9c7aff"}, + {file = "rpds_py-0.19.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:75969cf900d7be665ccb1622a9aba225cf386bbc9c3bcfeeab9f62b5048f4a07"}, + {file = "rpds_py-0.19.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8445f23f13339da640d1be8e44e5baf4af97e396882ebbf1692aecd67f67c479"}, + {file = "rpds_py-0.19.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5a7c1062ef8aea3eda149f08120f10795835fc1c8bc6ad948fb9652a113ca55"}, + {file = "rpds_py-0.19.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:462b0c18fbb48fdbf980914a02ee38c423a25fcc4cf40f66bacc95a2d2d73bc8"}, + {file = "rpds_py-0.19.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3208f9aea18991ac7f2b39721e947bbd752a1abbe79ad90d9b6a84a74d44409b"}, + {file = "rpds_py-0.19.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3444fe52b82f122d8a99bf66777aed6b858d392b12f4c317da19f8234db4533"}, + {file = "rpds_py-0.19.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88cb4bac7185a9f0168d38c01d7a00addece9822a52870eee26b8d5b61409213"}, + {file = "rpds_py-0.19.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6b130bd4163c93798a6b9bb96be64a7c43e1cec81126ffa7ffaa106e1fc5cef5"}, + {file = "rpds_py-0.19.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:a707b158b4410aefb6b054715545bbb21aaa5d5d0080217290131c49c2124a6e"}, + {file = "rpds_py-0.19.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dc9ac4659456bde7c567107556ab065801622396b435a3ff213daef27b495388"}, + {file = "rpds_py-0.19.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:81ea573aa46d3b6b3d890cd3c0ad82105985e6058a4baed03cf92518081eec8c"}, + {file = "rpds_py-0.19.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3f148c3f47f7f29a79c38cc5d020edcb5ca780020fab94dbc21f9af95c463581"}, + {file = "rpds_py-0.19.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0906357f90784a66e89ae3eadc2654f36c580a7d65cf63e6a616e4aec3a81be"}, + {file = "rpds_py-0.19.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f629ecc2db6a4736b5ba95a8347b0089240d69ad14ac364f557d52ad68cf94b0"}, + {file = "rpds_py-0.19.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c6feacd1d178c30e5bc37184526e56740342fd2aa6371a28367bad7908d454fc"}, + {file = "rpds_py-0.19.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae8b6068ee374fdfab63689be0963333aa83b0815ead5d8648389a8ded593378"}, + {file = "rpds_py-0.19.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78d57546bad81e0da13263e4c9ce30e96dcbe720dbff5ada08d2600a3502e526"}, + {file = "rpds_py-0.19.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8b6683a37338818646af718c9ca2a07f89787551057fae57c4ec0446dc6224b"}, + {file = "rpds_py-0.19.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e8481b946792415adc07410420d6fc65a352b45d347b78fec45d8f8f0d7496f0"}, + {file = "rpds_py-0.19.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:bec35eb20792ea64c3c57891bc3ca0bedb2884fbac2c8249d9b731447ecde4fa"}, + {file = "rpds_py-0.19.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:aa5476c3e3a402c37779e95f7b4048db2cb5b0ed0b9d006983965e93f40fe05a"}, + {file = "rpds_py-0.19.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:19d02c45f2507b489fd4df7b827940f1420480b3e2e471e952af4d44a1ea8e34"}, + {file = "rpds_py-0.19.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a3e2fd14c5d49ee1da322672375963f19f32b3d5953f0615b175ff7b9d38daed"}, + {file = "rpds_py-0.19.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:93a91c2640645303e874eada51f4f33351b84b351a689d470f8108d0e0694210"}, + {file = "rpds_py-0.19.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5b9fc03bf76a94065299d4a2ecd8dfbae4ae8e2e8098bbfa6ab6413ca267709"}, + {file = "rpds_py-0.19.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5a4b07cdf3f84310c08c1de2c12ddadbb7a77568bcb16e95489f9c81074322ed"}, + {file = "rpds_py-0.19.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba0ed0dc6763d8bd6e5de5cf0d746d28e706a10b615ea382ac0ab17bb7388633"}, + {file = "rpds_py-0.19.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:474bc83233abdcf2124ed3f66230a1c8435896046caa4b0b5ab6013c640803cc"}, + {file = "rpds_py-0.19.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:329c719d31362355a96b435f4653e3b4b061fcc9eba9f91dd40804ca637d914e"}, + {file = "rpds_py-0.19.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef9101f3f7b59043a34f1dccbb385ca760467590951952d6701df0da9893ca0c"}, + {file = "rpds_py-0.19.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:0121803b0f424ee2109d6e1f27db45b166ebaa4b32ff47d6aa225642636cd834"}, + {file = "rpds_py-0.19.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:8344127403dea42f5970adccf6c5957a71a47f522171fafaf4c6ddb41b61703a"}, + {file = "rpds_py-0.19.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:443cec402ddd650bb2b885113e1dcedb22b1175c6be223b14246a714b61cd521"}, + {file = "rpds_py-0.19.0.tar.gz", hash = "sha256:4fdc9afadbeb393b4bbbad75481e0ea78e4469f2e1d713a90811700830b553a9"}, ] [[package]] name = "setuptools" -version = "69.2.0" +version = "71.0.3" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.2.0-py3-none-any.whl", hash = "sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c"}, - {file = "setuptools-69.2.0.tar.gz", hash = "sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e"}, + {file = "setuptools-71.0.3-py3-none-any.whl", hash = "sha256:f501b6e6db709818dc76882582d9c516bf3b67b948864c5fa1d1624c09a49207"}, + {file = "setuptools-71.0.3.tar.gz", hash = "sha256:3d8531791a27056f4a38cd3e54084d8b1c4228ff9cf3f2d7dd075ec99f9fd70d"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "ordered-set (>=3.1.1)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (<7.4)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (<0.4)", "pytest-ruff (>=0.2.1)", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -1961,38 +1971,39 @@ files = [ [[package]] name = "sphinx" -version = "6.2.1" +version = "7.4.6" description = "Python documentation generator" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "Sphinx-6.2.1.tar.gz", hash = "sha256:6d56a34697bb749ffa0152feafc4b19836c755d90a7c59b72bc7dfd371b9cc6b"}, - {file = "sphinx-6.2.1-py3-none-any.whl", hash = "sha256:97787ff1fa3256a3eef9eda523a63dbf299f7b47e053cfcf684a1c2a8380c912"}, + {file = "sphinx-7.4.6-py3-none-any.whl", hash = "sha256:915760d6188288a1e30c2cd0d9fa31b1b009bc6e6019cc0c32d16c77d20e86d9"}, + {file = "sphinx-7.4.6.tar.gz", hash = "sha256:116918d455c493fff3178edea12b4fe1c1e4894680fd81e7b7431ea21d47ca52"}, ] [package.dependencies] -alabaster = ">=0.7,<0.8" -babel = ">=2.9" -colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -docutils = ">=0.18.1,<0.20" +alabaster = ">=0.7.14,<0.8.0" +babel = ">=2.13" +colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""} +docutils = ">=0.20,<0.22" imagesize = ">=1.3" -importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} -Jinja2 = ">=3.0" -packaging = ">=21.0" -Pygments = ">=2.13" -requests = ">=2.25.0" -snowballstemmer = ">=2.0" +importlib-metadata = {version = ">=6.0", markers = "python_version < \"3.10\""} +Jinja2 = ">=3.1" +packaging = ">=23.0" +Pygments = ">=2.17" +requests = ">=2.30.0" +snowballstemmer = ">=2.2" sphinxcontrib-applehelp = "*" sphinxcontrib-devhelp = "*" sphinxcontrib-htmlhelp = ">=2.0.0" sphinxcontrib-jsmath = "*" sphinxcontrib-qthelp = "*" -sphinxcontrib-serializinghtml = ">=1.1.5" +sphinxcontrib-serializinghtml = ">=1.1.9" +tomli = {version = ">=2", markers = "python_version < \"3.11\""} [package.extras] docs = ["sphinxcontrib-websupport"] -lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"] -test = ["cython", "filelock", "html5lib", "pytest (>=4.6)"] +lint = ["flake8 (>=6.0)", "importlib-metadata (>=6.0)", "mypy (==1.10.1)", "pytest (>=6.0)", "ruff (==0.5.2)", "sphinx-lint (>=0.9)", "tomli (>=2)", "types-docutils (==0.21.0.20240711)", "types-requests (>=2.30.0)"] +test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools (>=70.0)", "typing_extensions (>=4.9)"] [[package]] name = "sphinx-basic-ng" @@ -2031,13 +2042,13 @@ rtd = ["ipython", "myst-nb", "sphinx", "sphinx-book-theme", "sphinx-examples"] [[package]] name = "sphinx-last-updated-by-git" -version = "0.3.6" +version = "0.3.7" description = "Get the \"last updated\" time for each Sphinx page from Git" optional = false python-versions = ">=3.7" files = [ - {file = "sphinx-last-updated-by-git-0.3.6.tar.gz", hash = "sha256:8f1f5c52740b14ff8481b25a2162eb0e4b144dbf871ca357ff341858390aa17c"}, - {file = "sphinx_last_updated_by_git-0.3.6-py3-none-any.whl", hash = "sha256:bc1890ec80f84607d9f77e144e26330a2c901154e7e77a2dad964f6a4bdd6329"}, + {file = "sphinx_last_updated_by_git-0.3.7-py3-none-any.whl", hash = "sha256:9937f235911aaec566a652b26952b29f530abb86f98e0fb67843227301636457"}, + {file = "sphinx_last_updated_by_git-0.3.7.tar.gz", hash = "sha256:edfd4970d9778123d3d0d9c5c9a9e3d700867a080539eb2bfe01e7078ca1dc78"}, ] [package.dependencies] @@ -2059,65 +2070,68 @@ markdown = ">=3.4" [[package]] name = "sphinxcontrib-applehelp" -version = "1.0.4" +version = "1.0.8" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, - {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"}, + {file = "sphinxcontrib_applehelp-1.0.8-py3-none-any.whl", hash = "sha256:cb61eb0ec1b61f349e5cc36b2028e9e7ca765be05e49641c97241274753067b4"}, + {file = "sphinxcontrib_applehelp-1.0.8.tar.gz", hash = "sha256:c40a4f96f3776c4393d933412053962fac2b84f4c99a7982ba42e09576a70619"}, ] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] name = "sphinxcontrib-bibtex" -version = "2.5.0" +version = "2.6.2" description = "Sphinx extension for BibTeX style citations." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "sphinxcontrib-bibtex-2.5.0.tar.gz", hash = "sha256:71b42e5db0e2e284f243875326bf9936aa9a763282277d75048826fef5b00eaa"}, - {file = "sphinxcontrib_bibtex-2.5.0-py3-none-any.whl", hash = "sha256:748f726eaca6efff7731012103417ef130ecdcc09501b4d0c54283bf5f059f76"}, + {file = "sphinxcontrib-bibtex-2.6.2.tar.gz", hash = "sha256:f487af694336f28bfb7d6a17070953a7d264bec43000a2379724274f5f8d70ae"}, + {file = "sphinxcontrib_bibtex-2.6.2-py3-none-any.whl", hash = "sha256:10d45ebbb19207c5665396c9446f8012a79b8a538cb729f895b5910ab2d0b2da"}, ] [package.dependencies] -docutils = ">=0.8" +docutils = ">=0.8,<0.18.dev0 || >=0.20.dev0" importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} pybtex = ">=0.24" pybtex-docutils = ">=1.0.0" -Sphinx = ">=2.1" +Sphinx = ">=3.5" [[package]] name = "sphinxcontrib-devhelp" -version = "1.0.2" -description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." +version = "1.0.6" +description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" optional = false -python-versions = ">=3.5" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, - {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, + {file = "sphinxcontrib_devhelp-1.0.6-py3-none-any.whl", hash = "sha256:6485d09629944511c893fa11355bda18b742b83a2b181f9a009f7e500595c90f"}, + {file = "sphinxcontrib_devhelp-1.0.6.tar.gz", hash = "sha256:9893fd3f90506bc4b97bdb977ceb8fbd823989f4316b28c3841ec128544372d3"}, ] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] name = "sphinxcontrib-htmlhelp" -version = "2.0.1" +version = "2.0.5" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, - {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"}, + {file = "sphinxcontrib_htmlhelp-2.0.5-py3-none-any.whl", hash = "sha256:393f04f112b4d2f53d93448d4bce35842f62b307ccdc549ec1585e950bc35e04"}, + {file = "sphinxcontrib_htmlhelp-2.0.5.tar.gz", hash = "sha256:0dc87637d5de53dd5eec3a6a01753b1ccf99494bd756aafecd74b4fa9e729015"}, ] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] test = ["html5lib", "pytest"] [[package]] @@ -2136,32 +2150,34 @@ test = ["flake8", "mypy", "pytest"] [[package]] name = "sphinxcontrib-qthelp" -version = "1.0.3" -description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." +version = "1.0.7" +description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" optional = false -python-versions = ">=3.5" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, - {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, + {file = "sphinxcontrib_qthelp-1.0.7-py3-none-any.whl", hash = "sha256:e2ae3b5c492d58fcbd73281fbd27e34b8393ec34a073c792642cd8e529288182"}, + {file = "sphinxcontrib_qthelp-1.0.7.tar.gz", hash = "sha256:053dedc38823a80a7209a80860b16b722e9e0209e32fea98c90e4e6624588ed6"}, ] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] name = "sphinxcontrib-serializinghtml" -version = "1.1.5" -description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." +version = "1.1.10" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" optional = false -python-versions = ">=3.5" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, - {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, + {file = "sphinxcontrib_serializinghtml-1.1.10-py3-none-any.whl", hash = "sha256:326369b8df80a7d2d8d7f99aa5ac577f51ea51556ed974e7716cfd4fca3f6cb7"}, + {file = "sphinxcontrib_serializinghtml-1.1.10.tar.gz", hash = "sha256:93f3f5dc458b91b192fe10c397e324f262cf163d79f3282c158e8436a2c4511f"}, ] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] @@ -2185,13 +2201,13 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] [[package]] name = "tinycss2" -version = "1.2.1" +version = "1.3.0" description = "A tiny CSS parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"}, - {file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"}, + {file = "tinycss2-1.3.0-py3-none-any.whl", hash = "sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"}, + {file = "tinycss2-1.3.0.tar.gz", hash = "sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d"}, ] [package.dependencies] @@ -2199,7 +2215,7 @@ webencodings = ">=0.4" [package.extras] doc = ["sphinx", "sphinx_rtd_theme"] -test = ["flake8", "isort", "pytest"] +test = ["pytest", "ruff"] [[package]] name = "tomli" @@ -2214,44 +2230,44 @@ files = [ [[package]] name = "tomlkit" -version = "0.12.4" +version = "0.13.0" description = "Style preserving TOML library" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomlkit-0.12.4-py3-none-any.whl", hash = "sha256:5cd82d48a3dd89dee1f9d64420aa20ae65cfbd00668d6f094d7578a78efbb77b"}, - {file = "tomlkit-0.12.4.tar.gz", hash = "sha256:7ca1cfc12232806517a8515047ba66a19369e71edf2439d0f5824f91032b6cc3"}, + {file = "tomlkit-0.13.0-py3-none-any.whl", hash = "sha256:7075d3042d03b80f603482d69bf0c8f345c2b30e41699fd8883227f89972b264"}, + {file = "tomlkit-0.13.0.tar.gz", hash = "sha256:08ad192699734149f5b97b45f1f18dad7eb1b6d16bc72ad0c2335772650d7b72"}, ] [[package]] name = "tornado" -version = "6.4" +version = "6.4.1" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false -python-versions = ">= 3.8" +python-versions = ">=3.8" files = [ - {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"}, - {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"}, - {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"}, - {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"}, - {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, + {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, + {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, + {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, + {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, + {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, ] [[package]] name = "tqdm" -version = "4.66.2" +version = "4.66.4" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, - {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, + {file = "tqdm-4.66.4-py3-none-any.whl", hash = "sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644"}, + {file = "tqdm-4.66.4.tar.gz", hash = "sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb"}, ] [package.dependencies] @@ -2265,39 +2281,39 @@ telegram = ["requests"] [[package]] name = "traitlets" -version = "5.14.2" +version = "5.14.3" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" files = [ - {file = "traitlets-5.14.2-py3-none-any.whl", hash = "sha256:fcdf85684a772ddeba87db2f398ce00b40ff550d1528c03c14dbf6a02003cd80"}, - {file = "traitlets-5.14.2.tar.gz", hash = "sha256:8cdd83c040dab7d1dee822678e5f5d100b514f7b72b01615b26fc5718916fdf9"}, + {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, + {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, ] [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.1)", "pytest-mock", "pytest-mypy-testing"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] [[package]] name = "typing-extensions" -version = "4.10.0" +version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, - {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] name = "urllib3" -version = "2.2.1" +version = "2.2.2" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, - {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, + {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, + {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, ] [package.extras] @@ -2306,6 +2322,47 @@ h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] +[[package]] +name = "urwid" +version = "2.6.15" +description = "A full-featured console (xterm et al.) user interface library" +optional = false +python-versions = ">3.7" +files = [ + {file = "urwid-2.6.15-py3-none-any.whl", hash = "sha256:71b3171cabaa0092902f556768756bd2f2ebb24c0da287ee08f081d235340cb7"}, + {file = "urwid-2.6.15.tar.gz", hash = "sha256:9ecc57330d88c8d9663ffd7092a681674c03ff794b6330ccfef479af7aa9671b"}, +] + +[package.dependencies] +typing-extensions = "*" +wcwidth = "*" + +[package.extras] +curses = ["windows-curses"] +glib = ["PyGObject"] +lcd = ["pyserial"] +serial = ["pyserial"] +tornado = ["tornado (>=5.0)"] +trio = ["exceptiongroup", "trio (>=0.22.0)"] +twisted = ["twisted"] +zmq = ["zmq"] + +[[package]] +name = "urwid-readline" +version = "0.14" +description = "A textbox edit widget for urwid that supports readline shortcuts" +optional = false +python-versions = "*" +files = [ + {file = "urwid_readline-0.14.tar.gz", hash = "sha256:8fabd2e501c124a30d38cfb10610b32f119a615ec0b310ae5591c583fb00bd09"}, +] + +[package.dependencies] +urwid = "*" + +[package.extras] +dev = ["black", "pytest"] + [[package]] name = "wcwidth" version = "0.2.13" @@ -2330,20 +2387,20 @@ files = [ [[package]] name = "zipp" -version = "3.18.1" +version = "3.19.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, - {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, + {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, + {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [metadata] lock-version = "2.0" -python-versions = ">=3.8, <3.12" -content-hash = "4fa0f360c271ce48055620095f494c26f2ff71e1d7d833d8265deb84bfb6a177" +python-versions = ">=3.9, <3.13" +content-hash = "ebd3a02f8ef70846f069a1cc0857af965798b6ead12764f6315c1d40a3e481c8" diff --git a/pyproject.toml b/pyproject.toml index d033867..dad2740 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "qibosoq" -version = "0.1.3" +version = "0.1.4" description = "QIBO Server On Qick (qibosoq) is the server component of qibolab to be run on RFSoC boards" authors = [ "Rodolfo Carobene ", @@ -18,19 +18,31 @@ classifiers = [ packages = [{ include = "qibosoq", from = "src" }] [tool.poetry.dependencies] -python = ">=3.8, <3.12" +python = ">=3.9, <3.13" qick = ">=0.2.211, <=0.2.249" +numpy = "^1.26" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" +[tool.poetry.group.dev.dependencies] +ipython = "^8.12.0" +pudb = "^2024.1.1" + +[tool.poetry.group.analysis] +optional = true + +[tool.poetry.group.analysis.dependencies] +pylint = ">=2.16.0" +mypy = "^1.10.1" + [tool.poetry.group.docs] optional = true [tool.poetry.group.docs.dependencies] ipython = "^8.12.0" -sphinx = "^6.1.3" +sphinx = "^7.4.6" furo = "^2023.3.27" recommonmark = "^0.7.1" sphinxcontrib-bibtex = "^2.5.0" @@ -47,16 +59,11 @@ pytest = ">=7.2.2" pytest-cov = "^4.0.0" pytest-mock = ">=3.10.0" -[tool.poetry.group.analysis] -optional = true - -[tool.poetry.group.analysis.dependencies] -pylint = ">=2.16.0" - [tool.poe.tasks] test = "pytest" lint = "pylint src --errors-only" lint-warnings = "pylint src --exit-zero" +mypy = "mypy src/" docs = "make -C doc html" docs-clean = "make -C doc clean" test-docs = "make -C doc doctest" @@ -66,5 +73,5 @@ testpaths = ['tests/'] addopts = ['--cov=qibosoq', '--cov-report=xml', '--cov-report=html'] [[tool.mypy.overrides]] -module="qick.*" +module = "qick.*" ignore_missing_imports = true diff --git a/src/qibosoq/components/pulses.py b/src/qibosoq/components/pulses.py index 17f5bb9..c5633c2 100644 --- a/src/qibosoq/components/pulses.py +++ b/src/qibosoq/components/pulses.py @@ -144,6 +144,19 @@ def i_values(self, duration: int, max_gain: int): return amp * i_vals / (1 + self.weight) +@dataclass +class Hann(Pulse): + """Hann function.""" + + shape: str = "hann" + + def i_values(self, duration: int, max_gain: int): + """Compute the waveform i values.""" + amp = int(self.amplitude * max_gain) + i_vals = np.sin(np.pi * np.arange(0, 1, 1 / duration)) ** 2 + return amp * i_vals + + @dataclass class Arbitrary(Pulse): """Custom pulse.""" @@ -164,6 +177,7 @@ class Shape(Enum): RECTANGULAR = Rectangular GAUSSIAN = Gaussian DRAG = Drag + HANN = Hann FLUXEXPONENTIAL = FluxExponential FLATTOP = FlatTop ARBITRARY = Arbitrary diff --git a/src/qibosoq/programs/base.py b/src/qibosoq/programs/base.py index 07325f8..f037809 100644 --- a/src/qibosoq/programs/base.py +++ b/src/qibosoq/programs/base.py @@ -16,6 +16,7 @@ Element, FlatTop, Gaussian, + Hann, Measurement, Pulse, Rectangular, @@ -151,6 +152,8 @@ def add_pulse_to_register(self, pulse: Pulse): length=soc_length, ) + elif isinstance(pulse, Hann): + self.add_pulse(gen_ch, name, pulse.i_values(soc_length, max_gain)) elif isinstance(pulse, Arbitrary): self.add_pulse(gen_ch, name, pulse.i_values, pulse.q_values) self.registered_waveforms[gen_ch].append(name) @@ -264,13 +267,7 @@ def collect_shots(self) -> Tuple[list, list]: lengths.append(self.soc.us2cycles(elem.duration, gen_ch=ro_ch)) adcs.append(adc_ch) - unique_adcs, adc_count = np.unique(adcs, return_counts=True) - - len_acq = len(self.di_buf[0]) // len(unique_adcs) - stacked = ( - np.stack((self.di_buf, self.dq_buf))[:, :, :len_acq] - / np.array(lengths)[:, np.newaxis] - ) + _, adc_count = np.unique(adcs, return_counts=True) tot = [] for idx, count in enumerate(adc_count.astype(int)): @@ -288,7 +285,12 @@ def collect_shots(self) -> Tuple[list, list]: # (adc_channels, number_of_readouts, number_of_shots) shape = (2, count, self.reps) - tot.append(stacked[:, idx].reshape(shape).tolist()) + stacked = ( + np.stack((self.di_buf[idx], self.dq_buf[idx]))[:, : np.prod(shape[1:])] + / np.array(lengths)[:, np.newaxis] + ) + + tot.append(stacked.reshape(shape).tolist()) return tuple(list(x) for x in zip(*tot)) # type: ignore diff --git a/src/qibosoq/programs/sweepers.py b/src/qibosoq/programs/sweepers.py index b4c9cd0..72982c2 100644 --- a/src/qibosoq/programs/sweepers.py +++ b/src/qibosoq/programs/sweepers.py @@ -74,41 +74,51 @@ def validate(self, sweeper: Sweeper): "Sweepers on flux pulses are not implemented." ) - def add_sweep_info(self, sweeper: Sweeper): - """Register RfsocSweep objects. + def add_sweep_info_bias(self, sweeper: Sweeper) -> List[Sweeper]: + """Generate RfsocSweep objects for biases. Args: sweeper: single qibolab sweeper object to register """ - self.validate(sweeper) sweep_list = [] + for idx, jdx in enumerate(sweeper.indexes): + gen_ch = self.qubits[jdx].dac + if gen_ch is None: + raise ValueError("Qubit dac (flux bias) not provided.") + sweep_type = "gain" + std_register = self.get_gen_reg(gen_ch, sweep_type) + swept_register = self.new_gen_reg(gen_ch, name=f"sweep_bias_{gen_ch}") + self.bias_sweep_registers[gen_ch] = (swept_register, std_register) + + max_gain = int(self.soccfg["gens"][gen_ch]["maxv"]) + starts = (sweeper.starts * max_gain).astype(int) + stops = (sweeper.stops * max_gain).astype(int) - if sweeper.parameters[0] is Parameter.BIAS: - for idx, jdx in enumerate(sweeper.indexes): - gen_ch = self.qubits[jdx].dac - if gen_ch is None: - raise ValueError("Qubit dac (flux bias) not provided.") - sweep_type = "gain" - std_register = self.get_gen_reg(gen_ch, sweep_type) - swept_register = self.new_gen_reg(gen_ch, name=f"sweep_bias_{gen_ch}") - self.bias_sweep_registers[gen_ch] = (swept_register, std_register) + new_sweep = QickSweep( + self, + swept_register, # sweeper_register + starts[idx], # start + stops[idx], # stop + sweeper.expts, # number of points + ) + sweep_list.append(new_sweep) + return sweep_list - max_gain = int(self.soccfg["gens"][gen_ch]["maxv"]) - starts = (sweeper.starts * max_gain).astype(int) - stops = (sweeper.stops * max_gain).astype(int) + def add_sweep_info(self, sweeper: Sweeper): + """Register RfsocSweep objects. - new_sweep = QickSweep( - self, - swept_register, # sweeper_register - starts[idx], # start - stops[idx], # stop - sweeper.expts, # number of points - ) - sweep_list.append(new_sweep) + Args: + sweeper: single qibolab sweeper object to register + """ + self.validate(sweeper) - self.add_sweep(merge_sweeps(sweep_list)) + if sweeper.parameters[0] is Parameter.BIAS: + sweep_list = self.add_sweep_info_bias(sweeper) + merged = merge_sweeps(sweep_list) + self.add_sweep(merged) return + sweep_list = [] for idx, jdx in enumerate(sweeper.indexes): pulse = self.sequence[jdx] gen_ch = pulse.dac @@ -137,7 +147,8 @@ def add_sweep_info(self, sweeper: Sweeper): ) sweep_list.append(new_sweep) - self.add_sweep(merge_sweeps(sweep_list)) + merged = merge_sweeps(sweep_list) + self.add_sweep(merged) def initialize(self): """Declre nyquist zones for all the DACs and all the readout frequencies.