From 5fe0471929c9e72e42b53e8d91764af6923d1114 Mon Sep 17 00:00:00 2001 From: Melvin Date: Tue, 3 Dec 2024 13:25:21 +0100 Subject: [PATCH] feat: ported aesara to pytensor --- .github/workflows/bump_n_publish.yml | 57 + .github/workflows/tests.yml | 8 +- docs/getting_started/index.md | 4 +- docs/getting_started/quick-start.md | 2 +- docs/user_guide/configuration.md | 12 +- docs/user_guide/index.md | 8 +- environment.yml | 15 +- examples/swissmetro_mnl.ipynb | 886 +------- poetry.lock | 3082 ++++++++++++++++++++++++++ pycmtensor/__init__.py | 14 +- pycmtensor/dataset.py | 4 +- pycmtensor/defaultconfig.py | 12 +- pycmtensor/expressions.py | 30 +- pycmtensor/functions.py | 4 +- pycmtensor/models/MNL.py | 10 +- pycmtensor/models/ResLogit.py | 16 +- pycmtensor/models/TasteNet.py | 14 +- pycmtensor/models/basic.py | 12 +- pycmtensor/models/layers.py | 2 +- pycmtensor/optimizers.py | 24 +- pycmtensor/regularizers.py | 2 +- pyproject.toml | 8 +- tests/check_cuda.py | 4 +- tests/test_core.py | 18 +- tests/test_dataset.py | 4 +- tests/test_expressions.py | 14 +- tests/test_functions.py | 20 +- 27 files changed, 3288 insertions(+), 998 deletions(-) create mode 100644 .github/workflows/bump_n_publish.yml create mode 100644 poetry.lock diff --git a/.github/workflows/bump_n_publish.yml b/.github/workflows/bump_n_publish.yml new file mode 100644 index 0000000..920c1ee --- /dev/null +++ b/.github/workflows/bump_n_publish.yml @@ -0,0 +1,57 @@ +# This workflow will bump the version of the package and publish it to PyPI + +name: Bump and publish + +on: + workflow_dispatch: + # push: + # branches: + # - master + +jobs: + bump_version: + if: ${{ !startsWith(github.event.head_commit.message, 'bump:') }} + strategy: + matrix: + python-version: ["3.11"] + poetry-version: ["1.5.1"] + runs-on: "ubuntu-latest" + name: "Bump version and create changelog with commitizen" + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: "${{ secrets.GITHUB_TOKEN }}" + - name: Create bump and changelog + uses: commitizen-tools/commitizen-action@master + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + changelog_increment_filename: body.md + - name: Print Version + run: echo "Bumped to version ${{ steps.cz.outputs.version }}" + - name: Release + uses: softprops/action-gh-release@v1 + with: + body_path: "body.md" + tag_name: v${{ env.REVISION }} + generate_release_notes: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # deploy step + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Python Poetry Action + uses: abatilo/actions-poetry@v2 + with: + poetry-version: ${{ matrix.poetry-version }} + - name: Publish to PyPI + run: | + poetry config pypi-token.pypi "${{ secrets.PYPI_API_KEY }}" + poetry publish --build + + + diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6b17d86..7127b42 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -46,12 +46,12 @@ jobs: - name: Test pycmtensor import run: | python -c "import pycmtensor as cmt; print(cmt.__version__)" - cat ~/.aesararc + cat ~/.pytensorrc - - name: Show Aesara config + - name: Show pytensor config run: | - python -c "import aesara; print(aesara.config.blas__ldflags)" - python -c "import aesara; print(aesara.config.gcc__cxxflags)" + python -c "import pytensor; print(pytensor.config.blas__ldflags)" + python -c "import pytensor; print(pytensor.config.gcc__cxxflags)" - name: Main test run: pytest diff --git a/docs/getting_started/index.md b/docs/getting_started/index.md index f0b9c2c..1f1e3e3 100644 --- a/docs/getting_started/index.md +++ b/docs/getting_started/index.md @@ -13,13 +13,13 @@ While these advanced Python deep learning libraries can be used to evaluate choi ### What can PyCMTensor do? -PyCMTensor can be used for specifying, estimating, and conducting statistical tests on hybrid discrete choice models. It uses optimized tensor operations through [Aesara](https://aesara.readthedocs.io/en/latest/). +PyCMTensor can be used for specifying, estimating, and conducting statistical tests on hybrid discrete choice models. It uses optimized tensor operations through [pytensor](https://pytensor.readthedocs.io/en/latest/). The library is built for estimating hybrid neural networks, Logit models, and Mixed Logit models. The models in PyCMTensor are built on computational graphs and are estimated using backpropagation algorithms. ## Project goals -PyCMTensor aims to combine the interpretability of choice modelling syntaxes and expressions with the computational efficiency of Aesara tensor libraries. It specializes in defining 'hybrid' utility expressions and simplifies the process of integrating a deep neural network into choice models such as TasteNet or ResLogit. Unlike other deep learning libraries, PyCMTensor focuses on econometric modelling and statistical testing over purely predictive or classification models. +PyCMTensor aims to combine the interpretability of choice modelling syntaxes and expressions with the computational efficiency of pytensor tensor libraries. It specializes in defining 'hybrid' utility expressions and simplifies the process of integrating a deep neural network into choice models such as TasteNet or ResLogit. Unlike other deep learning libraries, PyCMTensor focuses on econometric modelling and statistical testing over purely predictive or classification models. The objectives of this project include: diff --git a/docs/getting_started/quick-start.md b/docs/getting_started/quick-start.md index 2c475ab..2db101b 100644 --- a/docs/getting_started/quick-start.md +++ b/docs/getting_started/quick-start.md @@ -124,7 +124,7 @@ The `Beta(name=, value=, lb=, ub=, status=)` object takes the following argument ``` !!! info - `pycmtensor.expressions.Beta` follows the same syntax as in [Biogeme]() `biogeme.expressions.Beta` for familiarity sake. However, `pycmtensor.expressions.Beta` uses `aesara.tensor` variables to define the mathematical ops. Currently they are not interchangable. + `pycmtensor.expressions.Beta` follows the same syntax as in [Biogeme]() `biogeme.expressions.Beta` for familiarity sake. However, `pycmtensor.expressions.Beta` uses `pytensor.tensor` variables to define the mathematical ops. Currently they are not interchangable. ## Specifying utility equations diff --git a/docs/user_guide/configuration.md b/docs/user_guide/configuration.md index 0737a46..422c971 100644 --- a/docs/user_guide/configuration.md +++ b/docs/user_guide/configuration.md @@ -150,14 +150,14 @@ pycmtensor.config.add('seed', 100) Default: `True` -## Aesara config +## pytensor config -PyCMTensor uses the `aesara` library, which has its own set of configurations. We use the following by default: +PyCMTensor uses the `pytensor` library, which has its own set of configurations. We use the following by default: -`aesara.config.on_unused_input = "ignore"` +`pytensor.config.on_unused_input = "ignore"` -`aesara.config.mode = "Mode"` +`pytensor.config.mode = "Mode"` -`aesara.config.allow_gc = False` +`pytensor.config.allow_gc = False` -Refer to https://aesara.readthedocs.io/en/latest/config.html for other options. +Refer to https://pytensor.readthedocs.io/en/latest/config.html for other options. diff --git a/docs/user_guide/index.md b/docs/user_guide/index.md index 0302e4e..326fa1d 100644 --- a/docs/user_guide/index.md +++ b/docs/user_guide/index.md @@ -10,9 +10,9 @@ The entire model is build as a computational graph with nodes representing inter The graph is then manipulated internally and optimized during compilation. When an input is provided to certain tensors, the graph computes the values for other symbols in the graph. -The core API library, Aesara, gives us a set of tools that takes the defined symbolic tensors, constructs a computational graph and optimizes the mathematical operations around it. +The core API library, pytensor, gives us a set of tools that takes the defined symbolic tensors, constructs a computational graph and optimizes the mathematical operations around it. -As a developer, you define or extend a new model by creating new tensor variable objects from primitive tensors. For instance, take a basic linear equation, $y = bx +c$. The variables $y$, $x$, and $c$ are symbolic tensors making up a computational graph, and $b$ is a shared variable consisting of a mutable defined value. When we call `train(y)`, an Aesara function is executed on the equation and an update value is passed to $b$. +As a developer, you define or extend a new model by creating new tensor variable objects from primitive tensors. For instance, take a basic linear equation, $y = bx +c$. The variables $y$, $x$, and $c$ are symbolic tensors making up a computational graph, and $b$ is a shared variable consisting of a mutable defined value. When we call `train(y)`, an pytensor function is executed on the equation and an update value is passed to $b$. A PyCMTensor model is composed of @@ -28,7 +28,7 @@ This symbolic approach does add complexity, however, the tradeoffs are that a. m ### `Beta` -A `Beta` variable is the main data object when estimate a PyCMTensor model. `Beta` inherits the `TensorExpression` class which adds Aesara tensor operations to the data object. A `Beta` is defined as such: +A `Beta` variable is the main data object when estimate a PyCMTensor model. `Beta` inherits the `TensorExpression` class which adds pytensor tensor operations to the data object. A `Beta` is defined as such: ```python Beta(name, value, lb, ub, status) @@ -40,7 +40,7 @@ In mathematical operations, for instance: ```python from pycmtensor.expressions import Beta -import aesara.tensor as aet +import pytensor.tensor as aet import numpy as np beta_cost = Beta("beta_cost", 2.) train_cost = aet.vector("train_cost") diff --git a/environment.yml b/environment.yml index 6878d4e..4fa3da0 100644 --- a/environment.yml +++ b/environment.yml @@ -1,14 +1,13 @@ -name: pycmtensor-dev +name: pytensor-dev channels: - conda-forge - defaults dependencies: # core dependencies - python>=3.9,<3.13 - - aesara=2.9.3 - - numpy<1.26.0 - - scipy<1.12.0 - - pandas<2.1.0 + - pytensor<2.27.0 + - scipy<1.15.0 + - pandas<2.3.0 - seaborn<0.14.0 - scikit-learn<1.6.0 @@ -17,10 +16,10 @@ dependencies: # remove any old environment -# conda env remove -n pycmtensor-dev +# conda env remove -n pytensor-dev -y -# install the environment -# conda env create -f environment.yml && conda activate pycmtensor-dev +# navigate to this directory and install the environment +# conda env create -n pytensor-dev && conda activate pytensor-dev # development # conda install git ipykernel poetry diff --git a/examples/swissmetro_mnl.ipynb b/examples/swissmetro_mnl.ipynb index 48de5b9..1c0a405 100644 --- a/examples/swissmetro_mnl.ipynb +++ b/examples/swissmetro_mnl.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -19,18 +19,9 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "PyCMTensor : 1.13.2\n", - "Aesara : 2.9.3\n" - ] - } - ], + "outputs": [], "source": [ "# import packages\n", "import pandas as pd\n", @@ -48,20 +39,9 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "10:01:12 [INFO] CHOICE: {0: 1423, 1: 6216, 2: 3080}\n", - "10:01:12 [INFO] seed: 100 n_train_samples:8575 n_valid_samples:2144\n", - "10:01:13 [INFO] inputs in MNL: [TRAIN_AV, CAR_AV, SM_AV, TRAIN_TT, TRAIN_CO, SM_TT, SM_CO, SM_SEATS, CAR_TT, CAR_CO]\n", - "10:01:13 [INFO] Build time = 00:00:01\n" - ] - } - ], + "outputs": [], "source": [ "# read the data and load it into a dataset\n", "df = pd.read_csv('http://transp-or.epfl.ch/data/swissmetro.dat', sep='\\t')\n", @@ -124,34 +104,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "10:01:16 [INFO] Start (n=8575, epoch=0, NLL=-8869.17, error=86.29%)\n", - "10:01:16 [INFO] Train 0/2K (epoch=0, LL=-8735.75, error=42.77%, gnorm=2.646e-02)\n", - "10:01:18 [INFO] Train 127/2K (epoch=127, LL=-7267.84, error=42.58%, gnorm=7.046e-03)\n", - "10:01:18 [INFO] Train 135/2K (epoch=135, LL=-7252.65, error=42.35%, gnorm=6.848e-03)\n", - "10:01:18 [INFO] Train 169/2K (epoch=169, LL=-7199.92, error=41.56%, gnorm=6.041e-03)\n", - "10:01:18 [INFO] Train 200/2K (epoch=200, LL=-7164.60, error=40.72%, gnorm=5.362e-03)\n", - "10:01:18 [INFO] Train 202/2K (epoch=202, LL=-7162.65, error=40.53%, gnorm=5.320e-03)\n", - "10:01:19 [INFO] Train 204/2K (epoch=204, LL=-7160.74, error=40.49%, gnorm=5.279e-03)\n", - "10:01:19 [INFO] Train 207/2K (epoch=207, LL=-7157.93, error=40.30%, gnorm=5.218e-03)\n", - "10:01:19 [INFO] Train 209/2K (epoch=209, LL=-7156.10, error=40.16%, gnorm=5.178e-03)\n", - "10:01:19 [INFO] Train 211/2K (epoch=211, LL=-7154.30, error=40.02%, gnorm=5.138e-03)\n", - "10:01:19 [INFO] Train 224/2K (epoch=224, LL=-7143.37, error=39.51%, gnorm=4.882e-03)\n", - "10:01:19 [INFO] Train 239/2K (epoch=239, LL=-7132.25, error=39.04%, gnorm=4.598e-03)\n", - "10:01:19 [INFO] Train 241/2K (epoch=241, LL=-7130.88, error=38.90%, gnorm=4.561e-03)\n", - "10:01:25 [INFO] Train 743/2K (epoch=743, LL=-7044.91, error=37.17%, gnorm=1.055e-03)\n", - "10:01:25 [INFO] Train 768/2K (epoch=768, LL=-7044.28, error=37.08%, gnorm=9.986e-04)\n", - "10:01:25 [INFO] Model converged (t=9.326), gnorm < 0.001\n", - "10:01:26 [INFO] Best results obtained at epoch 474: LL=-7060.98, error=37.08%, gnorm=1.88409e-03\n" - ] - } - ], + "outputs": [], "source": [ "# Train model\n", "model.reset_values()\n", @@ -167,357 +122,9 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
valuestd errt-testp-valuerob. std errrob. t-testrob. p-value
ASC_CAR0.0------
ASC_SM0.0410.0430.9530.3410.0470.8580.391
ASC_TRAIN-0.4160.057-7.240.00.059-7.0960.0
B_COST0.0150.0026.050.00.0027.3430.0
B_SEAT-0.0120.076-0.1620.8710.085-0.1460.884
B_TIME_CAR-0.9780.05-19.4810.00.061-16.0260.0
B_TIME_SM-1.1270.065-17.3010.00.103-10.9130.0
B_TIME_TRAIN-1.2710.062-20.4610.00.071-17.9360.0
\n", - "
" - ], - "text/plain": [ - " value std err t-test p-value rob. std err rob. t-test \\\n", - "ASC_CAR 0.0 - - - - - \n", - "ASC_SM 0.041 0.043 0.953 0.341 0.047 0.858 \n", - "ASC_TRAIN -0.416 0.057 -7.24 0.0 0.059 -7.096 \n", - "B_COST 0.015 0.002 6.05 0.0 0.002 7.343 \n", - "B_SEAT -0.012 0.076 -0.162 0.871 0.085 -0.146 \n", - "B_TIME_CAR -0.978 0.05 -19.481 0.0 0.061 -16.026 \n", - "B_TIME_SM -1.127 0.065 -17.301 0.0 0.103 -10.913 \n", - "B_TIME_TRAIN -1.271 0.062 -20.461 0.0 0.071 -17.936 \n", - "\n", - " rob. p-value \n", - "ASC_CAR - \n", - "ASC_SM 0.391 \n", - "ASC_TRAIN 0.0 \n", - "B_COST 0.0 \n", - "B_SEAT 0.884 \n", - "B_TIME_CAR 0.0 \n", - "B_TIME_SM 0.0 \n", - "B_TIME_TRAIN 0.0 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
value
Number of training samples used8575
Number of validation samples used2144
Number of estimated parameters in the model8
Null log likelihood-8869.17
Init. log likelihood-8869.17
Final log likelihood-7060.98
Validation Accuracy62.92%
Training Accuracy62.65%
Likelihood ratio test3616.37
F10.559
Rho square0.204
Rho square bar0.203
Akaike Information Criterion14137.97
Bayesian Information Criterion14194.42
Final gradient norm1.884e-03
Maximum epochs reachedNo
Best result at epoch474
\n", - "
" - ], - "text/plain": [ - " value\n", - "Number of training samples used 8575\n", - "Number of validation samples used 2144\n", - "Number of estimated parameters in the model 8\n", - "Null log likelihood -8869.17\n", - "Init. log likelihood -8869.17\n", - "Final log likelihood -7060.98\n", - "Validation Accuracy 62.92%\n", - "Training Accuracy 62.65%\n", - "Likelihood ratio test 3616.37\n", - "F1 0.559\n", - "Rho square 0.204\n", - "Rho square bar 0.203\n", - "Akaike Information Criterion 14137.97\n", - "Bayesian Information Criterion 14194.42\n", - "Final gradient norm 1.884e-03\n", - "Maximum epochs reached No\n", - "Best result at epoch 474" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
value
PlatformWindows 10.0.22631
ProcessorIntel64
RAM15.34 GB
Python version3.11.9
PyCMTensor version1.13.2
Seed100
Model build time00:00:01
Model train time00:00:09
Optimal train time00:00:06
epochs per sec82.46 epoch/s
\n", - "
" - ], - "text/plain": [ - " value\n", - "Platform Windows 10.0.22631\n", - "Processor Intel64\n", - "RAM 15.34 GB\n", - "Python version 3.11.9\n", - "PyCMTensor version 1.13.2\n", - "Seed 100\n", - "Model build time 00:00:01\n", - "Model train time 00:00:09\n", - "Optimal train time 00:00:06\n", - "epochs per sec 82.46 epoch/s" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "display(model.results.beta_statistics())\n", "display(model.results.model_statistics())\n", @@ -533,159 +140,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ASC_TRAINASC_SMASC_CARB_COSTB_TIME_TRAINB_TIME_SMB_TIME_CARB_SEAT
ASC_TRAIN1.000-0.552-0.690-0.051-0.777-0.0050.1250.183
ASC_SM-0.5521.000-0.223-0.1970.513-0.2750.392-0.287
ASC_CAR-0.690-0.2231.0000.2310.4630.245-0.4860.035
B_COST-0.051-0.1970.2311.0000.0090.062-0.132-0.141
B_TIME_TRAIN-0.7770.5130.4630.0091.0000.4470.365-0.105
B_TIME_SM-0.005-0.2750.2450.0620.4471.0000.5170.052
B_TIME_CAR0.1250.392-0.486-0.1320.3650.5171.000-0.076
B_SEAT0.183-0.2870.035-0.141-0.1050.052-0.0761.000
\n", - "
" - ], - "text/plain": [ - " ASC_TRAIN ASC_SM ASC_CAR B_COST B_TIME_TRAIN B_TIME_SM \\\n", - "ASC_TRAIN 1.000 -0.552 -0.690 -0.051 -0.777 -0.005 \n", - "ASC_SM -0.552 1.000 -0.223 -0.197 0.513 -0.275 \n", - "ASC_CAR -0.690 -0.223 1.000 0.231 0.463 0.245 \n", - "B_COST -0.051 -0.197 0.231 1.000 0.009 0.062 \n", - "B_TIME_TRAIN -0.777 0.513 0.463 0.009 1.000 0.447 \n", - "B_TIME_SM -0.005 -0.275 0.245 0.062 0.447 1.000 \n", - "B_TIME_CAR 0.125 0.392 -0.486 -0.132 0.365 0.517 \n", - "B_SEAT 0.183 -0.287 0.035 -0.141 -0.105 0.052 \n", - "\n", - " B_TIME_CAR B_SEAT \n", - "ASC_TRAIN 0.125 0.183 \n", - "ASC_SM 0.392 -0.287 \n", - "ASC_CAR -0.486 0.035 \n", - "B_COST -0.132 -0.141 \n", - "B_TIME_TRAIN 0.365 -0.105 \n", - "B_TIME_SM 0.517 0.052 \n", - "B_TIME_CAR 1.000 -0.076 \n", - "B_SEAT -0.076 1.000 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "display(model.results.model_correlation_matrix())\n", "# display(model.results.model_robust_correlation_matrix())" @@ -700,151 +157,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
train_lltrain_errorvalid_errorlearning_rate
0-8735.7495020.4181920.4277050.01
1-8629.9379440.4181920.4277050.01
2-8546.0009710.4181920.4277050.01
3-8476.1517810.4181920.4277050.01
4-8413.0230650.4181920.4277050.01
...............
764-7044.3790330.3709620.3717350.01
765-7044.3551670.3709620.3712690.01
766-7044.3314340.3709620.3712690.01
767-7044.3078340.3709620.3712690.01
768-7044.2843660.3709620.3708020.01
\n", - "

769 rows × 4 columns

\n", - "
" - ], - "text/plain": [ - " train_ll train_error valid_error learning_rate\n", - "0 -8735.749502 0.418192 0.427705 0.01\n", - "1 -8629.937944 0.418192 0.427705 0.01\n", - "2 -8546.000971 0.418192 0.427705 0.01\n", - "3 -8476.151781 0.418192 0.427705 0.01\n", - "4 -8413.023065 0.418192 0.427705 0.01\n", - ".. ... ... ... ...\n", - "764 -7044.379033 0.370962 0.371735 0.01\n", - "765 -7044.355167 0.370962 0.371269 0.01\n", - "766 -7044.331434 0.370962 0.371269 0.01\n", - "767 -7044.307834 0.370962 0.371269 0.01\n", - "768 -7044.284366 0.370962 0.370802 0.01\n", - "\n", - "[769 rows x 4 columns]" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "model.results.show_training_plot()" ] @@ -858,153 +173,9 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
012pred_CHOICEtrue_CHOICE
00.0943610.6846890.22095011
10.1206870.4360720.44324122
20.1325690.6253380.24209311
30.1186740.5981850.28314111
40.1636490.8363510.00000010
..................
21390.1160490.8839510.00000010
21400.1347990.4487230.41647811
21410.0527400.7417840.20547611
21420.1054430.5093090.38524911
21430.1456740.5646650.28966111
\n", - "

2144 rows × 5 columns

\n", - "
" - ], - "text/plain": [ - " 0 1 2 pred_CHOICE true_CHOICE\n", - "0 0.094361 0.684689 0.220950 1 1\n", - "1 0.120687 0.436072 0.443241 2 2\n", - "2 0.132569 0.625338 0.242093 1 1\n", - "3 0.118674 0.598185 0.283141 1 1\n", - "4 0.163649 0.836351 0.000000 1 0\n", - "... ... ... ... ... ...\n", - "2139 0.116049 0.883951 0.000000 1 0\n", - "2140 0.134799 0.448723 0.416478 1 1\n", - "2141 0.052740 0.741784 0.205476 1 1\n", - "2142 0.105443 0.509309 0.385249 1 1\n", - "2143 0.145674 0.564665 0.289661 1 1\n", - "\n", - "[2144 rows x 5 columns]" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# predict CHOICE on the validation set and display the results.\n", "# First three columns are the probabilities, the fourth column \n", @@ -1021,17 +192,9 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.030671091474900408\n" - ] - } - ], + "outputs": [], "source": [ "sm_co_wrt_sm = model.elasticities(ds, 1)[\"SM_CO\"]\n", "print(sm_co_wrt_sm.mean())" @@ -1046,20 +209,9 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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woULmzUZAACAttAi3wZ/5swZffbZZ9q5c6e6dOnSEk8JAADQapr1DtCF3uF54YUX9L//+78/aEIAAACtrUXeATpr+PDheuONN1ryKQEAAFpciwVQdXW1Nm3apCuvvLKlnhIAAKBVNOsSWN++feVwOBqsd7lcmj9//g+eFAAAQGtqVgCde6NDh8OhDh066JprrlF8fHyLTAwAAKC1NCuAsrOzJUmff/65PvnkE9XX1+tHP/oR8QMAAC4LzQqgqqoq5efn680339QVV1yhuro6nTp1SjfccIOWL1+uv/qrv2rpeQIAALSYZn0Iev78+SovL9fOnTu1Z88effDBB9q+fbuqq6u5CSIAAIh4zQqg3//+95ozZ46uvvpqe90111yjWbNm6c0332yxyQEAALSGZgWQy+VSVFTDXR0Oh+rq6n7wpAAAAFpTswJo6NChmjt3rr744gt73eeff6758+dr8ODBLTY5AACA1tCsD0E/8cQTys3N1bBhw9S5c2dJ0jfffKO//du/1ZNPPtmiEwQAAGhpTQ6gw4cPKzU1Vb/+9a/15z//WZ988olcLpeuuuoqpaWlNfm5CgoKtHfvXl1xxRV6+OGH9dhjj0mSysrK9OSTT6q4uFipqamaMWOGbrnlFnvfd955R0899ZTKysrkdru1YMEC9ezZ0x5fu3atVq1aJb/frxEjRujJJ59UXFxcUw8XAAC0Q42+BGZZlubPn68RI0boww8/lCRde+21uvvuu1VUVKSRI0fq6aeflmVZjXq++vp6TZ48WVdeeaVeeeUVzZ07V//+7/+u7du3y7Is5ebmKikpSUVFRbr33nuVl5eno0ePSpKOHj2q3NxcjRkzRlu2bFGXLl00ZcoU+7Vff/11FRYWqqCgQOvWrZPP59PixYub+ncDAADaqUYH0Pr167Vz504tX77cvhHiWc8//7yWL1+uV155RS+99FKjnq+yslL9+vXTnDlzdNVVV2nw4MH68Y9/LK/Xq/fee09lZWUqKChQWlqacnJylJGRoaKiIknS5s2bdf3112vixInq3bu3Fi5cqCNHjuj999+35/rII49oyJAhGjBggObOnauioiIFAoHGHi4AAGjHGh1AmzZt0pNPPqkhQ4acd3zo0KGaNm1aowOoa9eueu655xQfHy/LsuT1evWnP/1J2dnZ8vl8uu6669SxY0d7e4/Ho+Li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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..5c948a3 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,3082 @@ +# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. + +[[package]] +name = "argcomplete" +version = "3.5.1" +description = "Bash tab completion for argparse" +optional = false +python-versions = ">=3.8" +files = [ + {file = "argcomplete-3.5.1-py3-none-any.whl", hash = "sha256:1a1d148bdaa3e3b93454900163403df41448a248af01b6e849edc5ac08e6c363"}, + {file = "argcomplete-3.5.1.tar.gz", hash = "sha256:eb1ee355aa2557bd3d0145de7b06b2a45b0ce461e1e7813f5d066039ab4177b4"}, +] + +[package.extras] +test = ["coverage", "mypy", "pexpect", "ruff", "wheel"] + +[[package]] +name = "attrs" +version = "24.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, + {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, +] + +[package.extras] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] + +[[package]] +name = "babel" +version = "2.16.0" +description = "Internationalization utilities" +optional = false +python-versions = ">=3.8" +files = [ + {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, + {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, +] + +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] + +[[package]] +name = "beautifulsoup4" +version = "4.12.3" +description = "Screen-scraping library" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, + {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, +] + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +name = "black" +version = "24.10.0" +description = "The uncompromising code formatter." +optional = false +python-versions = ">=3.9" +files = [ + {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, + {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, + {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, + {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, + {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, + {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, + {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, + {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, + {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, + {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, + {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, + {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, + {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, + {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, + {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, + {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, + {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, + {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, + {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, + {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, + {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, + {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.10)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "bleach" +version = "6.2.0" +description = "An easy safelist-based HTML-sanitizing tool." +optional = false +python-versions = ">=3.9" +files = [ + {file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e"}, + {file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f"}, +] + +[package.dependencies] +webencodings = "*" + +[package.extras] +css = ["tinycss2 (>=1.1.0,<1.5)"] + +[[package]] +name = "certifi" +version = "2024.8.30" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, +] + +[[package]] +name = "cffi" +version = "1.17.1" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, +] + +[package.dependencies] +pycparser = "*" + +[[package]] +name = "cfgv" +version = "3.4.0" +description = "Validate configuration and produce human readable error messages." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, + {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.0" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, + {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, + {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "commitizen" +version = "4.0.0" +description = "Python commitizen client tool" +optional = false +python-versions = ">=3.9" +files = [ + {file = "commitizen-4.0.0-py3-none-any.whl", hash = "sha256:52873ee589a64cf77fc55570dbd3f987c6ffcd33132d179eb625c4d06ae935f7"}, + {file = "commitizen-4.0.0.tar.gz", hash = "sha256:16aff27e01b43015eab1c74eabbca3e284b4988dd1b146a0963282db241dc2c0"}, +] + +[package.dependencies] +argcomplete = ">=1.12.1,<3.6" +charset-normalizer = ">=2.1.0,<4" +colorama = ">=0.4.1,<0.5.0" +decli = ">=0.6.0,<0.7.0" +importlib_metadata = {version = ">=8.0.0,<9", markers = "python_version < \"3.10\""} +jinja2 = ">=2.10.3" +packaging = ">=19" +pyyaml = ">=3.08" +questionary = ">=2.0,<3.0" +termcolor = ">=1.1,<3" +tomlkit = ">=0.5.3,<1.0.0" +typing-extensions = {version = ">=4.0.1,<5.0.0", markers = "python_version < \"3.11\""} + +[[package]] +name = "cons" +version = "0.4.6" +description = "An implementation of Lisp/Scheme-like cons in Python." +optional = false +python-versions = ">=3.6" +files = [ + {file = "cons-0.4.6.tar.gz", hash = "sha256:669fe9d5ee916d5e42b9cac6acc911df803d04f2e945c1604982a04d27a29b47"}, +] + +[package.dependencies] +logical-unification = ">=0.4.0" + +[[package]] +name = "contourpy" +version = "1.3.0" +description = "Python library for calculating contours of 2D quadrilateral grids" +optional = false +python-versions = ">=3.9" +files = [ + {file = "contourpy-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:880ea32e5c774634f9fcd46504bf9f080a41ad855f4fef54f5380f5133d343c7"}, + {file = "contourpy-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:76c905ef940a4474a6289c71d53122a4f77766eef23c03cd57016ce19d0f7b42"}, + {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92f8557cbb07415a4d6fa191f20fd9d2d9eb9c0b61d1b2f52a8926e43c6e9af7"}, + {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36f965570cff02b874773c49bfe85562b47030805d7d8360748f3eca570f4cab"}, + {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cacd81e2d4b6f89c9f8a5b69b86490152ff39afc58a95af002a398273e5ce589"}, + {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69375194457ad0fad3a839b9e29aa0b0ed53bb54db1bfb6c3ae43d111c31ce41"}, + {file = "contourpy-1.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a52040312b1a858b5e31ef28c2e865376a386c60c0e248370bbea2d3f3b760d"}, + {file = "contourpy-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3faeb2998e4fcb256542e8a926d08da08977f7f5e62cf733f3c211c2a5586223"}, + {file = "contourpy-1.3.0-cp310-cp310-win32.whl", hash = "sha256:36e0cff201bcb17a0a8ecc7f454fe078437fa6bda730e695a92f2d9932bd507f"}, + {file = "contourpy-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:87ddffef1dbe5e669b5c2440b643d3fdd8622a348fe1983fad7a0f0ccb1cd67b"}, + {file = "contourpy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fa4c02abe6c446ba70d96ece336e621efa4aecae43eaa9b030ae5fb92b309ad"}, + {file = "contourpy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:834e0cfe17ba12f79963861e0f908556b2cedd52e1f75e6578801febcc6a9f49"}, + {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbc4c3217eee163fa3984fd1567632b48d6dfd29216da3ded3d7b844a8014a66"}, + {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4865cd1d419e0c7a7bf6de1777b185eebdc51470800a9f42b9e9decf17762081"}, + {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:303c252947ab4b14c08afeb52375b26781ccd6a5ccd81abcdfc1fafd14cf93c1"}, + {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637f674226be46f6ba372fd29d9523dd977a291f66ab2a74fbeb5530bb3f445d"}, + {file = "contourpy-1.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:76a896b2f195b57db25d6b44e7e03f221d32fe318d03ede41f8b4d9ba1bff53c"}, + {file = "contourpy-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e1fd23e9d01591bab45546c089ae89d926917a66dceb3abcf01f6105d927e2cb"}, + {file = "contourpy-1.3.0-cp311-cp311-win32.whl", hash = "sha256:d402880b84df3bec6eab53cd0cf802cae6a2ef9537e70cf75e91618a3801c20c"}, + {file = "contourpy-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:6cb6cc968059db9c62cb35fbf70248f40994dfcd7aa10444bbf8b3faeb7c2d67"}, + {file = "contourpy-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:570ef7cf892f0afbe5b2ee410c507ce12e15a5fa91017a0009f79f7d93a1268f"}, + {file = "contourpy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:da84c537cb8b97d153e9fb208c221c45605f73147bd4cadd23bdae915042aad6"}, + {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0be4d8425bfa755e0fd76ee1e019636ccc7c29f77a7c86b4328a9eb6a26d0639"}, + {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c0da700bf58f6e0b65312d0a5e695179a71d0163957fa381bb3c1f72972537c"}, + {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb8b141bb00fa977d9122636b16aa67d37fd40a3d8b52dd837e536d64b9a4d06"}, + {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3634b5385c6716c258d0419c46d05c8aa7dc8cb70326c9a4fb66b69ad2b52e09"}, + {file = "contourpy-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0dce35502151b6bd35027ac39ba6e5a44be13a68f55735c3612c568cac3805fd"}, + {file = "contourpy-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aea348f053c645100612b333adc5983d87be69acdc6d77d3169c090d3b01dc35"}, + {file = "contourpy-1.3.0-cp312-cp312-win32.whl", hash = "sha256:90f73a5116ad1ba7174341ef3ea5c3150ddf20b024b98fb0c3b29034752c8aeb"}, + {file = "contourpy-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:b11b39aea6be6764f84360fce6c82211a9db32a7c7de8fa6dd5397cf1d079c3b"}, + {file = "contourpy-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3e1c7fa44aaae40a2247e2e8e0627f4bea3dd257014764aa644f319a5f8600e3"}, + {file = "contourpy-1.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:364174c2a76057feef647c802652f00953b575723062560498dc7930fc9b1cb7"}, + {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32b238b3b3b649e09ce9aaf51f0c261d38644bdfa35cbaf7b263457850957a84"}, + {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d51fca85f9f7ad0b65b4b9fe800406d0d77017d7270d31ec3fb1cc07358fdea0"}, + {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:732896af21716b29ab3e988d4ce14bc5133733b85956316fb0c56355f398099b"}, + {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d73f659398a0904e125280836ae6f88ba9b178b2fed6884f3b1f95b989d2c8da"}, + {file = "contourpy-1.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c6c7c2408b7048082932cf4e641fa3b8ca848259212f51c8c59c45aa7ac18f14"}, + {file = "contourpy-1.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f317576606de89da6b7e0861cf6061f6146ead3528acabff9236458a6ba467f8"}, + {file = "contourpy-1.3.0-cp313-cp313-win32.whl", hash = "sha256:31cd3a85dbdf1fc002280c65caa7e2b5f65e4a973fcdf70dd2fdcb9868069294"}, + {file = "contourpy-1.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:4553c421929ec95fb07b3aaca0fae668b2eb5a5203d1217ca7c34c063c53d087"}, + {file = "contourpy-1.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:345af746d7766821d05d72cb8f3845dfd08dd137101a2cb9b24de277d716def8"}, + {file = "contourpy-1.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3bb3808858a9dc68f6f03d319acd5f1b8a337e6cdda197f02f4b8ff67ad2057b"}, + {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:420d39daa61aab1221567b42eecb01112908b2cab7f1b4106a52caaec8d36973"}, + {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d63ee447261e963af02642ffcb864e5a2ee4cbfd78080657a9880b8b1868e18"}, + {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:167d6c890815e1dac9536dca00828b445d5d0df4d6a8c6adb4a7ec3166812fa8"}, + {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:710a26b3dc80c0e4febf04555de66f5fd17e9cf7170a7b08000601a10570bda6"}, + {file = "contourpy-1.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:75ee7cb1a14c617f34a51d11fa7524173e56551646828353c4af859c56b766e2"}, + {file = "contourpy-1.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:33c92cdae89ec5135d036e7218e69b0bb2851206077251f04a6c4e0e21f03927"}, + {file = "contourpy-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a11077e395f67ffc2c44ec2418cfebed032cd6da3022a94fc227b6faf8e2acb8"}, + {file = "contourpy-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e8134301d7e204c88ed7ab50028ba06c683000040ede1d617298611f9dc6240c"}, + {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e12968fdfd5bb45ffdf6192a590bd8ddd3ba9e58360b29683c6bb71a7b41edca"}, + {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fd2a0fc506eccaaa7595b7e1418951f213cf8255be2600f1ea1b61e46a60c55f"}, + {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4cfb5c62ce023dfc410d6059c936dcf96442ba40814aefbfa575425a3a7f19dc"}, + {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68a32389b06b82c2fdd68276148d7b9275b5f5cf13e5417e4252f6d1a34f72a2"}, + {file = "contourpy-1.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:94e848a6b83da10898cbf1311a815f770acc9b6a3f2d646f330d57eb4e87592e"}, + {file = "contourpy-1.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d78ab28a03c854a873787a0a42254a0ccb3cb133c672f645c9f9c8f3ae9d0800"}, + {file = "contourpy-1.3.0-cp39-cp39-win32.whl", hash = "sha256:81cb5ed4952aae6014bc9d0421dec7c5835c9c8c31cdf51910b708f548cf58e5"}, + {file = "contourpy-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:14e262f67bd7e6eb6880bc564dcda30b15e351a594657e55b7eec94b6ef72843"}, + {file = "contourpy-1.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fe41b41505a5a33aeaed2a613dccaeaa74e0e3ead6dd6fd3a118fb471644fd6c"}, + {file = "contourpy-1.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca7e17a65f72a5133bdbec9ecf22401c62bcf4821361ef7811faee695799779"}, + {file = "contourpy-1.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ec4dc6bf570f5b22ed0d7efba0dfa9c5b9e0431aeea7581aa217542d9e809a4"}, + {file = "contourpy-1.3.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:00ccd0dbaad6d804ab259820fa7cb0b8036bda0686ef844d24125d8287178ce0"}, + {file = "contourpy-1.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca947601224119117f7c19c9cdf6b3ab54c5726ef1d906aa4a69dfb6dd58102"}, + {file = "contourpy-1.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c6ec93afeb848a0845a18989da3beca3eec2c0f852322efe21af1931147d12cb"}, + {file = "contourpy-1.3.0.tar.gz", hash = "sha256:7ffa0db17717a8ffb127efd0c95a4362d996b892c2904db72428d5b52e1938a4"}, +] + +[package.dependencies] +numpy = ">=1.23" + +[package.extras] +bokeh = ["bokeh", "selenium"] +docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"] +mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.11.1)", "types-Pillow"] +test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] +test-no-images = ["pytest", "pytest-cov", "pytest-rerunfailures", "pytest-xdist", "wurlitzer"] + +[[package]] +name = "coverage" +version = "7.6.8" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "coverage-7.6.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b39e6011cd06822eb964d038d5dff5da5d98652b81f5ecd439277b32361a3a50"}, + {file = "coverage-7.6.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:63c19702db10ad79151a059d2d6336fe0c470f2e18d0d4d1a57f7f9713875dcf"}, + {file = "coverage-7.6.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3985b9be361d8fb6b2d1adc9924d01dec575a1d7453a14cccd73225cb79243ee"}, + {file = "coverage-7.6.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:644ec81edec0f4ad17d51c838a7d01e42811054543b76d4ba2c5d6af741ce2a6"}, + {file = "coverage-7.6.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f188a2402f8359cf0c4b1fe89eea40dc13b52e7b4fd4812450da9fcd210181d"}, + {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e19122296822deafce89a0c5e8685704c067ae65d45e79718c92df7b3ec3d331"}, + {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:13618bed0c38acc418896005732e565b317aa9e98d855a0e9f211a7ffc2d6638"}, + {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:193e3bffca48ad74b8c764fb4492dd875038a2f9925530cb094db92bb5e47bed"}, + {file = "coverage-7.6.8-cp310-cp310-win32.whl", hash = "sha256:3988665ee376abce49613701336544041f2117de7b7fbfe91b93d8ff8b151c8e"}, + {file = "coverage-7.6.8-cp310-cp310-win_amd64.whl", hash = "sha256:f56f49b2553d7dd85fd86e029515a221e5c1f8cb3d9c38b470bc38bde7b8445a"}, + {file = "coverage-7.6.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:86cffe9c6dfcfe22e28027069725c7f57f4b868a3f86e81d1c62462764dc46d4"}, + {file = "coverage-7.6.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d82ab6816c3277dc962cfcdc85b1efa0e5f50fb2c449432deaf2398a2928ab94"}, + {file = "coverage-7.6.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13690e923a3932e4fad4c0ebfb9cb5988e03d9dcb4c5150b5fcbf58fd8bddfc4"}, + {file = "coverage-7.6.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4be32da0c3827ac9132bb488d331cb32e8d9638dd41a0557c5569d57cf22c9c1"}, + {file = "coverage-7.6.8-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44e6c85bbdc809383b509d732b06419fb4544dca29ebe18480379633623baafb"}, + {file = "coverage-7.6.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:768939f7c4353c0fac2f7c37897e10b1414b571fd85dd9fc49e6a87e37a2e0d8"}, + {file = "coverage-7.6.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e44961e36cb13c495806d4cac67640ac2866cb99044e210895b506c26ee63d3a"}, + {file = "coverage-7.6.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3ea8bb1ab9558374c0ab591783808511d135a833c3ca64a18ec927f20c4030f0"}, + {file = "coverage-7.6.8-cp311-cp311-win32.whl", hash = "sha256:629a1ba2115dce8bf75a5cce9f2486ae483cb89c0145795603d6554bdc83e801"}, + {file = "coverage-7.6.8-cp311-cp311-win_amd64.whl", hash = "sha256:fb9fc32399dca861584d96eccd6c980b69bbcd7c228d06fb74fe53e007aa8ef9"}, + {file = "coverage-7.6.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e683e6ecc587643f8cde8f5da6768e9d165cd31edf39ee90ed7034f9ca0eefee"}, + {file = "coverage-7.6.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1defe91d41ce1bd44b40fabf071e6a01a5aa14de4a31b986aa9dfd1b3e3e414a"}, + {file = "coverage-7.6.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ad66e8e50225ebf4236368cc43c37f59d5e6728f15f6e258c8639fa0dd8e6d"}, + {file = "coverage-7.6.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fe47da3e4fda5f1abb5709c156eca207eacf8007304ce3019eb001e7a7204cb"}, + {file = "coverage-7.6.8-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:202a2d645c5a46b84992f55b0a3affe4f0ba6b4c611abec32ee88358db4bb649"}, + {file = "coverage-7.6.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4674f0daa1823c295845b6a740d98a840d7a1c11df00d1fd62614545c1583787"}, + {file = "coverage-7.6.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:74610105ebd6f33d7c10f8907afed696e79c59e3043c5f20eaa3a46fddf33b4c"}, + {file = "coverage-7.6.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37cda8712145917105e07aab96388ae76e787270ec04bcb9d5cc786d7cbb8443"}, + {file = "coverage-7.6.8-cp312-cp312-win32.whl", hash = "sha256:9e89d5c8509fbd6c03d0dd1972925b22f50db0792ce06324ba069f10787429ad"}, + {file = "coverage-7.6.8-cp312-cp312-win_amd64.whl", hash = "sha256:379c111d3558272a2cae3d8e57e6b6e6f4fe652905692d54bad5ea0ca37c5ad4"}, + {file = "coverage-7.6.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0b0c69f4f724c64dfbfe79f5dfb503b42fe6127b8d479b2677f2b227478db2eb"}, + {file = "coverage-7.6.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c15b32a7aca8038ed7644f854bf17b663bc38e1671b5d6f43f9a2b2bd0c46f63"}, + {file = "coverage-7.6.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63068a11171e4276f6ece913bde059e77c713b48c3a848814a6537f35afb8365"}, + {file = "coverage-7.6.8-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f4548c5ead23ad13fb7a2c8ea541357474ec13c2b736feb02e19a3085fac002"}, + {file = "coverage-7.6.8-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b4b4299dd0d2c67caaaf286d58aef5e75b125b95615dda4542561a5a566a1e3"}, + {file = "coverage-7.6.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c9ebfb2507751f7196995142f057d1324afdab56db1d9743aab7f50289abd022"}, + {file = "coverage-7.6.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c1b4474beee02ede1eef86c25ad4600a424fe36cff01a6103cb4533c6bf0169e"}, + {file = "coverage-7.6.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d9fd2547e6decdbf985d579cf3fc78e4c1d662b9b0ff7cc7862baaab71c9cc5b"}, + {file = "coverage-7.6.8-cp313-cp313-win32.whl", hash = "sha256:8aae5aea53cbfe024919715eca696b1a3201886ce83790537d1c3668459c7146"}, + {file = "coverage-7.6.8-cp313-cp313-win_amd64.whl", hash = "sha256:ae270e79f7e169ccfe23284ff5ea2d52a6f401dc01b337efb54b3783e2ce3f28"}, + {file = "coverage-7.6.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:de38add67a0af869b0d79c525d3e4588ac1ffa92f39116dbe0ed9753f26eba7d"}, + {file = "coverage-7.6.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b07c25d52b1c16ce5de088046cd2432b30f9ad5e224ff17c8f496d9cb7d1d451"}, + {file = "coverage-7.6.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62a66ff235e4c2e37ed3b6104d8b478d767ff73838d1222132a7a026aa548764"}, + {file = "coverage-7.6.8-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09b9f848b28081e7b975a3626e9081574a7b9196cde26604540582da60235fdf"}, + {file = "coverage-7.6.8-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:093896e530c38c8e9c996901858ac63f3d4171268db2c9c8b373a228f459bbc5"}, + {file = "coverage-7.6.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9a7b8ac36fd688c8361cbc7bf1cb5866977ece6e0b17c34aa0df58bda4fa18a4"}, + {file = "coverage-7.6.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:38c51297b35b3ed91670e1e4efb702b790002e3245a28c76e627478aa3c10d83"}, + {file = "coverage-7.6.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2e4e0f60cb4bd7396108823548e82fdab72d4d8a65e58e2c19bbbc2f1e2bfa4b"}, + {file = "coverage-7.6.8-cp313-cp313t-win32.whl", hash = "sha256:6535d996f6537ecb298b4e287a855f37deaf64ff007162ec0afb9ab8ba3b8b71"}, + {file = "coverage-7.6.8-cp313-cp313t-win_amd64.whl", hash = "sha256:c79c0685f142ca53256722a384540832420dff4ab15fec1863d7e5bc8691bdcc"}, + {file = "coverage-7.6.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3ac47fa29d8d41059ea3df65bd3ade92f97ee4910ed638e87075b8e8ce69599e"}, + {file = "coverage-7.6.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:24eda3a24a38157eee639ca9afe45eefa8d2420d49468819ac5f88b10de84f4c"}, + {file = "coverage-7.6.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4c81ed2820b9023a9a90717020315e63b17b18c274a332e3b6437d7ff70abe0"}, + {file = "coverage-7.6.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd55f8fc8fa494958772a2a7302b0354ab16e0b9272b3c3d83cdb5bec5bd1779"}, + {file = "coverage-7.6.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f39e2f3530ed1626c66e7493be7a8423b023ca852aacdc91fb30162c350d2a92"}, + {file = "coverage-7.6.8-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:716a78a342679cd1177bc8c2fe957e0ab91405bd43a17094324845200b2fddf4"}, + {file = "coverage-7.6.8-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:177f01eeaa3aee4a5ffb0d1439c5952b53d5010f86e9d2667963e632e30082cc"}, + {file = "coverage-7.6.8-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:912e95017ff51dc3d7b6e2be158dedc889d9a5cc3382445589ce554f1a34c0ea"}, + {file = "coverage-7.6.8-cp39-cp39-win32.whl", hash = "sha256:4db3ed6a907b555e57cc2e6f14dc3a4c2458cdad8919e40b5357ab9b6db6c43e"}, + {file = "coverage-7.6.8-cp39-cp39-win_amd64.whl", hash = "sha256:428ac484592f780e8cd7b6b14eb568f7c85460c92e2a37cb0c0e5186e1a0d076"}, + {file = "coverage-7.6.8-pp39.pp310-none-any.whl", hash = "sha256:5c52a036535d12590c32c49209e79cabaad9f9ad8aa4cbd875b68c4d67a9cbce"}, + {file = "coverage-7.6.8.tar.gz", hash = "sha256:8b2b8503edb06822c86d82fa64a4a5cb0760bb8f31f26e138ec743f422f37cfc"}, +] + +[package.dependencies] +tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "cycler" +version = "0.12.1" +description = "Composable style cycles" +optional = false +python-versions = ">=3.8" +files = [ + {file = "cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30"}, + {file = "cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"}, +] + +[package.extras] +docs = ["ipython", "matplotlib", "numpydoc", "sphinx"] +tests = ["pytest", "pytest-cov", "pytest-xdist"] + +[[package]] +name = "decli" +version = "0.6.2" +description = "Minimal, easy-to-use, declarative cli tool" +optional = false +python-versions = ">=3.7" +files = [ + {file = "decli-0.6.2-py3-none-any.whl", hash = "sha256:2fc84106ce9a8f523ed501ca543bdb7e416c064917c12a59ebdc7f311a97b7ed"}, + {file = "decli-0.6.2.tar.gz", hash = "sha256:36f71eb55fd0093895efb4f416ec32b7f6e00147dda448e3365cf73ceab42d6f"}, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] + +[[package]] +name = "distlib" +version = "0.3.9" +description = "Distribution utilities" +optional = false +python-versions = "*" +files = [ + {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, + {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, +] + +[[package]] +name = "etuples" +version = "0.3.9" +description = "Python S-expression emulation using tuple-like objects." +optional = false +python-versions = ">=3.8" +files = [ + {file = "etuples-0.3.9.tar.gz", hash = "sha256:a474e586683d8ba8d842ba29305005ceed1c08371a4b4b0e0e232527137e5ea3"}, +] + +[package.dependencies] +cons = "*" +multipledispatch = "*" + +[[package]] +name = "exceptiongroup" +version = "1.2.2" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "fastjsonschema" +version = "2.21.1" +description = "Fastest Python implementation of JSON schema" +optional = false +python-versions = "*" +files = [ + {file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667"}, + {file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4"}, +] + +[package.extras] +devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] + +[[package]] +name = "filelock" +version = "3.16.1" +description = "A platform independent file lock." +optional = false +python-versions = ">=3.8" +files = [ + {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, + {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] +typing = ["typing-extensions (>=4.12.2)"] + +[[package]] +name = "fonttools" +version = "4.55.1" +description = "Tools to manipulate font files" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fonttools-4.55.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c17a6f9814f83772cd6d9c9009928e1afa4ab66210a31ced721556651075a9a0"}, + {file = "fonttools-4.55.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c4d14eecc814826a01db87a40af3407c892ba49996bc6e49961e386cd78b537c"}, + {file = "fonttools-4.55.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8589f9a15dc005592b94ecdc45b4dfae9bbe9e73542e89af5a5e776e745db83b"}, + {file = "fonttools-4.55.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfee95bd9395bcd9e6c78955387554335109b6a613db71ef006020b42f761c58"}, + {file = "fonttools-4.55.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:34fa2ecc0bf1923d1a51bf2216a006de2c3c0db02c6aa1470ea50b62b8619bd5"}, + {file = "fonttools-4.55.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9c1c48483148bfb1b9ad951133ceea957faa004f6cb475b67e7bc75d482b48f8"}, + {file = "fonttools-4.55.1-cp310-cp310-win32.whl", hash = "sha256:3e2fc388ca7d023b3c45badd71016fd4185f93e51a22cfe4bd65378af7fba759"}, + {file = "fonttools-4.55.1-cp310-cp310-win_amd64.whl", hash = "sha256:c4c36c71f69d2b3ee30394b0986e5f8b2c461e7eff48dde49b08a90ded9fcdbd"}, + {file = "fonttools-4.55.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5daab3a55d460577f45bb8f5a8eca01fa6cde43ef2ab943b527991f54b735c41"}, + {file = "fonttools-4.55.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:acf1e80cf96c2fbc79e46f669d8713a9a79faaebcc68e31a9fbe600cf8027992"}, + {file = "fonttools-4.55.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e88a0329f7f88a210f09f79c088fb64f8032fc3ab65e2390a40b7d3a11773026"}, + {file = "fonttools-4.55.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03105b42259a8a94b2f0cbf1bee45f7a8a34e7b26c946a8fb89b4967e44091a8"}, + {file = "fonttools-4.55.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9af3577e821649879ab5774ad0e060af34816af556c77c6d3820345d12bf415e"}, + {file = "fonttools-4.55.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:34bd5de3d0ad085359b79a96575cd6bd1bc2976320ef24a2aa152ead36dbf656"}, + {file = "fonttools-4.55.1-cp311-cp311-win32.whl", hash = "sha256:5da92c4b637f0155a41f345fa81143c8e17425260fcb21521cb2ad4d2cea2a95"}, + {file = "fonttools-4.55.1-cp311-cp311-win_amd64.whl", hash = "sha256:f70234253d15f844e6da1178f019a931f03181463ce0c7b19648b8c370527b07"}, + {file = "fonttools-4.55.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9c372e527d58ba64b695f15f8014e97bc8826cf64d3380fc89b4196edd3c0fa8"}, + {file = "fonttools-4.55.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:845a967d3bef3245ba81fb5582dc731f6c2c8417fa211f1068c56893504bc000"}, + {file = "fonttools-4.55.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03be82bcd4ba4418adf10e6165743f824bb09d6594c2743d7f93ea50968805b"}, + {file = "fonttools-4.55.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c42e935cf146f826f556d977660dac88f2fa3fb2efa27d5636c0b89a60c16edf"}, + {file = "fonttools-4.55.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:96328bf91e05621d8e40d9f854af7a262cb0e8313e9b38e7f3a7f3c4c0caaa8b"}, + {file = "fonttools-4.55.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:291acec4d774e8cd2d8472d88c04643a77a3324a15247951bd6cfc969799b69e"}, + {file = "fonttools-4.55.1-cp312-cp312-win32.whl", hash = "sha256:6d768d6632809aec1c3fa8f195b173386d85602334701a6894a601a4d3c80368"}, + {file = "fonttools-4.55.1-cp312-cp312-win_amd64.whl", hash = "sha256:2a3850afdb0be1f79a1e95340a2059226511675c5b68098d4e49bfbeb48a8aab"}, + {file = "fonttools-4.55.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:0c88d427eaf8bd8497b9051f56e0f5f9fb96a311aa7c72cda35e03e18d59cd16"}, + {file = "fonttools-4.55.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f062c95a725a79fd908fe8407b6ad63e230e1c7d6dece2d5d6ecaf843d6927f6"}, + {file = "fonttools-4.55.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f298c5324c45cad073475146bf560f4110ce2dc2488ff12231a343ec489f77bc"}, + {file = "fonttools-4.55.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f06dbb71344ffd85a6cb7e27970a178952f0bdd8d319ed938e64ba4bcc41700"}, + {file = "fonttools-4.55.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4c46b3525166976f5855b1f039b02433dc51eb635fb54d6a111e0c5d6e6cdc4c"}, + {file = "fonttools-4.55.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:af46f52a21e086a2f89b87bd941c9f0f91e5f769e1a5eb3b37c912228814d3e5"}, + {file = "fonttools-4.55.1-cp313-cp313-win32.whl", hash = "sha256:cd7f36335c5725a3fd724cc667c10c3f5254e779bdc5bffefebb33cf5a75ecb1"}, + {file = "fonttools-4.55.1-cp313-cp313-win_amd64.whl", hash = "sha256:5d6394897710ccac7f74df48492d7f02b9586ff0588c66a2c218844e90534b22"}, + {file = "fonttools-4.55.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:52c4f4b383c56e1a4fe8dab1b63c2269ba9eab0695d2d8e033fa037e61e6f1ef"}, + {file = "fonttools-4.55.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d83892dafdbd62b56545c77b6bd4fa49eef6ec1d6b95e042ee2c930503d1831e"}, + {file = "fonttools-4.55.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:604d5bf16f811fcaaaec2dde139f7ce958462487565edcd54b6fadacb2942083"}, + {file = "fonttools-4.55.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3324b92feb5fd084923a8e89a8248afd5b9f9d81ab9517d7b07cc84403bd448"}, + {file = "fonttools-4.55.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:30f8b1ca9b919c04850678d026fc330c19acaa9e3b282fcacc09a5eb3c8d20c3"}, + {file = "fonttools-4.55.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:1835c98df2cf28c86a66d234895c87df7b9325fd079a8019c5053a389ff55d23"}, + {file = "fonttools-4.55.1-cp38-cp38-win32.whl", hash = "sha256:9f202703720a7cc0049f2ed1a2047925e264384eb5cc4d34f80200d7b17f1b6a"}, + {file = "fonttools-4.55.1-cp38-cp38-win_amd64.whl", hash = "sha256:2efff20aed0338d37c2ff58766bd67f4b9607ded61cf3d6baf1b3e25ea74e119"}, + {file = "fonttools-4.55.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3032d9bf010c395e6eca2851666cafb1f4ecde85d420188555e928ad0144326e"}, + {file = "fonttools-4.55.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0794055588c30ffe25426048e8a7c0a5271942727cd61fc939391e37f4d580d5"}, + {file = "fonttools-4.55.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ba980e3ffd3206b8c63a365f90dc10eeec27da946d5ee5373c3a325a46d77c"}, + {file = "fonttools-4.55.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d7063babd7434a17a5e355e87de9b2306c85a5c19c7da0794be15c58aab0c39"}, + {file = "fonttools-4.55.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ed84c15144015a58ef550dd6312884c9fb31a2dbc31a6467bcdafd63be7db476"}, + {file = "fonttools-4.55.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e89419d88b0bbfdb55209e03a17afa2d20db3c2fa0d785543c9d0875668195d5"}, + {file = "fonttools-4.55.1-cp39-cp39-win32.whl", hash = "sha256:6eb781e401b93cda99356bc043ababead2a5096550984d8a4ecf3d5c9f859dc2"}, + {file = "fonttools-4.55.1-cp39-cp39-win_amd64.whl", hash = "sha256:db1031acf04523c5a51c3e1ae19c21a1c32bc5f820a477dd4659a02f9cb82002"}, + {file = "fonttools-4.55.1-py3-none-any.whl", hash = "sha256:4bcfb11f90f48b48c366dd638d773a52fca0d1b9e056dc01df766bf5835baa08"}, + {file = "fonttools-4.55.1.tar.gz", hash = "sha256:85bb2e985718b0df96afc659abfe194c171726054314b019dbbfed31581673c7"}, +] + +[package.extras] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] +graphite = ["lz4 (>=1.7.4.2)"] +interpolatable = ["munkres", "pycairo", "scipy"] +lxml = ["lxml (>=4.0)"] +pathops = ["skia-pathops (>=0.5.0)"] +plot = ["matplotlib"] +repacker = ["uharfbuzz (>=0.23.0)"] +symfont = ["sympy"] +type1 = ["xattr"] +ufo = ["fs (>=2.2.0,<3)"] +unicode = ["unicodedata2 (>=15.1.0)"] +woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] + +[[package]] +name = "ghp-import" +version = "2.1.0" +description = "Copy your docs directly to the gh-pages branch." +optional = false +python-versions = "*" +files = [ + {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, + {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, +] + +[package.dependencies] +python-dateutil = ">=2.8.1" + +[package.extras] +dev = ["flake8", "markdown", "twine", "wheel"] + +[[package]] +name = "gitdb" +version = "4.0.11" +description = "Git Object Database" +optional = false +python-versions = ">=3.7" +files = [ + {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"}, + {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"}, +] + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.43" +description = "GitPython is a Python library used to interact with Git repositories" +optional = false +python-versions = ">=3.7" +files = [ + {file = "GitPython-3.1.43-py3-none-any.whl", hash = "sha256:eec7ec56b92aad751f9912a73404bc02ba212a23adb2c7098ee668417051a1ff"}, + {file = "GitPython-3.1.43.tar.gz", hash = "sha256:35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c"}, +] + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[package.extras] +doc = ["sphinx (==4.3.2)", "sphinx-autodoc-typehints", "sphinx-rtd-theme", "sphinxcontrib-applehelp (>=1.0.2,<=1.0.4)", "sphinxcontrib-devhelp (==1.0.2)", "sphinxcontrib-htmlhelp (>=2.0.0,<=2.0.1)", "sphinxcontrib-qthelp (==1.0.3)", "sphinxcontrib-serializinghtml (==1.1.5)"] +test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar", "typing-extensions"] + +[[package]] +name = "griffe" +version = "1.5.1" +description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +optional = false +python-versions = ">=3.9" +files = [ + {file = "griffe-1.5.1-py3-none-any.whl", hash = "sha256:ad6a7980f8c424c9102160aafa3bcdf799df0e75f7829d75af9ee5aef656f860"}, + {file = "griffe-1.5.1.tar.gz", hash = "sha256:72964f93e08c553257706d6cd2c42d1c172213feb48b2be386f243380b405d4b"}, +] + +[package.dependencies] +colorama = ">=0.4" + +[[package]] +name = "identify" +version = "2.6.3" +description = "File identification library for Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "identify-2.6.3-py2.py3-none-any.whl", hash = "sha256:9edba65473324c2ea9684b1f944fe3191db3345e50b6d04571d10ed164f8d7bd"}, + {file = "identify-2.6.3.tar.gz", hash = "sha256:62f5dae9b5fef52c84cc188514e9ea4f3f636b1d8799ab5ebc475471f9e47a02"}, +] + +[package.extras] +license = ["ukkonen"] + +[[package]] +name = "idna" +version = "3.10" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.6" +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "importlib-metadata" +version = "8.5.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"}, + {file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"}, +] + +[package.dependencies] +zipp = ">=3.20" + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +perf = ["ipython"] +test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["pytest-mypy"] + +[[package]] +name = "importlib-resources" +version = "6.4.5" +description = "Read resources from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717"}, + {file = "importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065"}, +] + +[package.dependencies] +zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["jaraco.test (>=5.4)", "pytest (>=6,!=8.1.*)", "zipp (>=3.17)"] +type = ["pytest-mypy"] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "isort" +version = "5.13.2" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, +] + +[package.extras] +colors = ["colorama (>=0.4.6)"] + +[[package]] +name = "jinja2" +version = "3.1.4" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "joblib" +version = "1.4.2" +description = "Lightweight pipelining with Python functions" +optional = false +python-versions = ">=3.8" +files = [ + {file = "joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6"}, + {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"}, +] + +[[package]] +name = "jsonschema" +version = "4.23.0" +description = "An implementation of JSON Schema validation for Python" +optional = false +python-versions = ">=3.8" +files = [ + {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" +jsonschema-specifications = ">=2023.03.6" +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 (>=24.6.0)"] + +[[package]] +name = "jsonschema-specifications" +version = "2024.10.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +optional = false +python-versions = ">=3.9" +files = [ + {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, + {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, +] + +[package.dependencies] +referencing = ">=0.31.0" + +[[package]] +name = "jupyter-client" +version = "8.6.3" +description = "Jupyter protocol implementation and client libraries" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, + {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +python-dateutil = ">=2.8.2" +pyzmq = ">=23.0" +tornado = ">=6.2" +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 (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] + +[[package]] +name = "jupyter-core" +version = "5.7.2" +description = "Jupyter core package. A base package on which Jupyter projects rely." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, + {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, +] + +[package.dependencies] +platformdirs = ">=2.5" +pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} +traitlets = ">=5.3" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +description = "Pygments theme using JupyterLab CSS variables" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, + {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, +] + +[[package]] +name = "kiwisolver" +version = "1.4.7" +description = "A fast implementation of the Cassowary constraint solver" +optional = false +python-versions = ">=3.8" +files = [ + {file = "kiwisolver-1.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8a9c83f75223d5e48b0bc9cb1bf2776cf01563e00ade8775ffe13b0b6e1af3a6"}, + {file = "kiwisolver-1.4.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:58370b1ffbd35407444d57057b57da5d6549d2d854fa30249771775c63b5fe17"}, + {file = "kiwisolver-1.4.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aa0abdf853e09aff551db11fce173e2177d00786c688203f52c87ad7fcd91ef9"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8d53103597a252fb3ab8b5845af04c7a26d5e7ea8122303dd7a021176a87e8b9"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:88f17c5ffa8e9462fb79f62746428dd57b46eb931698e42e990ad63103f35e6c"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a9ca9c710d598fd75ee5de59d5bda2684d9db36a9f50b6125eaea3969c2599"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f4d742cb7af1c28303a51b7a27aaee540e71bb8e24f68c736f6f2ffc82f2bf05"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e28c7fea2196bf4c2f8d46a0415c77a1c480cc0724722f23d7410ffe9842c407"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e968b84db54f9d42046cf154e02911e39c0435c9801681e3fc9ce8a3c4130278"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0c18ec74c0472de033e1bebb2911c3c310eef5649133dd0bedf2a169a1b269e5"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8f0ea6da6d393d8b2e187e6a5e3fb81f5862010a40c3945e2c6d12ae45cfb2ad"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:f106407dda69ae456dd1227966bf445b157ccc80ba0dff3802bb63f30b74e895"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84ec80df401cfee1457063732d90022f93951944b5b58975d34ab56bb150dfb3"}, + {file = "kiwisolver-1.4.7-cp310-cp310-win32.whl", hash = "sha256:71bb308552200fb2c195e35ef05de12f0c878c07fc91c270eb3d6e41698c3bcc"}, + {file = "kiwisolver-1.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:44756f9fd339de0fb6ee4f8c1696cfd19b2422e0d70b4cefc1cc7f1f64045a8c"}, + {file = "kiwisolver-1.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:78a42513018c41c2ffd262eb676442315cbfe3c44eed82385c2ed043bc63210a"}, + {file = "kiwisolver-1.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d2b0e12a42fb4e72d509fc994713d099cbb15ebf1103545e8a45f14da2dfca54"}, + {file = "kiwisolver-1.4.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a8781ac3edc42ea4b90bc23e7d37b665d89423818e26eb6df90698aa2287c95"}, + {file = "kiwisolver-1.4.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:46707a10836894b559e04b0fd143e343945c97fd170d69a2d26d640b4e297935"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef97b8df011141c9b0f6caf23b29379f87dd13183c978a30a3c546d2c47314cb"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab58c12a2cd0fc769089e6d38466c46d7f76aced0a1f54c77652446733d2d02"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:803b8e1459341c1bb56d1c5c010406d5edec8a0713a0945851290a7930679b51"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9a9e8a507420fe35992ee9ecb302dab68550dedc0da9e2880dd88071c5fb052"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18077b53dc3bb490e330669a99920c5e6a496889ae8c63b58fbc57c3d7f33a18"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6af936f79086a89b3680a280c47ea90b4df7047b5bdf3aa5c524bbedddb9e545"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3abc5b19d24af4b77d1598a585b8a719beb8569a71568b66f4ebe1fb0449460b"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:933d4de052939d90afbe6e9d5273ae05fb836cc86c15b686edd4b3560cc0ee36"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:65e720d2ab2b53f1f72fb5da5fb477455905ce2c88aaa671ff0a447c2c80e8e3"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3bf1ed55088f214ba6427484c59553123fdd9b218a42bbc8c6496d6754b1e523"}, + {file = "kiwisolver-1.4.7-cp311-cp311-win32.whl", hash = "sha256:4c00336b9dd5ad96d0a558fd18a8b6f711b7449acce4c157e7343ba92dd0cf3d"}, + {file = "kiwisolver-1.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:929e294c1ac1e9f615c62a4e4313ca1823ba37326c164ec720a803287c4c499b"}, + {file = "kiwisolver-1.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:e33e8fbd440c917106b237ef1a2f1449dfbb9b6f6e1ce17c94cd6a1e0d438376"}, + {file = "kiwisolver-1.4.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5360cc32706dab3931f738d3079652d20982511f7c0ac5711483e6eab08efff2"}, + {file = "kiwisolver-1.4.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:942216596dc64ddb25adb215c3c783215b23626f8d84e8eff8d6d45c3f29f75a"}, + {file = "kiwisolver-1.4.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:48b571ecd8bae15702e4f22d3ff6a0f13e54d3d00cd25216d5e7f658242065ee"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad42ba922c67c5f219097b28fae965e10045ddf145d2928bfac2eb2e17673640"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:612a10bdae23404a72941a0fc8fa2660c6ea1217c4ce0dbcab8a8f6543ea9e7f"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e838bba3a3bac0fe06d849d29772eb1afb9745a59710762e4ba3f4cb8424483"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:22f499f6157236c19f4bbbd472fa55b063db77a16cd74d49afe28992dff8c258"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693902d433cf585133699972b6d7c42a8b9f8f826ebcaf0132ff55200afc599e"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4e77f2126c3e0b0d055f44513ed349038ac180371ed9b52fe96a32aa071a5107"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:657a05857bda581c3656bfc3b20e353c232e9193eb167766ad2dc58b56504948"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4bfa75a048c056a411f9705856abfc872558e33c055d80af6a380e3658766038"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:34ea1de54beef1c104422d210c47c7d2a4999bdecf42c7b5718fbe59a4cac383"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:90da3b5f694b85231cf93586dad5e90e2d71b9428f9aad96952c99055582f520"}, + {file = "kiwisolver-1.4.7-cp312-cp312-win32.whl", hash = "sha256:18e0cca3e008e17fe9b164b55735a325140a5a35faad8de92dd80265cd5eb80b"}, + {file = "kiwisolver-1.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:58cb20602b18f86f83a5c87d3ee1c766a79c0d452f8def86d925e6c60fbf7bfb"}, + {file = "kiwisolver-1.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:f5a8b53bdc0b3961f8b6125e198617c40aeed638b387913bf1ce78afb1b0be2a"}, + {file = "kiwisolver-1.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2e6039dcbe79a8e0f044f1c39db1986a1b8071051efba3ee4d74f5b365f5226e"}, + {file = "kiwisolver-1.4.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a1ecf0ac1c518487d9d23b1cd7139a6a65bc460cd101ab01f1be82ecf09794b6"}, + {file = "kiwisolver-1.4.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7ab9ccab2b5bd5702ab0803676a580fffa2aa178c2badc5557a84cc943fcf750"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f816dd2277f8d63d79f9c8473a79fe54047bc0467754962840782c575522224d"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf8bcc23ceb5a1b624572a1623b9f79d2c3b337c8c455405ef231933a10da379"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dea0bf229319828467d7fca8c7c189780aa9ff679c94539eed7532ebe33ed37c"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c06a4c7cf15ec739ce0e5971b26c93638730090add60e183530d70848ebdd34"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913983ad2deb14e66d83c28b632fd35ba2b825031f2fa4ca29675e665dfecbe1"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5337ec7809bcd0f424c6b705ecf97941c46279cf5ed92311782c7c9c2026f07f"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4c26ed10c4f6fa6ddb329a5120ba3b6db349ca192ae211e882970bfc9d91420b"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c619b101e6de2222c1fcb0531e1b17bbffbe54294bfba43ea0d411d428618c27"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:073a36c8273647592ea332e816e75ef8da5c303236ec0167196793eb1e34657a"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3ce6b2b0231bda412463e152fc18335ba32faf4e8c23a754ad50ffa70e4091ee"}, + {file = "kiwisolver-1.4.7-cp313-cp313-win32.whl", hash = "sha256:f4c9aee212bc89d4e13f58be11a56cc8036cabad119259d12ace14b34476fd07"}, + {file = "kiwisolver-1.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:8a3ec5aa8e38fc4c8af308917ce12c536f1c88452ce554027e55b22cbbfbff76"}, + {file = "kiwisolver-1.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:76c8094ac20ec259471ac53e774623eb62e6e1f56cd8690c67ce6ce4fcb05650"}, + {file = "kiwisolver-1.4.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5d5abf8f8ec1f4e22882273c423e16cae834c36856cac348cfbfa68e01c40f3a"}, + {file = "kiwisolver-1.4.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:aeb3531b196ef6f11776c21674dba836aeea9d5bd1cf630f869e3d90b16cfade"}, + {file = "kiwisolver-1.4.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7d755065e4e866a8086c9bdada157133ff466476a2ad7861828e17b6026e22c"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08471d4d86cbaec61f86b217dd938a83d85e03785f51121e791a6e6689a3be95"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7bbfcb7165ce3d54a3dfbe731e470f65739c4c1f85bb1018ee912bae139e263b"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d34eb8494bea691a1a450141ebb5385e4b69d38bb8403b5146ad279f4b30fa3"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9242795d174daa40105c1d86aba618e8eab7bf96ba8c3ee614da8302a9f95503"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a0f64a48bb81af7450e641e3fe0b0394d7381e342805479178b3d335d60ca7cf"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8e045731a5416357638d1700927529e2b8ab304811671f665b225f8bf8d8f933"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4322872d5772cae7369f8351da1edf255a604ea7087fe295411397d0cfd9655e"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:e1631290ee9271dffe3062d2634c3ecac02c83890ada077d225e081aca8aab89"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:edcfc407e4eb17e037bca59be0e85a2031a2ac87e4fed26d3e9df88b4165f92d"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:4d05d81ecb47d11e7f8932bd8b61b720bf0b41199358f3f5e36d38e28f0532c5"}, + {file = "kiwisolver-1.4.7-cp38-cp38-win32.whl", hash = "sha256:b38ac83d5f04b15e515fd86f312479d950d05ce2368d5413d46c088dda7de90a"}, + {file = "kiwisolver-1.4.7-cp38-cp38-win_amd64.whl", hash = "sha256:d83db7cde68459fc803052a55ace60bea2bae361fc3b7a6d5da07e11954e4b09"}, + {file = "kiwisolver-1.4.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f9362ecfca44c863569d3d3c033dbe8ba452ff8eed6f6b5806382741a1334bd"}, + {file = "kiwisolver-1.4.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e8df2eb9b2bac43ef8b082e06f750350fbbaf2887534a5be97f6cf07b19d9583"}, + {file = "kiwisolver-1.4.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f32d6edbc638cde7652bd690c3e728b25332acbadd7cad670cc4a02558d9c417"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e2e6c39bd7b9372b0be21456caab138e8e69cc0fc1190a9dfa92bd45a1e6e904"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dda56c24d869b1193fcc763f1284b9126550eaf84b88bbc7256e15028f19188a"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79849239c39b5e1fd906556c474d9b0439ea6792b637511f3fe3a41158d89ca8"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e3bc157fed2a4c02ec468de4ecd12a6e22818d4f09cde2c31ee3226ffbefab2"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3da53da805b71e41053dc670f9a820d1157aae77b6b944e08024d17bcd51ef88"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8705f17dfeb43139a692298cb6637ee2e59c0194538153e83e9ee0c75c2eddde"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:82a5c2f4b87c26bb1a0ef3d16b5c4753434633b83d365cc0ddf2770c93829e3c"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce8be0466f4c0d585cdb6c1e2ed07232221df101a4c6f28821d2aa754ca2d9e2"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:409afdfe1e2e90e6ee7fc896f3df9a7fec8e793e58bfa0d052c8a82f99c37abb"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5b9c3f4ee0b9a439d2415012bd1b1cc2df59e4d6a9939f4d669241d30b414327"}, + {file = "kiwisolver-1.4.7-cp39-cp39-win32.whl", hash = "sha256:a79ae34384df2b615eefca647a2873842ac3b596418032bef9a7283675962644"}, + {file = "kiwisolver-1.4.7-cp39-cp39-win_amd64.whl", hash = "sha256:cf0438b42121a66a3a667de17e779330fc0f20b0d97d59d2f2121e182b0505e4"}, + {file = "kiwisolver-1.4.7-cp39-cp39-win_arm64.whl", hash = "sha256:764202cc7e70f767dab49e8df52c7455e8de0df5d858fa801a11aa0d882ccf3f"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:94252291e3fe68001b1dd747b4c0b3be12582839b95ad4d1b641924d68fd4643"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5b7dfa3b546da08a9f622bb6becdb14b3e24aaa30adba66749d38f3cc7ea9706"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd3de6481f4ed8b734da5df134cd5a6a64fe32124fe83dde1e5b5f29fe30b1e6"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a91b5f9f1205845d488c928e8570dcb62b893372f63b8b6e98b863ebd2368ff2"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fa14dbd66b8b8f470d5fc79c089a66185619d31645f9b0773b88b19f7223c4"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:eb542fe7933aa09d8d8f9d9097ef37532a7df6497819d16efe4359890a2f417a"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bfa1acfa0c54932d5607e19a2c24646fb4c1ae2694437789129cf099789a3b00"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:eee3ea935c3d227d49b4eb85660ff631556841f6e567f0f7bda972df6c2c9935"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f3160309af4396e0ed04db259c3ccbfdc3621b5559b5453075e5de555e1f3a1b"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a17f6a29cf8935e587cc8a4dbfc8368c55edc645283db0ce9801016f83526c2d"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10849fb2c1ecbfae45a693c070e0320a91b35dd4bcf58172c023b994283a124d"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:ac542bf38a8a4be2dc6b15248d36315ccc65f0743f7b1a76688ffb6b5129a5c2"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8b01aac285f91ca889c800042c35ad3b239e704b150cfd3382adfc9dcc780e39"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:48be928f59a1f5c8207154f935334d374e79f2b5d212826307d072595ad76a2e"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f37cfe618a117e50d8c240555331160d73d0411422b59b5ee217843d7b693608"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:599b5c873c63a1f6ed7eead644a8a380cfbdf5db91dcb6f85707aaab213b1674"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:801fa7802e5cfabe3ab0c81a34c323a319b097dfb5004be950482d882f3d7225"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0c6c43471bc764fad4bc99c5c2d6d16a676b1abf844ca7c8702bdae92df01ee0"}, + {file = "kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60"}, +] + +[[package]] +name = "logical-unification" +version = "0.4.6" +description = "Logical unification in Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "logical-unification-0.4.6.tar.gz", hash = "sha256:908435123f8a106fa4dcf9bf1b75c7beb309fa2bbecf277868af8f1c212650a0"}, +] + +[package.dependencies] +multipledispatch = "*" +toolz = "*" + +[[package]] +name = "markdown" +version = "3.7" +description = "Python implementation of John Gruber's Markdown." +optional = false +python-versions = ">=3.8" +files = [ + {file = "Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803"}, + {file = "markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} + +[package.extras] +docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] +testing = ["coverage", "pyyaml"] + +[[package]] +name = "markupsafe" +version = "3.0.2" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.9" +files = [ + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, + {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, +] + +[[package]] +name = "matplotlib" +version = "3.9.3" +description = "Python plotting package" +optional = false +python-versions = ">=3.9" +files = [ + {file = "matplotlib-3.9.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:41b016e3be4e740b66c79a031a0a6e145728dbc248142e751e8dab4f3188ca1d"}, + {file = "matplotlib-3.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e0143975fc2a6d7136c97e19c637321288371e8f09cff2564ecd73e865ea0b9"}, + {file = "matplotlib-3.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f459c8ee2c086455744723628264e43c884be0c7d7b45d84b8cd981310b4815"}, + {file = "matplotlib-3.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:687df7ceff57b8f070d02b4db66f75566370e7ae182a0782b6d3d21b0d6917dc"}, + {file = "matplotlib-3.9.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:edd14cf733fdc4f6e6fe3f705af97676a7e52859bf0044aa2c84e55be739241c"}, + {file = "matplotlib-3.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:1c40c244221a1adbb1256692b1133c6fb89418df27bf759a31a333e7912a4010"}, + {file = "matplotlib-3.9.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:cf2a60daf6cecff6828bc608df00dbc794380e7234d2411c0ec612811f01969d"}, + {file = "matplotlib-3.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:213d6dc25ce686516208d8a3e91120c6a4fdae4a3e06b8505ced5b716b50cc04"}, + {file = "matplotlib-3.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c52f48eb75fcc119a4fdb68ba83eb5f71656999420375df7c94cc68e0e14686e"}, + {file = "matplotlib-3.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3c93796b44fa111049b88a24105e947f03c01966b5c0cc782e2ee3887b790a3"}, + {file = "matplotlib-3.9.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cd1077b9a09b16d8c3c7075a8add5ffbfe6a69156a57e290c800ed4d435bef1d"}, + {file = "matplotlib-3.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:c96eeeb8c68b662c7747f91a385688d4b449687d29b691eff7068a4602fe6dc4"}, + {file = "matplotlib-3.9.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0a361bd5583bf0bcc08841df3c10269617ee2a36b99ac39d455a767da908bbbc"}, + {file = "matplotlib-3.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e14485bb1b83eeb3d55b6878f9560240981e7bbc7a8d4e1e8c38b9bd6ec8d2de"}, + {file = "matplotlib-3.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a8d279f78844aad213c4935c18f8292a9432d51af2d88bca99072c903948045"}, + {file = "matplotlib-3.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6c12514329ac0d03128cf1dcceb335f4fbf7c11da98bca68dca8dcb983153a9"}, + {file = "matplotlib-3.9.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6e9de2b390d253a508dd497e9b5579f3a851f208763ed67fdca5dc0c3ea6849c"}, + {file = "matplotlib-3.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:d796272408f8567ff7eaa00eb2856b3a00524490e47ad505b0b4ca6bb8a7411f"}, + {file = "matplotlib-3.9.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:203d18df84f5288973b2d56de63d4678cc748250026ca9e1ad8f8a0fd8a75d83"}, + {file = "matplotlib-3.9.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b651b0d3642991259109dc0351fc33ad44c624801367bb8307be9bfc35e427ad"}, + {file = "matplotlib-3.9.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66d7b171fecf96940ce069923a08ba3df33ef542de82c2ff4fe8caa8346fa95a"}, + {file = "matplotlib-3.9.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6be0ba61f6ff2e6b68e4270fb63b6813c9e7dec3d15fc3a93f47480444fd72f0"}, + {file = "matplotlib-3.9.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d6b2e8856dec3a6db1ae51aec85c82223e834b228c1d3228aede87eee2b34f9"}, + {file = "matplotlib-3.9.3-cp313-cp313-win_amd64.whl", hash = "sha256:90a85a004fefed9e583597478420bf904bb1a065b0b0ee5b9d8d31b04b0f3f70"}, + {file = "matplotlib-3.9.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3119b2f16de7f7b9212ba76d8fe6a0e9f90b27a1e04683cd89833a991682f639"}, + {file = "matplotlib-3.9.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:87ad73763d93add1b6c1f9fcd33af662fd62ed70e620c52fcb79f3ac427cf3a6"}, + {file = "matplotlib-3.9.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:026bdf3137ab6022c866efa4813b6bbeddc2ed4c9e7e02f0e323a7bca380dfa0"}, + {file = "matplotlib-3.9.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:760a5e89ebbb172989e8273024a1024b0f084510b9105261b3b00c15e9c9f006"}, + {file = "matplotlib-3.9.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a42b9dc42de2cfe357efa27d9c50c7833fc5ab9b2eb7252ccd5d5f836a84e1e4"}, + {file = "matplotlib-3.9.3-cp313-cp313t-win_amd64.whl", hash = "sha256:e0fcb7da73fbf67b5f4bdaa57d85bb585a4e913d4a10f3e15b32baea56a67f0a"}, + {file = "matplotlib-3.9.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:031b7f5b8e595cc07def77ec5b58464e9bb67dc5760be5d6f26d9da24892481d"}, + {file = "matplotlib-3.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9fa6e193c14d6944e0685cdb527cb6b38b0e4a518043e7212f214113af7391da"}, + {file = "matplotlib-3.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e6eefae6effa0c35bbbc18c25ee6e0b1da44d2359c3cd526eb0c9e703cf055d"}, + {file = "matplotlib-3.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d3e5c7a99bd28afb957e1ae661323b0800d75b419f24d041ed1cc5d844a764"}, + {file = "matplotlib-3.9.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:816a966d5d376bf24c92af8f379e78e67278833e4c7cbc9fa41872eec629a060"}, + {file = "matplotlib-3.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fb0b37c896172899a4a93d9442ffdc6f870165f59e05ce2e07c6fded1c15749"}, + {file = "matplotlib-3.9.3-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f2a4ea08e6876206d511365b0bc234edc813d90b930be72c3011bbd7898796f"}, + {file = "matplotlib-3.9.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:9b081dac96ab19c54fd8558fac17c9d2c9cb5cc4656e7ed3261ddc927ba3e2c5"}, + {file = "matplotlib-3.9.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a0a63cb8404d1d1f94968ef35738900038137dab8af836b6c21bb6f03d75465"}, + {file = "matplotlib-3.9.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:896774766fd6be4571a43bc2fcbcb1dcca0807e53cab4a5bf88c4aa861a08e12"}, + {file = "matplotlib-3.9.3.tar.gz", hash = "sha256:cd5dbbc8e25cad5f706845c4d100e2c8b34691b412b93717ce38d8ae803bcfa5"}, +] + +[package.dependencies] +contourpy = ">=1.0.1" +cycler = ">=0.10" +fonttools = ">=4.22.0" +importlib-resources = {version = ">=3.2.0", markers = "python_version < \"3.10\""} +kiwisolver = ">=1.3.1" +numpy = ">=1.23" +packaging = ">=20.0" +pillow = ">=8" +pyparsing = ">=2.3.1" +python-dateutil = ">=2.7" + +[package.extras] +dev = ["meson-python (>=0.13.1)", "numpy (>=1.25)", "pybind11 (>=2.6,!=2.13.3)", "setuptools (>=64)", "setuptools_scm (>=7)"] + +[[package]] +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +optional = false +python-versions = ">=3.6" +files = [ + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, +] + +[[package]] +name = "minikanren" +version = "1.0.3" +description = "Relational programming in Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "miniKanren-1.0.3.tar.gz", hash = "sha256:1ec8bdb01144ad5e8752c7c297fb8a122db920f859276d25a72d164e998d7f6e"}, +] + +[package.dependencies] +cons = ">=0.4.0" +etuples = ">=0.3.1" +logical-unification = ">=0.4.1" +multipledispatch = "*" +toolz = "*" + +[[package]] +name = "mistune" +version = "3.0.2" +description = "A sane and fast Markdown parser with useful plugins and renderers" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, + {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, +] + +[[package]] +name = "mkdocs" +version = "1.6.1" +description = "Project documentation with Markdown." +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, + {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, +] + +[package.dependencies] +click = ">=7.0" +colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} +ghp-import = ">=1.0" +importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} +jinja2 = ">=2.11.1" +markdown = ">=3.3.6" +markupsafe = ">=2.0.1" +mergedeep = ">=1.3.4" +mkdocs-get-deps = ">=0.2.0" +packaging = ">=20.5" +pathspec = ">=0.11.1" +pyyaml = ">=5.1" +pyyaml-env-tag = ">=0.1" +watchdog = ">=2.0" + +[package.extras] +i18n = ["babel (>=2.9.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.4)", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "watchdog (==2.0)"] + +[[package]] +name = "mkdocs-autorefs" +version = "1.2.0" +description = "Automatically link across pages in MkDocs." +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_autorefs-1.2.0-py3-none-any.whl", hash = "sha256:d588754ae89bd0ced0c70c06f58566a4ee43471eeeee5202427da7de9ef85a2f"}, + {file = "mkdocs_autorefs-1.2.0.tar.gz", hash = "sha256:a86b93abff653521bda71cf3fc5596342b7a23982093915cb74273f67522190f"}, +] + +[package.dependencies] +Markdown = ">=3.3" +markupsafe = ">=2.0.1" +mkdocs = ">=1.1" + +[[package]] +name = "mkdocs-get-deps" +version = "0.2.0" +description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, + {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=4.3", markers = "python_version < \"3.10\""} +mergedeep = ">=1.3.4" +platformdirs = ">=2.2.0" +pyyaml = ">=5.1" + +[[package]] +name = "mkdocs-material" +version = "9.5.47" +description = "Documentation that simply works" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_material-9.5.47-py3-none-any.whl", hash = "sha256:53fb9c9624e7865da6ec807d116cd7be24b3cb36ab31b1d1d1a9af58c56009a2"}, + {file = "mkdocs_material-9.5.47.tar.gz", hash = "sha256:fc3b7a8e00ad896660bd3a5cc12ca0cb28bdc2bcbe2a946b5714c23ac91b0ede"}, +] + +[package.dependencies] +babel = ">=2.10,<3.0" +colorama = ">=0.4,<1.0" +jinja2 = ">=3.0,<4.0" +markdown = ">=3.2,<4.0" +mkdocs = ">=1.6,<2.0" +mkdocs-material-extensions = ">=1.3,<2.0" +paginate = ">=0.5,<1.0" +pygments = ">=2.16,<3.0" +pymdown-extensions = ">=10.2,<11.0" +regex = ">=2022.4" +requests = ">=2.26,<3.0" + +[package.extras] +git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] +imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] +recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +description = "Extension pack for Python Markdown and MkDocs Material." +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, + {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, +] + +[[package]] +name = "mkdocstrings" +version = "0.27.0" +description = "Automatic documentation from sources, for MkDocs." +optional = false +python-versions = ">=3.9" +files = [ + {file = "mkdocstrings-0.27.0-py3-none-any.whl", hash = "sha256:6ceaa7ea830770959b55a16203ac63da24badd71325b96af950e59fd37366332"}, + {file = "mkdocstrings-0.27.0.tar.gz", hash = "sha256:16adca6d6b0a1f9e0c07ff0b02ced8e16f228a9d65a37c063ec4c14d7b76a657"}, +] + +[package.dependencies] +click = ">=7.0" +importlib-metadata = {version = ">=4.6", markers = "python_version < \"3.10\""} +Jinja2 = ">=2.11.1" +Markdown = ">=3.6" +MarkupSafe = ">=1.1" +mkdocs = ">=1.4" +mkdocs-autorefs = ">=1.2" +platformdirs = ">=2.2" +pymdown-extensions = ">=6.3" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.10\""} + +[package.extras] +crystal = ["mkdocstrings-crystal (>=0.3.4)"] +python = ["mkdocstrings-python (>=0.5.2)"] +python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] + +[[package]] +name = "mkdocstrings-python" +version = "1.12.2" +description = "A Python handler for mkdocstrings." +optional = false +python-versions = ">=3.9" +files = [ + {file = "mkdocstrings_python-1.12.2-py3-none-any.whl", hash = "sha256:7f7d40d6db3cb1f5d19dbcd80e3efe4d0ba32b073272c0c0de9de2e604eda62a"}, + {file = "mkdocstrings_python-1.12.2.tar.gz", hash = "sha256:7a1760941c0b52a2cd87b960a9e21112ffe52e7df9d0b9583d04d47ed2e186f3"}, +] + +[package.dependencies] +griffe = ">=0.49" +mkdocs-autorefs = ">=1.2" +mkdocstrings = ">=0.26" + +[[package]] +name = "mknotebooks" +version = "0.8.0" +description = "Plugin for mkdocs to generate markdown documents from jupyter notebooks." +optional = false +python-versions = "*" +files = [ + {file = "mknotebooks-0.8.0-py3-none-any.whl", hash = "sha256:4a9b998260c09bcc311455a19a44cc395a30ee82dc1e86e3316dd09f2445ebd3"}, +] + +[package.dependencies] +gitpython = "*" +jupyter-client = "*" +markdown = ">=3.3.3" +mkdocs = ">=1.5.0" +nbconvert = ">=6.0.0" + +[[package]] +name = "multipledispatch" +version = "1.0.0" +description = "Multiple dispatch" +optional = false +python-versions = "*" +files = [ + {file = "multipledispatch-1.0.0-py3-none-any.whl", hash = "sha256:0c53cd8b077546da4e48869f49b13164bebafd0c2a5afceb6bb6a316e7fb46e4"}, + {file = "multipledispatch-1.0.0.tar.gz", hash = "sha256:5c839915465c68206c3e9c473357908216c28383b425361e5d144594bf85a7e0"}, +] + +[[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.1" +description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "nbclient-0.10.1-py3-none-any.whl", hash = "sha256:949019b9240d66897e442888cfb618f69ef23dc71c01cb5fced8499c2cfc084d"}, + {file = "nbclient-0.10.1.tar.gz", hash = "sha256:3e93e348ab27e712acd46fccd809139e356eb9a31aab641d1a7991a6eb4e6f68"}, +] + +[package.dependencies] +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +nbformat = ">=5.1" +traitlets = ">=5.4" + +[package.extras] +dev = ["pre-commit"] +docs = ["autodoc-traits", "flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "mock", "moto", "myst-parser", "nbconvert (>=7.0.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling", "testpath", "xmltodict"] +test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] + +[[package]] +name = "nbconvert" +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.4-py3-none-any.whl", hash = "sha256:05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3"}, + {file = "nbconvert-7.16.4.tar.gz", hash = "sha256:86ca91ba266b0a448dc96fa6c5b9d98affabde2867b363258703536807f9f7f4"}, +] + +[package.dependencies] +beautifulsoup4 = "*" +bleach = "!=5.0.0" +defusedxml = "*" +importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} +jinja2 = ">=3.0" +jupyter-core = ">=4.7" +jupyterlab-pygments = "*" +markupsafe = ">=2.0" +mistune = ">=2.0.3,<4" +nbclient = ">=0.5.0" +nbformat = ">=5.7" +packaging = "*" +pandocfilters = ">=1.4.1" +pygments = ">=2.4.1" +tinycss2 = "*" +traitlets = ">=5.1" + +[package.extras] +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 = ["pyqtwebengine (>=5.15)"] +qtpng = ["pyqtwebengine (>=5.15)"] +serve = ["tornado (>=6.1)"] +test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest (>=7)"] +webpdf = ["playwright"] + +[[package]] +name = "nbformat" +version = "5.10.4" +description = "The Jupyter Notebook format" +optional = false +python-versions = ">=3.8" +files = [ + {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 = ">=2.15" +jsonschema = ">=2.6" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +traitlets = ">=5.1" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["pep440", "pre-commit", "pytest", "testpath"] + +[[package]] +name = "nodeenv" +version = "1.9.1" +description = "Node.js virtual environment builder" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, +] + +[[package]] +name = "numpy" +version = "1.26.4" +description = "Fundamental package for array computing in Python" +optional = false +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.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, +] + +[[package]] +name = "paginate" +version = "0.5.7" +description = "Divides large result sets into pages for easier browsing" +optional = false +python-versions = "*" +files = [ + {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, + {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, +] + +[package.extras] +dev = ["pytest", "tox"] +lint = ["black"] + +[[package]] +name = "pandas" +version = "2.2.3" +description = "Powerful data structures for data analysis, time series, and statistics" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, + {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, + {file = "pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed"}, + {file = "pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57"}, + {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42"}, + {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f"}, + {file = "pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645"}, + {file = "pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039"}, + {file = "pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd"}, + {file = "pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698"}, + {file = "pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc"}, + {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3"}, + {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32"}, + {file = "pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5"}, + {file = "pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9"}, + {file = "pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4"}, + {file = "pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3"}, + {file = "pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319"}, + {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8"}, + {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a"}, + {file = "pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13"}, + {file = "pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015"}, + {file = "pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28"}, + {file = "pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0"}, + {file = "pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24"}, + {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659"}, + {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb"}, + {file = "pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d"}, + {file = "pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468"}, + {file = "pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18"}, + {file = "pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2"}, + {file = "pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4"}, + {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d"}, + {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a"}, + {file = "pandas-2.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc6b93f9b966093cb0fd62ff1a7e4c09e6d546ad7c1de191767baffc57628f39"}, + {file = "pandas-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5dbca4c1acd72e8eeef4753eeca07de9b1db4f398669d5994086f788a5d7cc30"}, + {file = "pandas-2.2.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8cd6d7cc958a3910f934ea8dbdf17b2364827bb4dafc38ce6eef6bb3d65ff09c"}, + {file = "pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99df71520d25fade9db7c1076ac94eb994f4d2673ef2aa2e86ee039b6746d20c"}, + {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31d0ced62d4ea3e231a9f228366919a5ea0b07440d9d4dac345376fd8e1477ea"}, + {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7eee9e7cea6adf3e3d24e304ac6b8300646e2a5d1cd3a3c2abed9101b0846761"}, + {file = "pandas-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4850ba03528b6dd51d6c5d273c46f183f39a9baf3f0143e566b89450965b105e"}, + {file = "pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667"}, +] + +[package.dependencies] +numpy = [ + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, +] +python-dateutil = ">=2.8.2" +pytz = ">=2020.1" +tzdata = ">=2022.7" + +[package.extras] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] +aws = ["s3fs (>=2022.11.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] +compression = ["zstandard (>=0.19.0)"] +computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] +feather = ["pyarrow (>=10.0.1)"] +fss = ["fsspec (>=2022.11.0)"] +gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] +hdf5 = ["tables (>=3.8.0)"] +html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] +mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=10.0.1)"] +performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] +plot = ["matplotlib (>=3.6.3)"] +postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] +spss = ["pyreadstat (>=1.2.0)"] +sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.9.2)"] + +[[package]] +name = "pandocfilters" +version = "1.5.1" +description = "Utilities for writing pandoc filters in python" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, + {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + +[[package]] +name = "pillow" +version = "11.0.0" +description = "Python Imaging Library (Fork)" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pillow-11.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:6619654954dc4936fcff82db8eb6401d3159ec6be81e33c6000dfd76ae189947"}, + {file = "pillow-11.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b3c5ac4bed7519088103d9450a1107f76308ecf91d6dabc8a33a2fcfb18d0fba"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a65149d8ada1055029fcb665452b2814fe7d7082fcb0c5bed6db851cb69b2086"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88a58d8ac0cc0e7f3a014509f0455248a76629ca9b604eca7dc5927cc593c5e9"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c26845094b1af3c91852745ae78e3ea47abf3dbcd1cf962f16b9a5fbe3ee8488"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:1a61b54f87ab5786b8479f81c4b11f4d61702830354520837f8cc791ebba0f5f"}, + {file = "pillow-11.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:674629ff60030d144b7bca2b8330225a9b11c482ed408813924619c6f302fdbb"}, + {file = "pillow-11.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:598b4e238f13276e0008299bd2482003f48158e2b11826862b1eb2ad7c768b97"}, + {file = "pillow-11.0.0-cp310-cp310-win32.whl", hash = "sha256:9a0f748eaa434a41fccf8e1ee7a3eed68af1b690e75328fd7a60af123c193b50"}, + {file = "pillow-11.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:a5629742881bcbc1f42e840af185fd4d83a5edeb96475a575f4da50d6ede337c"}, + {file = "pillow-11.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:ee217c198f2e41f184f3869f3e485557296d505b5195c513b2bfe0062dc537f1"}, + {file = "pillow-11.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1c1d72714f429a521d8d2d018badc42414c3077eb187a59579f28e4270b4b0fc"}, + {file = "pillow-11.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:499c3a1b0d6fc8213519e193796eb1a86a1be4b1877d678b30f83fd979811d1a"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8b2351c85d855293a299038e1f89db92a2f35e8d2f783489c6f0b2b5f3fe8a3"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f4dba50cfa56f910241eb7f883c20f1e7b1d8f7d91c750cd0b318bad443f4d5"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5ddbfd761ee00c12ee1be86c9c0683ecf5bb14c9772ddbd782085779a63dd55b"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:45c566eb10b8967d71bf1ab8e4a525e5a93519e29ea071459ce517f6b903d7fa"}, + {file = "pillow-11.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b4fd7bd29610a83a8c9b564d457cf5bd92b4e11e79a4ee4716a63c959699b306"}, + {file = "pillow-11.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cb929ca942d0ec4fac404cbf520ee6cac37bf35be479b970c4ffadf2b6a1cad9"}, + {file = "pillow-11.0.0-cp311-cp311-win32.whl", hash = "sha256:006bcdd307cc47ba43e924099a038cbf9591062e6c50e570819743f5607404f5"}, + {file = "pillow-11.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:52a2d8323a465f84faaba5236567d212c3668f2ab53e1c74c15583cf507a0291"}, + {file = "pillow-11.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:16095692a253047fe3ec028e951fa4221a1f3ed3d80c397e83541a3037ff67c9"}, + {file = "pillow-11.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2c0a187a92a1cb5ef2c8ed5412dd8d4334272617f532d4ad4de31e0495bd923"}, + {file = "pillow-11.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:084a07ef0821cfe4858fe86652fffac8e187b6ae677e9906e192aafcc1b69903"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8069c5179902dcdce0be9bfc8235347fdbac249d23bd90514b7a47a72d9fecf4"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f02541ef64077f22bf4924f225c0fd1248c168f86e4b7abdedd87d6ebaceab0f"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fcb4621042ac4b7865c179bb972ed0da0218a076dc1820ffc48b1d74c1e37fe9"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:00177a63030d612148e659b55ba99527803288cea7c75fb05766ab7981a8c1b7"}, + {file = "pillow-11.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8853a3bf12afddfdf15f57c4b02d7ded92c7a75a5d7331d19f4f9572a89c17e6"}, + {file = "pillow-11.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3107c66e43bda25359d5ef446f59c497de2b5ed4c7fdba0894f8d6cf3822dafc"}, + {file = "pillow-11.0.0-cp312-cp312-win32.whl", hash = "sha256:86510e3f5eca0ab87429dd77fafc04693195eec7fd6a137c389c3eeb4cfb77c6"}, + {file = "pillow-11.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:8ec4a89295cd6cd4d1058a5e6aec6bf51e0eaaf9714774e1bfac7cfc9051db47"}, + {file = "pillow-11.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:27a7860107500d813fcd203b4ea19b04babe79448268403172782754870dac25"}, + {file = "pillow-11.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bcd1fb5bb7b07f64c15618c89efcc2cfa3e95f0e3bcdbaf4642509de1942a699"}, + {file = "pillow-11.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e038b0745997c7dcaae350d35859c9715c71e92ffb7e0f4a8e8a16732150f38"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ae08bd8ffc41aebf578c2af2f9d8749d91f448b3bfd41d7d9ff573d74f2a6b2"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d69bfd8ec3219ae71bcde1f942b728903cad25fafe3100ba2258b973bd2bc1b2"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:61b887f9ddba63ddf62fd02a3ba7add935d053b6dd7d58998c630e6dbade8527"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:c6a660307ca9d4867caa8d9ca2c2658ab685de83792d1876274991adec7b93fa"}, + {file = "pillow-11.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:73e3a0200cdda995c7e43dd47436c1548f87a30bb27fb871f352a22ab8dcf45f"}, + {file = "pillow-11.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fba162b8872d30fea8c52b258a542c5dfd7b235fb5cb352240c8d63b414013eb"}, + {file = "pillow-11.0.0-cp313-cp313-win32.whl", hash = "sha256:f1b82c27e89fffc6da125d5eb0ca6e68017faf5efc078128cfaa42cf5cb38798"}, + {file = "pillow-11.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:8ba470552b48e5835f1d23ecb936bb7f71d206f9dfeee64245f30c3270b994de"}, + {file = "pillow-11.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:846e193e103b41e984ac921b335df59195356ce3f71dcfd155aa79c603873b84"}, + {file = "pillow-11.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4ad70c4214f67d7466bea6a08061eba35c01b1b89eaa098040a35272a8efb22b"}, + {file = "pillow-11.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6ec0d5af64f2e3d64a165f490d96368bb5dea8b8f9ad04487f9ab60dc4bb6003"}, + {file = "pillow-11.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c809a70e43c7977c4a42aefd62f0131823ebf7dd73556fa5d5950f5b354087e2"}, + {file = "pillow-11.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:4b60c9520f7207aaf2e1d94de026682fc227806c6e1f55bba7606d1c94dd623a"}, + {file = "pillow-11.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1e2688958a840c822279fda0086fec1fdab2f95bf2b717b66871c4ad9859d7e8"}, + {file = "pillow-11.0.0-cp313-cp313t-win32.whl", hash = "sha256:607bbe123c74e272e381a8d1957083a9463401f7bd01287f50521ecb05a313f8"}, + {file = "pillow-11.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c39ed17edea3bc69c743a8dd3e9853b7509625c2462532e62baa0732163a904"}, + {file = "pillow-11.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:75acbbeb05b86bc53cbe7b7e6fe00fbcf82ad7c684b3ad82e3d711da9ba287d3"}, + {file = "pillow-11.0.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2e46773dc9f35a1dd28bd6981332fd7f27bec001a918a72a79b4133cf5291dba"}, + {file = "pillow-11.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2679d2258b7f1192b378e2893a8a0a0ca472234d4c2c0e6bdd3380e8dfa21b6a"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eda2616eb2313cbb3eebbe51f19362eb434b18e3bb599466a1ffa76a033fb916"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ec184af98a121fb2da42642dea8a29ec80fc3efbaefb86d8fdd2606619045d"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:8594f42df584e5b4bb9281799698403f7af489fba84c34d53d1c4bfb71b7c4e7"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:c12b5ae868897c7338519c03049a806af85b9b8c237b7d675b8c5e089e4a618e"}, + {file = "pillow-11.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:70fbbdacd1d271b77b7721fe3cdd2d537bbbd75d29e6300c672ec6bb38d9672f"}, + {file = "pillow-11.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5178952973e588b3f1360868847334e9e3bf49d19e169bbbdfaf8398002419ae"}, + {file = "pillow-11.0.0-cp39-cp39-win32.whl", hash = "sha256:8c676b587da5673d3c75bd67dd2a8cdfeb282ca38a30f37950511766b26858c4"}, + {file = "pillow-11.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:94f3e1780abb45062287b4614a5bc0874519c86a777d4a7ad34978e86428b8dd"}, + {file = "pillow-11.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:290f2cc809f9da7d6d622550bbf4c1e57518212da51b6a30fe8e0a270a5b78bd"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1187739620f2b365de756ce086fdb3604573337cc28a0d3ac4a01ab6b2d2a6d2"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fbbcb7b57dc9c794843e3d1258c0fbf0f48656d46ffe9e09b63bbd6e8cd5d0a2"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d203af30149ae339ad1b4f710d9844ed8796e97fda23ffbc4cc472968a47d0b"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21a0d3b115009ebb8ac3d2ebec5c2982cc693da935f4ab7bb5c8ebe2f47d36f2"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:73853108f56df97baf2bb8b522f3578221e56f646ba345a372c78326710d3830"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e58876c91f97b0952eb766123bfef372792ab3f4e3e1f1a2267834c2ab131734"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:224aaa38177597bb179f3ec87eeefcce8e4f85e608025e9cfac60de237ba6316"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5bd2d3bdb846d757055910f0a59792d33b555800813c3b39ada1829c372ccb06"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:375b8dd15a1f5d2feafff536d47e22f69625c1aa92f12b339ec0b2ca40263273"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:daffdf51ee5db69a82dd127eabecce20729e21f7a3680cf7cbb23f0829189790"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7326a1787e3c7b0429659e0a944725e1b03eeaa10edd945a86dead1913383944"}, + {file = "pillow-11.0.0.tar.gz", hash = "sha256:72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=8.1)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] + +[[package]] +name = "platformdirs" +version = "4.3.6" +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.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] + +[[package]] +name = "pluggy" +version = "1.5.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "pre-commit" +version = "4.0.1" +description = "A framework for managing and maintaining multi-language pre-commit hooks." +optional = false +python-versions = ">=3.9" +files = [ + {file = "pre_commit-4.0.1-py2.py3-none-any.whl", hash = "sha256:efde913840816312445dc98787724647c65473daefe420785f885e8ed9a06878"}, + {file = "pre_commit-4.0.1.tar.gz", hash = "sha256:80905ac375958c0444c65e9cebebd948b3cdb518f335a091a670a89d652139d2"}, +] + +[package.dependencies] +cfgv = ">=2.0.0" +identify = ">=1.0.0" +nodeenv = ">=0.11.1" +pyyaml = ">=5.1" +virtualenv = ">=20.10.0" + +[[package]] +name = "prompt-toolkit" +version = "3.0.36" +description = "Library for building powerful interactive command lines in Python" +optional = false +python-versions = ">=3.6.2" +files = [ + {file = "prompt_toolkit-3.0.36-py3-none-any.whl", hash = "sha256:aa64ad242a462c5ff0363a7b9cfe696c20d55d9fc60c11fd8e632d064804d305"}, + {file = "prompt_toolkit-3.0.36.tar.gz", hash = "sha256:3e163f254bef5a03b146397d7c1963bd3e2812f0964bb9a24e6ec761fd28db63"}, +] + +[package.dependencies] +wcwidth = "*" + +[[package]] +name = "pycparser" +version = "2.22" +description = "C parser in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, +] + +[[package]] +name = "pygments" +version = "2.18.0" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pymdown-extensions" +version = "10.12" +description = "Extension pack for Python Markdown." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pymdown_extensions-10.12-py3-none-any.whl", hash = "sha256:49f81412242d3527b8b4967b990df395c89563043bc51a3d2d7d500e52123b77"}, + {file = "pymdown_extensions-10.12.tar.gz", hash = "sha256:b0ee1e0b2bef1071a47891ab17003bfe5bf824a398e13f49f8ed653b699369a7"}, +] + +[package.dependencies] +markdown = ">=3.6" +pyyaml = "*" + +[package.extras] +extra = ["pygments (>=2.12)"] + +[[package]] +name = "pyparsing" +version = "3.2.0" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pyparsing-3.2.0-py3-none-any.whl", hash = "sha256:93d9577b88da0bbea8cc8334ee8b918ed014968fd2ec383e868fb8afb1ccef84"}, + {file = "pyparsing-3.2.0.tar.gz", hash = "sha256:cbf74e27246d595d9a74b186b810f6fbb86726dbf3b9532efb343f6d7294fe9c"}, +] + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pytensor" +version = "2.19.0" +description = "Optimizing compiler for evaluating mathematical expressions on CPUs and GPUs." +optional = false +python-versions = "<3.13,>=3.9" +files = [ + {file = "pytensor-2.19.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f6a273f38e81d5a946e94696439b0f50850d8ae4846df43505ee6116853a3a85"}, + {file = "pytensor-2.19.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d62e162c8c63faff609e7b30740ef8df81b666d12095558c16990bc182313e0"}, + {file = "pytensor-2.19.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c6d6d8204991e0887b28feaf18fa530e5bed3ddbd2142a4f9d87e0ff267fe1ef"}, + {file = "pytensor-2.19.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a24a014f2fb1c3a3e3f796065a27607397eb99d7dd9b026022f932753615b1d0"}, + {file = "pytensor-2.19.0-cp310-cp310-win_amd64.whl", hash = "sha256:6564255b1182c557f13eef8d71c5c37032d58b3b922799e809a14913f3b32de1"}, + {file = "pytensor-2.19.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3eb22a1c90598976fe283c9ccdba4ff18b490faee31b2e3f4cf288ac8e7244fd"}, + {file = "pytensor-2.19.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e79ee6dfc44f6162cfc11aa1bf4c4f6d5b40d2b4b70e3f871b70d230c6cc30b"}, + {file = "pytensor-2.19.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:97d8c95f35dfc6299e1d080d35dd1bded38efab01270819d3030e1ec633b2126"}, + {file = "pytensor-2.19.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8601aa3dcc08ae99182a1f6ae2754453c47a5cf84e149ca81459d734204cff98"}, + {file = "pytensor-2.19.0-cp311-cp311-win_amd64.whl", hash = "sha256:9a20028c34ffb4ee62a6379cbbad5006cf76703207a9beddd4d2c9c0e1a00b19"}, + {file = "pytensor-2.19.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cba8946b79dc810958b65a060ce2c9abbdb94f677b2633d0d0ba7111b334cfb1"}, + {file = "pytensor-2.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7015d6375407df7fdb83cb862ba0ff519311bb5107a53b480251ce8bebfb92fc"}, + {file = "pytensor-2.19.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0a5245cb12b668eb417b5f54e63e04784ca39a58f1ccbe250cd3fda035939743"}, + {file = "pytensor-2.19.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5e5d4464b3f19b2453beb75fa765a221fc0d3b055d1b4f2ff6b664d9c872736a"}, + {file = "pytensor-2.19.0-cp312-cp312-win_amd64.whl", hash = "sha256:9f6d17233d6fb4f8d2b0106521eabe62c8cf467d9ee5d32e0ba65a0c976b619e"}, + {file = "pytensor-2.19.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8ff6f9b8853f3792669c7c9bdf80350d27b1c770cd235ccfb34c3743c9dca778"}, + {file = "pytensor-2.19.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8f38669a704f8be043a929dbc0a260192454f8b19cdcedfe04403522c7837e6"}, + {file = "pytensor-2.19.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:49cb9940f3d174a9be4d739fbcd4ddbccc68b13814a68d8636a5fbdd724f37a1"}, + {file = "pytensor-2.19.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:222ddde5f1eb4d6a870de7754da0f4743332ab542b0830b45c709980fcefa788"}, + {file = "pytensor-2.19.0-cp39-cp39-win_amd64.whl", hash = "sha256:efbd1eba8353109caefb8055f3afdc3ceffb04888fa4c7c1109fc65cc8a52c8a"}, + {file = "pytensor-2.19.0.tar.gz", hash = "sha256:9e070528d12bee85f7fe68ce63b57a253c88d3e155a7415d9805c5b999dfa72b"}, +] + +[package.dependencies] +cons = "*" +etuples = "*" +filelock = "*" +logical-unification = "*" +miniKanren = "*" +numpy = ">=1.17.0" +scipy = ">=0.14" +setuptools = ">=48.0.0" +typing-extensions = "*" + +[package.extras] +complete = ["pytensor[jax]", "pytensor[numba]"] +development = ["pytensor[complete]", "pytensor[rtd]", "pytensor[tests]"] +jax = ["jax", "jaxlib"] +numba = ["numba (>=0.55)", "numba-scipy (>=0.3.0)"] +rtd = ["pydot", "pydot-ng", "pydot2", "pygments", "sphinx (>=5.1.0,<6)"] +tests = ["coverage (>=5.1)", "pre-commit", "pytest", "pytest-benchmark", "pytest-cov (>=2.6.1)", "pytest-mock"] + +[[package]] +name = "pytest" +version = "8.3.4" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, + {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=1.5,<2" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} + +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-cov" +version = "6.0.0" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.9" +files = [ + {file = "pytest-cov-6.0.0.tar.gz", hash = "sha256:fde0b595ca248bb8e2d76f020b465f3b107c9632e6a1d1705f17834c89dcadc0"}, + {file = "pytest_cov-6.0.0-py3-none-any.whl", hash = "sha256:eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35"}, +] + +[package.dependencies] +coverage = {version = ">=7.5", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "pytz" +version = "2024.2" +description = "World timezone definitions, modern and historical" +optional = false +python-versions = "*" +files = [ + {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, + {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, +] + +[[package]] +name = "pywin32" +version = "308" +description = "Python for Window Extensions" +optional = false +python-versions = "*" +files = [ + {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, + {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, + {file = "pywin32-308-cp310-cp310-win_arm64.whl", hash = "sha256:a5ab5381813b40f264fa3495b98af850098f814a25a63589a8e9eb12560f450c"}, + {file = "pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a"}, + {file = "pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b"}, + {file = "pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6"}, + {file = "pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897"}, + {file = "pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47"}, + {file = "pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091"}, + {file = "pywin32-308-cp313-cp313-win32.whl", hash = "sha256:1c44539a37a5b7b21d02ab34e6a4d314e0788f1690d65b48e9b0b89f31abbbed"}, + {file = "pywin32-308-cp313-cp313-win_amd64.whl", hash = "sha256:fd380990e792eaf6827fcb7e187b2b4b1cede0585e3d0c9e84201ec27b9905e4"}, + {file = "pywin32-308-cp313-cp313-win_arm64.whl", hash = "sha256:ef313c46d4c18dfb82a2431e3051ac8f112ccee1a34f29c263c583c568db63cd"}, + {file = "pywin32-308-cp37-cp37m-win32.whl", hash = "sha256:1f696ab352a2ddd63bd07430080dd598e6369152ea13a25ebcdd2f503a38f1ff"}, + {file = "pywin32-308-cp37-cp37m-win_amd64.whl", hash = "sha256:13dcb914ed4347019fbec6697a01a0aec61019c1046c2b905410d197856326a6"}, + {file = "pywin32-308-cp38-cp38-win32.whl", hash = "sha256:5794e764ebcabf4ff08c555b31bd348c9025929371763b2183172ff4708152f0"}, + {file = "pywin32-308-cp38-cp38-win_amd64.whl", hash = "sha256:3b92622e29d651c6b783e368ba7d6722b1634b8e70bd376fd7610fe1992e19de"}, + {file = "pywin32-308-cp39-cp39-win32.whl", hash = "sha256:7873ca4dc60ab3287919881a7d4f88baee4a6e639aa6962de25a98ba6b193341"}, + {file = "pywin32-308-cp39-cp39-win_amd64.whl", hash = "sha256:71b3322d949b4cc20776436a9c9ba0eeedcbc9c650daa536df63f0ff111bb920"}, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, +] + +[[package]] +name = "pyyaml-env-tag" +version = "0.1" +description = "A custom YAML tag for referencing environment variables in YAML files. " +optional = false +python-versions = ">=3.6" +files = [ + {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, + {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, +] + +[package.dependencies] +pyyaml = "*" + +[[package]] +name = "pyzmq" +version = "26.2.0" +description = "Python bindings for 0MQ" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629"}, + {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dacd995031a01d16eec825bf30802fceb2c3791ef24bcce48fa98ce40918c27b"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89289a5ee32ef6c439086184529ae060c741334b8970a6855ec0b6ad3ff28764"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5506f06d7dc6ecf1efacb4a013b1f05071bb24b76350832c96449f4a2d95091c"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ea039387c10202ce304af74def5021e9adc6297067f3441d348d2b633e8166a"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2224fa4a4c2ee872886ed00a571f5e967c85e078e8e8c2530a2fb01b3309b88"}, + {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:28ad5233e9c3b52d76196c696e362508959741e1a005fb8fa03b51aea156088f"}, + {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1c17211bc037c7d88e85ed8b7d8f7e52db6dc8eca5590d162717c654550f7282"}, + {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b8f86dd868d41bea9a5f873ee13bf5551c94cf6bc51baebc6f85075971fe6eea"}, + {file = "pyzmq-26.2.0-cp310-cp310-win32.whl", hash = "sha256:46a446c212e58456b23af260f3d9fb785054f3e3653dbf7279d8f2b5546b21c2"}, + {file = "pyzmq-26.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:49d34ab71db5a9c292a7644ce74190b1dd5a3475612eefb1f8be1d6961441971"}, + {file = "pyzmq-26.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:bfa832bfa540e5b5c27dcf5de5d82ebc431b82c453a43d141afb1e5d2de025fa"}, + {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:8f7e66c7113c684c2b3f1c83cdd3376103ee0ce4c49ff80a648643e57fb22218"}, + {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3a495b30fc91db2db25120df5847d9833af237546fd59170701acd816ccc01c4"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77eb0968da535cba0470a5165468b2cac7772cfb569977cff92e240f57e31bef"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ace4f71f1900a548f48407fc9be59c6ba9d9aaf658c2eea6cf2779e72f9f317"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92a78853d7280bffb93df0a4a6a2498cba10ee793cc8076ef797ef2f74d107cf"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:689c5d781014956a4a6de61d74ba97b23547e431e9e7d64f27d4922ba96e9d6e"}, + {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aca98bc423eb7d153214b2df397c6421ba6373d3397b26c057af3c904452e37"}, + {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f3496d76b89d9429a656293744ceca4d2ac2a10ae59b84c1da9b5165f429ad3"}, + {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5c2b3bfd4b9689919db068ac6c9911f3fcb231c39f7dd30e3138be94896d18e6"}, + {file = "pyzmq-26.2.0-cp311-cp311-win32.whl", hash = "sha256:eac5174677da084abf378739dbf4ad245661635f1600edd1221f150b165343f4"}, + {file = "pyzmq-26.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:5a509df7d0a83a4b178d0f937ef14286659225ef4e8812e05580776c70e155d5"}, + {file = "pyzmq-26.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0e6091b157d48cbe37bd67233318dbb53e1e6327d6fc3bb284afd585d141003"}, + {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:ded0fc7d90fe93ae0b18059930086c51e640cdd3baebdc783a695c77f123dcd9"}, + {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17bf5a931c7f6618023cdacc7081f3f266aecb68ca692adac015c383a134ca52"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55cf66647e49d4621a7e20c8d13511ef1fe1efbbccf670811864452487007e08"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4661c88db4a9e0f958c8abc2b97472e23061f0bc737f6f6179d7a27024e1faa5"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7f69de383cb47522c9c208aec6dd17697db7875a4674c4af3f8cfdac0bdeae"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f98f6dfa8b8ccaf39163ce872bddacca38f6a67289116c8937a02e30bbe9711"}, + {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3e0210287329272539eea617830a6a28161fbbd8a3271bf4150ae3e58c5d0e6"}, + {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6b274e0762c33c7471f1a7471d1a2085b1a35eba5cdc48d2ae319f28b6fc4de3"}, + {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29c6a4635eef69d68a00321e12a7d2559fe2dfccfa8efae3ffb8e91cd0b36a8b"}, + {file = "pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7"}, + {file = "pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a"}, + {file = "pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b"}, + {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726"}, + {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b"}, + {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18"}, + {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115"}, + {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e"}, + {file = "pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5"}, + {file = "pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad"}, + {file = "pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797"}, + {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a"}, + {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386"}, + {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306"}, + {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6"}, + {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0"}, + {file = "pyzmq-26.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3b55a4229ce5da9497dd0452b914556ae58e96a4381bb6f59f1305dfd7e53fc8"}, + {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9cb3a6460cdea8fe8194a76de8895707e61ded10ad0be97188cc8463ffa7e3a8"}, + {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8ab5cad923cc95c87bffee098a27856c859bd5d0af31bd346035aa816b081fe1"}, + {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ed69074a610fad1c2fda66180e7b2edd4d31c53f2d1872bc2d1211563904cd9"}, + {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cccba051221b916a4f5e538997c45d7d136a5646442b1231b916d0164067ea27"}, + {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:0eaa83fc4c1e271c24eaf8fb083cbccef8fde77ec8cd45f3c35a9a123e6da097"}, + {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9edda2df81daa129b25a39b86cb57dfdfe16f7ec15b42b19bfac503360d27a93"}, + {file = "pyzmq-26.2.0-cp37-cp37m-win32.whl", hash = "sha256:ea0eb6af8a17fa272f7b98d7bebfab7836a0d62738e16ba380f440fceca2d951"}, + {file = "pyzmq-26.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4ff9dc6bc1664bb9eec25cd17506ef6672d506115095411e237d571e92a58231"}, + {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2eb7735ee73ca1b0d71e0e67c3739c689067f055c764f73aac4cc8ecf958ee3f"}, + {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a534f43bc738181aa7cbbaf48e3eca62c76453a40a746ab95d4b27b1111a7d2"}, + {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aedd5dd8692635813368e558a05266b995d3d020b23e49581ddd5bbe197a8ab6"}, + {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8be4700cd8bb02cc454f630dcdf7cfa99de96788b80c51b60fe2fe1dac480289"}, + {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fcc03fa4997c447dce58264e93b5aa2d57714fbe0f06c07b7785ae131512732"}, + {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:402b190912935d3db15b03e8f7485812db350d271b284ded2b80d2e5704be780"}, + {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8685fa9c25ff00f550c1fec650430c4b71e4e48e8d852f7ddcf2e48308038640"}, + {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:76589c020680778f06b7e0b193f4b6dd66d470234a16e1df90329f5e14a171cd"}, + {file = "pyzmq-26.2.0-cp38-cp38-win32.whl", hash = "sha256:8423c1877d72c041f2c263b1ec6e34360448decfb323fa8b94e85883043ef988"}, + {file = "pyzmq-26.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:76589f2cd6b77b5bdea4fca5992dc1c23389d68b18ccc26a53680ba2dc80ff2f"}, + {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:b1d464cb8d72bfc1a3adc53305a63a8e0cac6bc8c5a07e8ca190ab8d3faa43c2"}, + {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4da04c48873a6abdd71811c5e163bd656ee1b957971db7f35140a2d573f6949c"}, + {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d049df610ac811dcffdc147153b414147428567fbbc8be43bb8885f04db39d98"}, + {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05590cdbc6b902101d0e65d6a4780af14dc22914cc6ab995d99b85af45362cc9"}, + {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c811cfcd6a9bf680236c40c6f617187515269ab2912f3d7e8c0174898e2519db"}, + {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6835dd60355593de10350394242b5757fbbd88b25287314316f266e24c61d073"}, + {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc6bee759a6bddea5db78d7dcd609397449cb2d2d6587f48f3ca613b19410cfc"}, + {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c530e1eecd036ecc83c3407f77bb86feb79916d4a33d11394b8234f3bd35b940"}, + {file = "pyzmq-26.2.0-cp39-cp39-win32.whl", hash = "sha256:367b4f689786fca726ef7a6c5ba606958b145b9340a5e4808132cc65759abd44"}, + {file = "pyzmq-26.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:e6fa2e3e683f34aea77de8112f6483803c96a44fd726d7358b9888ae5bb394ec"}, + {file = "pyzmq-26.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:7445be39143a8aa4faec43b076e06944b8f9d0701b669df4af200531b21e40bb"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:706e794564bec25819d21a41c31d4df2d48e1cc4b061e8d345d7fb4dd3e94072"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b435f2753621cd36e7c1762156815e21c985c72b19135dac43a7f4f31d28dd1"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160c7e0a5eb178011e72892f99f918c04a131f36056d10d9c1afb223fc952c2d"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4a71d5d6e7b28a47a394c0471b7e77a0661e2d651e7ae91e0cab0a587859ca"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:90412f2db8c02a3864cbfc67db0e3dcdbda336acf1c469526d3e869394fe001c"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2ea4ad4e6a12e454de05f2949d4beddb52460f3de7c8b9d5c46fbb7d7222e02c"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fc4f7a173a5609631bb0c42c23d12c49df3966f89f496a51d3eb0ec81f4519d6"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:878206a45202247781472a2d99df12a176fef806ca175799e1c6ad263510d57c"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17c412bad2eb9468e876f556eb4ee910e62d721d2c7a53c7fa31e643d35352e6"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:0d987a3ae5a71c6226b203cfd298720e0086c7fe7c74f35fa8edddfbd6597eed"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:39887ac397ff35b7b775db7201095fc6310a35fdbae85bac4523f7eb3b840e20"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fdb5b3e311d4d4b0eb8b3e8b4d1b0a512713ad7e6a68791d0923d1aec433d919"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:226af7dcb51fdb0109f0016449b357e182ea0ceb6b47dfb5999d569e5db161d5"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bed0e799e6120b9c32756203fb9dfe8ca2fb8467fed830c34c877e25638c3fc"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:29c7947c594e105cb9e6c466bace8532dc1ca02d498684128b339799f5248277"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cdeabcff45d1c219636ee2e54d852262e5c2e085d6cb476d938aee8d921356b3"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35cffef589bcdc587d06f9149f8d5e9e8859920a071df5a2671de2213bef592a"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18c8dc3b7468d8b4bdf60ce9d7141897da103c7a4690157b32b60acb45e333e6"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7133d0a1677aec369d67dd78520d3fa96dd7f3dcec99d66c1762870e5ea1a50a"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a96179a24b14fa6428cbfc08641c779a53f8fcec43644030328f44034c7f1f4"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4f78c88905461a9203eac9faac157a2a0dbba84a0fd09fd29315db27be40af9f"}, + {file = "pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f"}, +] + +[package.dependencies] +cffi = {version = "*", markers = "implementation_name == \"pypy\""} + +[[package]] +name = "questionary" +version = "2.0.1" +description = "Python library to build pretty command line user prompts ⭐️" +optional = false +python-versions = ">=3.8" +files = [ + {file = "questionary-2.0.1-py3-none-any.whl", hash = "sha256:8ab9a01d0b91b68444dff7f6652c1e754105533f083cbe27597c8110ecc230a2"}, + {file = "questionary-2.0.1.tar.gz", hash = "sha256:bcce898bf3dbb446ff62830c86c5c6fb9a22a54146f0f5597d3da43b10d8fc8b"}, +] + +[package.dependencies] +prompt_toolkit = ">=2.0,<=3.0.36" + +[[package]] +name = "referencing" +version = "0.35.1" +description = "JSON Referencing + Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, + {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + +[[package]] +name = "regex" +version = "2024.11.6" +description = "Alternative regular expression module, to replace re." +optional = false +python-versions = ">=3.8" +files = [ + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62"}, + {file = "regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e"}, + {file = "regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45"}, + {file = "regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9"}, + {file = "regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad"}, + {file = "regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54"}, + {file = "regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d"}, + {file = "regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff"}, + {file = "regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f"}, + {file = "regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4"}, + {file = "regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b"}, + {file = "regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57"}, + {file = "regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983"}, + {file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"}, +] + +[[package]] +name = "requests" +version = "2.32.3" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.8" +files = [ + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "rpds-py" +version = "0.22.0" +description = "Python bindings to Rust's persistent data structures (rpds)" +optional = false +python-versions = ">=3.9" +files = [ + {file = "rpds_py-0.22.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a4366f264fa60d3c109f0b27af0cd9eb8d46746bd70bd3d9d425f035b6c7e286"}, + {file = "rpds_py-0.22.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e34a3e665d38d0749072e6565400c8ce9abae976e338919a0dfbfb0e1ba43068"}, + {file = "rpds_py-0.22.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38cacf1f378571450576f2c8ce87da6f3fddc59d744de5c12b37acc23285b1e1"}, + {file = "rpds_py-0.22.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8cbb040fec8eddd5a6a75e737fd73c9ce37e51f94bacdd0b178d0174a4758395"}, + {file = "rpds_py-0.22.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d80fd710b3307a3c63809048b72c536689b9b0b31a2518339c3f1a4d29c73d7a"}, + {file = "rpds_py-0.22.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b5d17d8f5b885ce50e0cda85f99c0719e365e98b587338535fa566a48375afb"}, + {file = "rpds_py-0.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7a048ec1ebc991331d709be4884dc318c9eaafa66dcde8be0933ac0e702149"}, + {file = "rpds_py-0.22.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:306da3dfa174b489a3fc63b0872e2226a5ddf94c59875a770d72aff945d5ed96"}, + {file = "rpds_py-0.22.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c7b4450093c0c909299770226fb0285be47b0a57545bae25b5c4e51566b0e587"}, + {file = "rpds_py-0.22.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0903ffdb5b9007e503203b6285e4ff0faf96d875c19f1d103b475acf7d9f7311"}, + {file = "rpds_py-0.22.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d1522025cda9e57329aade769f56e5793b2a5da7759a21914ee10e67e17e601e"}, + {file = "rpds_py-0.22.0-cp310-cp310-win32.whl", hash = "sha256:49e084d47a66027ac72844f9f52f13d347a9a1f05d4f84381b420e47f836a7fd"}, + {file = "rpds_py-0.22.0-cp310-cp310-win_amd64.whl", hash = "sha256:d9ceca96df54cb1675a0b7f52f1c6d5d1df62c5b40741ba211780f1b05a282a2"}, + {file = "rpds_py-0.22.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:771c9a3851beaa617d8c8115d65f834a2b52490f42ee2b88b13f1fc5529e9e0c"}, + {file = "rpds_py-0.22.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:341a07a4b55126bfae68c9bf24220a73d456111e5eb3dcbdab9fd16de2341224"}, + {file = "rpds_py-0.22.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7649c8b8e4bd1ccc5fcbd51a855d57a617deeba19c66e3d04b1abecc61036b2"}, + {file = "rpds_py-0.22.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f513758e7cda8bc262e80299a8e3395d7ef7f4ae705be62632f229bc6c33208"}, + {file = "rpds_py-0.22.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba1fc34d0b2f6fd53377a4c954116251eba6d076bf64f903311f4a7d27d10acd"}, + {file = "rpds_py-0.22.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:632d2fdddd9fbe3ac8896a119fd18a71fc95ca9c4cbe5223096c142d8c4a2b1d"}, + {file = "rpds_py-0.22.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:326e42f2b49462e05f8527a1311ce98f9f97c484b3e443ec0ea4638bed3aebcf"}, + {file = "rpds_py-0.22.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e9bbdba9e75b1a9ee1dd1335034dad998ef1acc08492226c6fd50aa773bdfa7d"}, + {file = "rpds_py-0.22.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:41f65a97bf2c4b161c9f8f89bc37058346bec9b36e373c8ad00a16c957bff625"}, + {file = "rpds_py-0.22.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0686f2c16eafdc2c6b4ce6e86e5b3092e87db09ae64be2787616444eb35b9756"}, + {file = "rpds_py-0.22.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4e7c9aa2353eb0b0d845323857197daa036c2ff8624df990b0d886d22a8f665e"}, + {file = "rpds_py-0.22.0-cp311-cp311-win32.whl", hash = "sha256:2d2fc3ab021be3e0b5aec6d4164f2689d231b8bfc5185cc454314746aa4aee72"}, + {file = "rpds_py-0.22.0-cp311-cp311-win_amd64.whl", hash = "sha256:87453d491369cd8018016d2714a13e8461975161703c18ee31eecf087a8ae5d4"}, + {file = "rpds_py-0.22.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:e9d4293b21c69ee4f9e1a99ac4f772951d345611c614a0cfae2ec6b565279bc9"}, + {file = "rpds_py-0.22.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:67e013a17a3db4d98cc228fd5aeb36a51b0f5cf7330b9102a552060f1fe4e560"}, + {file = "rpds_py-0.22.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b639a19e1791b646d27f15d17530a51722cc728d43b2dff3aeb904f92d91bac"}, + {file = "rpds_py-0.22.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1357c3092702078b7782b6ebd5ba9b22c1a291c34fbf9d8f1a48237466ac7758"}, + {file = "rpds_py-0.22.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:842855bbb113a19c393c6de5aa6ed9a26c6b13c2fead5e49114d39f0d08b94d8"}, + {file = "rpds_py-0.22.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ae7927cd2b869ca4dc645169d8af5494a29c99afd0ea0f24dd00c811ab1d8b8"}, + {file = "rpds_py-0.22.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91bfef5daa2a5a4fe62f8d317fc91a626073639f951f851bd2cb252d01bc6c5"}, + {file = "rpds_py-0.22.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4fc4824e38c1e91a73bc820e7caacaf19d0acd557465aceef0420ca59489b390"}, + {file = "rpds_py-0.22.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:92d28a608127b357da47c99e0d0e0655ca2060286540fe9f2a25a2e8ac666e05"}, + {file = "rpds_py-0.22.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c637188b930175c256f13adbfc427b83ec7e64476d1ec9d6608f312bb84e06c3"}, + {file = "rpds_py-0.22.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:93bbd66f46dddc41e8c656130c97c0fb515e0fa44e1eebb2592769dbbd41b2f5"}, + {file = "rpds_py-0.22.0-cp312-cp312-win32.whl", hash = "sha256:54d8f94dec5765a9edc19610fecf0fdf9cab36cbb9def1213188215f735a6f98"}, + {file = "rpds_py-0.22.0-cp312-cp312-win_amd64.whl", hash = "sha256:931bf3d0705b2834fed29354f35170fa022fe22a95542b61b7c66aca5f8a224f"}, + {file = "rpds_py-0.22.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:2a57300cc8b034c5707085249efd09f19116bb80278d0ec925d7f3710165c510"}, + {file = "rpds_py-0.22.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c398a5a8e258dfdc5ea2aa4e5aa2ca3207f654a8eb268693dd1a76939074a588"}, + {file = "rpds_py-0.22.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a6cc4eb1e86364331928acafb2bb41d8ab735ca3caf2d6019b9f6dac3f4f65d"}, + {file = "rpds_py-0.22.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:574c5c94213bc9990805bfd7e4ba3826d3c098516cbc19f0d0ef0433ad93fa06"}, + {file = "rpds_py-0.22.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c0321bc03a1c513eca1837e3bba948b975bcf3a172aebc197ab3573207f137a"}, + {file = "rpds_py-0.22.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d276280649305c1da6cdd84585d48ae1f0efa67434d8b10d2df95228e59a05bb"}, + {file = "rpds_py-0.22.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c17b43fe9c6da16885e3fe28922bcd1a029e61631fb771c7d501019b40bcc904"}, + {file = "rpds_py-0.22.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48c95997af9314f4034fe5ba2d837399e786586e220835a578d28fe8161e6ae5"}, + {file = "rpds_py-0.22.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e9aa4af6b879bb75a3c7766fbf49d77f4097dd12b548ecbbd8b3f85caa833281"}, + {file = "rpds_py-0.22.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8426f97117b914b9bfb2a7bd46edc148e8defda728a55a5df3a564abe70cd7a4"}, + {file = "rpds_py-0.22.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:034964ea0ea09645bdde13038b38abb14be0aa747f20fcfab6181207dd9e0483"}, + {file = "rpds_py-0.22.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:3dc7c64b56b82428894f056e9ff6e8ee917ff74fc26b65211a33602c2372e928"}, + {file = "rpds_py-0.22.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:1212cb231f2002934cd8d71a0d718fdd9d9a2dd671e0feef8501038df3508026"}, + {file = "rpds_py-0.22.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f21e1278c9456cd601832375c778ca44614d3433996488221a56572c223f04a"}, + {file = "rpds_py-0.22.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:875fe8dffb43c20f68379ee098b035a7038d7903c795d46715f66575a7050b19"}, + {file = "rpds_py-0.22.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e23dcdd4b2ff9c6b3317ea7921b210d39592f8ca1cdea58ada25b202c65c0a69"}, + {file = "rpds_py-0.22.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0fb8efc9e579acf1e556fd86277fecec320c21ca9b5d39db96433ad8c45bc4a"}, + {file = "rpds_py-0.22.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe23687924b25a2dee52fab15976fd6577ed8518072bcda9ff2e2b88ab1f168b"}, + {file = "rpds_py-0.22.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5469b347445d1c31105f33e7bfc9a8ba213d48e42641a610dda65bf9e3c83f5"}, + {file = "rpds_py-0.22.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a810a57ce5e8ecf8eac6ec4dab534ff80c34e5a2c31db60e992009cd20f58e0f"}, + {file = "rpds_py-0.22.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d9bb9242b38a664f307b3b897f093896f7ed51ef4fe25a0502e5a368de9151ea"}, + {file = "rpds_py-0.22.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:b4660943030406aaa40ec9f51960dd88049903d9536bc3c8ebb5cc4e1f119bbe"}, + {file = "rpds_py-0.22.0-cp313-cp313t-win32.whl", hash = "sha256:208ce1d8e3af138d1d9b21d7206356b7f29b96675e0113aea652cf024e4ddfdc"}, + {file = "rpds_py-0.22.0-cp313-cp313t-win_amd64.whl", hash = "sha256:e6da2e0500742e0f157f005924a0589f2e2dcbfdd6cd0cc0abce367433e989be"}, + {file = "rpds_py-0.22.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f980a0640599a74f27fd9d50c84c293f1cb7afc2046c5c6d3efaf8ec7cdbc326"}, + {file = "rpds_py-0.22.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ca505fd3767a09a139737f3278bc8a485cb64043062da89bcba27e2f2ea78d33"}, + {file = "rpds_py-0.22.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba235e00e0878ba1080b0f2a761f143b2a2d1c354f3d8e507fbf2f3de401bf18"}, + {file = "rpds_py-0.22.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:81e7a27365b02fe70a77f1365376879917235b3fec551d19b4c91b51d0bc1d07"}, + {file = "rpds_py-0.22.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:32a0e24cab2daae0503b06666d516e90a080c1a95aff0406b9f03c6489177c4b"}, + {file = "rpds_py-0.22.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a73ed43d64209e853bba567a543170267a5cd64f359540b0ca2d597e329ba172"}, + {file = "rpds_py-0.22.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0abcce5e874474d3eab5ad53be03dae2abe651d248bdeaabe83708e82969e78"}, + {file = "rpds_py-0.22.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f4e9946c8c7def17e4fcb5eddb14c4eb6ebc7f6f309075e6c8d23b133c104607"}, + {file = "rpds_py-0.22.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:758098b38c344d9a7f279baf0689261777e601f620078ef5afdc9bd3339965c3"}, + {file = "rpds_py-0.22.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:9ad4640a409bc2b7d22b7921e7660f0db96c5c8c69fbb2e8f3261d4f71d33983"}, + {file = "rpds_py-0.22.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8c48fc7458fe3a74dcdf56ba3534ff41bd421f69436df09ff3497fdaac18b431"}, + {file = "rpds_py-0.22.0-cp39-cp39-win32.whl", hash = "sha256:fde778947304e55fc732bc8ea5c6063e74244ac1808471cb498983a210aaf62c"}, + {file = "rpds_py-0.22.0-cp39-cp39-win_amd64.whl", hash = "sha256:5fdf91a7c07f40e47b193f2acae0ed9da35d09325d7c3c3279f722b7cbf3d264"}, + {file = "rpds_py-0.22.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c8fd7a16f7a047e06c747cfcf2acef3ac316132df1c6077445b29ee6f3f3a70b"}, + {file = "rpds_py-0.22.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:6b6e4bcfc32f831bfe3d6d8a5acedfbfd5e252a03c83fa24813b277a3a8a13ca"}, + {file = "rpds_py-0.22.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eadd2417e83a77ce3ae4a0efd08cb0ebdfd317b6406d11020354a53ad458ec84"}, + {file = "rpds_py-0.22.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f9dc2113e0cf0dd637751ca736186fca63664939ceb9f9f67e93ade88c69c0c9"}, + {file = "rpds_py-0.22.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc2c00acdf68f1f69a476b770af311a7dc3955b7de228b04a40bcc51ac4d743b"}, + {file = "rpds_py-0.22.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dfdabdf8519c93908b2bf0f87c3f86f9e88bab279fb4acfd0907519ca5a1739f"}, + {file = "rpds_py-0.22.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8338db3c76833d02dc21c3e2c42534091341d26e4f7ba32c6032bb558a02e07b"}, + {file = "rpds_py-0.22.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8ad4dfda52e64af3202ceb2143a62deba97894b71c64a4405ee80f6b3ea77285"}, + {file = "rpds_py-0.22.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:3b94b074dcce39976db22ea75c7aea8b22d95e6d3b62f76e20e1179a278521d8"}, + {file = "rpds_py-0.22.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d4f2af3107fe4dc40c0d1a2409863f5249c6796398a1d83c1d99a0b3fa6cfb8d"}, + {file = "rpds_py-0.22.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:bb11809b0de643a292a82f728c494a2bbef0e30a7c42d37464abbd6bef7ca7b1"}, + {file = "rpds_py-0.22.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c1c21030ed494deb10226f90e2dbd84a012d59810c409832714a3dd576527be2"}, + {file = "rpds_py-0.22.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:64a0c965a1e299c9b280006bdb15c276c427c45360aed676305dc36bcaa4d13c"}, + {file = "rpds_py-0.22.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:2498ff422823be087b48bc82710deb87ac34f6b7c8034ee39920647647de1e60"}, + {file = "rpds_py-0.22.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59e63da174ff287db05ef7c21d75974a5bac727ed60452aeb3a14278477842a8"}, + {file = "rpds_py-0.22.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e1c04fb380bc8efaae2fdf17ed6cd5d223da78a8b0b18a610f53d4c5d6e31dfd"}, + {file = "rpds_py-0.22.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e04919ffa9a728c446b27b6b625fa1d00ece221bdb9d633e978a7e0353a12c0e"}, + {file = "rpds_py-0.22.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:24c28df05bd284879d0fac850ba697077d2a33b7ebcaea6318d6b6cdfdc86ddc"}, + {file = "rpds_py-0.22.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d33622dc63c295788eed09dbb1d11bed178909d3267b02d873116ee6be368244"}, + {file = "rpds_py-0.22.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7539dbb8f705e13629ba6f23388976aad809e387f32a6e5c0712e4e8d9bfcce7"}, + {file = "rpds_py-0.22.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b8906f537978da3f7f0bd1ba37b69f6a877bb43312023b086582707d2835bf2f"}, + {file = "rpds_py-0.22.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:62ab12fe03ffc49978d29de9c31bbb216610157f7e5ca8e172fed6642aead3be"}, + {file = "rpds_py-0.22.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:762206ba3bf1d6c8c9e0055871d3c0d5b074b7c3120193e6c067e7866f106ab1"}, + {file = "rpds_py-0.22.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ed0102146574e5e9f079b2e1a06e6b5b12a691f9c74a65b93b7f3d4feda566c6"}, + {file = "rpds_py-0.22.0.tar.gz", hash = "sha256:32de71c393f126d8203e9815557c7ff4d72ed1ad3aa3f52f6c7938413176750a"}, +] + +[[package]] +name = "scikit-learn" +version = "1.5.2" +description = "A set of python modules for machine learning and data mining" +optional = false +python-versions = ">=3.9" +files = [ + {file = "scikit_learn-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:299406827fb9a4f862626d0fe6c122f5f87f8910b86fe5daa4c32dcd742139b6"}, + {file = "scikit_learn-1.5.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:2d4cad1119c77930b235579ad0dc25e65c917e756fe80cab96aa3b9428bd3fb0"}, + {file = "scikit_learn-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c412ccc2ad9bf3755915e3908e677b367ebc8d010acbb3f182814524f2e5540"}, + {file = "scikit_learn-1.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a686885a4b3818d9e62904d91b57fa757fc2bed3e465c8b177be652f4dd37c8"}, + {file = "scikit_learn-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:c15b1ca23d7c5f33cc2cb0a0d6aaacf893792271cddff0edbd6a40e8319bc113"}, + {file = "scikit_learn-1.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:03b6158efa3faaf1feea3faa884c840ebd61b6484167c711548fce208ea09445"}, + {file = "scikit_learn-1.5.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1ff45e26928d3b4eb767a8f14a9a6efbf1cbff7c05d1fb0f95f211a89fd4f5de"}, + {file = "scikit_learn-1.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f763897fe92d0e903aa4847b0aec0e68cadfff77e8a0687cabd946c89d17e675"}, + {file = "scikit_learn-1.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8b0ccd4a902836493e026c03256e8b206656f91fbcc4fde28c57a5b752561f1"}, + {file = "scikit_learn-1.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:6c16d84a0d45e4894832b3c4d0bf73050939e21b99b01b6fd59cbb0cf39163b6"}, + {file = "scikit_learn-1.5.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f932a02c3f4956dfb981391ab24bda1dbd90fe3d628e4b42caef3e041c67707a"}, + {file = "scikit_learn-1.5.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:3b923d119d65b7bd555c73be5423bf06c0105678ce7e1f558cb4b40b0a5502b1"}, + {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f60021ec1574e56632be2a36b946f8143bf4e5e6af4a06d85281adc22938e0dd"}, + {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:394397841449853c2290a32050382edaec3da89e35b3e03d6cc966aebc6a8ae6"}, + {file = "scikit_learn-1.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:57cc1786cfd6bd118220a92ede80270132aa353647684efa385a74244a41e3b1"}, + {file = "scikit_learn-1.5.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9a702e2de732bbb20d3bad29ebd77fc05a6b427dc49964300340e4c9328b3f5"}, + {file = "scikit_learn-1.5.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:b0768ad641981f5d3a198430a1d31c3e044ed2e8a6f22166b4d546a5116d7908"}, + {file = "scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:178ddd0a5cb0044464fc1bfc4cca5b1833bfc7bb022d70b05db8530da4bb3dd3"}, + {file = "scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7284ade780084d94505632241bf78c44ab3b6f1e8ccab3d2af58e0e950f9c12"}, + {file = "scikit_learn-1.5.2-cp313-cp313-win_amd64.whl", hash = "sha256:b7b0f9a0b1040830d38c39b91b3a44e1b643f4b36e36567b80b7c6bd2202a27f"}, + {file = "scikit_learn-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:757c7d514ddb00ae249832fe87100d9c73c6ea91423802872d9e74970a0e40b9"}, + {file = "scikit_learn-1.5.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:52788f48b5d8bca5c0736c175fa6bdaab2ef00a8f536cda698db61bd89c551c1"}, + {file = "scikit_learn-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:643964678f4b5fbdc95cbf8aec638acc7aa70f5f79ee2cdad1eec3df4ba6ead8"}, + {file = "scikit_learn-1.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca64b3089a6d9b9363cd3546f8978229dcbb737aceb2c12144ee3f70f95684b7"}, + {file = "scikit_learn-1.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:3bed4909ba187aca80580fe2ef370d9180dcf18e621a27c4cf2ef10d279a7efe"}, + {file = "scikit_learn-1.5.2.tar.gz", hash = "sha256:b4237ed7b3fdd0a4882792e68ef2545d5baa50aca3bb45aa7df468138ad8f94d"}, +] + +[package.dependencies] +joblib = ">=1.2.0" +numpy = ">=1.19.5" +scipy = ">=1.6.0" +threadpoolctl = ">=3.1.0" + +[package.extras] +benchmark = ["matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "pandas (>=1.1.5)"] +build = ["cython (>=3.0.10)", "meson-python (>=0.16.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "polars (>=0.20.30)", "pooch (>=1.6.0)", "pydata-sphinx-theme (>=0.15.3)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=7.3.7)", "sphinx-copybutton (>=0.5.2)", "sphinx-design (>=0.5.0)", "sphinx-design (>=0.6.0)", "sphinx-gallery (>=0.16.0)", "sphinx-prompt (>=1.4.0)", "sphinx-remove-toctrees (>=1.0.0.post1)", "sphinxcontrib-sass (>=0.3.4)", "sphinxext-opengraph (>=0.9.1)"] +examples = ["matplotlib (>=3.3.4)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)"] +install = ["joblib (>=1.2.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)", "threadpoolctl (>=3.1.0)"] +maintenance = ["conda-lock (==2.5.6)"] +tests = ["black (>=24.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.9)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.20.30)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.2.1)", "scikit-image (>=0.17.2)"] + +[[package]] +name = "scipy" +version = "1.13.1" +description = "Fundamental algorithms for scientific computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "scipy-1.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:20335853b85e9a49ff7572ab453794298bcf0354d8068c5f6775a0eabf350aca"}, + {file = "scipy-1.13.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d605e9c23906d1994f55ace80e0125c587f96c020037ea6aa98d01b4bd2e222f"}, + {file = "scipy-1.13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfa31f1def5c819b19ecc3a8b52d28ffdcc7ed52bb20c9a7589669dd3c250989"}, + {file = "scipy-1.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26264b282b9da0952a024ae34710c2aff7d27480ee91a2e82b7b7073c24722f"}, + {file = "scipy-1.13.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eccfa1906eacc02de42d70ef4aecea45415f5be17e72b61bafcfd329bdc52e94"}, + {file = "scipy-1.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:2831f0dc9c5ea9edd6e51e6e769b655f08ec6db6e2e10f86ef39bd32eb11da54"}, + {file = "scipy-1.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:27e52b09c0d3a1d5b63e1105f24177e544a222b43611aaf5bc44d4a0979e32f9"}, + {file = "scipy-1.13.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:54f430b00f0133e2224c3ba42b805bfd0086fe488835effa33fa291561932326"}, + {file = "scipy-1.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e89369d27f9e7b0884ae559a3a956e77c02114cc60a6058b4e5011572eea9299"}, + {file = "scipy-1.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a78b4b3345f1b6f68a763c6e25c0c9a23a9fd0f39f5f3d200efe8feda560a5fa"}, + {file = "scipy-1.13.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45484bee6d65633752c490404513b9ef02475b4284c4cfab0ef946def50b3f59"}, + {file = "scipy-1.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:5713f62f781eebd8d597eb3f88b8bf9274e79eeabf63afb4a737abc6c84ad37b"}, + {file = "scipy-1.13.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5d72782f39716b2b3509cd7c33cdc08c96f2f4d2b06d51e52fb45a19ca0c86a1"}, + {file = "scipy-1.13.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:017367484ce5498445aade74b1d5ab377acdc65e27095155e448c88497755a5d"}, + {file = "scipy-1.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:949ae67db5fa78a86e8fa644b9a6b07252f449dcf74247108c50e1d20d2b4627"}, + {file = "scipy-1.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de3ade0e53bc1f21358aa74ff4830235d716211d7d077e340c7349bc3542e884"}, + {file = "scipy-1.13.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2ac65fb503dad64218c228e2dc2d0a0193f7904747db43014645ae139c8fad16"}, + {file = "scipy-1.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:cdd7dacfb95fea358916410ec61bbc20440f7860333aee6d882bb8046264e949"}, + {file = "scipy-1.13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:436bbb42a94a8aeef855d755ce5a465479c721e9d684de76bf61a62e7c2b81d5"}, + {file = "scipy-1.13.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:8335549ebbca860c52bf3d02f80784e91a004b71b059e3eea9678ba994796a24"}, + {file = "scipy-1.13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d533654b7d221a6a97304ab63c41c96473ff04459e404b83275b60aa8f4b7004"}, + {file = "scipy-1.13.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637e98dcf185ba7f8e663e122ebf908c4702420477ae52a04f9908707456ba4d"}, + {file = "scipy-1.13.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a014c2b3697bde71724244f63de2476925596c24285c7a637364761f8710891c"}, + {file = "scipy-1.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:392e4ec766654852c25ebad4f64e4e584cf19820b980bc04960bca0b0cd6eaa2"}, + {file = "scipy-1.13.1.tar.gz", hash = "sha256:095a87a0312b08dfd6a6155cbbd310a8c51800fc931b8c0b84003014b874ed3c"}, +] + +[package.dependencies] +numpy = ">=1.22.4,<2.3" + +[package.extras] +dev = ["cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] +doc = ["jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.12.0)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0)", "sphinx-design (>=0.4.0)"] +test = ["array-api-strict", "asv", "gmpy2", "hypothesis (>=6.30)", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] + +[[package]] +name = "seaborn" +version = "0.13.2" +description = "Statistical data visualization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "seaborn-0.13.2-py3-none-any.whl", hash = "sha256:636f8336facf092165e27924f223d3c62ca560b1f2bb5dff7ab7fad265361987"}, + {file = "seaborn-0.13.2.tar.gz", hash = "sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7"}, +] + +[package.dependencies] +matplotlib = ">=3.4,<3.6.1 || >3.6.1" +numpy = ">=1.20,<1.24.0 || >1.24.0" +pandas = ">=1.2" + +[package.extras] +dev = ["flake8", "flit", "mypy", "pandas-stubs", "pre-commit", "pytest", "pytest-cov", "pytest-xdist"] +docs = ["ipykernel", "nbconvert", "numpydoc", "pydata_sphinx_theme (==0.10.0rc2)", "pyyaml", "sphinx (<6.0.0)", "sphinx-copybutton", "sphinx-design", "sphinx-issues"] +stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"] + +[[package]] +name = "setuptools" +version = "75.6.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.9" +files = [ + {file = "setuptools-75.6.0-py3-none-any.whl", hash = "sha256:ce74b49e8f7110f9bf04883b730f4765b774ef3ef28f722cce7c273d253aaf7d"}, + {file = "setuptools-75.6.0.tar.gz", hash = "sha256:8199222558df7c86216af4f84c30e9b34a61d8ba19366cc914424cdbd28252f6"}, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.7.0)"] +core = ["importlib_metadata (>=6)", "jaraco.collections", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +cover = ["pytest-cov"] +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 (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib_metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (>=1.12,<1.14)", "pytest-mypy"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "smmap" +version = "5.0.1" +description = "A pure Python implementation of a sliding window memory map manager" +optional = false +python-versions = ">=3.7" +files = [ + {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"}, + {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"}, +] + +[[package]] +name = "soupsieve" +version = "2.6" +description = "A modern CSS selector implementation for Beautiful Soup." +optional = false +python-versions = ">=3.8" +files = [ + {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, + {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"}, +] + +[[package]] +name = "termcolor" +version = "2.5.0" +description = "ANSI color formatting for output in terminal" +optional = false +python-versions = ">=3.9" +files = [ + {file = "termcolor-2.5.0-py3-none-any.whl", hash = "sha256:37b17b5fc1e604945c2642c872a3764b5d547a48009871aea3edd3afa180afb8"}, + {file = "termcolor-2.5.0.tar.gz", hash = "sha256:998d8d27da6d48442e8e1f016119076b690d962507531df4890fcd2db2ef8a6f"}, +] + +[package.extras] +tests = ["pytest", "pytest-cov"] + +[[package]] +name = "threadpoolctl" +version = "3.5.0" +description = "threadpoolctl" +optional = false +python-versions = ">=3.8" +files = [ + {file = "threadpoolctl-3.5.0-py3-none-any.whl", hash = "sha256:56c1e26c150397e58c4926da8eeee87533b1e32bef131bd4bf6a2f45f3185467"}, + {file = "threadpoolctl-3.5.0.tar.gz", hash = "sha256:082433502dd922bf738de0d8bcc4fdcbf0979ff44c42bd40f5af8a282f6fa107"}, +] + +[[package]] +name = "tinycss2" +version = "1.4.0" +description = "A tiny CSS parser" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, + {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, +] + +[package.dependencies] +webencodings = ">=0.4" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["pytest", "ruff"] + +[[package]] +name = "tomli" +version = "2.2.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, +] + +[[package]] +name = "tomlkit" +version = "0.13.2" +description = "Style preserving TOML library" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"}, + {file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"}, +] + +[[package]] +name = "toolz" +version = "1.0.0" +description = "List processing tools and functional utilities" +optional = false +python-versions = ">=3.8" +files = [ + {file = "toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236"}, + {file = "toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02"}, +] + +[[package]] +name = "tornado" +version = "6.4.2" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +optional = false +python-versions = ">=3.8" +files = [ + {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1"}, + {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a017d239bd1bb0919f72af256a970624241f070496635784d9bf0db640d3fec"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36e62ce8f63409301537222faffcef7dfc5284f27eec227389f2ad11b09d946"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:304463bd0772442ff4d0f5149c6f1c2135a1fae045adf070821c6cdc76980634"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:c82c46813ba483a385ab2a99caeaedf92585a1f90defb5693351fa7e4ea0bf73"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:932d195ca9015956fa502c6b56af9eb06106140d844a335590c1ec7f5277d10c"}, + {file = "tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482"}, + {file = "tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38"}, + {file = "tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b"}, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +description = "Traitlets Python configuration system" +optional = false +python-versions = ">=3.8" +files = [ + {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.2)", "pytest-mock", "pytest-mypy-testing"] + +[[package]] +name = "typing-extensions" +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.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] + +[[package]] +name = "tzdata" +version = "2024.2" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, +] + +[[package]] +name = "urllib3" +version = "2.2.3" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "virtualenv" +version = "20.28.0" +description = "Virtual Python Environment builder" +optional = false +python-versions = ">=3.8" +files = [ + {file = "virtualenv-20.28.0-py3-none-any.whl", hash = "sha256:23eae1b4516ecd610481eda647f3a7c09aea295055337331bb4e6892ecce47b0"}, + {file = "virtualenv-20.28.0.tar.gz", hash = "sha256:2c9c3262bb8e7b87ea801d715fae4495e6032450c71d2309be9550e7364049aa"}, +] + +[package.dependencies] +distlib = ">=0.3.7,<1" +filelock = ">=3.12.2,<4" +platformdirs = ">=3.9.1,<5" + +[package.extras] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] + +[[package]] +name = "watchdog" +version = "6.0.0" +description = "Filesystem events monitoring" +optional = false +python-versions = ">=3.9" +files = [ + {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, + {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, + {file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c"}, + {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881"}, + {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11"}, + {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa"}, + {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2"}, + {file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a"}, + {file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680"}, + {file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f"}, + {file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282"}, +] + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] + +[[package]] +name = "wcwidth" +version = "0.2.13" +description = "Measures the displayed width of unicode strings in a terminal" +optional = false +python-versions = "*" +files = [ + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +optional = false +python-versions = "*" +files = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] + +[[package]] +name = "zipp" +version = "3.21.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.9" +files = [ + {file = "zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931"}, + {file = "zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4"}, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] + +[metadata] +lock-version = "2.0" +python-versions = ">=3.9,<3.13" +content-hash = "c6f34660f3b7354a7a0d675370e3f12353e4f7c71e4719b8dbd1c90dd228cc28" diff --git a/pycmtensor/__init__.py b/pycmtensor/__init__.py index 211e1e4..76af865 100644 --- a/pycmtensor/__init__.py +++ b/pycmtensor/__init__.py @@ -26,7 +26,7 @@ import importlib -import aesara +import pytensor import pycmtensor.defaultconfig as defaultconfig import pycmtensor.optimizers as optimizers @@ -39,10 +39,10 @@ config = defaultconfig.config -# aesara configs -aesara.config.on_unused_input = "ignore" -aesara.config.mode = "Mode" -aesara.config.allow_gc = False +# pytensor configs +pytensor.config.on_unused_input = "ignore" +pytensor.config.mode = "Mode" +pytensor.config.allow_gc = False # model default configs @@ -133,9 +133,9 @@ def import_wm(): python=True, datename=True, updated=True, - packages="pycmtensor,aesara,numpy,scipy", + packages="pycmtensor,pytensor,numpy,scipy", machine=True, ) else: print("{0:12s}: {1}".format("PyCMTensor", __version__)) - print("{0:12s}: {1}".format("Aesara", aesara.__version__)) + print("{0:12s}: {1}".format("PyTensor", pytensor.__version__)) diff --git a/pycmtensor/dataset.py b/pycmtensor/dataset.py index ce9f146..7e0f3e8 100644 --- a/pycmtensor/dataset.py +++ b/pycmtensor/dataset.py @@ -2,8 +2,8 @@ The code snippet is a part of a class called `Dataset` that converts a pandas DataFrame into an xarray dataset. It initializes the dataset object with the DataFrame and the name of the choice variable. It also provides methods to access and manipulate the dataset. """ -import aesara.tensor as aet -from aesara.tensor.var import TensorVariable +import pytensor.tensor as aet +from pytensor.tensor.var import TensorVariable import pycmtensor.defaultconfig as defaultconfig diff --git a/pycmtensor/defaultconfig.py b/pycmtensor/defaultconfig.py index 6596d22..bdb1efa 100644 --- a/pycmtensor/defaultconfig.py +++ b/pycmtensor/defaultconfig.py @@ -103,13 +103,13 @@ def add(self, name, value, description=None): os.environ["MKL_NUM_THREADS"] = str(num_cores) os.environ["OMP_NUM_THREADS"] = str(num_cores) -# write .aesararc file +# write .pytensorrc file HOMEPATH = os.path.expanduser("~") -conf_file = os.path.join(HOMEPATH, ".aesararc") -aesara_rc = configparser.ConfigParser() -aesara_rc.add_section("global") -aesara_rc["global"] = {"device": "cpu", "floatX": "float64"} +conf_file = os.path.join(HOMEPATH, ".pytensorrc") +pytensor_rc = configparser.ConfigParser() +pytensor_rc.add_section("global") +pytensor_rc["global"] = {"device": "cpu", "floatX": "float64"} with open(conf_file, "w") as f: - aesara_rc.write(f) + pytensor_rc.write(f) diff --git a/pycmtensor/expressions.py b/pycmtensor/expressions.py index c741124..9e88a88 100644 --- a/pycmtensor/expressions.py +++ b/pycmtensor/expressions.py @@ -1,6 +1,6 @@ """ The code snippet is a part of the PyCMTensor expressions module. It defines a base -class for parsing and manipulating Aesara tensor expressions. The class provides +class for parsing and manipulating pytensor tensor expressions. The class provides methods for parsing a tensor expression to remove parentheses and tensor operators, and returns a clean list of keywords found in the expression. It also defines a base class for expression objects, which includes overloaded operators for tensor operations such @@ -9,18 +9,18 @@ class for parsing and manipulating Aesara tensor expressions. The class provides from typing import Union -import aesara -import aesara.tensor as aet import numpy as np -from aesara import pprint -from aesara.tensor.random.utils import RandomStream -from aesara.tensor.sharedvar import TensorSharedVariable -from aesara.tensor.var import TensorVariable +import pytensor +import pytensor.tensor as aet +from pytensor import pprint +from pytensor.tensor.random.utils import RandomStream +from pytensor.tensor.sharedvar import TensorSharedVariable +from pytensor.tensor.var import TensorVariable from pycmtensor.logger import debug __all__ = ["FLOATX", "Param", "Beta", "Sigma", "Bias", "Weight"] -FLOATX = aesara.config.floatX +FLOATX = pytensor.config.floatX class ExpressionParser(object): @@ -54,7 +54,7 @@ class ExpressionParser(object): ] def __init__(self, expression=None): - """Base class for parsing and manipulating Aesara tensor expressions. + """Base class for parsing and manipulating pytensor tensor expressions. Args: expression (TensorVariable, optional): The tensor expression to parse. @@ -305,7 +305,7 @@ def __init__(self, name, value=0.0, lb=None, ub=None, status=0): self._status = status if not isinstance(value, np.ndarray): value = np.asarray(value) - self.shared_var = aesara.shared(value, name=name, borrow=True) + self.shared_var = pytensor.shared(value, name=name, borrow=True) self._init_value = value if lb is not None and ub is not None and lb > ub: @@ -394,7 +394,7 @@ def __init__(self, name, value=0.0, lb=None, ub=None, status=0): Param.__init__(self, name, lb=lb, ub=ub, status=status) self._init_value = np.asarray(value, dtype=FLOATX) - self.shared_var = aesara.shared(self.init_value, name=name, borrow=True) + self.shared_var = pytensor.shared(self.init_value, name=name, borrow=True) def __repr__(self): return f"Beta({self.name}, {self.get_value()})" @@ -432,7 +432,7 @@ def __init__(self, name: str, draw_type: str, n_draws: int): rv_n = srng.poisson(lam=1.0, size=(n_draws, 1)) else: raise NotImplementedError - self.shared_var = aesara.shared(rv_n.eval(), name=self.name) + self.shared_var = pytensor.shared(rv_n.eval(), name=self.name) @property def name(self): @@ -466,7 +466,7 @@ def __init__(self, name, size, value=None): self._init_type = "bias" self._init_value = value - self.shared_var = aesara.shared(self.init_value, name=name, borrow=True) + self.shared_var = pytensor.shared(self.init_value, name=name, borrow=True) def __repr__(self): return f"Bias({self.name}, {self.shape})" @@ -564,7 +564,7 @@ def __init__(self, name, size, value=None, init_type=None): self._init_type = init_type self._init_value = value - self.shared_var = aesara.shared(self.init_value, name=name, borrow=True) + self.shared_var = pytensor.shared(self.init_value, name=name, borrow=True) @staticmethod def disp_init_types(): @@ -595,7 +595,7 @@ def __init__(self, name, size): self._init_value = value self._param_type = "Gamma" - self.shared_var = aesara.shared(self.init_value, name=name, borrow=True) + self.shared_var = pytensor.shared(self.init_value, name=name, borrow=True) @property def T(self): diff --git a/pycmtensor/functions.py b/pycmtensor/functions.py index 724ac6e..48a0069 100644 --- a/pycmtensor/functions.py +++ b/pycmtensor/functions.py @@ -1,8 +1,8 @@ # functions.py """PyCMTensor functions module""" -import aesara.tensor as aet -import aesara.tensor.nlinalg as nlinalg import numpy as np +import pytensor.tensor as aet +import pytensor.tensor.nlinalg as nlinalg import sklearn.metrics as skm from pycmtensor.expressions import Beta, Param diff --git a/pycmtensor/models/MNL.py b/pycmtensor/models/MNL.py index 4cbeacc..2cda35c 100644 --- a/pycmtensor/models/MNL.py +++ b/pycmtensor/models/MNL.py @@ -1,6 +1,6 @@ from time import perf_counter -import aesara.tensor as aet +import pytensor.tensor as aet from pycmtensor.expressions import Beta from pycmtensor.functions import log_likelihood, logit @@ -123,7 +123,7 @@ def reset_values(self) -> None: return super().reset_values() def build_cost_fn(self): - """Constructs Aesara functions for calculating the cost and prediction errors of the Multinomial Logit model. + """Constructs pytensor functions for calculating the cost and prediction errors of the Multinomial Logit model. Example Usage: ```python @@ -137,11 +137,11 @@ def build_cost_fn(self): BaseModel.build_cost_fn(self) def build_gh_fn(self): - """Constructs Aesara functions for computing the Hessian matrix and the gradient vector. + """Constructs pytensor functions for computing the Hessian matrix and the gradient vector. Returns: - hessian_fn (Aesara function): A function that computes the Hessian matrix. - gradient_vector_fn (Aesara function): A function that computes the gradient vector. + hessian_fn (pytensor function): A function that computes the Hessian matrix. + gradient_vector_fn (pytensor function): A function that computes the gradient vector. !!! note diff --git a/pycmtensor/models/ResLogit.py b/pycmtensor/models/ResLogit.py index f8ac820..b945788 100644 --- a/pycmtensor/models/ResLogit.py +++ b/pycmtensor/models/ResLogit.py @@ -1,7 +1,7 @@ from time import perf_counter -import aesara -import aesara.tensor as aet +import pytensor +import pytensor.tensor as aet import pycmtensor.models.layers as layers from pycmtensor.expressions import Beta, Bias, Weight @@ -122,7 +122,7 @@ def reset_values(self): return super().reset_values() def build_cost_fn(self): - """Constructs Aesara functions for calculating the cost and prediction errors of the ResLogit model. + """Constructs pytensor functions for calculating the cost and prediction errors of the ResLogit model. Example Usage: ```python @@ -136,24 +136,24 @@ def build_cost_fn(self): BaseModel.build_cost_fn(self) def build_gh_fn(self): - """Constructs Aesara functions for computing the Hessian matrix and the gradient vector. + """Constructs pytensor functions for computing the Hessian matrix and the gradient vector. Returns: - hessian_fn (Aesara function): A function that computes the Hessian matrix. - gradient_vector_fn (Aesara function): A function that computes the gradient vector. + hessian_fn (pytensor function): A function that computes the Hessian matrix. + gradient_vector_fn (pytensor function): A function that computes the gradient vector. !!! note The hessians and gradient vector are evaluation at the maximum **log likelihood** estimates instead of the negative loglikelihood, therefore the cost is multiplied by negative one. """ - self.hessian_fn = aesara.function( + self.hessian_fn = pytensor.function( name="hessian", inputs=self.x + [self.y, self.index], outputs=second_order_derivative(self.ll, self.betas), allow_input_downcast=True, ) - self.gradient_vector_fn = aesara.function( + self.gradient_vector_fn = pytensor.function( name="gradient_vector", inputs=self.x + [self.y, self.index], outputs=first_order_derivative(self.ll, self.betas), diff --git a/pycmtensor/models/TasteNet.py b/pycmtensor/models/TasteNet.py index 447995d..644bc83 100644 --- a/pycmtensor/models/TasteNet.py +++ b/pycmtensor/models/TasteNet.py @@ -1,9 +1,9 @@ from collections import OrderedDict from time import perf_counter -import aesara -import aesara.tensor as aet import numpy as np +import pytensor +import pytensor.tensor as aet import pycmtensor.models.layers as layers from pycmtensor.expressions import Beta, Bias, Weight @@ -181,7 +181,7 @@ def include_params_for_convergence(self, data, index): return params def build_cost_fn(self): - """Constructs Aesara functions for calculating the cost and prediction errors of the TasteNet model. + """Constructs pytensor functions for calculating the cost and prediction errors of the TasteNet model. Example Usage: ```python @@ -192,7 +192,7 @@ def build_cost_fn(self): model.build_cost_fn() ``` """ - self.tn_betas_fn = aesara.function( + self.tn_betas_fn = pytensor.function( name="tn_params", inputs=self.x + [self.y, self.index], outputs={layer.name: layer.output for layer in self.tn_betas}, @@ -202,11 +202,11 @@ def build_cost_fn(self): BaseModel.build_cost_fn(self) def build_gh_fn(self): - """Constructs Aesara functions for computing the Hessian matrix and the gradient vector. + """Constructs pytensor functions for computing the Hessian matrix and the gradient vector. Returns: - hessian_fn (Aesara function): A function that computes the Hessian matrix. - gradient_vector_fn (Aesara function): A function that computes the gradient vector. + hessian_fn (pytensor function): A function that computes the Hessian matrix. + gradient_vector_fn (pytensor function): A function that computes the gradient vector. !!! note diff --git a/pycmtensor/models/basic.py b/pycmtensor/models/basic.py index 5578400..7cdf894 100644 --- a/pycmtensor/models/basic.py +++ b/pycmtensor/models/basic.py @@ -1,8 +1,8 @@ from collections import OrderedDict -import aesara.tensor as aet import numpy as np -from aesara import function, pprint +import pytensor.tensor as aet +from pytensor import function, pprint import pycmtensor.defaultconfig as defaultconfig from pycmtensor.expressions import Beta, ExpressionParser, Param @@ -182,7 +182,7 @@ def include_regularization_terms(self, *regularizers): self.cost += reg def build_cost_fn(self): - """Constructs Aesara functions for calculating the cost and prediction errors. + """Constructs Tensor functions for calculating the cost and prediction errors. Example Usage: ```python @@ -236,11 +236,11 @@ def build_cost_updates_fn(self, updates): ) def build_gh_fn(self): - """Constructs Aesara functions for computing the Hessian matrix and the gradient vector. + """Constructs Tensor functions for computing the Hessian matrix and the gradient vector. Returns: - hessian_fn (Aesara function): A function that computes the Hessian matrix. - gradient_vector_fn (Aesara function): A function that computes the gradient vector. + hessian_fn (pytensor function): A function that computes the Hessian matrix. + gradient_vector_fn (pytensor function): A function that computes the gradient vector. !!! note diff --git a/pycmtensor/models/layers.py b/pycmtensor/models/layers.py index 6f9ca6c..7b3514b 100644 --- a/pycmtensor/models/layers.py +++ b/pycmtensor/models/layers.py @@ -1,8 +1,8 @@ # layers.py """Model layers""" -import aesara.tensor as aet import numpy as np +import pytensor.tensor as aet import pycmtensor.functions as functions from pycmtensor.expressions import Beta, Bias, TensorExpressions, Weight diff --git a/pycmtensor/optimizers.py b/pycmtensor/optimizers.py index 022ee17..ac65541 100644 --- a/pycmtensor/optimizers.py +++ b/pycmtensor/optimizers.py @@ -1,16 +1,16 @@ # optimizers.py """PyCMTensor optimizers module""" -import aesara -import aesara.tensor as aet -from aesara import shared -from aesara.ifelse import ifelse +import pytensor +import pytensor.tensor as aet +from pytensor import shared +from pytensor.ifelse import ifelse import pycmtensor.defaultconfig as defaultconfig import pycmtensor.expressions as expr config = defaultconfig.config -FLOATX = aesara.config.floatX +FLOATX = pytensor.config.floatX __all__ = [ "Adam", @@ -53,7 +53,7 @@ def __repr__(self): return f"{self.name}" def update(self, **kwargs): - """Update parameters for aesara function calls""" + """Update parameters for pytensor function calls""" raise NotImplementedError("Subclasses must implement the `update` method.") @@ -75,9 +75,9 @@ def __init__(self, params, b1=0.9, b2=0.999, **kwargs): [^1]: Kingma et al., 2014. Adam: A Method for Stochastic Optimization. http://arxiv.org/abs/1412.6980 """ super().__init__(name="Adam") - self.b1 = aesara.shared(b1, name="b1") - self.b2 = aesara.shared(b2, name="b2") - self._t = aesara.shared(1.0, name="t") + self.b1 = pytensor.shared(b1, name="b1") + self.b2 = pytensor.shared(b2, name="b2") + self._t = pytensor.shared(1.0, name="t") self._m = [ shared(aet.zeros_like(p()).eval(), name=f"m_{p().name}") for p in params @@ -601,7 +601,7 @@ def __init__(self, params, config=None, **kwargs): else: self.warmup = 20 - self._t = aesara.shared(1.0) + self._t = pytensor.shared(1.0) self._y = [ shared(aet.zeros_like(p()).eval()) for p in params if (p.status != 1) ] @@ -612,8 +612,8 @@ def __init__(self, params, config=None, **kwargs): self._s = [shared(p().eval()) for p in params if (p.status != 1)] self._yhat = [shared(p().eval()) for p in params if (p.status != 1)] - self._H0 = aesara.shared(aet.eye(len(self._y), dtype=FLOATX).eval()) - self.I = aesara.shared(aet.eye(len(self._y), dtype=FLOATX).eval()) + self._H0 = pytensor.shared(aet.eye(len(self._y), dtype=FLOATX).eval()) + self.I = pytensor.shared(aet.eye(len(self._y), dtype=FLOATX).eval()) def update(self, cost, params, lr): T = self.warmup diff --git a/pycmtensor/regularizers.py b/pycmtensor/regularizers.py index a44a4f5..971cfb2 100644 --- a/pycmtensor/regularizers.py +++ b/pycmtensor/regularizers.py @@ -4,8 +4,8 @@ This module contains regularizer terms for use in the cost function """ -import aesara.tensor as aet import numpy as np +import pytensor.tensor as aet __all__ = ["Regularizers"] diff --git a/pyproject.toml b/pyproject.toml index 73c20e3..ca29ecd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,10 +26,10 @@ classifiers = [ [tool.poetry.dependencies] python = ">=3.9,<3.13" -aesara = "2.9.3" -numpy = "<1.26.0" -scipy = "<1.12.0" -pandas = "<2.1.0" +pytensor = "<2.27.0" +numpy = "<1.27.0" +scipy = "<1.15.0" +pandas = "<2.3.0" seaborn = "<0.14.0" scikit-learn = "<1.6.0" diff --git a/tests/check_cuda.py b/tests/check_cuda.py index 8c50a0d..663d5d5 100644 --- a/tests/check_cuda.py +++ b/tests/check_cuda.py @@ -3,8 +3,8 @@ import time import numpy -from aesara import config, function, shared -from aesara import tensor as at +from pytensor import config, function, shared +from pytensor import tensor as at sys.path.insert(0, os.path.abspath("..")) vlen = 10 * 30 * 768 # 10 x #cores x # threads per core diff --git a/tests/test_core.py b/tests/test_core.py index ef78061..ecdf7ce 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -1,7 +1,7 @@ import numpy as np import pandas as pd import pytest -from aesara.tensor.sharedvar import TensorSharedVariable +from pytensor.tensor.sharedvar import TensorSharedVariable from pycmtensor.dataset import Dataset from pycmtensor.expressions import Beta @@ -49,13 +49,13 @@ def test_betas_bounds(): def test_beta_add_subtract(lpmc_ds): - import aesara + import pytensor ds = lpmc_ds B_COST = Beta("B_COST", 1.0, None, None, 0.0) x_cost_transit = ds["cost_transit"] - fn_add = aesara.function( + fn_add = pytensor.function( inputs=[x_cost_transit], outputs=B_COST + x_cost_transit, on_unused_input="ignore", @@ -68,7 +68,7 @@ def test_beta_add_subtract(lpmc_ds): x_cost_driving_fuel = ds["cost_driving_fuel"] - fn_muladd = aesara.function( + fn_muladd = pytensor.function( inputs=[x_cost_transit, x_cost_driving_fuel], outputs=B_COST * (x_cost_driving_fuel + x_cost_transit), on_unused_input="ignore", @@ -81,13 +81,13 @@ def test_beta_add_subtract(lpmc_ds): def test_beta_multiplication(lpmc_ds): - import aesara + import pytensor ds = lpmc_ds B_COST = Beta("B_COST", 0.0, None, None, 0.0) x_cost_transit = ds["cost_transit"] - fn_mul = aesara.function( + fn_mul = pytensor.function( inputs=[x_cost_transit], outputs=B_COST * x_cost_transit + x_cost_transit * B_COST, on_unused_input="ignore", @@ -101,15 +101,15 @@ def test_beta_multiplication(lpmc_ds): def test_variable_boolean(lpmc_ds): - import aesara - import aesara.tensor as aet + import pytensor + import pytensor.tensor as aet ds = lpmc_ds DL = aet.eq(ds["driving_license"], 1) data = ds.train_dataset(["driving_license"]) - fn_bool = aesara.function(inputs=[ds["driving_license"]], outputs=DL) + fn_bool = pytensor.function(inputs=[ds["driving_license"]], outputs=DL) output = fn_bool(*data) diff --git a/tests/test_dataset.py b/tests/test_dataset.py index a59005e..6b2d977 100644 --- a/tests/test_dataset.py +++ b/tests/test_dataset.py @@ -3,7 +3,7 @@ import numpy as np import pandas as pd import pytest -from aesara.tensor.var import TensorVariable +from pytensor.tensor.var import TensorVariable from pycmtensor.dataset import Dataset @@ -149,7 +149,7 @@ def test_scale_variable(lpmc_ds): def test_make_tensor(lpmc_ds): - import aesara.tensor as aet + import pytensor.tensor as aet ds = lpmc_ds tensors1 = ds[["cost_transit", "cost_driving_ccharge"]] diff --git a/tests/test_expressions.py b/tests/test_expressions.py index 2a43d3b..4178e06 100644 --- a/tests/test_expressions.py +++ b/tests/test_expressions.py @@ -1,13 +1,13 @@ # test_expressions.py from copy import copy -import aesara -import aesara.tensor as aet import numpy as np +import pytensor +import pytensor.tensor as aet import pytest -from aesara import function -from aesara.tensor.math import tanh -from aesara.tensor.sharedvar import TensorSharedVariable +from pytensor import function +from pytensor.tensor.math import tanh +from pytensor.tensor.sharedvar import TensorSharedVariable from pycmtensor.expressions import ( Beta, @@ -79,8 +79,8 @@ def test_bias_add(): x = aet.vector("x") bias_layer1 = Bias("bias_layer1", size=(5,)) - g = aesara.shared(np.random.normal(size=(3, 5))) - x = aesara.shared(np.random.normal(size=(3, 100))) + g = pytensor.shared(np.random.normal(size=(3, 5))) + x = pytensor.shared(np.random.normal(size=(3, 100))) # add TensorVariable and Bias object y = (g.T @ x) + bias_layer1 diff --git a/tests/test_functions.py b/tests/test_functions.py index 7deaf0d..cdfe7d2 100644 --- a/tests/test_functions.py +++ b/tests/test_functions.py @@ -1,7 +1,7 @@ # test_functions.py -import aesara -import aesara.tensor as aet import numpy as np +import pytensor +import pytensor.tensor as aet import pytest import pycmtensor.functions as functions @@ -175,7 +175,7 @@ def test_kl_divergence(): p = aet.vector("p") q = aet.vector("q") - loss = aesara.function([p, q], functions.kl_divergence(p, q)) + loss = pytensor.function([p, q], functions.kl_divergence(p, q)) assert round(float(loss([0.2, 0.1, 0.4, 0.3], [0.3, 0.1, 0.1, 0.5])), 4) == 0.3202 assert float(loss([0.2, 0.1, 0.4, 0.3], [0.2, 0.1, 0.4, 0.3])) == float(0.0) @@ -187,7 +187,7 @@ def test_kl_multivar_norm_univariate(): v1 = aet.scalar("v1") kld = functions.kl_multivar_norm(m0, v0, m1, v1) - loss = aesara.function([m0, v0, m1, v1], kld) + loss = pytensor.function([m0, v0, m1, v1], kld) assert m0.ndim == v0.ndim == 0 assert m1.ndim == v1.ndim == 0 @@ -197,11 +197,11 @@ def test_kl_multivar_norm_univariate(): kld = functions.kl_multivar_norm(m0, v0, m1, aet.vector()) g = aet.grad(kld, v0, disconnected_inputs="ignore") - grad = aesara.function([m0, v0, m1, v1], g) + grad = pytensor.function([m0, v0, m1, v1], g) assert round(float(grad(3, 2, 0, 1)), 2) == 0.25 g = aet.grad(kld, m0, disconnected_inputs="ignore") - grad = aesara.function([m0, v0, m1, v1], g) + grad = pytensor.function([m0, v0, m1, v1], g) assert round(float(grad(4, 2, 0, 1))) == 4 @@ -214,19 +214,19 @@ def test_kl_multivar_norm_1(): v1 = aet.scalar("v1") kld = functions.kl_multivar_norm(m0, v0, m1, v1) - loss = aesara.function([m0, v0, m1, v1], kld) + loss = pytensor.function([m0, v0, m1, v1], kld) output = loss([1, 2, 1], np.diag(rng.uniform(0, 1, 3)), 0, 1) assert round(float(output), 3) == 4.109 g = aet.grad(kld, m0, disconnected_inputs="ignore") - grad = aesara.function([m0, v0, m1, v1], g) + grad = pytensor.function([m0, v0, m1, v1], g) output = grad([1, 2, 1], np.diag(rng.uniform(0, 1, 3)), 0, 1) assert [round(float(o), 2) for o in output] == [1, 2, 1] g = aet.grad(kld, v0, disconnected_inputs="ignore") - grad = aesara.function([m0, v0, m1, v1], g) + grad = pytensor.function([m0, v0, m1, v1], g) output = grad([1, 2, 1], np.diag(rng.uniform(0, 1, 3)), 0, 1) updates = [round(float(o), 2) for o in output.flatten()] @@ -244,7 +244,7 @@ def test_kl_multivar_norm_2(): v1 = aet.matrix("v1") kld = functions.kl_multivar_norm(m0, v0, m1, v1) - loss = aesara.function([m0, v0, m1, v1], kld) + loss = pytensor.function([m0, v0, m1, v1], kld) M0 = rng.uniform(0, 3, 3) # ndim=1 V0 = np.diag(rng.uniform(0, 1, 3)) # ndim=2