diff --git a/.github/workflows/build_docs.yaml b/.github/workflows/build_docs.yaml
new file mode 100644
index 00000000..85011bb6
--- /dev/null
+++ b/.github/workflows/build_docs.yaml
@@ -0,0 +1,38 @@
+name: Build Documentation
+
+on:
+ push:
+ paths:
+ - 'jobbergate-docs/docs/**'
+ - 'jobbergate-api/jobbergate_api/**'
+ - 'jobbergate-cli/jobbergate_cli/**'
+ - 'jobbergate-core/jobbergate_core/**'
+ - 'jobbergate-agent/jobbergate_agent/**'
+ branches:
+ - 'main'
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v2
+
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: 3.11
+
+ - name: Set up Poetry
+ uses: Gr1N/setup-poetry@v8
+
+ - name: Build Documentation
+ run: |
+ make docs
+
+ - name: Deploy documentation
+ uses: peaceiris/actions-gh-pages@v3
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ publish_dir: ./docs/site
diff --git a/.github/workflows/prepare_release.yaml b/.github/workflows/prepare_release.yaml
index a2962a4d..b0b206df 100644
--- a/.github/workflows/prepare_release.yaml
+++ b/.github/workflows/prepare_release.yaml
@@ -14,7 +14,7 @@ on:
inputs:
bump_rule:
type: choice
- description: Bump version rule for Poetry
+ description: Release Type
options:
- patch
- minor
diff --git a/.github/workflows/publish_docs.yaml b/.github/workflows/publish_docs.yaml
deleted file mode 100644
index ccc8777e..00000000
--- a/.github/workflows/publish_docs.yaml
+++ /dev/null
@@ -1,49 +0,0 @@
-name: "Publish Docs"
-
-on:
- push:
- tags:
- - "[0-9]+.[0-9]+.[0-9]+"
- - "[0-9]+.[0-9]+.[0-9]+-alpha.[0-9]+"
- - "[0-9]+.[0-9]+.[0-9]+-beta.[0-9]+"
- - "[0-9]+.[0-9]+.[0-9]+a[0-9]+"
- - "[0-9]+.[0-9]+.[0-9]+b[0-9]+"
- - "[0-9]+.[0-9]+.[0-9]+rc[0-9]+"
-
-jobs:
- publish:
- name: "Publish docs to S3"
- runs-on: "ubuntu-latest"
- strategy:
- matrix:
- python-version: ["3.11"]
-
- steps:
- - uses: actions/checkout@v3
-
- - name: Configure AWS credentials
- uses: aws-actions/configure-aws-credentials@v1
- with:
- aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
- aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_ID }}
- aws-region: us-west-2
-
- - uses: actions/setup-python@v4
- with:
- python-version: ${{ matrix.python-version }}
-
- - uses: Gr1N/setup-poetry@v8
- with:
- poetry-version: 1.5.1
-
- - name: Build docs
- working-directory: ./jobbergate-docs
- run: |
- make docs
-
- - name: Push to S3
- working-directory: ./jobbergate-docs
- run: |
- VERSION=`poetry version -s`
- aws s3 sync ./build s3://docs.omnivector.solutions/jobbergate/$VERSION
- aws s3 sync ./build s3://docs.omnivector.solutions/jobbergate/latest
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..a9ddbe5b
--- /dev/null
+++ b/README.md
@@ -0,0 +1,26 @@
+![Build Status](https://img.shields.io/github/actions/workflow/status/omnivector-solutions/jobbergate/test_on_push.yaml?branch=main&label=main-build&logo=github&style=plastic)
+![GitHub Issues](https://img.shields.io/github/issues/omnivector-solutions/jobbergate?label=issues&logo=github&style=plastic)
+![Pull Requests](https://img.shields.io/github/issues-pr/omnivector-solutions/jobbergate?label=pull-requests&logo=github&style=plastic)
+![GitHub Contributors](https://img.shields.io/github/contributors/omnivector-solutions/jobbergate?logo=github&style=plastic)
+
+
+> An [Omnivector](https://www.omnivector.io/) initiative
+>
+> [![omnivector-logo](https://omnivector-public-assets.s3.us-west-2.amazonaws.com/branding/omnivector-logo-text-black-horz.png)](https://www.omnivector.io/)
+ https://omnivector-public-assets.s3.us-west-2.amazonaws.com/branding/omnivector-logo-text-black-horz.png
+
+# Jobbergate
+
+
+Jobbergate is a job templating and submission system that integrates with Slurm to
+enable the re-use and remote submission of job scripts to a Slurm cluster.
+
+There are 2 main components of Jobbergate that are hosted as sub-projects of this
+repository:
+
+* [jobbergate-api](https://github.com/omnivector-solutions/jobbergate/jobbergate-api)
+* [jobbergate-cli](https://github.com/omnivector-solutions/jobbergate/jobbergate-cli)
+
+
+The complete documentation for Jobbergate can be viewed at the
+[Jobbergate Documentation](https://omnivector-solutions.github.io/jobbergate/) site.
diff --git a/README.rst b/README.rst
deleted file mode 100644
index d5b20d86..00000000
--- a/README.rst
+++ /dev/null
@@ -1,46 +0,0 @@
-.. raw:: html
-
-
-
-
-
-
-
-
-
-
-
- An Omnivector Solutions initiative
-
-
-============
- Jobbergate
-============
-
-Jobbergate is a job templating and submission system that integrates with Slurm to
-enable the re-use and remote submission of job scripts to a Slurm cluster.
-
-There are 2 main components of Jobbergate that are hosted as sub-projects of this
-repository:
-
-* `jobbergate-api `_
-* `jobbergate-cli `_
-
-The complete documentation for Jobbergate can be viewed at the
-`Jobbergate Documentation `_
-site.
diff --git a/ROADMAP.rst b/ROADMAP.rst
deleted file mode 100644
index 7a8690f4..00000000
--- a/ROADMAP.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-=================================
- Roadmap for Next-gen Jobbergate
-=================================
-
-This explains the roadmap for migrating from the legacy jobbergate apps to the
-next generation of Jobbergate.
-
-
-Work Items::
-
- [x] Add capability to dump full json output from legacy jobbergate-cli
- [x] Rename jobbergate-api-fastapi to jobbergate
- [x] Move jobbergate-api-fastapi code to subdirectory in jobbergate/jobbergate-api
- [ ] Add ability to dump user-map from legacy jobbergate-cli
- [x] Migrate jobbergate-cli v2 branch to subdirectory in jobbergate/jobbergate-cli
- [x] Migrate new additions from legacy jobbergate-cli to jobbergate/jobbergate-cli
- [ ] Add Dockerfile to jobbergate/jobbergate-cli
- [ ] Move jobbergate-documentation project to directory in jobbergate/jobbergate-doc
- [ ] Add support for Auth0 authorized requests to jobbergate/jobbergate-cli
- [ ] Add docker-compose to jobbergate
- [ ] Add minio to docker-compose for jobbergate/jobbergate-cli in lieu of AWS S3
- [ ] Add scripts for importing data from jobbergate-cli json dumps to jobbergate
diff --git a/examples/simple-application/README.rst b/examples/simple-application/README.md
similarity index 75%
rename from examples/simple-application/README.rst
rename to examples/simple-application/README.md
index 46719829..d0487605 100644
--- a/examples/simple-application/README.rst
+++ b/examples/simple-application/README.md
@@ -1,6 +1,4 @@
-==============================
- Dummy Jobbergate Application
-==============================
+# Dummy Jobbergate Application
This is a dummy Jobbergate Application that may be used for integration testing the
components of Jobbergate.
diff --git a/examples/simple-job-script.py b/examples/simple-job-script.py
index 5c5dc8dc..ea9e14b8 100644
--- a/examples/simple-job-script.py
+++ b/examples/simple-job-script.py
@@ -8,5 +8,5 @@
print("Executing simple job script")
-output_file = Path(f"/nfs/simple-output-{gethostname()}.txt")
+output_file = Path(f"/nfs/simple-output.txt")
output_file.write_text(f"Simple output from {gethostname()}")
diff --git a/fake-sbatch/README.md b/fake-sbatch/README.md
new file mode 100644
index 00000000..c4c4a874
--- /dev/null
+++ b/fake-sbatch/README.md
@@ -0,0 +1,42 @@
+# Fake sbatch
+
+A testing utility that returns `sbatch` output assuming a certain failure percentage.
+
+By default, `fake-sbatch` will fail 10% of the time (for testing error cases).
+
+
+
+## Usage
+
+```shell
+fake-sbatch
+```
+
+The command above should produce output like:
+
+```
+fake-sbatch: Submitted batch job 653898
+```
+
+
+## Settings
+
+If you wish to override the fail percentage (for example, if you wanted it to always or never fail),
+you may set the it with: `FAKE_SBATCH_FAIL_PCT=1.0`. 1.0 means it will always fail. 0.0 means it will
+never fail.
+
+You can also control the range of randomly produced slurm job id values by adjusting the `FAKE_SBATCH_MAX_JOB_ID` and
+`FAKE_SBATCH_MIN_JOB_ID` settings.
+
+
+## Setting up to use with Jobbergate CLI
+
+A simple way to make the `fake-sbatch` executable available for jobbergate is to install it via `pipx`.
+
+Simply, navigate to the root of the `fake-sbatch` repository and execute:
+
+```shell
+pipx install .
+```
+
+Then, in your Jobbergate environment, apply the setting `SBATCH_PATH=fake-sbatch`
diff --git a/fake-sbatch/README.rst b/fake-sbatch/README.rst
deleted file mode 100644
index c7009f51..00000000
--- a/fake-sbatch/README.rst
+++ /dev/null
@@ -1,40 +0,0 @@
-=============
- Fake sbatch
-=============
-
-A testing utility that returns ``sbatch`` output assuming a certain failure percentage.
-
-By default, ``fake-sbatch`` will fail 10% of the time (for testing error cases).
-
-
-
-Usage
------
-
-.. code-block:: console
-
- $ fake-sbatch
- fake-sbatch: Submitted batch job 653898
-
-
-Settings
---------
-
-If you wish to override the fail percentage (for example, if you wanted it to always or never fail),
-you may set the it with: ``FAKE_SBATCH_FAIL_PCT=1.0``. 1.0 means it will always fail. 0.0 means it will
-never fail.
-
-You can also control the range of randomly produced slurm job id values by adjusting the ``FAKE_SBATCH_MAX_JOB_ID`` and
-``FAKE_SBATCH_MIN_JOB_ID`` settings.
-
-
-Setting up to use with Jobbergate CLI
--------------------------------------
-
-A simple way to make the ``fake-sbatch`` executable available for jobbergate is to install it via ``pipx``.
-
-Simply, navigate to the root of the ``fake-sbatch`` repository and execute::
-
- $ pipx install .
-
-Then, in your Jobbergate environment, apply the setting ``SBATCH_PATH=fake-sbatch``
diff --git a/jobbergate-agent/CHANGELOG.md b/jobbergate-agent/CHANGELOG.md
new file mode 100644
index 00000000..e792510f
--- /dev/null
+++ b/jobbergate-agent/CHANGELOG.md
@@ -0,0 +1,18 @@
+# Change Log
+
+This file keeps track of all notable changes to jobbergate-core
+
+## Unreleased
+
+
+## 4.1.0a2 -- 2023-10-10
+
+
+## 4.1.0a1 -- 2023-10-02
+
+
+## 4.1.0a0 -- 2023-09-25
+
+
+## 4.0.0 -- 2023-09-14
+- Started the project
diff --git a/jobbergate-agent/CHANGELOG.rst b/jobbergate-agent/CHANGELOG.rst
deleted file mode 100644
index d7f31716..00000000
--- a/jobbergate-agent/CHANGELOG.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-============
- Change Log
-============
-
-This file keeps track of all notable changes to jobbergate-core
-
-Unreleased
-----------
-
-4.1.0a2 -- 2023-10-10
----------------------
-
-4.1.0a1 -- 2023-10-02
----------------------
-
-4.1.0a0 -- 2023-09-25
----------------------
-
-4.0.0 -- 2023-09-14
--------------------
-- Started the project
\ No newline at end of file
diff --git a/jobbergate-agent/README.md b/jobbergate-agent/README.md
index 75165b4e..fe8733c5 100644
--- a/jobbergate-agent/README.md
+++ b/jobbergate-agent/README.md
@@ -4,6 +4,7 @@
To install the package from Pypi simply run `pip install jobbergate-agent`.
+
## Setup parameters
1. Setup dependencies
@@ -32,6 +33,7 @@ To install the package from Pypi simply run `pip install jobbergate-agent`.
NOTE: When both `JOBBERGATE_AGENT_SLURMRESTD_JWT_KEY_PATH` and `JOBBERGATE_AGENT_SLURMRESTD_JWT_KEY_STRING` are passed, the agent will completely ignore the `JOBBERGATE_AGENT_SLURMRESTD_JWT_KEY_PATH` and will prioritize the `JOBBERGATE_AGENT_SLURMRESTD_JWT_KEY_STRING`. Beware this behaviour.
+
## Local usage example
1. Run app
diff --git a/jobbergate-agent/poetry.lock b/jobbergate-agent/poetry.lock
index acfd2826..6825bc86 100644
--- a/jobbergate-agent/poetry.lock
+++ b/jobbergate-agent/poetry.lock
@@ -1,9 +1,10 @@
-# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand.
[[package]]
name = "anyio"
version = "4.0.0"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
+category = "main"
optional = false
python-versions = ">=3.8"
files = [
@@ -25,6 +26,7 @@ trio = ["trio (>=0.22)"]
name = "apscheduler"
version = "3.10.3"
description = "In-process task scheduler with Cron-like capabilities"
+category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -35,7 +37,7 @@ files = [
[package.dependencies]
pytz = "*"
six = ">=1.4.0"
-tzlocal = ">=2.0,<3.dev0 || >=4.dev0"
+tzlocal = ">=2.0,<3.0.0 || >=4.0.0"
[package.extras]
doc = ["sphinx", "sphinx-rtd-theme"]
@@ -53,6 +55,7 @@ zookeeper = ["kazoo"]
name = "asynctest"
version = "0.13.0"
description = "Enhance the standard unittest package with features for testing asyncio libraries"
+category = "dev"
optional = false
python-versions = ">=3.5"
files = [
@@ -64,6 +67,7 @@ files = [
name = "backports-zoneinfo"
version = "0.2.1"
description = "Backport of the standard library zoneinfo module"
+category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -90,33 +94,30 @@ tzdata = ["tzdata"]
[[package]]
name = "black"
-version = "23.9.1"
+version = "23.10.0"
description = "The uncompromising code formatter."
+category = "dev"
optional = false
python-versions = ">=3.8"
files = [
- {file = "black-23.9.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301"},
- {file = "black-23.9.1-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100"},
- {file = "black-23.9.1-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:75a2dc41b183d4872d3a500d2b9c9016e67ed95738a3624f4751a0cb4818fe71"},
- {file = "black-23.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13a2e4a93bb8ca74a749b6974925c27219bb3df4d42fc45e948a5d9feb5122b7"},
- {file = "black-23.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:adc3e4442eef57f99b5590b245a328aad19c99552e0bdc7f0b04db6656debd80"},
- {file = "black-23.9.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:8431445bf62d2a914b541da7ab3e2b4f3bc052d2ccbf157ebad18ea126efb91f"},
- {file = "black-23.9.1-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:8fc1ddcf83f996247505db6b715294eba56ea9372e107fd54963c7553f2b6dfe"},
- {file = "black-23.9.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:7d30ec46de88091e4316b17ae58bbbfc12b2de05e069030f6b747dfc649ad186"},
- {file = "black-23.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031e8c69f3d3b09e1aa471a926a1eeb0b9071f80b17689a655f7885ac9325a6f"},
- {file = "black-23.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:538efb451cd50f43aba394e9ec7ad55a37598faae3348d723b59ea8e91616300"},
- {file = "black-23.9.1-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:638619a559280de0c2aa4d76f504891c9860bb8fa214267358f0a20f27c12948"},
- {file = "black-23.9.1-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:a732b82747235e0542c03bf352c126052c0fbc458d8a239a94701175b17d4855"},
- {file = "black-23.9.1-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:cf3a4d00e4cdb6734b64bf23cd4341421e8953615cba6b3670453737a72ec204"},
- {file = "black-23.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf99f3de8b3273a8317681d8194ea222f10e0133a24a7548c73ce44ea1679377"},
- {file = "black-23.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:14f04c990259576acd093871e7e9b14918eb28f1866f91968ff5524293f9c573"},
- {file = "black-23.9.1-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:c619f063c2d68f19b2d7270f4cf3192cb81c9ec5bc5ba02df91471d0b88c4c5c"},
- {file = "black-23.9.1-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:6a3b50e4b93f43b34a9d3ef00d9b6728b4a722c997c99ab09102fd5efdb88325"},
- {file = "black-23.9.1-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c46767e8df1b7beefb0899c4a95fb43058fa8500b6db144f4ff3ca38eb2f6393"},
- {file = "black-23.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50254ebfa56aa46a9fdd5d651f9637485068a1adf42270148cd101cdf56e0ad9"},
- {file = "black-23.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:403397c033adbc45c2bd41747da1f7fc7eaa44efbee256b53842470d4ac5a70f"},
- {file = "black-23.9.1-py3-none-any.whl", hash = "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9"},
- {file = "black-23.9.1.tar.gz", hash = "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d"},
+ {file = "black-23.10.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:f8dc7d50d94063cdfd13c82368afd8588bac4ce360e4224ac399e769d6704e98"},
+ {file = "black-23.10.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:f20ff03f3fdd2fd4460b4f631663813e57dc277e37fb216463f3b907aa5a9bdd"},
+ {file = "black-23.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3d9129ce05b0829730323bdcb00f928a448a124af5acf90aa94d9aba6969604"},
+ {file = "black-23.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:960c21555be135c4b37b7018d63d6248bdae8514e5c55b71e994ad37407f45b8"},
+ {file = "black-23.10.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:30b78ac9b54cf87bcb9910ee3d499d2bc893afd52495066c49d9ee6b21eee06e"},
+ {file = "black-23.10.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:0e232f24a337fed7a82c1185ae46c56c4a6167fb0fe37411b43e876892c76699"},
+ {file = "black-23.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31946ec6f9c54ed7ba431c38bc81d758970dd734b96b8e8c2b17a367d7908171"},
+ {file = "black-23.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:c870bee76ad5f7a5ea7bd01dc646028d05568d33b0b09b7ecfc8ec0da3f3f39c"},
+ {file = "black-23.10.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:6901631b937acbee93c75537e74f69463adaf34379a04eef32425b88aca88a23"},
+ {file = "black-23.10.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:481167c60cd3e6b1cb8ef2aac0f76165843a374346aeeaa9d86765fe0dd0318b"},
+ {file = "black-23.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f74892b4b836e5162aa0452393112a574dac85e13902c57dfbaaf388e4eda37c"},
+ {file = "black-23.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:47c4510f70ec2e8f9135ba490811c071419c115e46f143e4dce2ac45afdcf4c9"},
+ {file = "black-23.10.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:76baba9281e5e5b230c9b7f83a96daf67a95e919c2dfc240d9e6295eab7b9204"},
+ {file = "black-23.10.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:a3c2ddb35f71976a4cfeca558848c2f2f89abc86b06e8dd89b5a65c1e6c0f22a"},
+ {file = "black-23.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db451a3363b1e765c172c3fd86213a4ce63fb8524c938ebd82919bf2a6e28c6a"},
+ {file = "black-23.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:7fb5fc36bb65160df21498d5a3dd330af8b6401be3f25af60c6ebfe23753f747"},
+ {file = "black-23.10.0-py3-none-any.whl", hash = "sha256:e223b731a0e025f8ef427dd79d8cd69c167da807f5710add30cdf131f13dd62e"},
+ {file = "black-23.10.0.tar.gz", hash = "sha256:31b9f87b277a68d0e99d2905edae08807c007973eaa609da5f0c62def6b7c0bd"},
]
[package.dependencies]
@@ -138,6 +139,7 @@ uvloop = ["uvloop (>=0.15.2)"]
name = "certifi"
version = "2023.7.22"
description = "Python package for providing Mozilla's CA Bundle."
+category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -149,6 +151,7 @@ files = [
name = "charset-normalizer"
version = "3.3.0"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+category = "dev"
optional = false
python-versions = ">=3.7.0"
files = [
@@ -248,6 +251,7 @@ files = [
name = "click"
version = "8.1.7"
description = "Composable command line interface toolkit"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -262,6 +266,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""}
name = "colorama"
version = "0.4.6"
description = "Cross-platform colored terminal text."
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
files = [
@@ -273,6 +278,7 @@ files = [
name = "coverage"
version = "7.3.2"
description = "Code coverage measurement for Python"
+category = "dev"
optional = false
python-versions = ">=3.8"
files = [
@@ -340,6 +346,7 @@ toml = ["tomli"]
name = "ecdsa"
version = "0.18.0"
description = "ECDSA cryptographic signature library (pure python)"
+category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
@@ -358,6 +365,7 @@ gmpy2 = ["gmpy2"]
name = "exceptiongroup"
version = "1.1.3"
description = "Backport of PEP 654 (exception groups)"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -372,6 +380,7 @@ test = ["pytest (>=6)"]
name = "flake8"
version = "3.9.2"
description = "the modular source code checker: pep8 pyflakes and co"
+category = "dev"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
files = [
@@ -388,6 +397,7 @@ pyflakes = ">=2.3.0,<2.4.0"
name = "freezegun"
version = "1.2.2"
description = "Let your Python tests travel through time"
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -402,6 +412,7 @@ python-dateutil = ">=2.7"
name = "h11"
version = "0.14.0"
description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -413,6 +424,7 @@ files = [
name = "httpcore"
version = "0.17.3"
description = "A minimal low-level HTTP client."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -424,16 +436,17 @@ files = [
anyio = ">=3.0,<5.0"
certifi = "*"
h11 = ">=0.13,<0.15"
-sniffio = "==1.*"
+sniffio = ">=1.0.0,<2.0.0"
[package.extras]
http2 = ["h2 (>=3,<5)"]
-socks = ["socksio (==1.*)"]
+socks = ["socksio (>=1.0.0,<2.0.0)"]
[[package]]
name = "httpx"
version = "0.24.1"
description = "The next generation HTTP client."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -449,14 +462,15 @@ sniffio = "*"
[package.extras]
brotli = ["brotli", "brotlicffi"]
-cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
+cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<14)"]
http2 = ["h2 (>=3,<5)"]
-socks = ["socksio (==1.*)"]
+socks = ["socksio (>=1.0.0,<2.0.0)"]
[[package]]
name = "idna"
version = "3.4"
description = "Internationalized Domain Names in Applications (IDNA)"
+category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -468,6 +482,7 @@ files = [
name = "importlib-metadata"
version = "6.8.0"
description = "Read metadata from Python packages"
+category = "main"
optional = false
python-versions = ">=3.8"
files = [
@@ -487,6 +502,7 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs
name = "iniconfig"
version = "2.0.0"
description = "brain-dead simple config-ini parsing"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -498,6 +514,7 @@ files = [
name = "isort"
version = "5.12.0"
description = "A Python utility / library to sort Python imports."
+category = "dev"
optional = false
python-versions = ">=3.8.0"
files = [
@@ -513,8 +530,9 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"]
[[package]]
name = "jobbergate-core"
-version = "4.1.0a1"
+version = "4.1.0a2"
description = "Jobbergate Core"
+category = "main"
optional = false
python-versions = "^3.8"
files = []
@@ -524,7 +542,7 @@ develop = true
httpx = "^0.24.1"
loguru = "^0.6.0"
pendulum = "^2.1.2"
-py-buzz = "^3.1.0"
+py-buzz = "^4.0.0"
pydantic = "^1.8.2"
python-jose = "^3.3.0"
@@ -536,6 +554,7 @@ url = "../jobbergate-core"
name = "loguru"
version = "0.6.0"
description = "Python logging made (stupidly) simple"
+category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -554,6 +573,7 @@ dev = ["Sphinx (>=4.1.1)", "black (>=19.10b0)", "colorama (>=0.3.4)", "docutils
name = "mccabe"
version = "0.6.1"
description = "McCabe checker, plugin for flake8"
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -565,6 +585,7 @@ files = [
name = "mypy"
version = "0.931"
description = "Optional static typing for Python"
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -603,6 +624,7 @@ python2 = ["typed-ast (>=1.4.0,<2)"]
name = "mypy-extensions"
version = "1.0.0"
description = "Type system extensions for programs checked with the mypy type checker."
+category = "dev"
optional = false
python-versions = ">=3.5"
files = [
@@ -614,6 +636,7 @@ files = [
name = "packaging"
version = "23.2"
description = "Core utilities for Python packages"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -625,6 +648,7 @@ files = [
name = "pathspec"
version = "0.11.2"
description = "Utility library for gitignore style pattern matching of file paths."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -636,6 +660,7 @@ files = [
name = "pendulum"
version = "2.1.2"
description = "Python datetimes made easy"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
@@ -670,6 +695,7 @@ pytzdata = ">=2020.1"
name = "platformdirs"
version = "3.11.0"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -685,6 +711,7 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co
name = "pluggy"
version = "1.3.0"
description = "plugin and hook calling mechanisms for python"
+category = "dev"
optional = false
python-versions = ">=3.8"
files = [
@@ -698,19 +725,21 @@ testing = ["pytest", "pytest-benchmark"]
[[package]]
name = "py-buzz"
-version = "3.3.0"
+version = "4.1.0"
description = "\"That's not flying, it's falling with style\": Exceptions with extras"
+category = "main"
optional = false
-python-versions = ">=3.6.2,<4.0.0"
+python-versions = ">=3.8,<4.0"
files = [
- {file = "py_buzz-3.3.0-py3-none-any.whl", hash = "sha256:bae0aec80f50679718c5284a7a4c6a3b55aa797579defea9ab362fd49c5d10a1"},
- {file = "py_buzz-3.3.0.tar.gz", hash = "sha256:2f2075fd134ba5e3731a3c6987d5cb02ce6631418b92e49c9852f7f013f49901"},
+ {file = "py_buzz-4.1.0-py3-none-any.whl", hash = "sha256:77dc0dc9c9923b6f8079dc2e2c3b4fbebd2308acaca1500f8eda2711cd308f97"},
+ {file = "py_buzz-4.1.0.tar.gz", hash = "sha256:ac11dba4922b2af114126044597d2fcd15e8c6a74368bed91f3c6732c8f09812"},
]
[[package]]
name = "pyasn1"
version = "0.5.0"
description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)"
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7"
files = [
@@ -722,6 +751,7 @@ files = [
name = "pycodestyle"
version = "2.7.0"
description = "Python style guide checker"
+category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@@ -731,37 +761,52 @@ files = [
[[package]]
name = "pydantic"
-version = "1.8.2"
-description = "Data validation and settings management using python 3.6 type hinting"
+version = "1.10.12"
+description = "Data validation and settings management using python type hints"
+category = "main"
optional = false
-python-versions = ">=3.6.1"
+python-versions = ">=3.7"
files = [
- {file = "pydantic-1.8.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:05ddfd37c1720c392f4e0d43c484217b7521558302e7069ce8d318438d297739"},
- {file = "pydantic-1.8.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a7c6002203fe2c5a1b5cbb141bb85060cbff88c2d78eccbc72d97eb7022c43e4"},
- {file = "pydantic-1.8.2-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:589eb6cd6361e8ac341db97602eb7f354551482368a37f4fd086c0733548308e"},
- {file = "pydantic-1.8.2-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:10e5622224245941efc193ad1d159887872776df7a8fd592ed746aa25d071840"},
- {file = "pydantic-1.8.2-cp36-cp36m-win_amd64.whl", hash = "sha256:99a9fc39470010c45c161a1dc584997f1feb13f689ecf645f59bb4ba623e586b"},
- {file = "pydantic-1.8.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a83db7205f60c6a86f2c44a61791d993dff4b73135df1973ecd9eed5ea0bda20"},
- {file = "pydantic-1.8.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:41b542c0b3c42dc17da70554bc6f38cbc30d7066d2c2815a94499b5684582ecb"},
- {file = "pydantic-1.8.2-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:ea5cb40a3b23b3265f6325727ddfc45141b08ed665458be8c6285e7b85bd73a1"},
- {file = "pydantic-1.8.2-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:18b5ea242dd3e62dbf89b2b0ec9ba6c7b5abaf6af85b95a97b00279f65845a23"},
- {file = "pydantic-1.8.2-cp37-cp37m-win_amd64.whl", hash = "sha256:234a6c19f1c14e25e362cb05c68afb7f183eb931dd3cd4605eafff055ebbf287"},
- {file = "pydantic-1.8.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:021ea0e4133e8c824775a0cfe098677acf6fa5a3cbf9206a376eed3fc09302cd"},
- {file = "pydantic-1.8.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e710876437bc07bd414ff453ac8ec63d219e7690128d925c6e82889d674bb505"},
- {file = "pydantic-1.8.2-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:ac8eed4ca3bd3aadc58a13c2aa93cd8a884bcf21cb019f8cfecaae3b6ce3746e"},
- {file = "pydantic-1.8.2-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:4a03cbbe743e9c7247ceae6f0d8898f7a64bb65800a45cbdc52d65e370570820"},
- {file = "pydantic-1.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:8621559dcf5afacf0069ed194278f35c255dc1a1385c28b32dd6c110fd6531b3"},
- {file = "pydantic-1.8.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8b223557f9510cf0bfd8b01316bf6dd281cf41826607eada99662f5e4963f316"},
- {file = "pydantic-1.8.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:244ad78eeb388a43b0c927e74d3af78008e944074b7d0f4f696ddd5b2af43c62"},
- {file = "pydantic-1.8.2-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:05ef5246a7ffd2ce12a619cbb29f3307b7c4509307b1b49f456657b43529dc6f"},
- {file = "pydantic-1.8.2-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:54cd5121383f4a461ff7644c7ca20c0419d58052db70d8791eacbbe31528916b"},
- {file = "pydantic-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:4be75bebf676a5f0f87937c6ddb061fa39cbea067240d98e298508c1bda6f3f3"},
- {file = "pydantic-1.8.2-py3-none-any.whl", hash = "sha256:fec866a0b59f372b7e776f2d7308511784dace622e0992a0b59ea3ccee0ae833"},
- {file = "pydantic-1.8.2.tar.gz", hash = "sha256:26464e57ccaafe72b7ad156fdaa4e9b9ef051f69e175dbbb463283000c05ab7b"},
+ {file = "pydantic-1.10.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a1fcb59f2f355ec350073af41d927bf83a63b50e640f4dbaa01053a28b7a7718"},
+ {file = "pydantic-1.10.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b7ccf02d7eb340b216ec33e53a3a629856afe1c6e0ef91d84a4e6f2fb2ca70fe"},
+ {file = "pydantic-1.10.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fb2aa3ab3728d950bcc885a2e9eff6c8fc40bc0b7bb434e555c215491bcf48b"},
+ {file = "pydantic-1.10.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:771735dc43cf8383959dc9b90aa281f0b6092321ca98677c5fb6125a6f56d58d"},
+ {file = "pydantic-1.10.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ca48477862372ac3770969b9d75f1bf66131d386dba79506c46d75e6b48c1e09"},
+ {file = "pydantic-1.10.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a5e7add47a5b5a40c49b3036d464e3c7802f8ae0d1e66035ea16aa5b7a3923ed"},
+ {file = "pydantic-1.10.12-cp310-cp310-win_amd64.whl", hash = "sha256:e4129b528c6baa99a429f97ce733fff478ec955513630e61b49804b6cf9b224a"},
+ {file = "pydantic-1.10.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b0d191db0f92dfcb1dec210ca244fdae5cbe918c6050b342d619c09d31eea0cc"},
+ {file = "pydantic-1.10.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:795e34e6cc065f8f498c89b894a3c6da294a936ee71e644e4bd44de048af1405"},
+ {file = "pydantic-1.10.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69328e15cfda2c392da4e713443c7dbffa1505bc9d566e71e55abe14c97ddc62"},
+ {file = "pydantic-1.10.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2031de0967c279df0d8a1c72b4ffc411ecd06bac607a212892757db7462fc494"},
+ {file = "pydantic-1.10.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ba5b2e6fe6ca2b7e013398bc7d7b170e21cce322d266ffcd57cca313e54fb246"},
+ {file = "pydantic-1.10.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2a7bac939fa326db1ab741c9d7f44c565a1d1e80908b3797f7f81a4f86bc8d33"},
+ {file = "pydantic-1.10.12-cp311-cp311-win_amd64.whl", hash = "sha256:87afda5539d5140cb8ba9e8b8c8865cb5b1463924d38490d73d3ccfd80896b3f"},
+ {file = "pydantic-1.10.12-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:549a8e3d81df0a85226963611950b12d2d334f214436a19537b2efed61b7639a"},
+ {file = "pydantic-1.10.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:598da88dfa127b666852bef6d0d796573a8cf5009ffd62104094a4fe39599565"},
+ {file = "pydantic-1.10.12-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba5c4a8552bff16c61882db58544116d021d0b31ee7c66958d14cf386a5b5350"},
+ {file = "pydantic-1.10.12-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c79e6a11a07da7374f46970410b41d5e266f7f38f6a17a9c4823db80dadf4303"},
+ {file = "pydantic-1.10.12-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab26038b8375581dc832a63c948f261ae0aa21f1d34c1293469f135fa92972a5"},
+ {file = "pydantic-1.10.12-cp37-cp37m-win_amd64.whl", hash = "sha256:e0a16d274b588767602b7646fa05af2782576a6cf1022f4ba74cbb4db66f6ca8"},
+ {file = "pydantic-1.10.12-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6a9dfa722316f4acf4460afdf5d41d5246a80e249c7ff475c43a3a1e9d75cf62"},
+ {file = "pydantic-1.10.12-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a73f489aebd0c2121ed974054cb2759af8a9f747de120acd2c3394cf84176ccb"},
+ {file = "pydantic-1.10.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b30bcb8cbfccfcf02acb8f1a261143fab622831d9c0989707e0e659f77a18e0"},
+ {file = "pydantic-1.10.12-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fcfb5296d7877af406ba1547dfde9943b1256d8928732267e2653c26938cd9c"},
+ {file = "pydantic-1.10.12-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2f9a6fab5f82ada41d56b0602606a5506aab165ca54e52bc4545028382ef1c5d"},
+ {file = "pydantic-1.10.12-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dea7adcc33d5d105896401a1f37d56b47d443a2b2605ff8a969a0ed5543f7e33"},
+ {file = "pydantic-1.10.12-cp38-cp38-win_amd64.whl", hash = "sha256:1eb2085c13bce1612da8537b2d90f549c8cbb05c67e8f22854e201bde5d98a47"},
+ {file = "pydantic-1.10.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ef6c96b2baa2100ec91a4b428f80d8f28a3c9e53568219b6c298c1125572ebc6"},
+ {file = "pydantic-1.10.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c076be61cd0177a8433c0adcb03475baf4ee91edf5a4e550161ad57fc90f523"},
+ {file = "pydantic-1.10.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5a58feb9a39f481eda4d5ca220aa8b9d4f21a41274760b9bc66bfd72595b86"},
+ {file = "pydantic-1.10.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5f805d2d5d0a41633651a73fa4ecdd0b3d7a49de4ec3fadf062fe16501ddbf1"},
+ {file = "pydantic-1.10.12-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1289c180abd4bd4555bb927c42ee42abc3aee02b0fb2d1223fb7c6e5bef87dbe"},
+ {file = "pydantic-1.10.12-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5d1197e462e0364906cbc19681605cb7c036f2475c899b6f296104ad42b9f5fb"},
+ {file = "pydantic-1.10.12-cp39-cp39-win_amd64.whl", hash = "sha256:fdbdd1d630195689f325c9ef1a12900524dceb503b00a987663ff4f58669b93d"},
+ {file = "pydantic-1.10.12-py3-none-any.whl", hash = "sha256:b749a43aa51e32839c9d71dc67eb1e4221bb04af1033a32e3923d46f9effa942"},
+ {file = "pydantic-1.10.12.tar.gz", hash = "sha256:0fe8a415cea8f340e7a9af9c54fc71a649b43e8ca3cc732986116b3cb135d303"},
]
[package.dependencies]
-typing-extensions = ">=3.7.4.3"
+typing-extensions = ">=4.2.0"
[package.extras]
dotenv = ["python-dotenv (>=0.10.4)"]
@@ -771,6 +816,7 @@ email = ["email-validator (>=1.0.3)"]
name = "pyflakes"
version = "2.3.1"
description = "passive checker of Python programs"
+category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@@ -782,6 +828,7 @@ files = [
name = "pyjwt"
version = "2.8.0"
description = "JSON Web Token implementation in Python"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -799,6 +846,7 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"]
name = "pyproject-flake8"
version = "3.9.2"
description = "pyproject-flake8 (`pflake8`), a monkey patching wrapper to connect flake8 with pyproject.toml configuration"
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -814,6 +862,7 @@ tomli = {version = "*", markers = "python_version < \"3.11\""}
name = "pytest"
version = "7.4.2"
description = "pytest: simple powerful testing with Python"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -836,6 +885,7 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no
name = "pytest-asyncio"
version = "0.18.3"
description = "Pytest support for asyncio"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -854,6 +904,7 @@ testing = ["coverage (==6.2)", "flaky (>=3.5.0)", "hypothesis (>=5.7.1)", "mypy
name = "pytest-cov"
version = "3.0.0"
description = "Pytest plugin for measuring coverage."
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -872,6 +923,7 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale
name = "pytest-env"
version = "0.6.2"
description = "py.test plugin that allows you to add environment variables."
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -883,13 +935,14 @@ pytest = ">=2.6.0"
[[package]]
name = "pytest-mock"
-version = "3.11.1"
+version = "3.12.0"
description = "Thin-wrapper around the mock package for easier use with pytest"
+category = "dev"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"},
- {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"},
+ {file = "pytest-mock-3.12.0.tar.gz", hash = "sha256:31a40f038c22cad32287bb43932054451ff5583ff094bca6f675df2f8bc1a6e9"},
+ {file = "pytest_mock-3.12.0-py3-none-any.whl", hash = "sha256:0972719a7263072da3a21c7f4773069bcc7486027d7e8e1f81d98a47e701bc4f"},
]
[package.dependencies]
@@ -902,6 +955,7 @@ dev = ["pre-commit", "pytest-asyncio", "tox"]
name = "pytest-random-order"
version = "1.1.0"
description = "Randomise the order in which pytest tests are run with some control over the randomness"
+category = "dev"
optional = false
python-versions = ">=3.5.0"
files = [
@@ -916,6 +970,7 @@ pytest = ">=3.0.0"
name = "python-dateutil"
version = "2.8.2"
description = "Extensions to the standard Python datetime module"
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
files = [
@@ -928,13 +983,14 @@ six = ">=1.5"
[[package]]
name = "python-dotenv"
-version = "0.16.0"
+version = "1.0.0"
description = "Read key-value pairs from a .env file and set them as environment variables"
+category = "main"
optional = false
-python-versions = "*"
+python-versions = ">=3.8"
files = [
- {file = "python-dotenv-0.16.0.tar.gz", hash = "sha256:9fa413c37d4652d3fa02fea0ff465c384f5db75eab259c4fc5d0c5b8bf20edd4"},
- {file = "python_dotenv-0.16.0-py2.py3-none-any.whl", hash = "sha256:31d752f5b748f4e292448c9a0cac6a08ed5e6f4cefab85044462dcad56905cec"},
+ {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"},
+ {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"},
]
[package.extras]
@@ -944,6 +1000,7 @@ cli = ["click (>=5.0)"]
name = "python-jose"
version = "3.3.0"
description = "JOSE implementation in Python"
+category = "main"
optional = false
python-versions = "*"
files = [
@@ -965,6 +1022,7 @@ pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"]
name = "pytz"
version = "2023.3.post1"
description = "World timezone definitions, modern and historical"
+category = "main"
optional = false
python-versions = "*"
files = [
@@ -976,6 +1034,7 @@ files = [
name = "pytzdata"
version = "2020.1"
description = "The Olson timezone database for Python."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@@ -987,6 +1046,7 @@ files = [
name = "requests"
version = "2.31.0"
description = "Python HTTP for Humans."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -1008,6 +1068,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
name = "requests-mock"
version = "1.11.0"
description = "Mock out responses from the requests package"
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -1027,6 +1088,7 @@ test = ["fixtures", "mock", "purl", "pytest", "requests-futures", "sphinx", "tes
name = "respx"
version = "0.20.2"
description = "A utility for mocking out the Python HTTPX and HTTP Core libraries."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -1041,6 +1103,7 @@ httpx = ">=0.21.0"
name = "rsa"
version = "4.9"
description = "Pure-Python RSA implementation"
+category = "main"
optional = false
python-versions = ">=3.6,<4"
files = [
@@ -1053,13 +1116,14 @@ pyasn1 = ">=0.1.3"
[[package]]
name = "sentry-sdk"
-version = "1.31.0"
+version = "1.32.0"
description = "Python client for Sentry (https://sentry.io)"
+category = "main"
optional = false
python-versions = "*"
files = [
- {file = "sentry-sdk-1.31.0.tar.gz", hash = "sha256:6de2e88304873484207fed836388e422aeff000609b104c802749fd89d56ba5b"},
- {file = "sentry_sdk-1.31.0-py2.py3-none-any.whl", hash = "sha256:64a7141005fb775b9db298a30de93e3b83e0ddd1232dc6f36eb38aebc1553291"},
+ {file = "sentry-sdk-1.32.0.tar.gz", hash = "sha256:935e8fbd7787a3702457393b74b13d89a5afb67185bc0af85c00cb27cbd42e7c"},
+ {file = "sentry_sdk-1.32.0-py2.py3-none-any.whl", hash = "sha256:eeb0b3550536f3bbc05bb1c7e0feb3a78d74acb43b607159a606ed2ec0a33a4d"},
]
[package.dependencies]
@@ -1100,6 +1164,7 @@ tornado = ["tornado (>=5)"]
name = "six"
version = "1.16.0"
description = "Python 2 and 3 compatibility utilities"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
@@ -1111,6 +1176,7 @@ files = [
name = "sniffio"
version = "1.3.0"
description = "Sniff out which async library your code is running under"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1122,6 +1188,7 @@ files = [
name = "tomli"
version = "2.0.1"
description = "A lil' TOML parser"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -1133,6 +1200,7 @@ files = [
name = "typing-extensions"
version = "4.8.0"
description = "Backported and Experimental Type Hints for Python 3.8+"
+category = "main"
optional = false
python-versions = ">=3.8"
files = [
@@ -1144,6 +1212,7 @@ files = [
name = "tzdata"
version = "2023.3"
description = "Provider of IANA time zone data"
+category = "main"
optional = false
python-versions = ">=2"
files = [
@@ -1155,6 +1224,7 @@ files = [
name = "tzlocal"
version = "5.1"
description = "tzinfo object for the local timezone"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1173,6 +1243,7 @@ devenv = ["black", "check-manifest", "flake8", "pyroma", "pytest (>=4.3)", "pyte
name = "urllib3"
version = "2.0.7"
description = "HTTP library with thread-safe connection pooling, file post, and more."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1190,6 +1261,7 @@ zstd = ["zstandard (>=0.18.0)"]
name = "win32-setctime"
version = "1.1.0"
description = "A small Python utility to set file creation time on Windows"
+category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -1204,6 +1276,7 @@ dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"]
name = "zipp"
version = "3.17.0"
description = "Backport of pathlib-compatible object wrapper for zip files"
+category = "main"
optional = false
python-versions = ">=3.8"
files = [
@@ -1218,4 +1291,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p
[metadata]
lock-version = "2.0"
python-versions = "^3.8"
-content-hash = "55c7ad31a4f32df585478f751ed9a550c9f8236c56cbc44b4a444b619ad27834"
+content-hash = "f07d3e00811038c1e57820f359e8dddd848d378266348da6ddddbec39b32bc17"
diff --git a/jobbergate-agent/pyproject.toml b/jobbergate-agent/pyproject.toml
index 70b1a36b..2e8c1b6d 100644
--- a/jobbergate-agent/pyproject.toml
+++ b/jobbergate-agent/pyproject.toml
@@ -27,10 +27,10 @@ httpx = "0.24.1"
importlib-metadata = { version = "^6.8.0", python = "<3.10" }
loguru = "0.6.0"
pendulum = "^2.1.2"
-py-buzz = "^3.3.0"
-pydantic = "1.8.2"
+py-buzz = "^4.0.0"
+pydantic = "1.10.12"
pyjwt = "^2.8.0"
-python-dotenv = "0.16.0"
+python-dotenv = "^1.0.0"
python-jose = "3.3.0"
sentry-sdk = "^1.1.0"
diff --git a/jobbergate-api/CHANGELOG.rst b/jobbergate-api/CHANGELOG.md
similarity index 73%
rename from jobbergate-api/CHANGELOG.rst
rename to jobbergate-api/CHANGELOG.md
index 111ab0f4..8a3bd8e7 100644
--- a/jobbergate-api/CHANGELOG.rst
+++ b/jobbergate-api/CHANGELOG.md
@@ -1,27 +1,26 @@
-============
- Change Log
-============
+# Change Log
This file keeps track of all notable changes to jobbergate-api
-Unreleased
-----------
+
+## Unreleased
- Changed internals to avoid committing to the database when a GET request is made
- Added extra settings to allow profiling and tracing on sentry
-4.1.0a2 -- 2023-10-10
----------------------
+
+## 4.1.0a2 -- 2023-10-10
- Made `runtime_config` optional when uploading a workflow file
-4.1.0a1 -- 2023-10-02
----------------------
+
+## 4.1.0a1 -- 2023-10-02
+
- Exposed database connection pool settings through the app configuration
-4.1.0a0 -- 2023-09-25
----------------------
-4.0.0 -- 2023-09-14
--------------------
+## 4.1.0a0 -- 2023-09-25
+
+
+## 4.0.0 -- 2023-09-14
- Modified the API to address the new data model on Jobbergate
- Added functionality to make make the signal job property on job submissions backward compatible with legacy applications
- Add backward compatibility for organization_id on the identity payload
@@ -29,46 +28,45 @@ Unreleased
- Added `pendulum` to the requirements
- Modified internal timestamps to standardize the use of UTC
-3.4.3 -- 2023-01-30
--------------------
+
+## 3.4.3 -- 2023-01-30
- Patched the sbatch param parser to support special characters
-3.4.2 -- 2023-01-25
--------------------
+
+## 3.4.2 -- 2023-01-25
- Fixed put endpoints on job-submission to return the correct data
-3.4.1 -- 2023-01-16
--------------------
+
+## 3.4.1 -- 2023-01-16
- Fix a compatibility issue on JobbergateConfig by removing the leading "templates/" on the path for template files
- Fix some compatibility issues on the JobProperties schema for job submissions
- Fix the field `execution_parameters` that is optional at job submission creations
-3.4.0 -- 2023-01-03
--------------------
+## 3.4.0 -- 2023-01-03
- Move SBATCH params to Job Script submission
- Added field `from_application_id` to filter job scripts on the list endpoint
- Added field `from_job_script_id` to filter job submissions on the list endpoint
-3.3.4 -- 2022-12-05
--------------------
+
+## 3.3.4 -- 2022-12-05
- Added version metadata to the API
-3.3.3 -- 2022-10-17
--------------------
+
+## 3.3.3 -- 2022-10-17
- Added logic to ignore leading templates/ path in default template
-3.3.2 -- 2022-10-13
--------------------
+
+## 3.3.2 -- 2022-10-13
- Fixed a bug at the file manager where the search for objects at s3 was not restricted to a single folder
- Changed the jinja2 syntax validation in order to make it more flexible with regard to the data expected in the template
-3.3.1 -- 2022-10-10
--------------------
+
+## 3.3.1 -- 2022-10-10
- Keep synchronized with jobbergate-cli
-3.3.0 -- 2022-10-04
--------------------
+
+## 3.3.0 -- 2022-10-04
- Added logic for supporting files on job-scripts.
- Changed dev-tools to use alembic functions instead of subprocess calls
- Changed default log level to DEBUG instead of INFO
@@ -76,137 +74,137 @@ Unreleased
- Added better logging and reporting for pydantic validation errors
- Added job_submissions.status as a sortable field
-3.2.4 -- 2022-09-12
--------------------
+
+## 3.2.4 -- 2022-09-12
- Patch the supporting files on job-scripts.
- Refactor application file management in a class, making it modular and reusable.
- Fix a bug when writing application files to S3 and add tests to cover the issue.
- Fix API was not sending job-script files to the agent.
- Refactor Jobbergate application file management.
-3.2.3 -- 2022-08-01
--------------------
+
+## 3.2.3 -- 2022-08-01
- Patch cli authentication configurations.
- Added support to release on PyPI.
-3.2.2 -- 2022-07-28
--------------------
+
+## 3.2.2 -- 2022-07-28
- Fixed a bug with option email in the token payload.
-3.2.1 -- 2022-07-12
--------------------
+
+## 3.2.1 -- 2022-07-12
- Job scripts were moved from a database column to files at S3.
- Added email notification to Jobbergate.
- More debug log messages were added to the API.
- Implemented support for multi-domain authentication.
-3.2.0 -- 2022-06-24
--------------------
+
+## 3.2.0 -- 2022-06-24
- Adjusted variables and data structures for keycloak migration
-3.1.1 -- 2022-06-01
--------------------
+
+## 3.1.1 -- 2022-06-01
- Removed AWS settings. Boto3 supports these env variables natively.
-3.1.0 -- 2022-04-20
--------------------
+
+## 3.1.0 -- 2022-04-20
- Added execution_directory to job submissions
-3.0.4 -- 2022-04-11
--------------------
+
+## 3.0.4 -- 2022-04-11
- Made supplying param_dict optional in job-scripts create (will use app defaults)
- Included some example scripts for working with API directly.
-3.0.3 -- 2022-04-08
--------------------
+
+## 3.0.3 -- 2022-04-08
- Restored jobberappslib in jobbergate CLI
-3.0.2 -- 2022-04-08
--------------------
+
+## 3.0.2 -- 2022-04-08
- Fixed compatibility issues with python 3.6 in CLI
-3.0.1 -- 2022-04-08
--------------------
+
+## 3.0.1 -- 2022-04-08
- Revised production dockerfile to not use gunicorn
- Updated some dependencies
- Fixed publish github action
-3.0.0 -- 2022-04-04
--------------------
+
+## 3.0.0 -- 2022-04-04
- Removed owner_email from create schemas (this comes from token now)
- Changed status codes for update routes to 200
-- Added ``migrate`` and ``upgrade`` commands to dev-tools
+- Added `migrate` and `upgrade` commands to dev-tools
- Added endpoints for agent to pull pending jobs and update active jobs
- Moved dev-tools into their own separate sub-package (not included in builds)
- Added github action for publishing images to ECR
-2.2.9 -- 2022-02-16
--------------------
+
+## 2.2.9 -- 2022-02-16
- Added AUTH0_LOGIN_DOMAIN setting in CLI
- Adjusted auth workflow to prefer AUTH0_LOGIN_DOMAIN over AUTH0_DOMAIN in CLI
-2.2.8 -- 2022-02-15
--------------------
+
+## 2.2.8 -- 2022-02-15
- Fixed job submission data format for creation POST request in CLI
-2.2.7 -- 2022-02-15
--------------------
+
+## 2.2.7 -- 2022-02-15
- Applied fix for requests and added more debug logging in CLI
-2.2.6 -- 2022-02-14
--------------------
+
+## 2.2.6 -- 2022-02-14
- Added search and sort capability to the list endpoints
-2.2.5 -- 2022-02-14
--------------------
+
+## 2.2.5 -- 2022-02-14
- Removed job_script_data_as_string from create parameters for job_script create
-2.2.4 -- 2022-02-14
--------------------
+
+## 2.2.4 -- 2022-02-14
- Fixed urls in the CLI again
-2.2.3 -- 2022-02-14
--------------------
+
+## 2.2.3 -- 2022-02-14
- Improved error messages for users and captured error info in CLI
-2.2.2 -- 2022-02-07
--------------------
+
+## 2.2.2 -- 2022-02-07
- Fixed application creation
-2.2.1 -- 2022-02-03
--------------------
+
+## 2.2.1 -- 2022-02-03
- Bumping version to sync with the CLI
-2.2.0 -- 2022-02-03
--------------------
+
+## 2.2.0 -- 2022-02-03
- Removed trailing slashes from api endpoints
-2.1.2 -- 2022-02-02
--------------------
+
+## 2.1.2 -- 2022-02-02
* Revised permissions to use a view/edit model for each data model
* Added parameter to filter job_submissions by slurm_job_id
-2.1.1 -- 2022-01-13
--------------------
+
+## 2.1.1 -- 2022-01-13
* Refactored the Dockerfile
-2.1.0 -- 2021-12-22
--------------------
+
+## 2.1.0 -- 2021-12-22
* Added graceful handling of delete failures due to FK constraints
* Added Alembic support
* Added application_identifier to response payload
* Added pagination support back in
-2.0.1 -- 2021-12-10
--------------------
+
+## 2.0.1 -- 2021-12-10
* Removed CORS origins parameter from settings and set all origins as the allowed ones
-2.0.0 -- 2021-12-08
--------------------
+
+## 2.0.0 -- 2021-12-08
* Added support for auth via Armasec & Auth0
* Added unit tests
-* Migrated model definitions from legacy ``jobbergate-api``
-* Migrated endpoint definitions from legacy ``jobbergate-api``
+* Migrated model definitions from legacy `jobbergate-api`
+* Migrated endpoint definitions from legacy `jobbergate-api`
* Created FastAPI application and added basic routes
* Added support for database migrations via Alembic
* Added Makefile with targets to install, test, migrate, run, and clean
diff --git a/jobbergate-api/README.md b/jobbergate-api/README.md
new file mode 100644
index 00000000..6f3b9c1c
--- /dev/null
+++ b/jobbergate-api/README.md
@@ -0,0 +1,26 @@
+# Jobbergate API
+
+
+The Jobbergate API provides a RESTful interface over the Jobbergate data and is used
+by both the `jobbergate-agent` and the `jobbergate-cli` to view and manage the
+Jobbergate resources.
+
+Jobbergate API is a Python project implemented with
+[FastAPI](https://fastapi.tiangolo.com/). Its dependencies and environment are
+managed by [Poetry](https://python-poetry.org/).
+
+It integrates with an OIDC server to provide identity and auth for its endpoints.
+
+See also:
+
+* [jobbergate-cli](https://github.com/omnivector-solutions/jobbergate/jobbergate-cli)
+
+
+# License
+
+* `MIT `_
+
+
+# Copyright
+
+* Copyright (c) 2020 OmniVector Solutions
diff --git a/jobbergate-api/README.rst b/jobbergate-api/README.rst
deleted file mode 100644
index 2493ff80..00000000
--- a/jobbergate-api/README.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-================
- Jobbergate API
-================
-
-
-The Jobbergate API provides a RESTful interface over the Jobbergate data and is used
-by both the ``jobbergate-agent`` and the ``jobbergate-cli`` to view and manage the
-Jobbergate resources.
-
-Jobbergate API is a Python project implemented with
-`FastAPI `_. Its dependencies and environment are
-managed by `Poetry `_.
-
-It integrates with an OIDC server to provide identity and auth for its endpoints.
-
-See also:
-
-* `jobbergate-cli `_
-
-License
--------
-* `MIT `_
-
-
-Copyright
----------
-* Copyright (c) 2020 OmniVector Solutions
diff --git a/jobbergate-api/poetry.lock b/jobbergate-api/poetry.lock
index f06b1193..899d5906 100644
--- a/jobbergate-api/poetry.lock
+++ b/jobbergate-api/poetry.lock
@@ -1,18 +1,19 @@
-# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand.
[[package]]
name = "aioboto3"
-version = "11.2.0"
+version = "11.3.0"
description = "Async boto3 wrapper"
+category = "main"
optional = false
python-versions = ">=3.7,<4.0"
files = [
- {file = "aioboto3-11.2.0-py3-none-any.whl", hash = "sha256:df4b83c3943b009a4dcd9f397f9f0491a374511b1ef37545082a771ca1e549fb"},
- {file = "aioboto3-11.2.0.tar.gz", hash = "sha256:c7f6234fd73efcb60ab6fca383fec33bb6352ca1832f252eac810cd6674f1748"},
+ {file = "aioboto3-11.3.0-py3-none-any.whl", hash = "sha256:11e6df5bf317e0dfc1390a29fea9e9f3afd8be99bad2cc9719d2cf44080a16fb"},
+ {file = "aioboto3-11.3.0.tar.gz", hash = "sha256:6f504ac312f62be5199033af97f51b20fac31df7f42c128d6643241c8e5741a9"},
]
[package.dependencies]
-aiobotocore = {version = "2.5.0", extras = ["boto3"]}
+aiobotocore = {version = "2.6.0", extras = ["boto3"]}
[package.extras]
chalice = ["chalice (>=1.24.0)"]
@@ -20,30 +21,32 @@ s3cse = ["cryptography (>=2.3.1)"]
[[package]]
name = "aiobotocore"
-version = "2.5.0"
+version = "2.6.0"
description = "Async client for aws services using botocore and aiohttp"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "aiobotocore-2.5.0-py3-none-any.whl", hash = "sha256:9a2a022d7b78ec9a2af0de589916d2721cddbf96264401b78d7a73c1a1435f3b"},
- {file = "aiobotocore-2.5.0.tar.gz", hash = "sha256:6a5b397cddd4f81026aa91a14c7dd2650727425740a5af8ba75127ff663faf67"},
+ {file = "aiobotocore-2.6.0-py3-none-any.whl", hash = "sha256:0186e6a843364748cdbbf76ee98e9337c44f71a4e694ad1b110d5c516fbce909"},
+ {file = "aiobotocore-2.6.0.tar.gz", hash = "sha256:4805d0140bdfa17bfc2d0ba1243c8cc4273e927201fca5cf2e497c0004a9fab7"},
]
[package.dependencies]
-aiohttp = ">=3.3.1"
-aioitertools = ">=0.5.1"
-boto3 = {version = ">=1.26.76,<1.26.77", optional = true, markers = "extra == \"boto3\""}
-botocore = ">=1.29.76,<1.29.77"
-wrapt = ">=1.10.10"
+aiohttp = ">=3.7.4.post0,<4.0.0"
+aioitertools = ">=0.5.1,<1.0.0"
+boto3 = {version = ">=1.28.17,<1.28.18", optional = true, markers = "extra == \"boto3\""}
+botocore = ">=1.31.17,<1.31.18"
+wrapt = ">=1.10.10,<2.0.0"
[package.extras]
-awscli = ["awscli (>=1.27.76,<1.27.77)"]
-boto3 = ["boto3 (>=1.26.76,<1.26.77)"]
+awscli = ["awscli (>=1.29.17,<1.29.18)"]
+boto3 = ["boto3 (>=1.28.17,<1.28.18)"]
[[package]]
name = "aiohttp"
version = "3.8.5"
description = "Async http client/server framework (asyncio)"
+category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -152,6 +155,7 @@ speedups = ["Brotli", "aiodns", "cchardet"]
name = "aioitertools"
version = "0.11.0"
description = "itertools and builtins for AsyncIO and mixed iterables"
+category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -163,6 +167,7 @@ files = [
name = "aiosignal"
version = "1.3.1"
description = "aiosignal: a list of registered asynchronous callbacks"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -175,13 +180,14 @@ frozenlist = ">=1.1.0"
[[package]]
name = "alembic"
-version = "1.11.2"
+version = "1.12.0"
description = "A database migration tool for SQLAlchemy."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "alembic-1.11.2-py3-none-any.whl", hash = "sha256:7981ab0c4fad4fe1be0cf183aae17689fe394ff874fd2464adb774396faf0796"},
- {file = "alembic-1.11.2.tar.gz", hash = "sha256:678f662130dc540dac12de0ea73de9f89caea9dbea138f60ef6263149bf84657"},
+ {file = "alembic-1.12.0-py3-none-any.whl", hash = "sha256:03226222f1cf943deee6c85d9464261a6c710cd19b4fe867a3ad1f25afda610f"},
+ {file = "alembic-1.12.0.tar.gz", hash = "sha256:8e7645c32e4f200675e69f0745415335eb59a3663f5feb487abfa0b30c45888b"},
]
[package.dependencies]
@@ -194,13 +200,14 @@ tz = ["python-dateutil"]
[[package]]
name = "anyio"
-version = "3.7.1"
+version = "4.0.0"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
+category = "main"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"},
- {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"},
+ {file = "anyio-4.0.0-py3-none-any.whl", hash = "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f"},
+ {file = "anyio-4.0.0.tar.gz", hash = "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"},
]
[package.dependencies]
@@ -208,14 +215,15 @@ idna = ">=2.8"
sniffio = ">=1.1"
[package.extras]
-doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"]
-test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"]
-trio = ["trio (<0.22)"]
+doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)"]
+test = ["anyio[trio]", "coverage[toml] (>=7)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"]
+trio = ["trio (>=0.22)"]
[[package]]
name = "appnope"
version = "0.1.3"
description = "Disable App Nap on macOS >= 10.9"
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -225,30 +233,36 @@ files = [
[[package]]
name = "armasec"
-version = "1.0.0"
+version = "1.2.1"
description = "Injectable FastAPI auth via OIDC"
+category = "main"
optional = false
python-versions = ">=3.8,<4.0"
files = [
- {file = "armasec-1.0.0-py3-none-any.whl", hash = "sha256:d705581584706307ba740f3046b98642b9fa8e36306ab87e5650dc5df2c8c13b"},
- {file = "armasec-1.0.0.tar.gz", hash = "sha256:373cf0fb85d0150380e8455a21e4b70e22ec7006dfaef2a7cda39ca996710f62"},
+ {file = "armasec-1.2.1-py3-none-any.whl", hash = "sha256:7144e6dc1c3f02709f9e09b733c263003782d12f36c3903af79ea8e8d78018cc"},
+ {file = "armasec-1.2.1.tar.gz", hash = "sha256:5b6bb73d6063127ae3f85027d7b1f7d5be1d87053a26e68fab0b4cdfd4f31687"},
]
[package.dependencies]
auto-name-enum = ">=2,<3"
fastapi = ">=0.68"
httpx = ">=0,<1"
-py-buzz = ">=3.1,<4.0"
+jmespath = ">=1.0.1,<2.0.0"
+py-buzz = ">=4.1,<5.0"
pydantic = "<2.0"
pytest = ">=6,<8"
python-jose = {version = ">=3.2,<4.0", extras = ["cryptography"]}
respx = ">=0,<1"
snick = ">=1.3,<2.0"
+[package.extras]
+cli = ["loguru (>=0.5.3,<0.6.0)", "pendulum (>=2.1.2,<3.0.0)", "pyperclip (>=1.8.2,<2.0.0)", "rich (>=13.5.2,<14.0.0)", "typer (>=0.9.0,<0.10.0)"]
+
[[package]]
name = "asgi-lifespan"
version = "1.0.1"
description = "Programmatic startup/shutdown of ASGI apps."
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -263,6 +277,7 @@ sniffio = "*"
name = "async-timeout"
version = "4.0.3"
description = "Timeout context manager for asyncio programs"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -274,6 +289,7 @@ files = [
name = "asyncpg"
version = "0.27.0"
description = "An asyncio PostgreSQL driver"
+category = "main"
optional = false
python-versions = ">=3.7.0"
files = [
@@ -324,6 +340,7 @@ test = ["flake8 (>=5.0.4,<5.1.0)", "uvloop (>=0.15.3)"]
name = "attrs"
version = "23.1.0"
description = "Classes Without Boilerplate"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -342,6 +359,7 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte
name = "auto-name-enum"
version = "2.0.0"
description = "String-based Enum class that automatically assigns values"
+category = "main"
optional = false
python-versions = ">=3.6.2,<4.0.0"
files = [
@@ -353,6 +371,7 @@ files = [
name = "backcall"
version = "0.2.0"
description = "Specifications for callback functions passed in to an API"
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -364,6 +383,7 @@ files = [
name = "bidict"
version = "0.22.1"
description = "The bidirectional mapping library for Python."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -378,33 +398,34 @@ test = ["hypothesis", "pytest", "pytest-benchmark[histogram]", "pytest-cov", "py
[[package]]
name = "black"
-version = "23.7.0"
+version = "23.9.1"
description = "The uncompromising code formatter."
+category = "dev"
optional = false
python-versions = ">=3.8"
files = [
- {file = "black-23.7.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:5c4bc552ab52f6c1c506ccae05681fab58c3f72d59ae6e6639e8885e94fe2587"},
- {file = "black-23.7.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:552513d5cd5694590d7ef6f46e1767a4df9af168d449ff767b13b084c020e63f"},
- {file = "black-23.7.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:86cee259349b4448adb4ef9b204bb4467aae74a386bce85d56ba4f5dc0da27be"},
- {file = "black-23.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:501387a9edcb75d7ae8a4412bb8749900386eaef258f1aefab18adddea1936bc"},
- {file = "black-23.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:fb074d8b213749fa1d077d630db0d5f8cc3b2ae63587ad4116e8a436e9bbe995"},
- {file = "black-23.7.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:b5b0ee6d96b345a8b420100b7d71ebfdd19fab5e8301aff48ec270042cd40ac2"},
- {file = "black-23.7.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:893695a76b140881531062d48476ebe4a48f5d1e9388177e175d76234ca247cd"},
- {file = "black-23.7.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:c333286dc3ddca6fdff74670b911cccedacb4ef0a60b34e491b8a67c833b343a"},
- {file = "black-23.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831d8f54c3a8c8cf55f64d0422ee875eecac26f5f649fb6c1df65316b67c8926"},
- {file = "black-23.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:7f3bf2dec7d541b4619b8ce526bda74a6b0bffc480a163fed32eb8b3c9aed8ad"},
- {file = "black-23.7.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:f9062af71c59c004cd519e2fb8f5d25d39e46d3af011b41ab43b9c74e27e236f"},
- {file = "black-23.7.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:01ede61aac8c154b55f35301fac3e730baf0c9cf8120f65a9cd61a81cfb4a0c3"},
- {file = "black-23.7.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:327a8c2550ddc573b51e2c352adb88143464bb9d92c10416feb86b0f5aee5ff6"},
- {file = "black-23.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1c6022b86f83b632d06f2b02774134def5d4d4f1dac8bef16d90cda18ba28a"},
- {file = "black-23.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:27eb7a0c71604d5de083757fbdb245b1a4fae60e9596514c6ec497eb63f95320"},
- {file = "black-23.7.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:8417dbd2f57b5701492cd46edcecc4f9208dc75529bcf76c514864e48da867d9"},
- {file = "black-23.7.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:47e56d83aad53ca140da0af87678fb38e44fd6bc0af71eebab2d1f59b1acf1d3"},
- {file = "black-23.7.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:25cc308838fe71f7065df53aedd20327969d05671bac95b38fdf37ebe70ac087"},
- {file = "black-23.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:642496b675095d423f9b8448243336f8ec71c9d4d57ec17bf795b67f08132a91"},
- {file = "black-23.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:ad0014efc7acf0bd745792bd0d8857413652979200ab924fbf239062adc12491"},
- {file = "black-23.7.0-py3-none-any.whl", hash = "sha256:9fd59d418c60c0348505f2ddf9609c1e1de8e7493eab96198fc89d9f865e7a96"},
- {file = "black-23.7.0.tar.gz", hash = "sha256:022a582720b0d9480ed82576c920a8c1dde97cc38ff11d8d8859b3bd6ca9eedb"},
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301"},
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100"},
+ {file = "black-23.9.1-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:75a2dc41b183d4872d3a500d2b9c9016e67ed95738a3624f4751a0cb4818fe71"},
+ {file = "black-23.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13a2e4a93bb8ca74a749b6974925c27219bb3df4d42fc45e948a5d9feb5122b7"},
+ {file = "black-23.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:adc3e4442eef57f99b5590b245a328aad19c99552e0bdc7f0b04db6656debd80"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:8431445bf62d2a914b541da7ab3e2b4f3bc052d2ccbf157ebad18ea126efb91f"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:8fc1ddcf83f996247505db6b715294eba56ea9372e107fd54963c7553f2b6dfe"},
+ {file = "black-23.9.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:7d30ec46de88091e4316b17ae58bbbfc12b2de05e069030f6b747dfc649ad186"},
+ {file = "black-23.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031e8c69f3d3b09e1aa471a926a1eeb0b9071f80b17689a655f7885ac9325a6f"},
+ {file = "black-23.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:538efb451cd50f43aba394e9ec7ad55a37598faae3348d723b59ea8e91616300"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:638619a559280de0c2aa4d76f504891c9860bb8fa214267358f0a20f27c12948"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:a732b82747235e0542c03bf352c126052c0fbc458d8a239a94701175b17d4855"},
+ {file = "black-23.9.1-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:cf3a4d00e4cdb6734b64bf23cd4341421e8953615cba6b3670453737a72ec204"},
+ {file = "black-23.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf99f3de8b3273a8317681d8194ea222f10e0133a24a7548c73ce44ea1679377"},
+ {file = "black-23.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:14f04c990259576acd093871e7e9b14918eb28f1866f91968ff5524293f9c573"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:c619f063c2d68f19b2d7270f4cf3192cb81c9ec5bc5ba02df91471d0b88c4c5c"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:6a3b50e4b93f43b34a9d3ef00d9b6728b4a722c997c99ab09102fd5efdb88325"},
+ {file = "black-23.9.1-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c46767e8df1b7beefb0899c4a95fb43058fa8500b6db144f4ff3ca38eb2f6393"},
+ {file = "black-23.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50254ebfa56aa46a9fdd5d651f9637485068a1adf42270148cd101cdf56e0ad9"},
+ {file = "black-23.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:403397c033adbc45c2bd41747da1f7fc7eaa44efbee256b53842470d4ac5a70f"},
+ {file = "black-23.9.1-py3-none-any.whl", hash = "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9"},
+ {file = "black-23.9.1.tar.gz", hash = "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d"},
]
[package.dependencies]
@@ -422,17 +443,18 @@ uvloop = ["uvloop (>=0.15.2)"]
[[package]]
name = "boto3"
-version = "1.26.76"
+version = "1.28.17"
description = "The AWS SDK for Python"
+category = "main"
optional = false
python-versions = ">= 3.7"
files = [
- {file = "boto3-1.26.76-py3-none-any.whl", hash = "sha256:b4c2969b7677762914394b8273cc1905dfe5b71f250741c1a575487ae357e729"},
- {file = "boto3-1.26.76.tar.gz", hash = "sha256:30c7d967ed1c6b5a05643e42cae9d4d36c3f1cb6782637ddc7007a104cfd9027"},
+ {file = "boto3-1.28.17-py3-none-any.whl", hash = "sha256:bca0526f819e0f19c0f1e6eba3e2d1d6b6a92a45129f98c0d716e5aab6d9444b"},
+ {file = "boto3-1.28.17.tar.gz", hash = "sha256:90f7cfb5e1821af95b1fc084bc50e6c47fa3edc99f32de1a2591faa0c546bea7"},
]
[package.dependencies]
-botocore = ">=1.29.76,<1.30.0"
+botocore = ">=1.31.17,<1.32.0"
jmespath = ">=0.7.1,<2.0.0"
s3transfer = ">=0.6.0,<0.7.0"
@@ -441,13 +463,14 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"]
[[package]]
name = "botocore"
-version = "1.29.76"
+version = "1.31.17"
description = "Low-level, data-driven core of boto 3."
+category = "main"
optional = false
python-versions = ">= 3.7"
files = [
- {file = "botocore-1.29.76-py3-none-any.whl", hash = "sha256:70735b00cd529f152992231ca6757e458e5ec25db43767b3526e9a35b2f143b7"},
- {file = "botocore-1.29.76.tar.gz", hash = "sha256:c2f67b6b3f8acf2968eafca06526f07b9fb0d27bac4c68a635d51abb675134a7"},
+ {file = "botocore-1.31.17-py3-none-any.whl", hash = "sha256:6ac34a1d34aa3750e78b77b8596617e2bab938964694d651939dba2cbde2c12b"},
+ {file = "botocore-1.31.17.tar.gz", hash = "sha256:396459065dba4339eb4da4ec8b4e6599728eb89b7caaceea199e26f7d824a41c"},
]
[package.dependencies]
@@ -456,17 +479,18 @@ python-dateutil = ">=2.1,<3.0.0"
urllib3 = ">=1.25.4,<1.27"
[package.extras]
-crt = ["awscrt (==0.16.9)"]
+crt = ["awscrt (==0.16.26)"]
[[package]]
name = "botocore-stubs"
-version = "1.31.23"
+version = "1.31.61"
description = "Type annotations and code completion for botocore"
+category = "dev"
optional = false
python-versions = ">=3.7,<4.0"
files = [
- {file = "botocore_stubs-1.31.23-py3-none-any.whl", hash = "sha256:7120fbe31fb619b57d991bc11c722ca6f9a8d434214942e9cd1559f883d14cc3"},
- {file = "botocore_stubs-1.31.23.tar.gz", hash = "sha256:bf1e7130f47ab20087b59b4bebb4d21498bfa5fbd097aa0e8a580ddb18406746"},
+ {file = "botocore_stubs-1.31.61-py3-none-any.whl", hash = "sha256:d0b6fc0fd87ef05f962eba043c5857c9dcda64b88d2604dc579754e275d11e2f"},
+ {file = "botocore_stubs-1.31.61.tar.gz", hash = "sha256:616126099ecbc680962880f9e40c7ee51550c072337ebc39088d18b44c24d698"},
]
[package.dependencies]
@@ -476,6 +500,7 @@ types-awscrt = "*"
name = "certifi"
version = "2023.7.22"
description = "Python package for providing Mozilla's CA Bundle."
+category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -485,75 +510,64 @@ files = [
[[package]]
name = "cffi"
-version = "1.15.1"
+version = "1.16.0"
description = "Foreign Function Interface for Python calling C code."
+category = "main"
optional = false
-python-versions = "*"
+python-versions = ">=3.8"
files = [
- {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"},
- {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"},
- {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"},
- {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"},
- {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"},
- {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"},
- {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"},
- {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"},
- {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"},
- {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"},
- {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"},
- {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"},
- {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"},
- {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"},
- {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"},
- {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"},
- {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"},
- {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"},
- {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"},
- {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"},
- {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"},
- {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"},
- {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"},
- {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"},
- {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"},
- {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"},
- {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"},
- {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"},
- {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"},
- {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"},
- {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"},
- {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"},
- {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"},
- {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"},
- {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"},
- {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"},
- {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"},
- {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"},
- {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"},
- {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"},
- {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"},
- {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"},
- {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"},
- {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"},
- {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"},
- {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"},
- {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"},
- {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"},
- {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"},
- {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"},
- {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"},
- {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"},
- {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"},
- {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"},
- {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"},
- {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"},
- {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"},
- {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"},
- {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"},
- {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"},
- {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"},
- {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"},
- {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"},
- {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"},
+ {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"},
+ {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"},
+ {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"},
+ {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"},
+ {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"},
+ {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"},
+ {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"},
+ {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"},
+ {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"},
+ {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"},
+ {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"},
+ {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"},
+ {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"},
+ {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"},
+ {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"},
+ {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"},
+ {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"},
+ {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"},
+ {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"},
+ {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"},
+ {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"},
+ {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"},
+ {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"},
+ {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"},
+ {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"},
+ {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"},
+ {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"},
+ {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"},
+ {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"},
+ {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"},
+ {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"},
+ {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"},
+ {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"},
+ {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"},
+ {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"},
+ {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"},
+ {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"},
+ {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"},
+ {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"},
+ {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"},
+ {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"},
+ {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"},
+ {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"},
+ {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"},
+ {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"},
+ {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"},
+ {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"},
+ {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"},
+ {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"},
+ {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"},
+ {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"},
+ {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"},
]
[package.dependencies]
@@ -561,103 +575,121 @@ pycparser = "*"
[[package]]
name = "cfgv"
-version = "3.3.1"
+version = "3.4.0"
description = "Validate configuration and produce human readable error messages."
+category = "dev"
optional = false
-python-versions = ">=3.6.1"
+python-versions = ">=3.8"
files = [
- {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"},
- {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"},
+ {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.2.0"
+version = "3.3.0"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+category = "main"
optional = false
python-versions = ">=3.7.0"
files = [
- {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"},
- {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"},
- {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"},
- {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"},
- {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"},
- {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"},
- {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"},
- {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"},
- {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"},
- {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"},
- {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"},
- {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"},
- {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"},
- {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"},
- {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"},
- {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"},
- {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"},
- {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"},
- {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"},
- {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"},
- {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"},
- {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"},
- {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"},
- {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"},
- {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"},
- {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"},
- {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"},
- {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"},
- {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"},
- {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"},
- {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"},
- {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"},
- {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"},
- {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"},
- {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"},
- {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"},
- {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"},
- {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"},
- {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"},
- {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"},
- {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"},
- {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"},
- {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"},
- {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"},
- {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"},
- {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"},
- {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"},
- {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"},
- {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"},
- {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"},
- {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"},
- {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"},
- {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"},
- {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"},
- {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"},
- {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"},
- {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"},
- {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"},
- {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"},
- {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"},
- {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"},
- {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"},
- {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"},
- {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"},
- {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"},
- {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"},
- {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"},
- {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"},
- {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"},
- {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"},
- {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"},
- {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"},
- {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"},
- {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"},
- {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"},
+ {file = "charset-normalizer-3.3.0.tar.gz", hash = "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-win32.whl", hash = "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-win32.whl", hash = "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-win32.whl", hash = "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-win32.whl", hash = "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-win32.whl", hash = "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-win32.whl", hash = "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884"},
+ {file = "charset_normalizer-3.3.0-py3-none-any.whl", hash = "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2"},
]
[[package]]
name = "cli-helpers"
version = "2.3.0"
description = "Helpers for building command-line apps"
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -675,13 +707,14 @@ styles = ["Pygments (>=1.6)"]
[[package]]
name = "click"
-version = "8.1.6"
+version = "8.1.7"
description = "Composable command line interface toolkit"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "click-8.1.6-py3-none-any.whl", hash = "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5"},
- {file = "click-8.1.6.tar.gz", hash = "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd"},
+ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
+ {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
]
[package.dependencies]
@@ -691,6 +724,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""}
name = "colorama"
version = "0.4.6"
description = "Cross-platform colored terminal text."
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
files = [
@@ -702,6 +736,7 @@ files = [
name = "configobj"
version = "5.0.8"
description = "Config file reading, writing and validation."
+category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
@@ -714,71 +749,64 @@ six = "*"
[[package]]
name = "coverage"
-version = "7.2.7"
+version = "7.3.2"
description = "Code coverage measurement for Python"
+category = "dev"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "coverage-7.2.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d39b5b4f2a66ccae8b7263ac3c8170994b65266797fb96cbbfd3fb5b23921db8"},
- {file = "coverage-7.2.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d040ef7c9859bb11dfeb056ff5b3872436e3b5e401817d87a31e1750b9ae2fb"},
- {file = "coverage-7.2.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba90a9563ba44a72fda2e85302c3abc71c5589cea608ca16c22b9804262aaeb6"},
- {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d9405291c6928619403db1d10bd07888888ec1abcbd9748fdaa971d7d661b2"},
- {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31563e97dae5598556600466ad9beea39fb04e0229e61c12eaa206e0aa202063"},
- {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ebba1cd308ef115925421d3e6a586e655ca5a77b5bf41e02eb0e4562a111f2d1"},
- {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cb017fd1b2603ef59e374ba2063f593abe0fc45f2ad9abdde5b4d83bd922a353"},
- {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62a5c7dad11015c66fbb9d881bc4caa5b12f16292f857842d9d1871595f4495"},
- {file = "coverage-7.2.7-cp310-cp310-win32.whl", hash = "sha256:ee57190f24fba796e36bb6d3aa8a8783c643d8fa9760c89f7a98ab5455fbf818"},
- {file = "coverage-7.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:f75f7168ab25dd93110c8a8117a22450c19976afbc44234cbf71481094c1b850"},
- {file = "coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f"},
- {file = "coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe"},
- {file = "coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3"},
- {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52edc1a60c0d34afa421c9c37078817b2e67a392cab17d97283b64c5833f427f"},
- {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb"},
- {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:afb17f84d56068a7c29f5fa37bfd38d5aba69e3304af08ee94da8ed5b0865833"},
- {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:48c19d2159d433ccc99e729ceae7d5293fbffa0bdb94952d3579983d1c8c9d97"},
- {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0e1f928eaf5469c11e886fe0885ad2bf1ec606434e79842a879277895a50942a"},
- {file = "coverage-7.2.7-cp311-cp311-win32.whl", hash = "sha256:33d6d3ea29d5b3a1a632b3c4e4f4ecae24ef170b0b9ee493883f2df10039959a"},
- {file = "coverage-7.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:5b7540161790b2f28143191f5f8ec02fb132660ff175b7747b95dcb77ac26562"},
- {file = "coverage-7.2.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4"},
- {file = "coverage-7.2.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a342242fe22407f3c17f4b499276a02b01e80f861f1682ad1d95b04018e0c0d4"},
- {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:171717c7cb6b453aebac9a2ef603699da237f341b38eebfee9be75d27dc38e01"},
- {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49969a9f7ffa086d973d91cec8d2e31080436ef0fb4a359cae927e742abfaaa6"},
- {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b46517c02ccd08092f4fa99f24c3b83d8f92f739b4657b0f146246a0ca6a831d"},
- {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a3d33a6b3eae87ceaefa91ffdc130b5e8536182cd6dfdbfc1aa56b46ff8c86de"},
- {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:976b9c42fb2a43ebf304fa7d4a310e5f16cc99992f33eced91ef6f908bd8f33d"},
- {file = "coverage-7.2.7-cp312-cp312-win32.whl", hash = "sha256:8de8bb0e5ad103888d65abef8bca41ab93721647590a3f740100cd65c3b00511"},
- {file = "coverage-7.2.7-cp312-cp312-win_amd64.whl", hash = "sha256:9e31cb64d7de6b6f09702bb27c02d1904b3aebfca610c12772452c4e6c21a0d3"},
- {file = "coverage-7.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58c2ccc2f00ecb51253cbe5d8d7122a34590fac9646a960d1430d5b15321d95f"},
- {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d22656368f0e6189e24722214ed8d66b8022db19d182927b9a248a2a8a2f67eb"},
- {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a895fcc7b15c3fc72beb43cdcbdf0ddb7d2ebc959edac9cef390b0d14f39f8a9"},
- {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84606b74eb7de6ff581a7915e2dab7a28a0517fbe1c9239eb227e1354064dcd"},
- {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a5f9e1dbd7fbe30196578ca36f3fba75376fb99888c395c5880b355e2875f8a"},
- {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:419bfd2caae268623dd469eff96d510a920c90928b60f2073d79f8fe2bbc5959"},
- {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2aee274c46590717f38ae5e4650988d1af340fe06167546cc32fe2f58ed05b02"},
- {file = "coverage-7.2.7-cp37-cp37m-win32.whl", hash = "sha256:61b9a528fb348373c433e8966535074b802c7a5d7f23c4f421e6c6e2f1697a6f"},
- {file = "coverage-7.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:b1c546aca0ca4d028901d825015dc8e4d56aac4b541877690eb76490f1dc8ed0"},
- {file = "coverage-7.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:54b896376ab563bd38453cecb813c295cf347cf5906e8b41d340b0321a5433e5"},
- {file = "coverage-7.2.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d376df58cc111dc8e21e3b6e24606b5bb5dee6024f46a5abca99124b2229ef5"},
- {file = "coverage-7.2.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e330fc79bd7207e46c7d7fd2bb4af2963f5f635703925543a70b99574b0fea9"},
- {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e9d683426464e4a252bf70c3498756055016f99ddaec3774bf368e76bbe02b6"},
- {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d13c64ee2d33eccf7437961b6ea7ad8673e2be040b4f7fd4fd4d4d28d9ccb1e"},
- {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7aa5f8a41217360e600da646004f878250a0d6738bcdc11a0a39928d7dc2050"},
- {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fa03bce9bfbeeef9f3b160a8bed39a221d82308b4152b27d82d8daa7041fee5"},
- {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:245167dd26180ab4c91d5e1496a30be4cd721a5cf2abf52974f965f10f11419f"},
- {file = "coverage-7.2.7-cp38-cp38-win32.whl", hash = "sha256:d2c2db7fd82e9b72937969bceac4d6ca89660db0a0967614ce2481e81a0b771e"},
- {file = "coverage-7.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:2e07b54284e381531c87f785f613b833569c14ecacdcb85d56b25c4622c16c3c"},
- {file = "coverage-7.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:537891ae8ce59ef63d0123f7ac9e2ae0fc8b72c7ccbe5296fec45fd68967b6c9"},
- {file = "coverage-7.2.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06fb182e69f33f6cd1d39a6c597294cff3143554b64b9825d1dc69d18cc2fff2"},
- {file = "coverage-7.2.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:201e7389591af40950a6480bd9edfa8ed04346ff80002cec1a66cac4549c1ad7"},
- {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6951407391b639504e3b3be51b7ba5f3528adbf1a8ac3302b687ecababf929e"},
- {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1"},
- {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b29019c76039dc3c0fd815c41392a044ce555d9bcdd38b0fb60fb4cd8e475ba9"},
- {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:81c13a1fc7468c40f13420732805a4c38a105d89848b7c10af65a90beff25250"},
- {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:975d70ab7e3c80a3fe86001d8751f6778905ec723f5b110aed1e450da9d4b7f2"},
- {file = "coverage-7.2.7-cp39-cp39-win32.whl", hash = "sha256:7ee7d9d4822c8acc74a5e26c50604dff824710bc8de424904c0982e25c39c6cb"},
- {file = "coverage-7.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb393e5ebc85245347950143969b241d08b52b88a3dc39479822e073a1a8eb27"},
- {file = "coverage-7.2.7-pp37.pp38.pp39-none-any.whl", hash = "sha256:b7b4c971f05e6ae490fef852c218b0e79d4e52f79ef0c8475566584a8fb3e01d"},
- {file = "coverage-7.2.7.tar.gz", hash = "sha256:924d94291ca674905fe9481f12294eb11f2d3d3fd1adb20314ba89e94f44ed59"},
+ {file = "coverage-7.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf"},
+ {file = "coverage-7.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda"},
+ {file = "coverage-7.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a"},
+ {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c"},
+ {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f"},
+ {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6"},
+ {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148"},
+ {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9"},
+ {file = "coverage-7.3.2-cp310-cp310-win32.whl", hash = "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f"},
+ {file = "coverage-7.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611"},
+ {file = "coverage-7.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c"},
+ {file = "coverage-7.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074"},
+ {file = "coverage-7.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a"},
+ {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3"},
+ {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a"},
+ {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1"},
+ {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c"},
+ {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312"},
+ {file = "coverage-7.3.2-cp311-cp311-win32.whl", hash = "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640"},
+ {file = "coverage-7.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2"},
+ {file = "coverage-7.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836"},
+ {file = "coverage-7.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63"},
+ {file = "coverage-7.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216"},
+ {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4"},
+ {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf"},
+ {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf"},
+ {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84"},
+ {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a"},
+ {file = "coverage-7.3.2-cp312-cp312-win32.whl", hash = "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb"},
+ {file = "coverage-7.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed"},
+ {file = "coverage-7.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738"},
+ {file = "coverage-7.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2"},
+ {file = "coverage-7.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2"},
+ {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c"},
+ {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9"},
+ {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82"},
+ {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901"},
+ {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76"},
+ {file = "coverage-7.3.2-cp38-cp38-win32.whl", hash = "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92"},
+ {file = "coverage-7.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a"},
+ {file = "coverage-7.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce"},
+ {file = "coverage-7.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9"},
+ {file = "coverage-7.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f"},
+ {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25"},
+ {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9"},
+ {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6"},
+ {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc"},
+ {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083"},
+ {file = "coverage-7.3.2-cp39-cp39-win32.whl", hash = "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce"},
+ {file = "coverage-7.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f"},
+ {file = "coverage-7.3.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637"},
+ {file = "coverage-7.3.2.tar.gz", hash = "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef"},
]
[package.extras]
@@ -788,6 +816,7 @@ toml = ["tomli"]
name = "cryptography"
version = "41.0.4"
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -833,6 +862,7 @@ test-randomorder = ["pytest-randomly"]
name = "decorator"
version = "5.1.1"
description = "Decorators for Humans"
+category = "dev"
optional = false
python-versions = ">=3.5"
files = [
@@ -844,6 +874,7 @@ files = [
name = "distlib"
version = "0.3.7"
description = "Distribution utilities"
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -855,6 +886,7 @@ files = [
name = "dnspython"
version = "2.4.2"
description = "DNS toolkit"
+category = "main"
optional = false
python-versions = ">=3.8,<4.0"
files = [
@@ -872,28 +904,31 @@ wmi = ["wmi (>=1.5.1,<2.0.0)"]
[[package]]
name = "docker"
-version = "5.0.3"
+version = "6.1.3"
description = "A Python library for the Docker Engine API."
+category = "dev"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
files = [
- {file = "docker-5.0.3-py2.py3-none-any.whl", hash = "sha256:7a79bb439e3df59d0a72621775d600bc8bc8b422d285824cb37103eab91d1ce0"},
- {file = "docker-5.0.3.tar.gz", hash = "sha256:d916a26b62970e7c2f554110ed6af04c7ccff8e9f81ad17d0d40c75637e227fb"},
+ {file = "docker-6.1.3-py3-none-any.whl", hash = "sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9"},
+ {file = "docker-6.1.3.tar.gz", hash = "sha256:aa6d17830045ba5ef0168d5eaa34d37beeb113948c413affe1d5991fc11f9a20"},
]
[package.dependencies]
-pywin32 = {version = "227", markers = "sys_platform == \"win32\""}
-requests = ">=2.14.2,<2.18.0 || >2.18.0"
+packaging = ">=14.0"
+pywin32 = {version = ">=304", markers = "sys_platform == \"win32\""}
+requests = ">=2.26.0"
+urllib3 = ">=1.26.0"
websocket-client = ">=0.32.0"
[package.extras]
-ssh = ["paramiko (>=2.4.2)"]
-tls = ["cryptography (>=3.4.7)", "idna (>=2.0.0)", "pyOpenSSL (>=17.5.0)"]
+ssh = ["paramiko (>=2.4.3)"]
[[package]]
name = "ecdsa"
version = "0.18.0"
description = "ECDSA cryptographic signature library (pure python)"
+category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
@@ -912,6 +947,7 @@ gmpy2 = ["gmpy2"]
name = "email-validator"
version = "2.0.0.post2"
description = "A robust email address syntax and deliverability validation library."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -927,6 +963,7 @@ idna = ">=2.0.0"
name = "fastapi"
version = "0.99.1"
description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -944,13 +981,14 @@ all = ["email-validator (>=1.1.1)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)"
[[package]]
name = "fastapi-pagination"
-version = "0.12.7"
+version = "0.12.10"
description = "FastAPI pagination"
+category = "main"
optional = false
python-versions = ">=3.8,<4.0"
files = [
- {file = "fastapi_pagination-0.12.7-py3-none-any.whl", hash = "sha256:dabf3810343b63841def98862707098f5dac6867c283b118a1b2be4d8bc820df"},
- {file = "fastapi_pagination-0.12.7.tar.gz", hash = "sha256:627e561101c4845a36e1ec1da9d38c967b17dffc760dacacdc5e0e5118cb2334"},
+ {file = "fastapi_pagination-0.12.10-py3-none-any.whl", hash = "sha256:7a2fc9c0e019722d636f540f1b02c385be76216b89b44c1b8f0571d88aea398a"},
+ {file = "fastapi_pagination-0.12.10.tar.gz", hash = "sha256:44eff56b749b85235c02fc006b736d50932f0be55628a5240cb29b04adf74a8c"},
]
[package.dependencies]
@@ -958,7 +996,7 @@ fastapi = ">=0.93.0"
pydantic = ">=1.9.1"
[package.extras]
-all = ["SQLAlchemy (>=1.3.20)", "asyncpg (>=0.24.0)", "beanie (>=1.11.9,<2.0.0)", "bunnet (>=1.1.0,<2.0.0)", "databases (>=0.6.0)", "django (<5.0.0)", "mongoengine (>=0.23.1,<0.28.0)", "motor (>=2.5.1,<4.0.0)", "orm (>=0.3.1)", "ormar (>=0.11.2)", "piccolo (>=0.89,<0.120)", "pony (>=0.7.16,<0.8.0)", "scylla-driver (>=3.25.6,<4.0.0)", "sqlakeyset (>=2.0.1680321678,<3.0.0)", "sqlmodel (>=0.0.8,<0.0.9)", "tortoise-orm (>=0.16.18,<0.20.0)"]
+all = ["SQLAlchemy (>=1.3.20)", "asyncpg (>=0.24.0)", "beanie (>=1.11.9,<2.0.0)", "bunnet (>=1.1.0,<2.0.0)", "databases (>=0.6.0)", "django (<5.0.0)", "mongoengine (>=0.23.1,<0.28.0)", "motor (>=2.5.1,<4.0.0)", "orm (>=0.3.1)", "ormar (>=0.11.2)", "piccolo (>=0.89,<0.122)", "pony (>=0.7.16,<0.8.0)", "scylla-driver (>=3.25.6,<4.0.0)", "sqlakeyset (>=2.0.1680321678,<3.0.0)", "sqlmodel (>=0.0.8,<0.0.9)", "tortoise-orm (>=0.16.18,<0.21.0)"]
asyncpg = ["SQLAlchemy (>=1.3.20)", "asyncpg (>=0.24.0)"]
beanie = ["beanie (>=1.11.9,<2.0.0)"]
bunnet = ["bunnet (>=1.1.0,<2.0.0)"]
@@ -968,31 +1006,34 @@ mongoengine = ["mongoengine (>=0.23.1,<0.28.0)"]
motor = ["motor (>=2.5.1,<4.0.0)"]
orm = ["databases (>=0.6.0)", "orm (>=0.3.1)"]
ormar = ["ormar (>=0.11.2)"]
-piccolo = ["piccolo (>=0.89,<0.120)"]
+piccolo = ["piccolo (>=0.89,<0.122)"]
scylla-driver = ["scylla-driver (>=3.25.6,<4.0.0)"]
sqlalchemy = ["SQLAlchemy (>=1.3.20)", "sqlakeyset (>=2.0.1680321678,<3.0.0)"]
sqlmodel = ["sqlakeyset (>=2.0.1680321678,<3.0.0)", "sqlmodel (>=0.0.8,<0.0.9)"]
-tortoise = ["tortoise-orm (>=0.16.18,<0.20.0)"]
+tortoise = ["tortoise-orm (>=0.16.18,<0.21.0)"]
[[package]]
name = "filelock"
-version = "3.12.2"
+version = "3.12.4"
description = "A platform independent file lock."
+category = "dev"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "filelock-3.12.2-py3-none-any.whl", hash = "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec"},
- {file = "filelock-3.12.2.tar.gz", hash = "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81"},
+ {file = "filelock-3.12.4-py3-none-any.whl", hash = "sha256:08c21d87ded6e2b9da6728c3dff51baf1dcecf973b768ef35bcbc3447edb9ad4"},
+ {file = "filelock-3.12.4.tar.gz", hash = "sha256:2e6f249f1f3654291606e046b09f1fd5eac39b360664c27f5aad072012f8bcbd"},
]
[package.extras]
-docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"]
-testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"]
+docs = ["furo (>=2023.7.26)", "sphinx (>=7.1.2)", "sphinx-autodoc-typehints (>=1.24)"]
+testing = ["covdefaults (>=2.3)", "coverage (>=7.3)", "diff-cover (>=7.7)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "pytest-timeout (>=2.1)"]
+typing = ["typing-extensions (>=4.7.1)"]
[[package]]
name = "flake8"
version = "5.0.4"
description = "the modular source code checker: pep8 pyflakes and co"
+category = "dev"
optional = false
python-versions = ">=3.6.1"
files = [
@@ -1009,6 +1050,7 @@ pyflakes = ">=2.5.0,<2.6.0"
name = "flake8-docstrings"
version = "1.7.0"
description = "Extension for flake8 which uses pydocstyle to check docstrings"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -1024,6 +1066,7 @@ pydocstyle = ">=2.1"
name = "frozenlist"
version = "1.4.0"
description = "A list-like structure which implements collections.abc.MutableSequence"
+category = "main"
optional = false
python-versions = ">=3.8"
files = [
@@ -1094,6 +1137,7 @@ files = [
name = "greenlet"
version = "2.0.2"
description = "Lightweight in-process concurrent programming"
+category = "main"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"
files = [
@@ -1171,6 +1215,7 @@ test = ["objgraph", "psutil"]
name = "h11"
version = "0.14.0"
description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1182,6 +1227,7 @@ files = [
name = "httpcore"
version = "0.17.3"
description = "A minimal low-level HTTP client."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1193,16 +1239,17 @@ files = [
anyio = ">=3.0,<5.0"
certifi = "*"
h11 = ">=0.13,<0.15"
-sniffio = "==1.*"
+sniffio = ">=1.0.0,<2.0.0"
[package.extras]
http2 = ["h2 (>=3,<5)"]
-socks = ["socksio (==1.*)"]
+socks = ["socksio (>=1.0.0,<2.0.0)"]
[[package]]
name = "httpx"
version = "0.24.1"
description = "The next generation HTTP client."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1218,19 +1265,20 @@ sniffio = "*"
[package.extras]
brotli = ["brotli", "brotlicffi"]
-cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
+cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<14)"]
http2 = ["h2 (>=3,<5)"]
-socks = ["socksio (==1.*)"]
+socks = ["socksio (>=1.0.0,<2.0.0)"]
[[package]]
name = "identify"
-version = "2.5.26"
+version = "2.5.30"
description = "File identification library for Python"
+category = "dev"
optional = false
python-versions = ">=3.8"
files = [
- {file = "identify-2.5.26-py2.py3-none-any.whl", hash = "sha256:c22a8ead0d4ca11f1edd6c9418c3220669b3b7533ada0a0ffa6cc0ef85cf9b54"},
- {file = "identify-2.5.26.tar.gz", hash = "sha256:7243800bce2f58404ed41b7c002e53d4d22bcf3ae1b7900c2d7aefd95394bf7f"},
+ {file = "identify-2.5.30-py2.py3-none-any.whl", hash = "sha256:afe67f26ae29bab007ec21b03d4114f41316ab9dd15aa8736a167481e108da54"},
+ {file = "identify-2.5.30.tar.gz", hash = "sha256:f302a4256a15c849b91cfcdcec052a8ce914634b2f77ae87dad29cd749f2d88d"},
]
[package.extras]
@@ -1240,6 +1288,7 @@ license = ["ukkonen"]
name = "idna"
version = "3.4"
description = "Internationalized Domain Names in Applications (IDNA)"
+category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -1251,6 +1300,7 @@ files = [
name = "inflection"
version = "0.5.1"
description = "A port of Ruby on Rails inflector to Python"
+category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -1262,6 +1312,7 @@ files = [
name = "iniconfig"
version = "2.0.0"
description = "brain-dead simple config-ini parsing"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1273,6 +1324,7 @@ files = [
name = "ipython"
version = "7.34.0"
description = "IPython: Productive Interactive Computing"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -1309,6 +1361,7 @@ test = ["ipykernel", "nbformat", "nose (>=0.10.1)", "numpy (>=1.17)", "pygments"
name = "isort"
version = "5.12.0"
description = "A Python utility / library to sort Python imports."
+category = "dev"
optional = false
python-versions = ">=3.8.0"
files = [
@@ -1324,13 +1377,14 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"]
[[package]]
name = "jedi"
-version = "0.19.0"
+version = "0.19.1"
description = "An autocompletion tool for Python that can be used for text editors."
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
- {file = "jedi-0.19.0-py2.py3-none-any.whl", hash = "sha256:cb8ce23fbccff0025e9386b5cf85e892f94c9b822378f8da49970471335ac64e"},
- {file = "jedi-0.19.0.tar.gz", hash = "sha256:bcf9894f1753969cbac8022a8c2eaee06bfa3724e4192470aaffe7eb6272b0c4"},
+ {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"},
+ {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"},
]
[package.dependencies]
@@ -1339,12 +1393,13 @@ parso = ">=0.8.3,<0.9.0"
[package.extras]
docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"]
qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"]
-testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"]
+testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"]
[[package]]
name = "jinja2"
version = "3.1.2"
description = "A very fast and expressive template engine."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1362,6 +1417,7 @@ i18n = ["Babel (>=2.7)"]
name = "jmespath"
version = "1.0.1"
description = "JSON Matching Expressions"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1373,6 +1429,7 @@ files = [
name = "loguru"
version = "0.6.0"
description = "Python logging made (stupidly) simple"
+category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -1391,6 +1448,7 @@ dev = ["Sphinx (>=4.1.1)", "black (>=19.10b0)", "colorama (>=0.3.4)", "docutils
name = "mako"
version = "1.2.4"
description = "A super-fast templating language that borrows the best ideas from the existing templating languages."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1410,6 +1468,7 @@ testing = ["pytest"]
name = "markupsafe"
version = "2.1.3"
description = "Safely add untrusted strings to HTML/XML markup."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1479,6 +1538,7 @@ files = [
name = "matplotlib-inline"
version = "0.1.6"
description = "Inline Matplotlib backend for Jupyter"
+category = "dev"
optional = false
python-versions = ">=3.5"
files = [
@@ -1493,6 +1553,7 @@ traitlets = "*"
name = "mccabe"
version = "0.7.0"
description = "McCabe checker, plugin for flake8"
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -1504,6 +1565,7 @@ files = [
name = "multidict"
version = "6.0.4"
description = "multidict implementation"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1587,6 +1649,7 @@ files = [
name = "mypy"
version = "0.982"
description = "Optional static typing for Python"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1629,6 +1692,7 @@ reports = ["lxml"]
name = "mypy-extensions"
version = "1.0.0"
description = "Type system extensions for programs checked with the mypy type checker."
+category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -1638,19 +1702,21 @@ files = [
[[package]]
name = "nest-asyncio"
-version = "1.5.7"
+version = "1.5.8"
description = "Patch asyncio to allow nested event loops"
+category = "main"
optional = false
python-versions = ">=3.5"
files = [
- {file = "nest_asyncio-1.5.7-py3-none-any.whl", hash = "sha256:5301c82941b550b3123a1ea772ba9a1c80bad3a182be8c1a5ae6ad3be57a9657"},
- {file = "nest_asyncio-1.5.7.tar.gz", hash = "sha256:6a80f7b98f24d9083ed24608977c09dd608d83f91cccc24c9d2cba6d10e01c10"},
+ {file = "nest_asyncio-1.5.8-py3-none-any.whl", hash = "sha256:accda7a339a70599cb08f9dd09a67e0c2ef8d8d6f4c07f96ab203f2ae254e48d"},
+ {file = "nest_asyncio-1.5.8.tar.gz", hash = "sha256:25aa2ca0d2a5b5531956b9e273b45cf664cae2b145101d73b86b199978d48fdb"},
]
[[package]]
name = "nodeenv"
version = "1.8.0"
description = "Node.js virtual environment builder"
+category = "dev"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
files = [
@@ -1663,19 +1729,21 @@ setuptools = "*"
[[package]]
name = "packaging"
-version = "23.1"
+version = "23.2"
description = "Core utilities for Python packages"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"},
- {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"},
+ {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
+ {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
]
[[package]]
name = "parso"
version = "0.8.3"
description = "A Python Parser"
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -1691,6 +1759,7 @@ testing = ["docopt", "pytest (<6.0.0)"]
name = "pathspec"
version = "0.11.2"
description = "Utility library for gitignore style pattern matching of file paths."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -1702,6 +1771,7 @@ files = [
name = "pendulum"
version = "2.1.2"
description = "Python datetimes made easy"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
@@ -1736,6 +1806,7 @@ pytzdata = ">=2020.1"
name = "pexpect"
version = "4.8.0"
description = "Pexpect allows easy control of interactive console applications."
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -1750,6 +1821,7 @@ ptyprocess = ">=0.5"
name = "pgcli"
version = "3.5.0"
description = "CLI for Postgres Database. With auto-completion and syntax highlighting."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -1777,6 +1849,7 @@ sshtunnel = ["sshtunnel (>=0.4.0)"]
name = "pgspecial"
version = "2.1.0"
description = "Meta-commands handler for Postgres Database."
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -1793,6 +1866,7 @@ sqlparse = ">=0.1.19"
name = "pickleshare"
version = "0.7.5"
description = "Tiny 'shelve'-like database with concurrency support"
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -1802,13 +1876,14 @@ files = [
[[package]]
name = "platformdirs"
-version = "3.10.0"
+version = "3.11.0"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"},
- {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"},
+ {file = "platformdirs-3.11.0-py3-none-any.whl", hash = "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"},
+ {file = "platformdirs-3.11.0.tar.gz", hash = "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3"},
]
[package.extras]
@@ -1817,13 +1892,14 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co
[[package]]
name = "pluggy"
-version = "1.2.0"
+version = "1.3.0"
description = "plugin and hook calling mechanisms for python"
+category = "main"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"},
- {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"},
+ {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"},
+ {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"},
]
[package.extras]
@@ -1834,6 +1910,7 @@ testing = ["pytest", "pytest-benchmark"]
name = "pprintpp"
version = "0.4.0"
description = "A drop-in replacement for pprint that's actually pretty"
+category = "main"
optional = false
python-versions = "*"
files = [
@@ -1845,6 +1922,7 @@ files = [
name = "pre-commit"
version = "2.21.0"
description = "A framework for managing and maintaining multi-language pre-commit hooks."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -1863,6 +1941,7 @@ virtualenv = ">=20.10.0"
name = "prompt-toolkit"
version = "3.0.39"
description = "Library for building powerful interactive command lines in Python"
+category = "dev"
optional = false
python-versions = ">=3.7.0"
files = [
@@ -1875,13 +1954,14 @@ wcwidth = "*"
[[package]]
name = "psycopg"
-version = "3.1.10"
+version = "3.1.12"
description = "PostgreSQL database adapter for Python"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "psycopg-3.1.10-py3-none-any.whl", hash = "sha256:8bbeddae5075c7890b2fa3e3553440376d3c5e28418335dee3c3656b06fa2b52"},
- {file = "psycopg-3.1.10.tar.gz", hash = "sha256:15b25741494344c24066dc2479b0f383dd1b82fa5e75612fa4fa5bb30726e9b6"},
+ {file = "psycopg-3.1.12-py3-none-any.whl", hash = "sha256:8ec5230d6a7eb654b4fb3cf2d3eda8871d68f24807b934790504467f1deee9f8"},
+ {file = "psycopg-3.1.12.tar.gz", hash = "sha256:cec7ad2bc6a8510e56c45746c631cf9394148bdc8a9a11fd8cf8554ce129ae78"},
]
[package.dependencies]
@@ -1889,37 +1969,39 @@ typing-extensions = ">=4.1"
tzdata = {version = "*", markers = "sys_platform == \"win32\""}
[package.extras]
-binary = ["psycopg-binary (==3.1.10)"]
-c = ["psycopg-c (==3.1.10)"]
+binary = ["psycopg-binary (==3.1.12)"]
+c = ["psycopg-c (==3.1.12)"]
dev = ["black (>=23.1.0)", "dnspython (>=2.1)", "flake8 (>=4.0)", "mypy (>=1.4.1)", "types-setuptools (>=57.4)", "wheel (>=0.37)"]
docs = ["Sphinx (>=5.0)", "furo (==2022.6.21)", "sphinx-autobuild (>=2021.3.14)", "sphinx-autodoc-typehints (>=1.12)"]
pool = ["psycopg-pool"]
-test = ["anyio (>=3.6.2)", "mypy (>=1.4.1)", "pproxy (>=2.7)", "pytest (>=6.2.5)", "pytest-cov (>=3.0)", "pytest-randomly (>=3.5)"]
+test = ["anyio (>=3.6.2,<4.0)", "mypy (>=1.4.1)", "pproxy (>=2.7)", "pytest (>=6.2.5)", "pytest-cov (>=3.0)", "pytest-randomly (>=3.5)"]
[[package]]
name = "psycopg2"
-version = "2.9.7"
+version = "2.9.9"
description = "psycopg2 - Python-PostgreSQL Database Adapter"
+category = "dev"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
files = [
- {file = "psycopg2-2.9.7-cp310-cp310-win32.whl", hash = "sha256:1a6a2d609bce44f78af4556bea0c62a5e7f05c23e5ea9c599e07678995609084"},
- {file = "psycopg2-2.9.7-cp310-cp310-win_amd64.whl", hash = "sha256:b22ed9c66da2589a664e0f1ca2465c29b75aaab36fa209d4fb916025fb9119e5"},
- {file = "psycopg2-2.9.7-cp311-cp311-win32.whl", hash = "sha256:44d93a0109dfdf22fe399b419bcd7fa589d86895d3931b01fb321d74dadc68f1"},
- {file = "psycopg2-2.9.7-cp311-cp311-win_amd64.whl", hash = "sha256:91e81a8333a0037babfc9fe6d11e997a9d4dac0f38c43074886b0d9dead94fe9"},
- {file = "psycopg2-2.9.7-cp37-cp37m-win32.whl", hash = "sha256:d1210fcf99aae6f728812d1d2240afc1dc44b9e6cba526a06fb8134f969957c2"},
- {file = "psycopg2-2.9.7-cp37-cp37m-win_amd64.whl", hash = "sha256:e9b04cbef584310a1ac0f0d55bb623ca3244c87c51187645432e342de9ae81a8"},
- {file = "psycopg2-2.9.7-cp38-cp38-win32.whl", hash = "sha256:d5c5297e2fbc8068d4255f1e606bfc9291f06f91ec31b2a0d4c536210ac5c0a2"},
- {file = "psycopg2-2.9.7-cp38-cp38-win_amd64.whl", hash = "sha256:8275abf628c6dc7ec834ea63f6f3846bf33518907a2b9b693d41fd063767a866"},
- {file = "psycopg2-2.9.7-cp39-cp39-win32.whl", hash = "sha256:c7949770cafbd2f12cecc97dea410c514368908a103acf519f2a346134caa4d5"},
- {file = "psycopg2-2.9.7-cp39-cp39-win_amd64.whl", hash = "sha256:b6bd7d9d3a7a63faae6edf365f0ed0e9b0a1aaf1da3ca146e6b043fb3eb5d723"},
- {file = "psycopg2-2.9.7.tar.gz", hash = "sha256:f00cc35bd7119f1fed17b85bd1007855194dde2cbd8de01ab8ebb17487440ad8"},
+ {file = "psycopg2-2.9.9-cp310-cp310-win32.whl", hash = "sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516"},
+ {file = "psycopg2-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3"},
+ {file = "psycopg2-2.9.9-cp311-cp311-win32.whl", hash = "sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372"},
+ {file = "psycopg2-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981"},
+ {file = "psycopg2-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa"},
+ {file = "psycopg2-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a"},
+ {file = "psycopg2-2.9.9-cp38-cp38-win32.whl", hash = "sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c"},
+ {file = "psycopg2-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e"},
+ {file = "psycopg2-2.9.9-cp39-cp39-win32.whl", hash = "sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59"},
+ {file = "psycopg2-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913"},
+ {file = "psycopg2-2.9.9.tar.gz", hash = "sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156"},
]
[[package]]
name = "ptyprocess"
version = "0.7.0"
description = "Run a subprocess in a pseudo terminal"
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -1929,35 +2011,38 @@ files = [
[[package]]
name = "py-buzz"
-version = "3.3.0"
+version = "4.1.0"
description = "\"That's not flying, it's falling with style\": Exceptions with extras"
+category = "main"
optional = false
-python-versions = ">=3.6.2,<4.0.0"
+python-versions = ">=3.8,<4.0"
files = [
- {file = "py_buzz-3.3.0-py3-none-any.whl", hash = "sha256:bae0aec80f50679718c5284a7a4c6a3b55aa797579defea9ab362fd49c5d10a1"},
- {file = "py_buzz-3.3.0.tar.gz", hash = "sha256:2f2075fd134ba5e3731a3c6987d5cb02ce6631418b92e49c9852f7f013f49901"},
+ {file = "py_buzz-4.1.0-py3-none-any.whl", hash = "sha256:77dc0dc9c9923b6f8079dc2e2c3b4fbebd2308acaca1500f8eda2711cd308f97"},
+ {file = "py_buzz-4.1.0.tar.gz", hash = "sha256:ac11dba4922b2af114126044597d2fcd15e8c6a74368bed91f3c6732c8f09812"},
]
[[package]]
name = "py-docker-gadgets"
-version = "0.1.1"
+version = "0.1.3"
description = "Some convenience tools for managing docker containers in python"
+category = "dev"
optional = false
python-versions = ">=3.8,<4.0"
files = [
- {file = "py-docker-gadgets-0.1.1.tar.gz", hash = "sha256:7e1232a2b558915f46774f56ab7005b7fa8d53a713b1e37e62f150875c4b5954"},
- {file = "py_docker_gadgets-0.1.1-py3-none-any.whl", hash = "sha256:199ced9284d25628e699b435bac61431aeef4aa20533a16e0f711ee748a25105"},
+ {file = "py_docker_gadgets-0.1.3-py3-none-any.whl", hash = "sha256:37cffcd451fb49096fe0687f85824b757319bdb7ad773eb8527e7a01b06b3f46"},
+ {file = "py_docker_gadgets-0.1.3.tar.gz", hash = "sha256:5d360c9f057387c2ff19c6e1a7859a112254a4002b00c220f8693064292e716b"},
]
[package.dependencies]
-docker = ">=5.0.3,<6.0.0"
-loguru = ">=0.6.0,<0.7.0"
-py-buzz = ">=3.0.0,<4.0.0"
+docker = ">=5.0.3"
+loguru = ">=0.6"
+py-buzz = ">=3.0"
[[package]]
name = "pyasn1"
version = "0.5.0"
description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)"
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7"
files = [
@@ -1969,6 +2054,7 @@ files = [
name = "pycodestyle"
version = "2.9.1"
description = "Python style guide checker"
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -1980,6 +2066,7 @@ files = [
name = "pycparser"
version = "2.21"
description = "C parser in Python"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@@ -1989,47 +2076,48 @@ files = [
[[package]]
name = "pydantic"
-version = "1.10.12"
+version = "1.10.13"
description = "Data validation and settings management using python type hints"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "pydantic-1.10.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a1fcb59f2f355ec350073af41d927bf83a63b50e640f4dbaa01053a28b7a7718"},
- {file = "pydantic-1.10.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b7ccf02d7eb340b216ec33e53a3a629856afe1c6e0ef91d84a4e6f2fb2ca70fe"},
- {file = "pydantic-1.10.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fb2aa3ab3728d950bcc885a2e9eff6c8fc40bc0b7bb434e555c215491bcf48b"},
- {file = "pydantic-1.10.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:771735dc43cf8383959dc9b90aa281f0b6092321ca98677c5fb6125a6f56d58d"},
- {file = "pydantic-1.10.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ca48477862372ac3770969b9d75f1bf66131d386dba79506c46d75e6b48c1e09"},
- {file = "pydantic-1.10.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a5e7add47a5b5a40c49b3036d464e3c7802f8ae0d1e66035ea16aa5b7a3923ed"},
- {file = "pydantic-1.10.12-cp310-cp310-win_amd64.whl", hash = "sha256:e4129b528c6baa99a429f97ce733fff478ec955513630e61b49804b6cf9b224a"},
- {file = "pydantic-1.10.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b0d191db0f92dfcb1dec210ca244fdae5cbe918c6050b342d619c09d31eea0cc"},
- {file = "pydantic-1.10.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:795e34e6cc065f8f498c89b894a3c6da294a936ee71e644e4bd44de048af1405"},
- {file = "pydantic-1.10.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69328e15cfda2c392da4e713443c7dbffa1505bc9d566e71e55abe14c97ddc62"},
- {file = "pydantic-1.10.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2031de0967c279df0d8a1c72b4ffc411ecd06bac607a212892757db7462fc494"},
- {file = "pydantic-1.10.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ba5b2e6fe6ca2b7e013398bc7d7b170e21cce322d266ffcd57cca313e54fb246"},
- {file = "pydantic-1.10.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2a7bac939fa326db1ab741c9d7f44c565a1d1e80908b3797f7f81a4f86bc8d33"},
- {file = "pydantic-1.10.12-cp311-cp311-win_amd64.whl", hash = "sha256:87afda5539d5140cb8ba9e8b8c8865cb5b1463924d38490d73d3ccfd80896b3f"},
- {file = "pydantic-1.10.12-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:549a8e3d81df0a85226963611950b12d2d334f214436a19537b2efed61b7639a"},
- {file = "pydantic-1.10.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:598da88dfa127b666852bef6d0d796573a8cf5009ffd62104094a4fe39599565"},
- {file = "pydantic-1.10.12-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba5c4a8552bff16c61882db58544116d021d0b31ee7c66958d14cf386a5b5350"},
- {file = "pydantic-1.10.12-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c79e6a11a07da7374f46970410b41d5e266f7f38f6a17a9c4823db80dadf4303"},
- {file = "pydantic-1.10.12-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab26038b8375581dc832a63c948f261ae0aa21f1d34c1293469f135fa92972a5"},
- {file = "pydantic-1.10.12-cp37-cp37m-win_amd64.whl", hash = "sha256:e0a16d274b588767602b7646fa05af2782576a6cf1022f4ba74cbb4db66f6ca8"},
- {file = "pydantic-1.10.12-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6a9dfa722316f4acf4460afdf5d41d5246a80e249c7ff475c43a3a1e9d75cf62"},
- {file = "pydantic-1.10.12-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a73f489aebd0c2121ed974054cb2759af8a9f747de120acd2c3394cf84176ccb"},
- {file = "pydantic-1.10.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b30bcb8cbfccfcf02acb8f1a261143fab622831d9c0989707e0e659f77a18e0"},
- {file = "pydantic-1.10.12-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fcfb5296d7877af406ba1547dfde9943b1256d8928732267e2653c26938cd9c"},
- {file = "pydantic-1.10.12-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2f9a6fab5f82ada41d56b0602606a5506aab165ca54e52bc4545028382ef1c5d"},
- {file = "pydantic-1.10.12-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dea7adcc33d5d105896401a1f37d56b47d443a2b2605ff8a969a0ed5543f7e33"},
- {file = "pydantic-1.10.12-cp38-cp38-win_amd64.whl", hash = "sha256:1eb2085c13bce1612da8537b2d90f549c8cbb05c67e8f22854e201bde5d98a47"},
- {file = "pydantic-1.10.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ef6c96b2baa2100ec91a4b428f80d8f28a3c9e53568219b6c298c1125572ebc6"},
- {file = "pydantic-1.10.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c076be61cd0177a8433c0adcb03475baf4ee91edf5a4e550161ad57fc90f523"},
- {file = "pydantic-1.10.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5a58feb9a39f481eda4d5ca220aa8b9d4f21a41274760b9bc66bfd72595b86"},
- {file = "pydantic-1.10.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5f805d2d5d0a41633651a73fa4ecdd0b3d7a49de4ec3fadf062fe16501ddbf1"},
- {file = "pydantic-1.10.12-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1289c180abd4bd4555bb927c42ee42abc3aee02b0fb2d1223fb7c6e5bef87dbe"},
- {file = "pydantic-1.10.12-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5d1197e462e0364906cbc19681605cb7c036f2475c899b6f296104ad42b9f5fb"},
- {file = "pydantic-1.10.12-cp39-cp39-win_amd64.whl", hash = "sha256:fdbdd1d630195689f325c9ef1a12900524dceb503b00a987663ff4f58669b93d"},
- {file = "pydantic-1.10.12-py3-none-any.whl", hash = "sha256:b749a43aa51e32839c9d71dc67eb1e4221bb04af1033a32e3923d46f9effa942"},
- {file = "pydantic-1.10.12.tar.gz", hash = "sha256:0fe8a415cea8f340e7a9af9c54fc71a649b43e8ca3cc732986116b3cb135d303"},
+ {file = "pydantic-1.10.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:efff03cc7a4f29d9009d1c96ceb1e7a70a65cfe86e89d34e4a5f2ab1e5693737"},
+ {file = "pydantic-1.10.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3ecea2b9d80e5333303eeb77e180b90e95eea8f765d08c3d278cd56b00345d01"},
+ {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1740068fd8e2ef6eb27a20e5651df000978edce6da6803c2bef0bc74540f9548"},
+ {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84bafe2e60b5e78bc64a2941b4c071a4b7404c5c907f5f5a99b0139781e69ed8"},
+ {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bc0898c12f8e9c97f6cd44c0ed70d55749eaf783716896960b4ecce2edfd2d69"},
+ {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:654db58ae399fe6434e55325a2c3e959836bd17a6f6a0b6ca8107ea0571d2e17"},
+ {file = "pydantic-1.10.13-cp310-cp310-win_amd64.whl", hash = "sha256:75ac15385a3534d887a99c713aa3da88a30fbd6204a5cd0dc4dab3d770b9bd2f"},
+ {file = "pydantic-1.10.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c553f6a156deb868ba38a23cf0df886c63492e9257f60a79c0fd8e7173537653"},
+ {file = "pydantic-1.10.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e08865bc6464df8c7d61439ef4439829e3ab62ab1669cddea8dd00cd74b9ffe"},
+ {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e31647d85a2013d926ce60b84f9dd5300d44535a9941fe825dc349ae1f760df9"},
+ {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:210ce042e8f6f7c01168b2d84d4c9eb2b009fe7bf572c2266e235edf14bacd80"},
+ {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8ae5dd6b721459bfa30805f4c25880e0dd78fc5b5879f9f7a692196ddcb5a580"},
+ {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f8e81fc5fb17dae698f52bdd1c4f18b6ca674d7068242b2aff075f588301bbb0"},
+ {file = "pydantic-1.10.13-cp311-cp311-win_amd64.whl", hash = "sha256:61d9dce220447fb74f45e73d7ff3b530e25db30192ad8d425166d43c5deb6df0"},
+ {file = "pydantic-1.10.13-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4b03e42ec20286f052490423682016fd80fda830d8e4119f8ab13ec7464c0132"},
+ {file = "pydantic-1.10.13-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f59ef915cac80275245824e9d771ee939133be38215555e9dc90c6cb148aaeb5"},
+ {file = "pydantic-1.10.13-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a1f9f747851338933942db7af7b6ee8268568ef2ed86c4185c6ef4402e80ba8"},
+ {file = "pydantic-1.10.13-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:97cce3ae7341f7620a0ba5ef6cf043975cd9d2b81f3aa5f4ea37928269bc1b87"},
+ {file = "pydantic-1.10.13-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:854223752ba81e3abf663d685f105c64150873cc6f5d0c01d3e3220bcff7d36f"},
+ {file = "pydantic-1.10.13-cp37-cp37m-win_amd64.whl", hash = "sha256:b97c1fac8c49be29486df85968682b0afa77e1b809aff74b83081cc115e52f33"},
+ {file = "pydantic-1.10.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c958d053453a1c4b1c2062b05cd42d9d5c8eb67537b8d5a7e3c3032943ecd261"},
+ {file = "pydantic-1.10.13-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c5370a7edaac06daee3af1c8b1192e305bc102abcbf2a92374b5bc793818599"},
+ {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d6f6e7305244bddb4414ba7094ce910560c907bdfa3501e9db1a7fd7eaea127"},
+ {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3a3c792a58e1622667a2837512099eac62490cdfd63bd407993aaf200a4cf1f"},
+ {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c636925f38b8db208e09d344c7aa4f29a86bb9947495dd6b6d376ad10334fb78"},
+ {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:678bcf5591b63cc917100dc50ab6caebe597ac67e8c9ccb75e698f66038ea953"},
+ {file = "pydantic-1.10.13-cp38-cp38-win_amd64.whl", hash = "sha256:6cf25c1a65c27923a17b3da28a0bdb99f62ee04230c931d83e888012851f4e7f"},
+ {file = "pydantic-1.10.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8ef467901d7a41fa0ca6db9ae3ec0021e3f657ce2c208e98cd511f3161c762c6"},
+ {file = "pydantic-1.10.13-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:968ac42970f57b8344ee08837b62f6ee6f53c33f603547a55571c954a4225691"},
+ {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9849f031cf8a2f0a928fe885e5a04b08006d6d41876b8bbd2fc68a18f9f2e3fd"},
+ {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56e3ff861c3b9c6857579de282ce8baabf443f42ffba355bf070770ed63e11e1"},
+ {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f00790179497767aae6bcdc36355792c79e7bbb20b145ff449700eb076c5f96"},
+ {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:75b297827b59bc229cac1a23a2f7a4ac0031068e5be0ce385be1462e7e17a35d"},
+ {file = "pydantic-1.10.13-cp39-cp39-win_amd64.whl", hash = "sha256:e70ca129d2053fb8b728ee7d1af8e553a928d7e301a311094b8a0501adc8763d"},
+ {file = "pydantic-1.10.13-py3-none-any.whl", hash = "sha256:b87326822e71bd5f313e7d3bfdc77ac3247035ac10b0c0618bd99dcf95b1e687"},
+ {file = "pydantic-1.10.13.tar.gz", hash = "sha256:32c8b48dcd3b2ac4e78b0ba4af3a2c2eb6048cb75202f0ea7b34feb740efc340"},
]
[package.dependencies]
@@ -2044,6 +2132,7 @@ email = ["email-validator (>=1.0.3)"]
name = "pydocstyle"
version = "6.3.0"
description = "Python docstring style checker"
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -2061,6 +2150,7 @@ toml = ["tomli (>=1.2.3)"]
name = "pyflakes"
version = "2.5.0"
description = "passive checker of Python programs"
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -2072,6 +2162,7 @@ files = [
name = "pygments"
version = "2.16.1"
description = "Pygments is a syntax highlighting package written in Python."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -2086,6 +2177,7 @@ plugins = ["importlib-metadata"]
name = "pyproject-flake8"
version = "5.0.4.post1"
description = "pyproject-flake8 (`pflake8`), a monkey patching wrapper to connect flake8 with pyproject.toml configuration"
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -2098,13 +2190,14 @@ flake8 = "5.0.4"
[[package]]
name = "pytest"
-version = "7.4.0"
+version = "7.4.2"
description = "pytest: simple powerful testing with Python"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"},
- {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"},
+ {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"},
+ {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"},
]
[package.dependencies]
@@ -2120,6 +2213,7 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no
name = "pytest-asyncio"
version = "0.21.1"
description = "Pytest support for asyncio"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -2138,6 +2232,7 @@ testing = ["coverage (>=6.2)", "flaky (>=3.5.0)", "hypothesis (>=5.7.1)", "mypy
name = "pytest-cov"
version = "4.1.0"
description = "Pytest plugin for measuring coverage."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -2156,6 +2251,7 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale
name = "pytest-env"
version = "0.6.2"
description = "py.test plugin that allows you to add environment variables."
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -2169,6 +2265,7 @@ pytest = ">=2.6.0"
name = "pytest-random-order"
version = "1.1.0"
description = "Randomise the order in which pytest tests are run with some control over the randomness"
+category = "dev"
optional = false
python-versions = ">=3.5.0"
files = [
@@ -2183,6 +2280,7 @@ pytest = ">=3.0.0"
name = "python-dateutil"
version = "2.8.2"
description = "Extensions to the standard Python datetime module"
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
files = [
@@ -2197,6 +2295,7 @@ six = ">=1.5"
name = "python-dotenv"
version = "1.0.0"
description = "Read key-value pairs from a .env file and set them as environment variables"
+category = "main"
optional = false
python-versions = ">=3.8"
files = [
@@ -2211,6 +2310,7 @@ cli = ["click (>=5.0)"]
name = "python-http-client"
version = "3.3.7"
description = "HTTP REST client, simplified for Python"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@@ -2222,6 +2322,7 @@ files = [
name = "python-jose"
version = "3.3.0"
description = "JOSE implementation in Python"
+category = "main"
optional = false
python-versions = "*"
files = [
@@ -2244,6 +2345,7 @@ pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"]
name = "python-multipart"
version = "0.0.6"
description = "A streaming multipart parser for Python"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -2258,6 +2360,7 @@ dev = ["atomicwrites (==1.2.1)", "attrs (==19.2.0)", "coverage (==6.5.0)", "hatc
name = "python-status"
version = "1.0.1"
description = "HTTP Status for Humans"
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -2268,6 +2371,7 @@ files = [
name = "pytzdata"
version = "2020.1"
description = "The Olson timezone database for Python."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@@ -2277,29 +2381,33 @@ files = [
[[package]]
name = "pywin32"
-version = "227"
+version = "306"
description = "Python for Window Extensions"
+category = "dev"
optional = false
python-versions = "*"
files = [
- {file = "pywin32-227-cp27-cp27m-win32.whl", hash = "sha256:371fcc39416d736401f0274dd64c2302728c9e034808e37381b5e1b22be4a6b0"},
- {file = "pywin32-227-cp27-cp27m-win_amd64.whl", hash = "sha256:4cdad3e84191194ea6d0dd1b1b9bdda574ff563177d2adf2b4efec2a244fa116"},
- {file = "pywin32-227-cp35-cp35m-win32.whl", hash = "sha256:f4c5be1a293bae0076d93c88f37ee8da68136744588bc5e2be2f299a34ceb7aa"},
- {file = "pywin32-227-cp35-cp35m-win_amd64.whl", hash = "sha256:a929a4af626e530383a579431b70e512e736e9588106715215bf685a3ea508d4"},
- {file = "pywin32-227-cp36-cp36m-win32.whl", hash = "sha256:300a2db938e98c3e7e2093e4491439e62287d0d493fe07cce110db070b54c0be"},
- {file = "pywin32-227-cp36-cp36m-win_amd64.whl", hash = "sha256:9b31e009564fb95db160f154e2aa195ed66bcc4c058ed72850d047141b36f3a2"},
- {file = "pywin32-227-cp37-cp37m-win32.whl", hash = "sha256:47a3c7551376a865dd8d095a98deba954a98f326c6fe3c72d8726ca6e6b15507"},
- {file = "pywin32-227-cp37-cp37m-win_amd64.whl", hash = "sha256:31f88a89139cb2adc40f8f0e65ee56a8c585f629974f9e07622ba80199057511"},
- {file = "pywin32-227-cp38-cp38-win32.whl", hash = "sha256:7f18199fbf29ca99dff10e1f09451582ae9e372a892ff03a28528a24d55875bc"},
- {file = "pywin32-227-cp38-cp38-win_amd64.whl", hash = "sha256:7c1ae32c489dc012930787f06244426f8356e129184a02c25aef163917ce158e"},
- {file = "pywin32-227-cp39-cp39-win32.whl", hash = "sha256:c054c52ba46e7eb6b7d7dfae4dbd987a1bb48ee86debe3f245a2884ece46e295"},
- {file = "pywin32-227-cp39-cp39-win_amd64.whl", hash = "sha256:f27cec5e7f588c3d1051651830ecc00294f90728d19c3bf6916e6dba93ea357c"},
+ {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"},
+ {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"},
+ {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"},
+ {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"},
+ {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"},
+ {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"},
+ {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"},
+ {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"},
+ {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"},
+ {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"},
+ {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"},
+ {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"},
+ {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"},
+ {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"},
]
[[package]]
name = "pyyaml"
version = "6.0.1"
description = "YAML parser and emitter for Python"
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -2359,6 +2467,7 @@ files = [
name = "requests"
version = "2.31.0"
description = "Python HTTP for Humans."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -2380,6 +2489,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
name = "respx"
version = "0.20.2"
description = "A utility for mocking out the Python HTTPX and HTTP Core libraries."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -2394,6 +2504,7 @@ httpx = ">=0.21.0"
name = "rsa"
version = "4.9"
description = "Pure-Python RSA implementation"
+category = "main"
optional = false
python-versions = ">=3.6,<4"
files = [
@@ -2406,13 +2517,14 @@ pyasn1 = ">=0.1.3"
[[package]]
name = "s3transfer"
-version = "0.6.1"
+version = "0.6.2"
description = "An Amazon S3 Transfer Manager"
+category = "main"
optional = false
python-versions = ">= 3.7"
files = [
- {file = "s3transfer-0.6.1-py3-none-any.whl", hash = "sha256:3c0da2d074bf35d6870ef157158641178a4204a6e689e82546083e31e0311346"},
- {file = "s3transfer-0.6.1.tar.gz", hash = "sha256:640bb492711f4c0c0905e1f62b6aaeb771881935ad27884852411f8e9cacbca9"},
+ {file = "s3transfer-0.6.2-py3-none-any.whl", hash = "sha256:b014be3a8a2aab98cfe1abc7229cc5a9a0cf05eb9c1f2b86b230fd8df3f78084"},
+ {file = "s3transfer-0.6.2.tar.gz", hash = "sha256:cab66d3380cca3e70939ef2255d01cd8aece6a4907a9528740f668c4b0611861"},
]
[package.dependencies]
@@ -2425,6 +2537,7 @@ crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"]
name = "sendgrid"
version = "6.10.0"
description = "Twilio SendGrid library for Python"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
@@ -2438,13 +2551,14 @@ starkbank-ecdsa = ">=2.0.1"
[[package]]
name = "sentry-sdk"
-version = "1.29.2"
+version = "1.31.0"
description = "Python client for Sentry (https://sentry.io)"
+category = "main"
optional = false
python-versions = "*"
files = [
- {file = "sentry-sdk-1.29.2.tar.gz", hash = "sha256:a99ee105384788c3f228726a88baf515fe7b5f1d2d0f215a03d194369f158df7"},
- {file = "sentry_sdk-1.29.2-py2.py3-none-any.whl", hash = "sha256:3e17215d8006612e2df02b0e73115eb8376c37e3f586d8436fa41644e605074d"},
+ {file = "sentry-sdk-1.31.0.tar.gz", hash = "sha256:6de2e88304873484207fed836388e422aeff000609b104c802749fd89d56ba5b"},
+ {file = "sentry_sdk-1.31.0-py2.py3-none-any.whl", hash = "sha256:64a7141005fb775b9db298a30de93e3b83e0ddd1232dc6f36eb38aebc1553291"},
]
[package.dependencies]
@@ -2454,10 +2568,12 @@ urllib3 = {version = ">=1.26.11", markers = "python_version >= \"3.6\""}
[package.extras]
aiohttp = ["aiohttp (>=3.5)"]
arq = ["arq (>=0.23)"]
+asyncpg = ["asyncpg (>=0.23)"]
beam = ["apache-beam (>=2.12)"]
bottle = ["bottle (>=0.12.13)"]
celery = ["celery (>=3)"]
chalice = ["chalice (>=1.16.0)"]
+clickhouse-driver = ["clickhouse-driver (>=0.2.0)"]
django = ["django (>=1.8)"]
falcon = ["falcon (>=1.4)"]
fastapi = ["fastapi (>=0.79.0)"]
@@ -2467,6 +2583,7 @@ httpx = ["httpx (>=0.16.0)"]
huey = ["huey (>=2)"]
loguru = ["loguru (>=0.5)"]
opentelemetry = ["opentelemetry-distro (>=0.35b0)"]
+opentelemetry-experimental = ["opentelemetry-distro (>=0.40b0,<1.0)", "opentelemetry-instrumentation-aiohttp-client (>=0.40b0,<1.0)", "opentelemetry-instrumentation-django (>=0.40b0,<1.0)", "opentelemetry-instrumentation-fastapi (>=0.40b0,<1.0)", "opentelemetry-instrumentation-flask (>=0.40b0,<1.0)", "opentelemetry-instrumentation-requests (>=0.40b0,<1.0)", "opentelemetry-instrumentation-sqlite3 (>=0.40b0,<1.0)", "opentelemetry-instrumentation-urllib (>=0.40b0,<1.0)"]
pure-eval = ["asttokens", "executing", "pure-eval"]
pymongo = ["pymongo (>=3.1)"]
pyspark = ["pyspark (>=2.4.4)"]
@@ -2480,83 +2597,100 @@ tornado = ["tornado (>=5)"]
[[package]]
name = "setproctitle"
-version = "1.3.2"
+version = "1.3.3"
description = "A Python module to customize the process title"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "setproctitle-1.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:288943dec88e178bb2fd868adf491197cc0fc8b6810416b1c6775e686bab87fe"},
- {file = "setproctitle-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:630f6fe5e24a619ccf970c78e084319ee8be5be253ecc9b5b216b0f474f5ef18"},
- {file = "setproctitle-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c877691b90026670e5a70adfbcc735460a9f4c274d35ec5e8a43ce3f8443005"},
- {file = "setproctitle-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7a55fe05f15c10e8c705038777656fe45e3bd676d49ad9ac8370b75c66dd7cd7"},
- {file = "setproctitle-1.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ab45146c71ca6592c9cc8b354a2cc9cc4843c33efcbe1d245d7d37ce9696552d"},
- {file = "setproctitle-1.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e00c9d5c541a2713ba0e657e0303bf96ddddc412ef4761676adc35df35d7c246"},
- {file = "setproctitle-1.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:265ecbe2c6eafe82e104f994ddd7c811520acdd0647b73f65c24f51374cf9494"},
- {file = "setproctitle-1.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c2c46200656280a064073447ebd363937562debef329482fd7e570c8d498f806"},
- {file = "setproctitle-1.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:fa2f50678f04fda7a75d0fe5dd02bbdd3b13cbe6ed4cf626e4472a7ccf47ae94"},
- {file = "setproctitle-1.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7f2719a398e1a2c01c2a63bf30377a34d0b6ef61946ab9cf4d550733af8f1ef1"},
- {file = "setproctitle-1.3.2-cp310-cp310-win32.whl", hash = "sha256:e425be62524dc0c593985da794ee73eb8a17abb10fe692ee43bb39e201d7a099"},
- {file = "setproctitle-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:e85e50b9c67854f89635a86247412f3ad66b132a4d8534ac017547197c88f27d"},
- {file = "setproctitle-1.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2a97d51c17d438cf5be284775a322d57b7ca9505bb7e118c28b1824ecaf8aeaa"},
- {file = "setproctitle-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:587c7d6780109fbd8a627758063d08ab0421377c0853780e5c356873cdf0f077"},
- {file = "setproctitle-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d17c8bd073cbf8d141993db45145a70b307385b69171d6b54bcf23e5d644de"},
- {file = "setproctitle-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e932089c35a396dc31a5a1fc49889dd559548d14cb2237adae260382a090382e"},
- {file = "setproctitle-1.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e4f8f12258a8739c565292a551c3db62cca4ed4f6b6126664e2381acb4931bf"},
- {file = "setproctitle-1.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:570d255fd99c7f14d8f91363c3ea96bd54f8742275796bca67e1414aeca7d8c3"},
- {file = "setproctitle-1.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a8e0881568c5e6beff91ef73c0ec8ac2a9d3ecc9edd6bd83c31ca34f770910c4"},
- {file = "setproctitle-1.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4bba3be4c1fabf170595b71f3af46c6d482fbe7d9e0563999b49999a31876f77"},
- {file = "setproctitle-1.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:37ece938110cab2bb3957e3910af8152ca15f2b6efdf4f2612e3f6b7e5459b80"},
- {file = "setproctitle-1.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db684d6bbb735a80bcbc3737856385b55d53f8a44ce9b46e9a5682c5133a9bf7"},
- {file = "setproctitle-1.3.2-cp311-cp311-win32.whl", hash = "sha256:ca58cd260ea02759238d994cfae844fc8b1e206c684beb8f38877dcab8451dfc"},
- {file = "setproctitle-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:88486e6cce2a18a033013d17b30a594f1c5cb42520c49c19e6ade40b864bb7ff"},
- {file = "setproctitle-1.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:92c626edc66169a1b09e9541b9c0c9f10488447d8a2b1d87c8f0672e771bc927"},
- {file = "setproctitle-1.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:710e16fa3bade3b026907e4a5e841124983620046166f355bbb84be364bf2a02"},
- {file = "setproctitle-1.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f29b75e86260b0ab59adb12661ef9f113d2f93a59951373eb6d68a852b13e83"},
- {file = "setproctitle-1.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c8d9650154afaa86a44ff195b7b10d683c73509d085339d174e394a22cccbb9"},
- {file = "setproctitle-1.3.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0452282258dfcc01697026a8841258dd2057c4438b43914b611bccbcd048f10"},
- {file = "setproctitle-1.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e49ae693306d7624015f31cb3e82708916759d592c2e5f72a35c8f4cc8aef258"},
- {file = "setproctitle-1.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1ff863a20d1ff6ba2c24e22436a3daa3cd80be1dfb26891aae73f61b54b04aca"},
- {file = "setproctitle-1.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:55ce1e9925ce1765865442ede9dca0ba9bde10593fcd570b1f0fa25d3ec6b31c"},
- {file = "setproctitle-1.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7fe9df7aeb8c64db6c34fc3b13271a363475d77bc157d3f00275a53910cb1989"},
- {file = "setproctitle-1.3.2-cp37-cp37m-win32.whl", hash = "sha256:e5c50e164cd2459bc5137c15288a9ef57160fd5cbf293265ea3c45efe7870865"},
- {file = "setproctitle-1.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:a499fff50387c1520c085a07578a000123f519e5f3eee61dd68e1d301659651f"},
- {file = "setproctitle-1.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5b932c3041aa924163f4aab970c2f0e6b4d9d773f4d50326e0ea1cd69240e5c5"},
- {file = "setproctitle-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f4bfc89bd33ebb8e4c0e9846a09b1f5a4a86f5cb7a317e75cc42fee1131b4f4f"},
- {file = "setproctitle-1.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd3cf4286a60fdc95451d8d14e0389a6b4f5cebe02c7f2609325eb016535963"},
- {file = "setproctitle-1.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5fb4f769c02f63fac90989711a3fee83919f47ae9afd4758ced5d86596318c65"},
- {file = "setproctitle-1.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5194b4969f82ea842a4f6af2f82cd16ebdc3f1771fb2771796e6add9835c1973"},
- {file = "setproctitle-1.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f0cde41857a644b7353a0060b5f94f7ba7cf593ebde5a1094da1be581ac9a31"},
- {file = "setproctitle-1.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9124bedd8006b0e04d4e8a71a0945da9b67e7a4ab88fdad7b1440dc5b6122c42"},
- {file = "setproctitle-1.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c8a09d570b39517de10ee5b718730e171251ce63bbb890c430c725c8c53d4484"},
- {file = "setproctitle-1.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:8ff3c8cb26afaed25e8bca7b9dd0c1e36de71f35a3a0706b5c0d5172587a3827"},
- {file = "setproctitle-1.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:589be87172b238f839e19f146b9ea47c71e413e951ef0dc6db4218ddacf3c202"},
- {file = "setproctitle-1.3.2-cp38-cp38-win32.whl", hash = "sha256:4749a2b0c9ac52f864d13cee94546606f92b981b50e46226f7f830a56a9dc8e1"},
- {file = "setproctitle-1.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:e43f315c68aa61cbdef522a2272c5a5b9b8fd03c301d3167b5e1343ef50c676c"},
- {file = "setproctitle-1.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:de3a540cd1817ede31f530d20e6a4935bbc1b145fd8f8cf393903b1e02f1ae76"},
- {file = "setproctitle-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4058564195b975ddc3f0462375c533cce310ccdd41b80ac9aed641c296c3eff4"},
- {file = "setproctitle-1.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c5d5dad7c28bdd1ec4187d818e43796f58a845aa892bb4481587010dc4d362b"},
- {file = "setproctitle-1.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ffc61a388a5834a97953d6444a2888c24a05f2e333f9ed49f977a87bb1ad4761"},
- {file = "setproctitle-1.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fa1a0fbee72b47dc339c87c890d3c03a72ea65c061ade3204f285582f2da30f"},
- {file = "setproctitle-1.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe8a988c7220c002c45347430993830666e55bc350179d91fcee0feafe64e1d4"},
- {file = "setproctitle-1.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bae283e85fc084b18ffeb92e061ff7ac5af9e183c9d1345c93e178c3e5069cbe"},
- {file = "setproctitle-1.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:fed18e44711c5af4b681c2b3b18f85e6f0f1b2370a28854c645d636d5305ccd8"},
- {file = "setproctitle-1.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:b34baef93bfb20a8ecb930e395ccd2ae3268050d8cf4fe187de5e2bd806fd796"},
- {file = "setproctitle-1.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7f0bed90a216ef28b9d227d8d73e28a8c9b88c0f48a082d13ab3fa83c581488f"},
- {file = "setproctitle-1.3.2-cp39-cp39-win32.whl", hash = "sha256:4d8938249a7cea45ab7e1e48b77685d0f2bab1ebfa9dde23e94ab97968996a7c"},
- {file = "setproctitle-1.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:a47d97a75fd2d10c37410b180f67a5835cb1d8fdea2648fd7f359d4277f180b9"},
- {file = "setproctitle-1.3.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:dad42e676c5261eb50fdb16bdf3e2771cf8f99a79ef69ba88729aeb3472d8575"},
- {file = "setproctitle-1.3.2-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c91b9bc8985d00239f7dc08a49927a7ca1ca8a6af2c3890feec3ed9665b6f91e"},
- {file = "setproctitle-1.3.2-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8579a43eafd246e285eb3a5b939e7158073d5087aacdd2308f23200eac2458b"},
- {file = "setproctitle-1.3.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:2fbd8187948284293f43533c150cd69a0e4192c83c377da837dbcd29f6b83084"},
- {file = "setproctitle-1.3.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:faec934cfe5fd6ac1151c02e67156c3f526e82f96b24d550b5d51efa4a5527c6"},
- {file = "setproctitle-1.3.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1aafc91cbdacc9e5fe712c52077369168e6b6c346f3a9d51bf600b53eae56bb"},
- {file = "setproctitle-1.3.2-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b617f12c9be61e8f4b2857be4a4319754756845dbbbd9c3718f468bbb1e17bcb"},
- {file = "setproctitle-1.3.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b2c9cb2705fc84cb8798f1ba74194f4c080aaef19d9dae843591c09b97678e98"},
- {file = "setproctitle-1.3.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a149a5f7f2c5a065d4e63cb0d7a4b6d3b66e6e80f12e3f8827c4f63974cbf122"},
- {file = "setproctitle-1.3.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e3ac25bfc4a0f29d2409650c7532d5ddfdbf29f16f8a256fc31c47d0dc05172"},
- {file = "setproctitle-1.3.2-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65d884e22037b23fa25b2baf1a3316602ed5c5971eb3e9d771a38c3a69ce6e13"},
- {file = "setproctitle-1.3.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7aa0aac1711fadffc1d51e9d00a3bea61f68443d6ac0241a224e4d622489d665"},
- {file = "setproctitle-1.3.2.tar.gz", hash = "sha256:b9fb97907c830d260fa0658ed58afd48a86b2b88aac521135c352ff7fd3477fd"},
+ {file = "setproctitle-1.3.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:897a73208da48db41e687225f355ce993167079eda1260ba5e13c4e53be7f754"},
+ {file = "setproctitle-1.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8c331e91a14ba4076f88c29c777ad6b58639530ed5b24b5564b5ed2fd7a95452"},
+ {file = "setproctitle-1.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbbd6c7de0771c84b4aa30e70b409565eb1fc13627a723ca6be774ed6b9d9fa3"},
+ {file = "setproctitle-1.3.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c05ac48ef16ee013b8a326c63e4610e2430dbec037ec5c5b58fcced550382b74"},
+ {file = "setproctitle-1.3.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1342f4fdb37f89d3e3c1c0a59d6ddbedbde838fff5c51178a7982993d238fe4f"},
+ {file = "setproctitle-1.3.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc74e84fdfa96821580fb5e9c0b0777c1c4779434ce16d3d62a9c4d8c710df39"},
+ {file = "setproctitle-1.3.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9617b676b95adb412bb69645d5b077d664b6882bb0d37bfdafbbb1b999568d85"},
+ {file = "setproctitle-1.3.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6a249415f5bb88b5e9e8c4db47f609e0bf0e20a75e8d744ea787f3092ba1f2d0"},
+ {file = "setproctitle-1.3.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:38da436a0aaace9add67b999eb6abe4b84397edf4a78ec28f264e5b4c9d53cd5"},
+ {file = "setproctitle-1.3.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:da0d57edd4c95bf221b2ebbaa061e65b1788f1544977288bdf95831b6e44e44d"},
+ {file = "setproctitle-1.3.3-cp310-cp310-win32.whl", hash = "sha256:a1fcac43918b836ace25f69b1dca8c9395253ad8152b625064415b1d2f9be4fb"},
+ {file = "setproctitle-1.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:200620c3b15388d7f3f97e0ae26599c0c378fdf07ae9ac5a13616e933cbd2086"},
+ {file = "setproctitle-1.3.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:334f7ed39895d692f753a443102dd5fed180c571eb6a48b2a5b7f5b3564908c8"},
+ {file = "setproctitle-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:950f6476d56ff7817a8fed4ab207727fc5260af83481b2a4b125f32844df513a"},
+ {file = "setproctitle-1.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:195c961f54a09eb2acabbfc90c413955cf16c6e2f8caa2adbf2237d1019c7dd8"},
+ {file = "setproctitle-1.3.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f05e66746bf9fe6a3397ec246fe481096664a9c97eb3fea6004735a4daf867fd"},
+ {file = "setproctitle-1.3.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5901a31012a40ec913265b64e48c2a4059278d9f4e6be628441482dd13fb8b5"},
+ {file = "setproctitle-1.3.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64286f8a995f2cd934082b398fc63fca7d5ffe31f0e27e75b3ca6b4efda4e353"},
+ {file = "setproctitle-1.3.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:184239903bbc6b813b1a8fc86394dc6ca7d20e2ebe6f69f716bec301e4b0199d"},
+ {file = "setproctitle-1.3.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:664698ae0013f986118064b6676d7dcd28fefd0d7d5a5ae9497cbc10cba48fa5"},
+ {file = "setproctitle-1.3.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e5119a211c2e98ff18b9908ba62a3bd0e3fabb02a29277a7232a6fb4b2560aa0"},
+ {file = "setproctitle-1.3.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:417de6b2e214e837827067048f61841f5d7fc27926f2e43954567094051aff18"},
+ {file = "setproctitle-1.3.3-cp311-cp311-win32.whl", hash = "sha256:6a143b31d758296dc2f440175f6c8e0b5301ced3b0f477b84ca43cdcf7f2f476"},
+ {file = "setproctitle-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:a680d62c399fa4b44899094027ec9a1bdaf6f31c650e44183b50d4c4d0ccc085"},
+ {file = "setproctitle-1.3.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d4460795a8a7a391e3567b902ec5bdf6c60a47d791c3b1d27080fc203d11c9dc"},
+ {file = "setproctitle-1.3.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bdfd7254745bb737ca1384dee57e6523651892f0ea2a7344490e9caefcc35e64"},
+ {file = "setproctitle-1.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:477d3da48e216d7fc04bddab67b0dcde633e19f484a146fd2a34bb0e9dbb4a1e"},
+ {file = "setproctitle-1.3.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ab2900d111e93aff5df9fddc64cf51ca4ef2c9f98702ce26524f1acc5a786ae7"},
+ {file = "setproctitle-1.3.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:088b9efc62d5aa5d6edf6cba1cf0c81f4488b5ce1c0342a8b67ae39d64001120"},
+ {file = "setproctitle-1.3.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6d50252377db62d6a0bb82cc898089916457f2db2041e1d03ce7fadd4a07381"},
+ {file = "setproctitle-1.3.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:87e668f9561fd3a457ba189edfc9e37709261287b52293c115ae3487a24b92f6"},
+ {file = "setproctitle-1.3.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:287490eb90e7a0ddd22e74c89a92cc922389daa95babc833c08cf80c84c4df0a"},
+ {file = "setproctitle-1.3.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:4fe1c49486109f72d502f8be569972e27f385fe632bd8895f4730df3c87d5ac8"},
+ {file = "setproctitle-1.3.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4a6ba2494a6449b1f477bd3e67935c2b7b0274f2f6dcd0f7c6aceae10c6c6ba3"},
+ {file = "setproctitle-1.3.3-cp312-cp312-win32.whl", hash = "sha256:2df2b67e4b1d7498632e18c56722851ba4db5d6a0c91aaf0fd395111e51cdcf4"},
+ {file = "setproctitle-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:f38d48abc121263f3b62943f84cbaede05749047e428409c2c199664feb6abc7"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:816330675e3504ae4d9a2185c46b573105d2310c20b19ea2b4596a9460a4f674"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68f960bc22d8d8e4ac886d1e2e21ccbd283adcf3c43136161c1ba0fa509088e0"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00e6e7adff74796ef12753ff399491b8827f84f6c77659d71bd0b35870a17d8f"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53bc0d2358507596c22b02db079618451f3bd720755d88e3cccd840bafb4c41c"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad6d20f9541f5f6ac63df553b6d7a04f313947f550eab6a61aa758b45f0d5657"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c1c84beab776b0becaa368254801e57692ed749d935469ac10e2b9b825dbdd8e"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:507e8dc2891021350eaea40a44ddd887c9f006e6b599af8d64a505c0f718f170"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b1067647ac7aba0b44b591936118a22847bda3c507b0a42d74272256a7a798e9"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2e71f6365744bf53714e8bd2522b3c9c1d83f52ffa6324bd7cbb4da707312cd8"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-win32.whl", hash = "sha256:7f1d36a1e15a46e8ede4e953abb104fdbc0845a266ec0e99cc0492a4364f8c44"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-win_amd64.whl", hash = "sha256:c9a402881ec269d0cc9c354b149fc29f9ec1a1939a777f1c858cdb09c7a261df"},
+ {file = "setproctitle-1.3.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ff814dea1e5c492a4980e3e7d094286077054e7ea116cbeda138819db194b2cd"},
+ {file = "setproctitle-1.3.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:accb66d7b3ccb00d5cd11d8c6e07055a4568a24c95cf86109894dcc0c134cc89"},
+ {file = "setproctitle-1.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:554eae5a5b28f02705b83a230e9d163d645c9a08914c0ad921df363a07cf39b1"},
+ {file = "setproctitle-1.3.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a911b26264dbe9e8066c7531c0591cfab27b464459c74385b276fe487ca91c12"},
+ {file = "setproctitle-1.3.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2982efe7640c4835f7355fdb4da313ad37fb3b40f5c69069912f8048f77b28c8"},
+ {file = "setproctitle-1.3.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df3f4274b80709d8bcab2f9a862973d453b308b97a0b423a501bcd93582852e3"},
+ {file = "setproctitle-1.3.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:af2c67ae4c795d1674a8d3ac1988676fa306bcfa1e23fddb5e0bd5f5635309ca"},
+ {file = "setproctitle-1.3.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:af4061f67fd7ec01624c5e3c21f6b7af2ef0e6bab7fbb43f209e6506c9ce0092"},
+ {file = "setproctitle-1.3.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:37a62cbe16d4c6294e84670b59cf7adcc73faafe6af07f8cb9adaf1f0e775b19"},
+ {file = "setproctitle-1.3.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a83ca086fbb017f0d87f240a8f9bbcf0809f3b754ee01cec928fff926542c450"},
+ {file = "setproctitle-1.3.3-cp38-cp38-win32.whl", hash = "sha256:059f4ce86f8cc92e5860abfc43a1dceb21137b26a02373618d88f6b4b86ba9b2"},
+ {file = "setproctitle-1.3.3-cp38-cp38-win_amd64.whl", hash = "sha256:ab92e51cd4a218208efee4c6d37db7368fdf182f6e7ff148fb295ecddf264287"},
+ {file = "setproctitle-1.3.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c7951820b77abe03d88b114b998867c0f99da03859e5ab2623d94690848d3e45"},
+ {file = "setproctitle-1.3.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5bc94cf128676e8fac6503b37763adb378e2b6be1249d207630f83fc325d9b11"},
+ {file = "setproctitle-1.3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f5d9027eeda64d353cf21a3ceb74bb1760bd534526c9214e19f052424b37e42"},
+ {file = "setproctitle-1.3.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e4a8104db15d3462e29d9946f26bed817a5b1d7a47eabca2d9dc2b995991503"},
+ {file = "setproctitle-1.3.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c32c41ace41f344d317399efff4cffb133e709cec2ef09c99e7a13e9f3b9483c"},
+ {file = "setproctitle-1.3.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbf16381c7bf7f963b58fb4daaa65684e10966ee14d26f5cc90f07049bfd8c1e"},
+ {file = "setproctitle-1.3.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e18b7bd0898398cc97ce2dfc83bb192a13a087ef6b2d5a8a36460311cb09e775"},
+ {file = "setproctitle-1.3.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:69d565d20efe527bd8a9b92e7f299ae5e73b6c0470f3719bd66f3cd821e0d5bd"},
+ {file = "setproctitle-1.3.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:ddedd300cd690a3b06e7eac90ed4452348b1348635777ce23d460d913b5b63c3"},
+ {file = "setproctitle-1.3.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:415bfcfd01d1fbf5cbd75004599ef167a533395955305f42220a585f64036081"},
+ {file = "setproctitle-1.3.3-cp39-cp39-win32.whl", hash = "sha256:21112fcd2195d48f25760f0eafa7a76510871bbb3b750219310cf88b04456ae3"},
+ {file = "setproctitle-1.3.3-cp39-cp39-win_amd64.whl", hash = "sha256:5a740f05d0968a5a17da3d676ce6afefebeeeb5ce137510901bf6306ba8ee002"},
+ {file = "setproctitle-1.3.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6b9e62ddb3db4b5205c0321dd69a406d8af9ee1693529d144e86bd43bcb4b6c0"},
+ {file = "setproctitle-1.3.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e3b99b338598de0bd6b2643bf8c343cf5ff70db3627af3ca427a5e1a1a90dd9"},
+ {file = "setproctitle-1.3.3-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ae9a02766dad331deb06855fb7a6ca15daea333b3967e214de12cfae8f0ef5"},
+ {file = "setproctitle-1.3.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:200ede6fd11233085ba9b764eb055a2a191fb4ffb950c68675ac53c874c22e20"},
+ {file = "setproctitle-1.3.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0d3a953c50776751e80fe755a380a64cb14d61e8762bd43041ab3f8cc436092f"},
+ {file = "setproctitle-1.3.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5e08e232b78ba3ac6bc0d23ce9e2bee8fad2be391b7e2da834fc9a45129eb87"},
+ {file = "setproctitle-1.3.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1da82c3e11284da4fcbf54957dafbf0655d2389cd3d54e4eaba636faf6d117a"},
+ {file = "setproctitle-1.3.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:aeaa71fb9568ebe9b911ddb490c644fbd2006e8c940f21cb9a1e9425bd709574"},
+ {file = "setproctitle-1.3.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:59335d000c6250c35989394661eb6287187854e94ac79ea22315469ee4f4c244"},
+ {file = "setproctitle-1.3.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3ba57029c9c50ecaf0c92bb127224cc2ea9fda057b5d99d3f348c9ec2855ad3"},
+ {file = "setproctitle-1.3.3-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d876d355c53d975c2ef9c4f2487c8f83dad6aeaaee1b6571453cb0ee992f55f6"},
+ {file = "setproctitle-1.3.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:224602f0939e6fb9d5dd881be1229d485f3257b540f8a900d4271a2c2aa4e5f4"},
+ {file = "setproctitle-1.3.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d7f27e0268af2d7503386e0e6be87fb9b6657afd96f5726b733837121146750d"},
+ {file = "setproctitle-1.3.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5e7266498cd31a4572378c61920af9f6b4676a73c299fce8ba93afd694f8ae7"},
+ {file = "setproctitle-1.3.3-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33c5609ad51cd99d388e55651b19148ea99727516132fb44680e1f28dd0d1de9"},
+ {file = "setproctitle-1.3.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:eae8988e78192fd1a3245a6f4f382390b61bce6cfcc93f3809726e4c885fa68d"},
+ {file = "setproctitle-1.3.3.tar.gz", hash = "sha256:c913e151e7ea01567837ff037a23ca8740192880198b7fbb90b16d181607caae"},
]
[package.extras]
@@ -2564,24 +2698,26 @@ test = ["pytest"]
[[package]]
name = "setuptools"
-version = "68.0.0"
+version = "68.2.2"
description = "Easily download, build, install, upgrade, and uninstall Python packages"
+category = "dev"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"},
- {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"},
+ {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"},
+ {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"},
]
[package.extras]
-docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
-testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
-testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
+docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
+testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
+testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
[[package]]
name = "six"
version = "1.16.0"
description = "Python 2 and 3 compatibility utilities"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
@@ -2593,6 +2729,7 @@ files = [
name = "snick"
version = "1.3.0"
description = ""
+category = "main"
optional = false
python-versions = ">=3.6.2,<4.0.0"
files = [
@@ -2607,6 +2744,7 @@ pprintpp = ">=0.4.0,<0.5.0"
name = "sniffio"
version = "1.3.0"
description = "Sniff out which async library your code is running under"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -2618,6 +2756,7 @@ files = [
name = "snowballstemmer"
version = "2.2.0"
description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms."
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -2627,52 +2766,53 @@ files = [
[[package]]
name = "sqlalchemy"
-version = "2.0.19"
+version = "2.0.21"
description = "Database Abstraction Library"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "SQLAlchemy-2.0.19-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9deaae357edc2091a9ed5d25e9ee8bba98bcfae454b3911adeaf159c2e9ca9e3"},
- {file = "SQLAlchemy-2.0.19-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0bf0fd65b50a330261ec7fe3d091dfc1c577483c96a9fa1e4323e932961aa1b5"},
- {file = "SQLAlchemy-2.0.19-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d90ccc15ba1baa345796a8fb1965223ca7ded2d235ccbef80a47b85cea2d71a"},
- {file = "SQLAlchemy-2.0.19-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb4e688f6784427e5f9479d1a13617f573de8f7d4aa713ba82813bcd16e259d1"},
- {file = "SQLAlchemy-2.0.19-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:584f66e5e1979a7a00f4935015840be627e31ca29ad13f49a6e51e97a3fb8cae"},
- {file = "SQLAlchemy-2.0.19-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2c69ce70047b801d2aba3e5ff3cba32014558966109fecab0c39d16c18510f15"},
- {file = "SQLAlchemy-2.0.19-cp310-cp310-win32.whl", hash = "sha256:96f0463573469579d32ad0c91929548d78314ef95c210a8115346271beeeaaa2"},
- {file = "SQLAlchemy-2.0.19-cp310-cp310-win_amd64.whl", hash = "sha256:22bafb1da60c24514c141a7ff852b52f9f573fb933b1e6b5263f0daa28ce6db9"},
- {file = "SQLAlchemy-2.0.19-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d6894708eeb81f6d8193e996257223b6bb4041cb05a17cd5cf373ed836ef87a2"},
- {file = "SQLAlchemy-2.0.19-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8f2afd1aafded7362b397581772c670f20ea84d0a780b93a1a1529da7c3d369"},
- {file = "SQLAlchemy-2.0.19-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15afbf5aa76f2241184c1d3b61af1a72ba31ce4161013d7cb5c4c2fca04fd6e"},
- {file = "SQLAlchemy-2.0.19-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fc05b59142445a4efb9c1fd75c334b431d35c304b0e33f4fa0ff1ea4890f92e"},
- {file = "SQLAlchemy-2.0.19-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5831138f0cc06b43edf5f99541c64adf0ab0d41f9a4471fd63b54ae18399e4de"},
- {file = "SQLAlchemy-2.0.19-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3afa8a21a9046917b3a12ffe016ba7ebe7a55a6fc0c7d950beb303c735c3c3ad"},
- {file = "SQLAlchemy-2.0.19-cp311-cp311-win32.whl", hash = "sha256:c896d4e6ab2eba2afa1d56be3d0b936c56d4666e789bfc59d6ae76e9fcf46145"},
- {file = "SQLAlchemy-2.0.19-cp311-cp311-win_amd64.whl", hash = "sha256:024d2f67fb3ec697555e48caeb7147cfe2c08065a4f1a52d93c3d44fc8e6ad1c"},
- {file = "SQLAlchemy-2.0.19-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:89bc2b374ebee1a02fd2eae6fd0570b5ad897ee514e0f84c5c137c942772aa0c"},
- {file = "SQLAlchemy-2.0.19-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd4d410a76c3762511ae075d50f379ae09551d92525aa5bb307f8343bf7c2c12"},
- {file = "SQLAlchemy-2.0.19-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f469f15068cd8351826df4080ffe4cc6377c5bf7d29b5a07b0e717dddb4c7ea2"},
- {file = "SQLAlchemy-2.0.19-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cda283700c984e699e8ef0fcc5c61f00c9d14b6f65a4f2767c97242513fcdd84"},
- {file = "SQLAlchemy-2.0.19-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:43699eb3f80920cc39a380c159ae21c8a8924fe071bccb68fc509e099420b148"},
- {file = "SQLAlchemy-2.0.19-cp37-cp37m-win32.whl", hash = "sha256:61ada5831db36d897e28eb95f0f81814525e0d7927fb51145526c4e63174920b"},
- {file = "SQLAlchemy-2.0.19-cp37-cp37m-win_amd64.whl", hash = "sha256:57d100a421d9ab4874f51285c059003292433c648df6abe6c9c904e5bd5b0828"},
- {file = "SQLAlchemy-2.0.19-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:16a310f5bc75a5b2ce7cb656d0e76eb13440b8354f927ff15cbaddd2523ee2d1"},
- {file = "SQLAlchemy-2.0.19-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cf7b5e3856cbf1876da4e9d9715546fa26b6e0ba1a682d5ed2fc3ca4c7c3ec5b"},
- {file = "SQLAlchemy-2.0.19-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e7b69d9ced4b53310a87117824b23c509c6fc1f692aa7272d47561347e133b6"},
- {file = "SQLAlchemy-2.0.19-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f9eb4575bfa5afc4b066528302bf12083da3175f71b64a43a7c0badda2be365"},
- {file = "SQLAlchemy-2.0.19-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6b54d1ad7a162857bb7c8ef689049c7cd9eae2f38864fc096d62ae10bc100c7d"},
- {file = "SQLAlchemy-2.0.19-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5d6afc41ca0ecf373366fd8e10aee2797128d3ae45eb8467b19da4899bcd1ee0"},
- {file = "SQLAlchemy-2.0.19-cp38-cp38-win32.whl", hash = "sha256:430614f18443b58ceb9dedec323ecddc0abb2b34e79d03503b5a7579cd73a531"},
- {file = "SQLAlchemy-2.0.19-cp38-cp38-win_amd64.whl", hash = "sha256:eb60699de43ba1a1f77363f563bb2c652f7748127ba3a774f7cf2c7804aa0d3d"},
- {file = "SQLAlchemy-2.0.19-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a752b7a9aceb0ba173955d4f780c64ee15a1a991f1c52d307d6215c6c73b3a4c"},
- {file = "SQLAlchemy-2.0.19-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7351c05db355da112e056a7b731253cbeffab9dfdb3be1e895368513c7d70106"},
- {file = "SQLAlchemy-2.0.19-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa51ce4aea583b0c6b426f4b0563d3535c1c75986c4373a0987d84d22376585b"},
- {file = "SQLAlchemy-2.0.19-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae7473a67cd82a41decfea58c0eac581209a0aa30f8bc9190926fbf628bb17f7"},
- {file = "SQLAlchemy-2.0.19-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:851a37898a8a39783aab603c7348eb5b20d83c76a14766a43f56e6ad422d1ec8"},
- {file = "SQLAlchemy-2.0.19-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:539010665c90e60c4a1650afe4ab49ca100c74e6aef882466f1de6471d414be7"},
- {file = "SQLAlchemy-2.0.19-cp39-cp39-win32.whl", hash = "sha256:f82c310ddf97b04e1392c33cf9a70909e0ae10a7e2ddc1d64495e3abdc5d19fb"},
- {file = "SQLAlchemy-2.0.19-cp39-cp39-win_amd64.whl", hash = "sha256:8e712cfd2e07b801bc6b60fdf64853bc2bd0af33ca8fa46166a23fe11ce0dbb0"},
- {file = "SQLAlchemy-2.0.19-py3-none-any.whl", hash = "sha256:314145c1389b021a9ad5aa3a18bac6f5d939f9087d7fc5443be28cba19d2c972"},
- {file = "SQLAlchemy-2.0.19.tar.gz", hash = "sha256:77a14fa20264af73ddcdb1e2b9c5a829b8cc6b8304d0f093271980e36c200a3f"},
+ {file = "SQLAlchemy-2.0.21-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1e7dc99b23e33c71d720c4ae37ebb095bebebbd31a24b7d99dfc4753d2803ede"},
+ {file = "SQLAlchemy-2.0.21-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7f0c4ee579acfe6c994637527c386d1c22eb60bc1c1d36d940d8477e482095d4"},
+ {file = "SQLAlchemy-2.0.21-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f7d57a7e140efe69ce2d7b057c3f9a595f98d0bbdfc23fd055efdfbaa46e3a5"},
+ {file = "SQLAlchemy-2.0.21-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ca38746eac23dd7c20bec9278d2058c7ad662b2f1576e4c3dbfcd7c00cc48fa"},
+ {file = "SQLAlchemy-2.0.21-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3cf229704074bce31f7f47d12883afee3b0a02bb233a0ba45ddbfe542939cca4"},
+ {file = "SQLAlchemy-2.0.21-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fb87f763b5d04a82ae84ccff25554ffd903baafba6698e18ebaf32561f2fe4aa"},
+ {file = "SQLAlchemy-2.0.21-cp310-cp310-win32.whl", hash = "sha256:89e274604abb1a7fd5c14867a412c9d49c08ccf6ce3e1e04fffc068b5b6499d4"},
+ {file = "SQLAlchemy-2.0.21-cp310-cp310-win_amd64.whl", hash = "sha256:e36339a68126ffb708dc6d1948161cea2a9e85d7d7b0c54f6999853d70d44430"},
+ {file = "SQLAlchemy-2.0.21-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bf8eebccc66829010f06fbd2b80095d7872991bfe8415098b9fe47deaaa58063"},
+ {file = "SQLAlchemy-2.0.21-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b977bfce15afa53d9cf6a632482d7968477625f030d86a109f7bdfe8ce3c064a"},
+ {file = "SQLAlchemy-2.0.21-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ff3dc2f60dbf82c9e599c2915db1526d65415be323464f84de8db3e361ba5b9"},
+ {file = "SQLAlchemy-2.0.21-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44ac5c89b6896f4740e7091f4a0ff2e62881da80c239dd9408f84f75a293dae9"},
+ {file = "SQLAlchemy-2.0.21-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:87bf91ebf15258c4701d71dcdd9c4ba39521fb6a37379ea68088ce8cd869b446"},
+ {file = "SQLAlchemy-2.0.21-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b69f1f754d92eb1cc6b50938359dead36b96a1dcf11a8670bff65fd9b21a4b09"},
+ {file = "SQLAlchemy-2.0.21-cp311-cp311-win32.whl", hash = "sha256:af520a730d523eab77d754f5cf44cc7dd7ad2d54907adeb3233177eeb22f271b"},
+ {file = "SQLAlchemy-2.0.21-cp311-cp311-win_amd64.whl", hash = "sha256:141675dae56522126986fa4ca713739d00ed3a6f08f3c2eb92c39c6dfec463ce"},
+ {file = "SQLAlchemy-2.0.21-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7614f1eab4336df7dd6bee05bc974f2b02c38d3d0c78060c5faa4cd1ca2af3b8"},
+ {file = "SQLAlchemy-2.0.21-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d59cb9e20d79686aa473e0302e4a82882d7118744d30bb1dfb62d3c47141b3ec"},
+ {file = "SQLAlchemy-2.0.21-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a95aa0672e3065d43c8aa80080cdd5cc40fe92dc873749e6c1cf23914c4b83af"},
+ {file = "SQLAlchemy-2.0.21-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8c323813963b2503e54d0944813cd479c10c636e3ee223bcbd7bd478bf53c178"},
+ {file = "SQLAlchemy-2.0.21-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:419b1276b55925b5ac9b4c7044e999f1787c69761a3c9756dec6e5c225ceca01"},
+ {file = "SQLAlchemy-2.0.21-cp37-cp37m-win32.whl", hash = "sha256:4615623a490e46be85fbaa6335f35cf80e61df0783240afe7d4f544778c315a9"},
+ {file = "SQLAlchemy-2.0.21-cp37-cp37m-win_amd64.whl", hash = "sha256:cca720d05389ab1a5877ff05af96551e58ba65e8dc65582d849ac83ddde3e231"},
+ {file = "SQLAlchemy-2.0.21-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b4eae01faee9f2b17f08885e3f047153ae0416648f8e8c8bd9bc677c5ce64be9"},
+ {file = "SQLAlchemy-2.0.21-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3eb7c03fe1cd3255811cd4e74db1ab8dca22074d50cd8937edf4ef62d758cdf4"},
+ {file = "SQLAlchemy-2.0.21-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c2d494b6a2a2d05fb99f01b84cc9af9f5f93bf3e1e5dbdafe4bed0c2823584c1"},
+ {file = "SQLAlchemy-2.0.21-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b19ae41ef26c01a987e49e37c77b9ad060c59f94d3b3efdfdbf4f3daaca7b5fe"},
+ {file = "SQLAlchemy-2.0.21-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:fc6b15465fabccc94bf7e38777d665b6a4f95efd1725049d6184b3a39fd54880"},
+ {file = "SQLAlchemy-2.0.21-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:014794b60d2021cc8ae0f91d4d0331fe92691ae5467a00841f7130fe877b678e"},
+ {file = "SQLAlchemy-2.0.21-cp38-cp38-win32.whl", hash = "sha256:0268256a34806e5d1c8f7ee93277d7ea8cc8ae391f487213139018b6805aeaf6"},
+ {file = "SQLAlchemy-2.0.21-cp38-cp38-win_amd64.whl", hash = "sha256:73c079e21d10ff2be54a4699f55865d4b275fd6c8bd5d90c5b1ef78ae0197301"},
+ {file = "SQLAlchemy-2.0.21-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:785e2f2c1cb50d0a44e2cdeea5fd36b5bf2d79c481c10f3a88a8be4cfa2c4615"},
+ {file = "SQLAlchemy-2.0.21-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c111cd40910ffcb615b33605fc8f8e22146aeb7933d06569ac90f219818345ef"},
+ {file = "SQLAlchemy-2.0.21-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9cba4e7369de663611ce7460a34be48e999e0bbb1feb9130070f0685e9a6b66"},
+ {file = "SQLAlchemy-2.0.21-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50a69067af86ec7f11a8e50ba85544657b1477aabf64fa447fd3736b5a0a4f67"},
+ {file = "SQLAlchemy-2.0.21-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ccb99c3138c9bde118b51a289d90096a3791658da9aea1754667302ed6564f6e"},
+ {file = "SQLAlchemy-2.0.21-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:513fd5b6513d37e985eb5b7ed89da5fd9e72354e3523980ef00d439bc549c9e9"},
+ {file = "SQLAlchemy-2.0.21-cp39-cp39-win32.whl", hash = "sha256:f9fefd6298433b6e9188252f3bff53b9ff0443c8fde27298b8a2b19f6617eeb9"},
+ {file = "SQLAlchemy-2.0.21-cp39-cp39-win_amd64.whl", hash = "sha256:2e617727fe4091cedb3e4409b39368f424934c7faa78171749f704b49b4bb4ce"},
+ {file = "SQLAlchemy-2.0.21-py3-none-any.whl", hash = "sha256:ea7da25ee458d8f404b93eb073116156fd7d8c2a776d8311534851f28277b4ce"},
+ {file = "SQLAlchemy-2.0.21.tar.gz", hash = "sha256:05b971ab1ac2994a14c56b35eaaa91f86ba080e9ad481b20d99d77f381bb6258"},
]
[package.dependencies]
@@ -2681,7 +2821,7 @@ mypy = {version = ">=0.910", optional = true, markers = "extra == \"mypy\""}
typing-extensions = ">=4.2.0"
[package.extras]
-aiomysql = ["aiomysql", "greenlet (!=0.4.17)"]
+aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"]
aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"]
asyncio = ["greenlet (!=0.4.17)"]
asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
@@ -2708,6 +2848,7 @@ sqlcipher = ["sqlcipher3-binary"]
name = "sqlparse"
version = "0.4.4"
description = "A non-validating SQL parser."
+category = "dev"
optional = false
python-versions = ">=3.5"
files = [
@@ -2724,6 +2865,7 @@ test = ["pytest", "pytest-cov"]
name = "starkbank-ecdsa"
version = "2.2.0"
description = "A lightweight and fast pure python ECDSA library"
+category = "main"
optional = false
python-versions = "*"
files = [
@@ -2734,6 +2876,7 @@ files = [
name = "starlette"
version = "0.27.0"
description = "The little ASGI library that shines."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -2751,6 +2894,7 @@ full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyam
name = "tabulate"
version = "0.9.0"
description = "Pretty-print tabular data"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -2766,23 +2910,25 @@ widechars = ["wcwidth"]
[[package]]
name = "traitlets"
-version = "5.9.0"
+version = "5.11.2"
description = "Traitlets Python configuration system"
+category = "dev"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "traitlets-5.9.0-py3-none-any.whl", hash = "sha256:9e6ec080259b9a5940c797d58b613b5e31441c2257b87c2e795c5228ae80d2d8"},
- {file = "traitlets-5.9.0.tar.gz", hash = "sha256:f6cde21a9c68cf756af02035f72d5a723bf607e862e7be33ece505abf4a3bad9"},
+ {file = "traitlets-5.11.2-py3-none-any.whl", hash = "sha256:98277f247f18b2c5cabaf4af369187754f4fb0e85911d473f72329db8a7f4fae"},
+ {file = "traitlets-5.11.2.tar.gz", hash = "sha256:7564b5bf8d38c40fa45498072bf4dc5e8346eb087bbf1e2ae2d8774f6a0f078e"},
]
[package.extras]
docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
-test = ["argcomplete (>=2.0)", "pre-commit", "pytest", "pytest-mock"]
+test = ["argcomplete (>=3.0.3)", "mypy (>=1.5.1)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"]
[[package]]
name = "typer"
version = "0.4.2"
description = "Typer, build great CLIs. Easy to code. Based on Python type hints."
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -2801,13 +2947,14 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=5.2,<6.0)", "isort (>=5.0.6,<6.
[[package]]
name = "types-aioboto3"
-version = "11.2.0"
-description = "Type annotations for aioboto3 11.2.0 generated with mypy-boto3-builder 7.14.5"
+version = "11.3.0"
+description = "Type annotations for aioboto3 11.3.0 generated with mypy-boto3-builder 7.17.3"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "types-aioboto3-11.2.0.tar.gz", hash = "sha256:af4f6c1457723438218c10a8478cc81f045e695d1cab0798917c25607087b6e9"},
- {file = "types_aioboto3-11.2.0-py3-none-any.whl", hash = "sha256:189b206f08a587c6667c5d1134d9bb8707046ca835b099aef024047df130fb1c"},
+ {file = "types-aioboto3-11.3.0.tar.gz", hash = "sha256:96be008f9760295644d636a6ba172d0483f5fc163a3ca38f40c5d50e024ffeee"},
+ {file = "types_aioboto3-11.3.0-py3-none-any.whl", hash = "sha256:832c35c77488cda09f4c4a2a60ae0520ade524d02715d93e79702b5d16618866"},
]
[package.dependencies]
@@ -2827,9 +2974,9 @@ accessanalyzer = ["types-aiobotocore-accessanalyzer"]
account = ["types-aiobotocore-account"]
acm = ["types-aiobotocore-acm"]
acm-pca = ["types-aiobotocore-acm-pca"]
-aioboto3 = ["aioboto3 (==11.2.0)", "botocore (==1.29.76)"]
+aioboto3 = ["aioboto3 (==11.3.0)", "botocore (==1.31.17)"]
alexaforbusiness = ["types-aiobotocore-alexaforbusiness"]
-all = ["types-aiobotocore-accessanalyzer", "types-aiobotocore-account", "types-aiobotocore-acm", "types-aiobotocore-acm-pca", "types-aiobotocore-alexaforbusiness", "types-aiobotocore-amp", "types-aiobotocore-amplify", "types-aiobotocore-amplifybackend", "types-aiobotocore-amplifyuibuilder", "types-aiobotocore-apigateway", "types-aiobotocore-apigatewaymanagementapi", "types-aiobotocore-apigatewayv2", "types-aiobotocore-appconfig", "types-aiobotocore-appconfigdata", "types-aiobotocore-appflow", "types-aiobotocore-appintegrations", "types-aiobotocore-application-autoscaling", "types-aiobotocore-application-insights", "types-aiobotocore-applicationcostprofiler", "types-aiobotocore-appmesh", "types-aiobotocore-apprunner", "types-aiobotocore-appstream", "types-aiobotocore-appsync", "types-aiobotocore-arc-zonal-shift", "types-aiobotocore-athena", "types-aiobotocore-auditmanager", "types-aiobotocore-autoscaling", "types-aiobotocore-autoscaling-plans", "types-aiobotocore-backup", "types-aiobotocore-backup-gateway", "types-aiobotocore-backupstorage", "types-aiobotocore-batch", "types-aiobotocore-billingconductor", "types-aiobotocore-braket", "types-aiobotocore-budgets", "types-aiobotocore-ce", "types-aiobotocore-chime", "types-aiobotocore-chime-sdk-identity", "types-aiobotocore-chime-sdk-media-pipelines", "types-aiobotocore-chime-sdk-meetings", "types-aiobotocore-chime-sdk-messaging", "types-aiobotocore-chime-sdk-voice", "types-aiobotocore-cleanrooms", "types-aiobotocore-cloud9", "types-aiobotocore-cloudcontrol", "types-aiobotocore-clouddirectory", "types-aiobotocore-cloudformation", "types-aiobotocore-cloudfront", "types-aiobotocore-cloudhsm", "types-aiobotocore-cloudhsmv2", "types-aiobotocore-cloudsearch", "types-aiobotocore-cloudsearchdomain", "types-aiobotocore-cloudtrail", "types-aiobotocore-cloudtrail-data", "types-aiobotocore-cloudwatch", "types-aiobotocore-codeartifact", "types-aiobotocore-codebuild", "types-aiobotocore-codecatalyst", "types-aiobotocore-codecommit", "types-aiobotocore-codedeploy", "types-aiobotocore-codeguru-reviewer", "types-aiobotocore-codeguruprofiler", "types-aiobotocore-codepipeline", "types-aiobotocore-codestar", "types-aiobotocore-codestar-connections", "types-aiobotocore-codestar-notifications", "types-aiobotocore-cognito-identity", "types-aiobotocore-cognito-idp", "types-aiobotocore-cognito-sync", "types-aiobotocore-comprehend", "types-aiobotocore-comprehendmedical", "types-aiobotocore-compute-optimizer", "types-aiobotocore-config", "types-aiobotocore-connect", "types-aiobotocore-connect-contact-lens", "types-aiobotocore-connectcampaigns", "types-aiobotocore-connectcases", "types-aiobotocore-connectparticipant", "types-aiobotocore-controltower", "types-aiobotocore-cur", "types-aiobotocore-customer-profiles", "types-aiobotocore-databrew", "types-aiobotocore-dataexchange", "types-aiobotocore-datapipeline", "types-aiobotocore-datasync", "types-aiobotocore-dax", "types-aiobotocore-detective", "types-aiobotocore-devicefarm", "types-aiobotocore-devops-guru", "types-aiobotocore-directconnect", "types-aiobotocore-discovery", "types-aiobotocore-dlm", "types-aiobotocore-dms", "types-aiobotocore-docdb", "types-aiobotocore-docdb-elastic", "types-aiobotocore-drs", "types-aiobotocore-ds", "types-aiobotocore-dynamodb", "types-aiobotocore-dynamodbstreams", "types-aiobotocore-ebs", "types-aiobotocore-ec2", "types-aiobotocore-ec2-instance-connect", "types-aiobotocore-ecr", "types-aiobotocore-ecr-public", "types-aiobotocore-ecs", "types-aiobotocore-efs", "types-aiobotocore-eks", "types-aiobotocore-elastic-inference", "types-aiobotocore-elasticache", "types-aiobotocore-elasticbeanstalk", "types-aiobotocore-elastictranscoder", "types-aiobotocore-elb", "types-aiobotocore-elbv2", "types-aiobotocore-emr", "types-aiobotocore-emr-containers", "types-aiobotocore-emr-serverless", "types-aiobotocore-es", "types-aiobotocore-events", "types-aiobotocore-evidently", "types-aiobotocore-finspace", "types-aiobotocore-finspace-data", "types-aiobotocore-firehose", "types-aiobotocore-fis", "types-aiobotocore-fms", "types-aiobotocore-forecast", "types-aiobotocore-forecastquery", "types-aiobotocore-frauddetector", "types-aiobotocore-fsx", "types-aiobotocore-gamelift", "types-aiobotocore-gamesparks", "types-aiobotocore-glacier", "types-aiobotocore-globalaccelerator", "types-aiobotocore-glue", "types-aiobotocore-grafana", "types-aiobotocore-greengrass", "types-aiobotocore-greengrassv2", "types-aiobotocore-groundstation", "types-aiobotocore-guardduty", "types-aiobotocore-health", "types-aiobotocore-healthlake", "types-aiobotocore-honeycode", "types-aiobotocore-iam", "types-aiobotocore-identitystore", "types-aiobotocore-imagebuilder", "types-aiobotocore-importexport", "types-aiobotocore-inspector", "types-aiobotocore-inspector2", "types-aiobotocore-iot", "types-aiobotocore-iot-data", "types-aiobotocore-iot-jobs-data", "types-aiobotocore-iot-roborunner", "types-aiobotocore-iot1click-devices", "types-aiobotocore-iot1click-projects", "types-aiobotocore-iotanalytics", "types-aiobotocore-iotdeviceadvisor", "types-aiobotocore-iotevents", "types-aiobotocore-iotevents-data", "types-aiobotocore-iotfleethub", "types-aiobotocore-iotfleetwise", "types-aiobotocore-iotsecuretunneling", "types-aiobotocore-iotsitewise", "types-aiobotocore-iotthingsgraph", "types-aiobotocore-iottwinmaker", "types-aiobotocore-iotwireless", "types-aiobotocore-ivs", "types-aiobotocore-ivschat", "types-aiobotocore-kafka", "types-aiobotocore-kafkaconnect", "types-aiobotocore-kendra", "types-aiobotocore-kendra-ranking", "types-aiobotocore-keyspaces", "types-aiobotocore-kinesis", "types-aiobotocore-kinesis-video-archived-media", "types-aiobotocore-kinesis-video-media", "types-aiobotocore-kinesis-video-signaling", "types-aiobotocore-kinesis-video-webrtc-storage", "types-aiobotocore-kinesisanalytics", "types-aiobotocore-kinesisanalyticsv2", "types-aiobotocore-kinesisvideo", "types-aiobotocore-kms", "types-aiobotocore-lakeformation", "types-aiobotocore-lambda", "types-aiobotocore-lex-models", "types-aiobotocore-lex-runtime", "types-aiobotocore-lexv2-models", "types-aiobotocore-lexv2-runtime", "types-aiobotocore-license-manager", "types-aiobotocore-license-manager-linux-subscriptions", "types-aiobotocore-license-manager-user-subscriptions", "types-aiobotocore-lightsail", "types-aiobotocore-location", "types-aiobotocore-logs", "types-aiobotocore-lookoutequipment", "types-aiobotocore-lookoutmetrics", "types-aiobotocore-lookoutvision", "types-aiobotocore-m2", "types-aiobotocore-machinelearning", "types-aiobotocore-macie", "types-aiobotocore-macie2", "types-aiobotocore-managedblockchain", "types-aiobotocore-marketplace-catalog", "types-aiobotocore-marketplace-entitlement", "types-aiobotocore-marketplacecommerceanalytics", "types-aiobotocore-mediaconnect", "types-aiobotocore-mediaconvert", "types-aiobotocore-medialive", "types-aiobotocore-mediapackage", "types-aiobotocore-mediapackage-vod", "types-aiobotocore-mediastore", "types-aiobotocore-mediastore-data", "types-aiobotocore-mediatailor", "types-aiobotocore-memorydb", "types-aiobotocore-meteringmarketplace", "types-aiobotocore-mgh", "types-aiobotocore-mgn", "types-aiobotocore-migration-hub-refactor-spaces", "types-aiobotocore-migrationhub-config", "types-aiobotocore-migrationhuborchestrator", "types-aiobotocore-migrationhubstrategy", "types-aiobotocore-mobile", "types-aiobotocore-mq", "types-aiobotocore-mturk", "types-aiobotocore-mwaa", "types-aiobotocore-neptune", "types-aiobotocore-network-firewall", "types-aiobotocore-networkmanager", "types-aiobotocore-nimble", "types-aiobotocore-oam", "types-aiobotocore-omics", "types-aiobotocore-opensearch", "types-aiobotocore-opensearchserverless", "types-aiobotocore-opsworks", "types-aiobotocore-opsworkscm", "types-aiobotocore-organizations", "types-aiobotocore-outposts", "types-aiobotocore-panorama", "types-aiobotocore-personalize", "types-aiobotocore-personalize-events", "types-aiobotocore-personalize-runtime", "types-aiobotocore-pi", "types-aiobotocore-pinpoint", "types-aiobotocore-pinpoint-email", "types-aiobotocore-pinpoint-sms-voice", "types-aiobotocore-pinpoint-sms-voice-v2", "types-aiobotocore-pipes", "types-aiobotocore-polly", "types-aiobotocore-pricing", "types-aiobotocore-privatenetworks", "types-aiobotocore-proton", "types-aiobotocore-qldb", "types-aiobotocore-qldb-session", "types-aiobotocore-quicksight", "types-aiobotocore-ram", "types-aiobotocore-rbin", "types-aiobotocore-rds", "types-aiobotocore-rds-data", "types-aiobotocore-redshift", "types-aiobotocore-redshift-data", "types-aiobotocore-redshift-serverless", "types-aiobotocore-rekognition", "types-aiobotocore-resiliencehub", "types-aiobotocore-resource-explorer-2", "types-aiobotocore-resource-groups", "types-aiobotocore-resourcegroupstaggingapi", "types-aiobotocore-robomaker", "types-aiobotocore-rolesanywhere", "types-aiobotocore-route53", "types-aiobotocore-route53-recovery-cluster", "types-aiobotocore-route53-recovery-control-config", "types-aiobotocore-route53-recovery-readiness", "types-aiobotocore-route53domains", "types-aiobotocore-route53resolver", "types-aiobotocore-rum", "types-aiobotocore-s3", "types-aiobotocore-s3control", "types-aiobotocore-s3outposts", "types-aiobotocore-sagemaker", "types-aiobotocore-sagemaker-a2i-runtime", "types-aiobotocore-sagemaker-edge", "types-aiobotocore-sagemaker-featurestore-runtime", "types-aiobotocore-sagemaker-geospatial", "types-aiobotocore-sagemaker-metrics", "types-aiobotocore-sagemaker-runtime", "types-aiobotocore-savingsplans", "types-aiobotocore-scheduler", "types-aiobotocore-schemas", "types-aiobotocore-sdb", "types-aiobotocore-secretsmanager", "types-aiobotocore-securityhub", "types-aiobotocore-securitylake", "types-aiobotocore-serverlessrepo", "types-aiobotocore-service-quotas", "types-aiobotocore-servicecatalog", "types-aiobotocore-servicecatalog-appregistry", "types-aiobotocore-servicediscovery", "types-aiobotocore-ses", "types-aiobotocore-sesv2", "types-aiobotocore-shield", "types-aiobotocore-signer", "types-aiobotocore-simspaceweaver", "types-aiobotocore-sms", "types-aiobotocore-sms-voice", "types-aiobotocore-snow-device-management", "types-aiobotocore-snowball", "types-aiobotocore-sns", "types-aiobotocore-sqs", "types-aiobotocore-ssm", "types-aiobotocore-ssm-contacts", "types-aiobotocore-ssm-incidents", "types-aiobotocore-ssm-sap", "types-aiobotocore-sso", "types-aiobotocore-sso-admin", "types-aiobotocore-sso-oidc", "types-aiobotocore-stepfunctions", "types-aiobotocore-storagegateway", "types-aiobotocore-sts", "types-aiobotocore-support", "types-aiobotocore-support-app", "types-aiobotocore-swf", "types-aiobotocore-synthetics", "types-aiobotocore-textract", "types-aiobotocore-timestream-query", "types-aiobotocore-timestream-write", "types-aiobotocore-tnb", "types-aiobotocore-transcribe", "types-aiobotocore-transfer", "types-aiobotocore-translate", "types-aiobotocore-voice-id", "types-aiobotocore-waf", "types-aiobotocore-waf-regional", "types-aiobotocore-wafv2", "types-aiobotocore-wellarchitected", "types-aiobotocore-wisdom", "types-aiobotocore-workdocs", "types-aiobotocore-worklink", "types-aiobotocore-workmail", "types-aiobotocore-workmailmessageflow", "types-aiobotocore-workspaces", "types-aiobotocore-workspaces-web", "types-aiobotocore-xray"]
+all = ["types-aiobotocore-accessanalyzer", "types-aiobotocore-account", "types-aiobotocore-acm", "types-aiobotocore-acm-pca", "types-aiobotocore-alexaforbusiness", "types-aiobotocore-amp", "types-aiobotocore-amplify", "types-aiobotocore-amplifybackend", "types-aiobotocore-amplifyuibuilder", "types-aiobotocore-apigateway", "types-aiobotocore-apigatewaymanagementapi", "types-aiobotocore-apigatewayv2", "types-aiobotocore-appconfig", "types-aiobotocore-appconfigdata", "types-aiobotocore-appfabric", "types-aiobotocore-appflow", "types-aiobotocore-appintegrations", "types-aiobotocore-application-autoscaling", "types-aiobotocore-application-insights", "types-aiobotocore-applicationcostprofiler", "types-aiobotocore-appmesh", "types-aiobotocore-apprunner", "types-aiobotocore-appstream", "types-aiobotocore-appsync", "types-aiobotocore-arc-zonal-shift", "types-aiobotocore-athena", "types-aiobotocore-auditmanager", "types-aiobotocore-autoscaling", "types-aiobotocore-autoscaling-plans", "types-aiobotocore-backup", "types-aiobotocore-backup-gateway", "types-aiobotocore-backupstorage", "types-aiobotocore-batch", "types-aiobotocore-billingconductor", "types-aiobotocore-braket", "types-aiobotocore-budgets", "types-aiobotocore-ce", "types-aiobotocore-chime", "types-aiobotocore-chime-sdk-identity", "types-aiobotocore-chime-sdk-media-pipelines", "types-aiobotocore-chime-sdk-meetings", "types-aiobotocore-chime-sdk-messaging", "types-aiobotocore-chime-sdk-voice", "types-aiobotocore-cleanrooms", "types-aiobotocore-cloud9", "types-aiobotocore-cloudcontrol", "types-aiobotocore-clouddirectory", "types-aiobotocore-cloudformation", "types-aiobotocore-cloudfront", "types-aiobotocore-cloudhsm", "types-aiobotocore-cloudhsmv2", "types-aiobotocore-cloudsearch", "types-aiobotocore-cloudsearchdomain", "types-aiobotocore-cloudtrail", "types-aiobotocore-cloudtrail-data", "types-aiobotocore-cloudwatch", "types-aiobotocore-codeartifact", "types-aiobotocore-codebuild", "types-aiobotocore-codecatalyst", "types-aiobotocore-codecommit", "types-aiobotocore-codedeploy", "types-aiobotocore-codeguru-reviewer", "types-aiobotocore-codeguru-security", "types-aiobotocore-codeguruprofiler", "types-aiobotocore-codepipeline", "types-aiobotocore-codestar", "types-aiobotocore-codestar-connections", "types-aiobotocore-codestar-notifications", "types-aiobotocore-cognito-identity", "types-aiobotocore-cognito-idp", "types-aiobotocore-cognito-sync", "types-aiobotocore-comprehend", "types-aiobotocore-comprehendmedical", "types-aiobotocore-compute-optimizer", "types-aiobotocore-config", "types-aiobotocore-connect", "types-aiobotocore-connect-contact-lens", "types-aiobotocore-connectcampaigns", "types-aiobotocore-connectcases", "types-aiobotocore-connectparticipant", "types-aiobotocore-controltower", "types-aiobotocore-cur", "types-aiobotocore-customer-profiles", "types-aiobotocore-databrew", "types-aiobotocore-dataexchange", "types-aiobotocore-datapipeline", "types-aiobotocore-datasync", "types-aiobotocore-dax", "types-aiobotocore-detective", "types-aiobotocore-devicefarm", "types-aiobotocore-devops-guru", "types-aiobotocore-directconnect", "types-aiobotocore-discovery", "types-aiobotocore-dlm", "types-aiobotocore-dms", "types-aiobotocore-docdb", "types-aiobotocore-docdb-elastic", "types-aiobotocore-drs", "types-aiobotocore-ds", "types-aiobotocore-dynamodb", "types-aiobotocore-dynamodbstreams", "types-aiobotocore-ebs", "types-aiobotocore-ec2", "types-aiobotocore-ec2-instance-connect", "types-aiobotocore-ecr", "types-aiobotocore-ecr-public", "types-aiobotocore-ecs", "types-aiobotocore-efs", "types-aiobotocore-eks", "types-aiobotocore-elastic-inference", "types-aiobotocore-elasticache", "types-aiobotocore-elasticbeanstalk", "types-aiobotocore-elastictranscoder", "types-aiobotocore-elb", "types-aiobotocore-elbv2", "types-aiobotocore-emr", "types-aiobotocore-emr-containers", "types-aiobotocore-emr-serverless", "types-aiobotocore-entityresolution", "types-aiobotocore-es", "types-aiobotocore-events", "types-aiobotocore-evidently", "types-aiobotocore-finspace", "types-aiobotocore-finspace-data", "types-aiobotocore-firehose", "types-aiobotocore-fis", "types-aiobotocore-fms", "types-aiobotocore-forecast", "types-aiobotocore-forecastquery", "types-aiobotocore-frauddetector", "types-aiobotocore-fsx", "types-aiobotocore-gamelift", "types-aiobotocore-gamesparks", "types-aiobotocore-glacier", "types-aiobotocore-globalaccelerator", "types-aiobotocore-glue", "types-aiobotocore-grafana", "types-aiobotocore-greengrass", "types-aiobotocore-greengrassv2", "types-aiobotocore-groundstation", "types-aiobotocore-guardduty", "types-aiobotocore-health", "types-aiobotocore-healthlake", "types-aiobotocore-honeycode", "types-aiobotocore-iam", "types-aiobotocore-identitystore", "types-aiobotocore-imagebuilder", "types-aiobotocore-importexport", "types-aiobotocore-inspector", "types-aiobotocore-inspector2", "types-aiobotocore-internetmonitor", "types-aiobotocore-iot", "types-aiobotocore-iot-data", "types-aiobotocore-iot-jobs-data", "types-aiobotocore-iot-roborunner", "types-aiobotocore-iot1click-devices", "types-aiobotocore-iot1click-projects", "types-aiobotocore-iotanalytics", "types-aiobotocore-iotdeviceadvisor", "types-aiobotocore-iotevents", "types-aiobotocore-iotevents-data", "types-aiobotocore-iotfleethub", "types-aiobotocore-iotfleetwise", "types-aiobotocore-iotsecuretunneling", "types-aiobotocore-iotsitewise", "types-aiobotocore-iotthingsgraph", "types-aiobotocore-iottwinmaker", "types-aiobotocore-iotwireless", "types-aiobotocore-ivs", "types-aiobotocore-ivs-realtime", "types-aiobotocore-ivschat", "types-aiobotocore-kafka", "types-aiobotocore-kafkaconnect", "types-aiobotocore-kendra", "types-aiobotocore-kendra-ranking", "types-aiobotocore-keyspaces", "types-aiobotocore-kinesis", "types-aiobotocore-kinesis-video-archived-media", "types-aiobotocore-kinesis-video-media", "types-aiobotocore-kinesis-video-signaling", "types-aiobotocore-kinesis-video-webrtc-storage", "types-aiobotocore-kinesisanalytics", "types-aiobotocore-kinesisanalyticsv2", "types-aiobotocore-kinesisvideo", "types-aiobotocore-kms", "types-aiobotocore-lakeformation", "types-aiobotocore-lambda", "types-aiobotocore-lex-models", "types-aiobotocore-lex-runtime", "types-aiobotocore-lexv2-models", "types-aiobotocore-lexv2-runtime", "types-aiobotocore-license-manager", "types-aiobotocore-license-manager-linux-subscriptions", "types-aiobotocore-license-manager-user-subscriptions", "types-aiobotocore-lightsail", "types-aiobotocore-location", "types-aiobotocore-logs", "types-aiobotocore-lookoutequipment", "types-aiobotocore-lookoutmetrics", "types-aiobotocore-lookoutvision", "types-aiobotocore-m2", "types-aiobotocore-machinelearning", "types-aiobotocore-macie", "types-aiobotocore-macie2", "types-aiobotocore-managedblockchain", "types-aiobotocore-managedblockchain-query", "types-aiobotocore-marketplace-catalog", "types-aiobotocore-marketplace-entitlement", "types-aiobotocore-marketplacecommerceanalytics", "types-aiobotocore-mediaconnect", "types-aiobotocore-mediaconvert", "types-aiobotocore-medialive", "types-aiobotocore-mediapackage", "types-aiobotocore-mediapackage-vod", "types-aiobotocore-mediapackagev2", "types-aiobotocore-mediastore", "types-aiobotocore-mediastore-data", "types-aiobotocore-mediatailor", "types-aiobotocore-medical-imaging", "types-aiobotocore-memorydb", "types-aiobotocore-meteringmarketplace", "types-aiobotocore-mgh", "types-aiobotocore-mgn", "types-aiobotocore-migration-hub-refactor-spaces", "types-aiobotocore-migrationhub-config", "types-aiobotocore-migrationhuborchestrator", "types-aiobotocore-migrationhubstrategy", "types-aiobotocore-mobile", "types-aiobotocore-mq", "types-aiobotocore-mturk", "types-aiobotocore-mwaa", "types-aiobotocore-neptune", "types-aiobotocore-network-firewall", "types-aiobotocore-networkmanager", "types-aiobotocore-nimble", "types-aiobotocore-oam", "types-aiobotocore-omics", "types-aiobotocore-opensearch", "types-aiobotocore-opensearchserverless", "types-aiobotocore-opsworks", "types-aiobotocore-opsworkscm", "types-aiobotocore-organizations", "types-aiobotocore-osis", "types-aiobotocore-outposts", "types-aiobotocore-panorama", "types-aiobotocore-payment-cryptography", "types-aiobotocore-payment-cryptography-data", "types-aiobotocore-personalize", "types-aiobotocore-personalize-events", "types-aiobotocore-personalize-runtime", "types-aiobotocore-pi", "types-aiobotocore-pinpoint", "types-aiobotocore-pinpoint-email", "types-aiobotocore-pinpoint-sms-voice", "types-aiobotocore-pinpoint-sms-voice-v2", "types-aiobotocore-pipes", "types-aiobotocore-polly", "types-aiobotocore-pricing", "types-aiobotocore-privatenetworks", "types-aiobotocore-proton", "types-aiobotocore-qldb", "types-aiobotocore-qldb-session", "types-aiobotocore-quicksight", "types-aiobotocore-ram", "types-aiobotocore-rbin", "types-aiobotocore-rds", "types-aiobotocore-rds-data", "types-aiobotocore-redshift", "types-aiobotocore-redshift-data", "types-aiobotocore-redshift-serverless", "types-aiobotocore-rekognition", "types-aiobotocore-resiliencehub", "types-aiobotocore-resource-explorer-2", "types-aiobotocore-resource-groups", "types-aiobotocore-resourcegroupstaggingapi", "types-aiobotocore-robomaker", "types-aiobotocore-rolesanywhere", "types-aiobotocore-route53", "types-aiobotocore-route53-recovery-cluster", "types-aiobotocore-route53-recovery-control-config", "types-aiobotocore-route53-recovery-readiness", "types-aiobotocore-route53domains", "types-aiobotocore-route53resolver", "types-aiobotocore-rum", "types-aiobotocore-s3", "types-aiobotocore-s3control", "types-aiobotocore-s3outposts", "types-aiobotocore-sagemaker", "types-aiobotocore-sagemaker-a2i-runtime", "types-aiobotocore-sagemaker-edge", "types-aiobotocore-sagemaker-featurestore-runtime", "types-aiobotocore-sagemaker-geospatial", "types-aiobotocore-sagemaker-metrics", "types-aiobotocore-sagemaker-runtime", "types-aiobotocore-savingsplans", "types-aiobotocore-scheduler", "types-aiobotocore-schemas", "types-aiobotocore-sdb", "types-aiobotocore-secretsmanager", "types-aiobotocore-securityhub", "types-aiobotocore-securitylake", "types-aiobotocore-serverlessrepo", "types-aiobotocore-service-quotas", "types-aiobotocore-servicecatalog", "types-aiobotocore-servicecatalog-appregistry", "types-aiobotocore-servicediscovery", "types-aiobotocore-ses", "types-aiobotocore-sesv2", "types-aiobotocore-shield", "types-aiobotocore-signer", "types-aiobotocore-simspaceweaver", "types-aiobotocore-sms", "types-aiobotocore-sms-voice", "types-aiobotocore-snow-device-management", "types-aiobotocore-snowball", "types-aiobotocore-sns", "types-aiobotocore-sqs", "types-aiobotocore-ssm", "types-aiobotocore-ssm-contacts", "types-aiobotocore-ssm-incidents", "types-aiobotocore-ssm-sap", "types-aiobotocore-sso", "types-aiobotocore-sso-admin", "types-aiobotocore-sso-oidc", "types-aiobotocore-stepfunctions", "types-aiobotocore-storagegateway", "types-aiobotocore-sts", "types-aiobotocore-support", "types-aiobotocore-support-app", "types-aiobotocore-swf", "types-aiobotocore-synthetics", "types-aiobotocore-textract", "types-aiobotocore-timestream-query", "types-aiobotocore-timestream-write", "types-aiobotocore-tnb", "types-aiobotocore-transcribe", "types-aiobotocore-transfer", "types-aiobotocore-translate", "types-aiobotocore-verifiedpermissions", "types-aiobotocore-voice-id", "types-aiobotocore-vpc-lattice", "types-aiobotocore-waf", "types-aiobotocore-waf-regional", "types-aiobotocore-wafv2", "types-aiobotocore-wellarchitected", "types-aiobotocore-wisdom", "types-aiobotocore-workdocs", "types-aiobotocore-worklink", "types-aiobotocore-workmail", "types-aiobotocore-workmailmessageflow", "types-aiobotocore-workspaces", "types-aiobotocore-workspaces-web", "types-aiobotocore-xray"]
amp = ["types-aiobotocore-amp"]
amplify = ["types-aiobotocore-amplify"]
amplifybackend = ["types-aiobotocore-amplifybackend"]
@@ -2839,6 +2986,7 @@ apigatewaymanagementapi = ["types-aiobotocore-apigatewaymanagementapi"]
apigatewayv2 = ["types-aiobotocore-apigatewayv2"]
appconfig = ["types-aiobotocore-appconfig"]
appconfigdata = ["types-aiobotocore-appconfigdata"]
+appfabric = ["types-aiobotocore-appfabric"]
appflow = ["types-aiobotocore-appflow"]
appintegrations = ["types-aiobotocore-appintegrations"]
application-autoscaling = ["types-aiobotocore-application-autoscaling"]
@@ -2886,6 +3034,7 @@ codecatalyst = ["types-aiobotocore-codecatalyst"]
codecommit = ["types-aiobotocore-codecommit"]
codedeploy = ["types-aiobotocore-codedeploy"]
codeguru-reviewer = ["types-aiobotocore-codeguru-reviewer"]
+codeguru-security = ["types-aiobotocore-codeguru-security"]
codeguruprofiler = ["types-aiobotocore-codeguruprofiler"]
codepipeline = ["types-aiobotocore-codepipeline"]
codestar = ["types-aiobotocore-codestar"]
@@ -2941,6 +3090,7 @@ elbv2 = ["types-aiobotocore-elbv2"]
emr = ["types-aiobotocore-emr"]
emr-containers = ["types-aiobotocore-emr-containers"]
emr-serverless = ["types-aiobotocore-emr-serverless"]
+entityresolution = ["types-aiobotocore-entityresolution"]
es = ["types-aiobotocore-es"]
essential = ["types-aiobotocore-cloudformation", "types-aiobotocore-dynamodb", "types-aiobotocore-ec2", "types-aiobotocore-lambda", "types-aiobotocore-rds", "types-aiobotocore-s3", "types-aiobotocore-sqs"]
events = ["types-aiobotocore-events"]
@@ -2973,6 +3123,7 @@ imagebuilder = ["types-aiobotocore-imagebuilder"]
importexport = ["types-aiobotocore-importexport"]
inspector = ["types-aiobotocore-inspector"]
inspector2 = ["types-aiobotocore-inspector2"]
+internetmonitor = ["types-aiobotocore-internetmonitor"]
iot = ["types-aiobotocore-iot"]
iot-data = ["types-aiobotocore-iot-data"]
iot-jobs-data = ["types-aiobotocore-iot-jobs-data"]
@@ -2991,6 +3142,7 @@ iotthingsgraph = ["types-aiobotocore-iotthingsgraph"]
iottwinmaker = ["types-aiobotocore-iottwinmaker"]
iotwireless = ["types-aiobotocore-iotwireless"]
ivs = ["types-aiobotocore-ivs"]
+ivs-realtime = ["types-aiobotocore-ivs-realtime"]
ivschat = ["types-aiobotocore-ivschat"]
kafka = ["types-aiobotocore-kafka"]
kafkaconnect = ["types-aiobotocore-kafkaconnect"]
@@ -3026,6 +3178,7 @@ machinelearning = ["types-aiobotocore-machinelearning"]
macie = ["types-aiobotocore-macie"]
macie2 = ["types-aiobotocore-macie2"]
managedblockchain = ["types-aiobotocore-managedblockchain"]
+managedblockchain-query = ["types-aiobotocore-managedblockchain-query"]
marketplace-catalog = ["types-aiobotocore-marketplace-catalog"]
marketplace-entitlement = ["types-aiobotocore-marketplace-entitlement"]
marketplacecommerceanalytics = ["types-aiobotocore-marketplacecommerceanalytics"]
@@ -3034,9 +3187,11 @@ mediaconvert = ["types-aiobotocore-mediaconvert"]
medialive = ["types-aiobotocore-medialive"]
mediapackage = ["types-aiobotocore-mediapackage"]
mediapackage-vod = ["types-aiobotocore-mediapackage-vod"]
+mediapackagev2 = ["types-aiobotocore-mediapackagev2"]
mediastore = ["types-aiobotocore-mediastore"]
mediastore-data = ["types-aiobotocore-mediastore-data"]
mediatailor = ["types-aiobotocore-mediatailor"]
+medical-imaging = ["types-aiobotocore-medical-imaging"]
memorydb = ["types-aiobotocore-memorydb"]
meteringmarketplace = ["types-aiobotocore-meteringmarketplace"]
mgh = ["types-aiobotocore-mgh"]
@@ -3060,8 +3215,11 @@ opensearchserverless = ["types-aiobotocore-opensearchserverless"]
opsworks = ["types-aiobotocore-opsworks"]
opsworkscm = ["types-aiobotocore-opsworkscm"]
organizations = ["types-aiobotocore-organizations"]
+osis = ["types-aiobotocore-osis"]
outposts = ["types-aiobotocore-outposts"]
panorama = ["types-aiobotocore-panorama"]
+payment-cryptography = ["types-aiobotocore-payment-cryptography"]
+payment-cryptography-data = ["types-aiobotocore-payment-cryptography-data"]
personalize = ["types-aiobotocore-personalize"]
personalize-events = ["types-aiobotocore-personalize-events"]
personalize-runtime = ["types-aiobotocore-personalize-runtime"]
@@ -3153,7 +3311,9 @@ tnb = ["types-aiobotocore-tnb"]
transcribe = ["types-aiobotocore-transcribe"]
transfer = ["types-aiobotocore-transfer"]
translate = ["types-aiobotocore-translate"]
+verifiedpermissions = ["types-aiobotocore-verifiedpermissions"]
voice-id = ["types-aiobotocore-voice-id"]
+vpc-lattice = ["types-aiobotocore-vpc-lattice"]
waf = ["types-aiobotocore-waf"]
waf-regional = ["types-aiobotocore-waf-regional"]
wafv2 = ["types-aiobotocore-wafv2"]
@@ -3169,482 +3329,490 @@ xray = ["types-aiobotocore-xray"]
[[package]]
name = "types-aiobotocore"
-version = "2.5.4"
-description = "Type annotations for aiobotocore 2.5.4 generated with mypy-boto3-builder 7.17.2"
+version = "2.6.0"
+description = "Type annotations for aiobotocore 2.6.0 generated with mypy-boto3-builder 7.17.2"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "types-aiobotocore-2.5.4.tar.gz", hash = "sha256:202cbeee401a8e3a269181928a07fe7e2a4a5b1b7e5715aba93443ecae584fd9"},
- {file = "types_aiobotocore-2.5.4-py3-none-any.whl", hash = "sha256:28e28227a130093468fb5f0b8005467fd52841c26d2a3d1f5975ea9655f69427"},
+ {file = "types-aiobotocore-2.6.0.tar.gz", hash = "sha256:185dd80eeca19c4c742693b153fb5102716efbdf29d131793425350979d1d9b1"},
+ {file = "types_aiobotocore-2.6.0-py3-none-any.whl", hash = "sha256:9cd7dd5e9f46aea4232e0811470b3aed8861508dedb750ba9d9b58db590a5df9"},
]
[package.dependencies]
botocore-stubs = "*"
[package.extras]
-accessanalyzer = ["types-aiobotocore-accessanalyzer (>=2.5.0,<2.6.0)"]
-account = ["types-aiobotocore-account (>=2.5.0,<2.6.0)"]
-acm = ["types-aiobotocore-acm (>=2.5.0,<2.6.0)"]
-acm-pca = ["types-aiobotocore-acm-pca (>=2.5.0,<2.6.0)"]
-aiobotocore = ["aiobotocore (==2.5.4)", "botocore (==1.31.17)"]
-alexaforbusiness = ["types-aiobotocore-alexaforbusiness (>=2.5.0,<2.6.0)"]
-all = ["types-aiobotocore-accessanalyzer (>=2.5.0,<2.6.0)", "types-aiobotocore-account (>=2.5.0,<2.6.0)", "types-aiobotocore-acm (>=2.5.0,<2.6.0)", "types-aiobotocore-acm-pca (>=2.5.0,<2.6.0)", "types-aiobotocore-alexaforbusiness (>=2.5.0,<2.6.0)", "types-aiobotocore-amp (>=2.5.0,<2.6.0)", "types-aiobotocore-amplify (>=2.5.0,<2.6.0)", "types-aiobotocore-amplifybackend (>=2.5.0,<2.6.0)", "types-aiobotocore-amplifyuibuilder (>=2.5.0,<2.6.0)", "types-aiobotocore-apigateway (>=2.5.0,<2.6.0)", "types-aiobotocore-apigatewaymanagementapi (>=2.5.0,<2.6.0)", "types-aiobotocore-apigatewayv2 (>=2.5.0,<2.6.0)", "types-aiobotocore-appconfig (>=2.5.0,<2.6.0)", "types-aiobotocore-appconfigdata (>=2.5.0,<2.6.0)", "types-aiobotocore-appfabric (>=2.5.0,<2.6.0)", "types-aiobotocore-appflow (>=2.5.0,<2.6.0)", "types-aiobotocore-appintegrations (>=2.5.0,<2.6.0)", "types-aiobotocore-application-autoscaling (>=2.5.0,<2.6.0)", "types-aiobotocore-application-insights (>=2.5.0,<2.6.0)", "types-aiobotocore-applicationcostprofiler (>=2.5.0,<2.6.0)", "types-aiobotocore-appmesh (>=2.5.0,<2.6.0)", "types-aiobotocore-apprunner (>=2.5.0,<2.6.0)", "types-aiobotocore-appstream (>=2.5.0,<2.6.0)", "types-aiobotocore-appsync (>=2.5.0,<2.6.0)", "types-aiobotocore-arc-zonal-shift (>=2.5.0,<2.6.0)", "types-aiobotocore-athena (>=2.5.0,<2.6.0)", "types-aiobotocore-auditmanager (>=2.5.0,<2.6.0)", "types-aiobotocore-autoscaling (>=2.5.0,<2.6.0)", "types-aiobotocore-autoscaling-plans (>=2.5.0,<2.6.0)", "types-aiobotocore-backup (>=2.5.0,<2.6.0)", "types-aiobotocore-backup-gateway (>=2.5.0,<2.6.0)", "types-aiobotocore-backupstorage (>=2.5.0,<2.6.0)", "types-aiobotocore-batch (>=2.5.0,<2.6.0)", "types-aiobotocore-billingconductor (>=2.5.0,<2.6.0)", "types-aiobotocore-braket (>=2.5.0,<2.6.0)", "types-aiobotocore-budgets (>=2.5.0,<2.6.0)", "types-aiobotocore-ce (>=2.5.0,<2.6.0)", "types-aiobotocore-chime (>=2.5.0,<2.6.0)", "types-aiobotocore-chime-sdk-identity (>=2.5.0,<2.6.0)", "types-aiobotocore-chime-sdk-media-pipelines (>=2.5.0,<2.6.0)", "types-aiobotocore-chime-sdk-meetings (>=2.5.0,<2.6.0)", "types-aiobotocore-chime-sdk-messaging (>=2.5.0,<2.6.0)", "types-aiobotocore-chime-sdk-voice (>=2.5.0,<2.6.0)", "types-aiobotocore-cleanrooms (>=2.5.0,<2.6.0)", "types-aiobotocore-cloud9 (>=2.5.0,<2.6.0)", "types-aiobotocore-cloudcontrol (>=2.5.0,<2.6.0)", "types-aiobotocore-clouddirectory (>=2.5.0,<2.6.0)", "types-aiobotocore-cloudformation (>=2.5.0,<2.6.0)", "types-aiobotocore-cloudfront (>=2.5.0,<2.6.0)", "types-aiobotocore-cloudhsm (>=2.5.0,<2.6.0)", "types-aiobotocore-cloudhsmv2 (>=2.5.0,<2.6.0)", "types-aiobotocore-cloudsearch (>=2.5.0,<2.6.0)", "types-aiobotocore-cloudsearchdomain (>=2.5.0,<2.6.0)", "types-aiobotocore-cloudtrail (>=2.5.0,<2.6.0)", "types-aiobotocore-cloudtrail-data (>=2.5.0,<2.6.0)", "types-aiobotocore-cloudwatch (>=2.5.0,<2.6.0)", "types-aiobotocore-codeartifact (>=2.5.0,<2.6.0)", "types-aiobotocore-codebuild (>=2.5.0,<2.6.0)", "types-aiobotocore-codecatalyst (>=2.5.0,<2.6.0)", "types-aiobotocore-codecommit (>=2.5.0,<2.6.0)", "types-aiobotocore-codedeploy (>=2.5.0,<2.6.0)", "types-aiobotocore-codeguru-reviewer (>=2.5.0,<2.6.0)", "types-aiobotocore-codeguru-security (>=2.5.0,<2.6.0)", "types-aiobotocore-codeguruprofiler (>=2.5.0,<2.6.0)", "types-aiobotocore-codepipeline (>=2.5.0,<2.6.0)", "types-aiobotocore-codestar (>=2.5.0,<2.6.0)", "types-aiobotocore-codestar-connections (>=2.5.0,<2.6.0)", "types-aiobotocore-codestar-notifications (>=2.5.0,<2.6.0)", "types-aiobotocore-cognito-identity (>=2.5.0,<2.6.0)", "types-aiobotocore-cognito-idp (>=2.5.0,<2.6.0)", "types-aiobotocore-cognito-sync (>=2.5.0,<2.6.0)", "types-aiobotocore-comprehend (>=2.5.0,<2.6.0)", "types-aiobotocore-comprehendmedical (>=2.5.0,<2.6.0)", "types-aiobotocore-compute-optimizer (>=2.5.0,<2.6.0)", "types-aiobotocore-config (>=2.5.0,<2.6.0)", "types-aiobotocore-connect (>=2.5.0,<2.6.0)", "types-aiobotocore-connect-contact-lens (>=2.5.0,<2.6.0)", "types-aiobotocore-connectcampaigns (>=2.5.0,<2.6.0)", "types-aiobotocore-connectcases (>=2.5.0,<2.6.0)", "types-aiobotocore-connectparticipant (>=2.5.0,<2.6.0)", "types-aiobotocore-controltower (>=2.5.0,<2.6.0)", "types-aiobotocore-cur (>=2.5.0,<2.6.0)", "types-aiobotocore-customer-profiles (>=2.5.0,<2.6.0)", "types-aiobotocore-databrew (>=2.5.0,<2.6.0)", "types-aiobotocore-dataexchange (>=2.5.0,<2.6.0)", "types-aiobotocore-datapipeline (>=2.5.0,<2.6.0)", "types-aiobotocore-datasync (>=2.5.0,<2.6.0)", "types-aiobotocore-dax (>=2.5.0,<2.6.0)", "types-aiobotocore-detective (>=2.5.0,<2.6.0)", "types-aiobotocore-devicefarm (>=2.5.0,<2.6.0)", "types-aiobotocore-devops-guru (>=2.5.0,<2.6.0)", "types-aiobotocore-directconnect (>=2.5.0,<2.6.0)", "types-aiobotocore-discovery (>=2.5.0,<2.6.0)", "types-aiobotocore-dlm (>=2.5.0,<2.6.0)", "types-aiobotocore-dms (>=2.5.0,<2.6.0)", "types-aiobotocore-docdb (>=2.5.0,<2.6.0)", "types-aiobotocore-docdb-elastic (>=2.5.0,<2.6.0)", "types-aiobotocore-drs (>=2.5.0,<2.6.0)", "types-aiobotocore-ds (>=2.5.0,<2.6.0)", "types-aiobotocore-dynamodb (>=2.5.0,<2.6.0)", "types-aiobotocore-dynamodbstreams (>=2.5.0,<2.6.0)", "types-aiobotocore-ebs (>=2.5.0,<2.6.0)", "types-aiobotocore-ec2 (>=2.5.0,<2.6.0)", "types-aiobotocore-ec2-instance-connect (>=2.5.0,<2.6.0)", "types-aiobotocore-ecr (>=2.5.0,<2.6.0)", "types-aiobotocore-ecr-public (>=2.5.0,<2.6.0)", "types-aiobotocore-ecs (>=2.5.0,<2.6.0)", "types-aiobotocore-efs (>=2.5.0,<2.6.0)", "types-aiobotocore-eks (>=2.5.0,<2.6.0)", "types-aiobotocore-elastic-inference (>=2.5.0,<2.6.0)", "types-aiobotocore-elasticache (>=2.5.0,<2.6.0)", "types-aiobotocore-elasticbeanstalk (>=2.5.0,<2.6.0)", "types-aiobotocore-elastictranscoder (>=2.5.0,<2.6.0)", "types-aiobotocore-elb (>=2.5.0,<2.6.0)", "types-aiobotocore-elbv2 (>=2.5.0,<2.6.0)", "types-aiobotocore-emr (>=2.5.0,<2.6.0)", "types-aiobotocore-emr-containers (>=2.5.0,<2.6.0)", "types-aiobotocore-emr-serverless (>=2.5.0,<2.6.0)", "types-aiobotocore-entityresolution (>=2.5.0,<2.6.0)", "types-aiobotocore-es (>=2.5.0,<2.6.0)", "types-aiobotocore-events (>=2.5.0,<2.6.0)", "types-aiobotocore-evidently (>=2.5.0,<2.6.0)", "types-aiobotocore-finspace (>=2.5.0,<2.6.0)", "types-aiobotocore-finspace-data (>=2.5.0,<2.6.0)", "types-aiobotocore-firehose (>=2.5.0,<2.6.0)", "types-aiobotocore-fis (>=2.5.0,<2.6.0)", "types-aiobotocore-fms (>=2.5.0,<2.6.0)", "types-aiobotocore-forecast (>=2.5.0,<2.6.0)", "types-aiobotocore-forecastquery (>=2.5.0,<2.6.0)", "types-aiobotocore-frauddetector (>=2.5.0,<2.6.0)", "types-aiobotocore-fsx (>=2.5.0,<2.6.0)", "types-aiobotocore-gamelift (>=2.5.0,<2.6.0)", "types-aiobotocore-gamesparks (>=2.5.0,<2.6.0)", "types-aiobotocore-glacier (>=2.5.0,<2.6.0)", "types-aiobotocore-globalaccelerator (>=2.5.0,<2.6.0)", "types-aiobotocore-glue (>=2.5.0,<2.6.0)", "types-aiobotocore-grafana (>=2.5.0,<2.6.0)", "types-aiobotocore-greengrass (>=2.5.0,<2.6.0)", "types-aiobotocore-greengrassv2 (>=2.5.0,<2.6.0)", "types-aiobotocore-groundstation (>=2.5.0,<2.6.0)", "types-aiobotocore-guardduty (>=2.5.0,<2.6.0)", "types-aiobotocore-health (>=2.5.0,<2.6.0)", "types-aiobotocore-healthlake (>=2.5.0,<2.6.0)", "types-aiobotocore-honeycode (>=2.5.0,<2.6.0)", "types-aiobotocore-iam (>=2.5.0,<2.6.0)", "types-aiobotocore-identitystore (>=2.5.0,<2.6.0)", "types-aiobotocore-imagebuilder (>=2.5.0,<2.6.0)", "types-aiobotocore-importexport (>=2.5.0,<2.6.0)", "types-aiobotocore-inspector (>=2.5.0,<2.6.0)", "types-aiobotocore-inspector2 (>=2.5.0,<2.6.0)", "types-aiobotocore-internetmonitor (>=2.5.0,<2.6.0)", "types-aiobotocore-iot (>=2.5.0,<2.6.0)", "types-aiobotocore-iot-data (>=2.5.0,<2.6.0)", "types-aiobotocore-iot-jobs-data (>=2.5.0,<2.6.0)", "types-aiobotocore-iot-roborunner (>=2.5.0,<2.6.0)", "types-aiobotocore-iot1click-devices (>=2.5.0,<2.6.0)", "types-aiobotocore-iot1click-projects (>=2.5.0,<2.6.0)", "types-aiobotocore-iotanalytics (>=2.5.0,<2.6.0)", "types-aiobotocore-iotdeviceadvisor (>=2.5.0,<2.6.0)", "types-aiobotocore-iotevents (>=2.5.0,<2.6.0)", "types-aiobotocore-iotevents-data (>=2.5.0,<2.6.0)", "types-aiobotocore-iotfleethub (>=2.5.0,<2.6.0)", "types-aiobotocore-iotfleetwise (>=2.5.0,<2.6.0)", "types-aiobotocore-iotsecuretunneling (>=2.5.0,<2.6.0)", "types-aiobotocore-iotsitewise (>=2.5.0,<2.6.0)", "types-aiobotocore-iotthingsgraph (>=2.5.0,<2.6.0)", "types-aiobotocore-iottwinmaker (>=2.5.0,<2.6.0)", "types-aiobotocore-iotwireless (>=2.5.0,<2.6.0)", "types-aiobotocore-ivs (>=2.5.0,<2.6.0)", "types-aiobotocore-ivs-realtime (>=2.5.0,<2.6.0)", "types-aiobotocore-ivschat (>=2.5.0,<2.6.0)", "types-aiobotocore-kafka (>=2.5.0,<2.6.0)", "types-aiobotocore-kafkaconnect (>=2.5.0,<2.6.0)", "types-aiobotocore-kendra (>=2.5.0,<2.6.0)", "types-aiobotocore-kendra-ranking (>=2.5.0,<2.6.0)", "types-aiobotocore-keyspaces (>=2.5.0,<2.6.0)", "types-aiobotocore-kinesis (>=2.5.0,<2.6.0)", "types-aiobotocore-kinesis-video-archived-media (>=2.5.0,<2.6.0)", "types-aiobotocore-kinesis-video-media (>=2.5.0,<2.6.0)", "types-aiobotocore-kinesis-video-signaling (>=2.5.0,<2.6.0)", "types-aiobotocore-kinesis-video-webrtc-storage (>=2.5.0,<2.6.0)", "types-aiobotocore-kinesisanalytics (>=2.5.0,<2.6.0)", "types-aiobotocore-kinesisanalyticsv2 (>=2.5.0,<2.6.0)", "types-aiobotocore-kinesisvideo (>=2.5.0,<2.6.0)", "types-aiobotocore-kms (>=2.5.0,<2.6.0)", "types-aiobotocore-lakeformation (>=2.5.0,<2.6.0)", "types-aiobotocore-lambda (>=2.5.0,<2.6.0)", "types-aiobotocore-lex-models (>=2.5.0,<2.6.0)", "types-aiobotocore-lex-runtime (>=2.5.0,<2.6.0)", "types-aiobotocore-lexv2-models (>=2.5.0,<2.6.0)", "types-aiobotocore-lexv2-runtime (>=2.5.0,<2.6.0)", "types-aiobotocore-license-manager (>=2.5.0,<2.6.0)", "types-aiobotocore-license-manager-linux-subscriptions (>=2.5.0,<2.6.0)", "types-aiobotocore-license-manager-user-subscriptions (>=2.5.0,<2.6.0)", "types-aiobotocore-lightsail (>=2.5.0,<2.6.0)", "types-aiobotocore-location (>=2.5.0,<2.6.0)", "types-aiobotocore-logs (>=2.5.0,<2.6.0)", "types-aiobotocore-lookoutequipment (>=2.5.0,<2.6.0)", "types-aiobotocore-lookoutmetrics (>=2.5.0,<2.6.0)", "types-aiobotocore-lookoutvision (>=2.5.0,<2.6.0)", "types-aiobotocore-m2 (>=2.5.0,<2.6.0)", "types-aiobotocore-machinelearning (>=2.5.0,<2.6.0)", "types-aiobotocore-macie (>=2.5.0,<2.6.0)", "types-aiobotocore-macie2 (>=2.5.0,<2.6.0)", "types-aiobotocore-managedblockchain (>=2.5.0,<2.6.0)", "types-aiobotocore-managedblockchain-query (>=2.5.0,<2.6.0)", "types-aiobotocore-marketplace-catalog (>=2.5.0,<2.6.0)", "types-aiobotocore-marketplace-entitlement (>=2.5.0,<2.6.0)", "types-aiobotocore-marketplacecommerceanalytics (>=2.5.0,<2.6.0)", "types-aiobotocore-mediaconnect (>=2.5.0,<2.6.0)", "types-aiobotocore-mediaconvert (>=2.5.0,<2.6.0)", "types-aiobotocore-medialive (>=2.5.0,<2.6.0)", "types-aiobotocore-mediapackage (>=2.5.0,<2.6.0)", "types-aiobotocore-mediapackage-vod (>=2.5.0,<2.6.0)", "types-aiobotocore-mediapackagev2 (>=2.5.0,<2.6.0)", "types-aiobotocore-mediastore (>=2.5.0,<2.6.0)", "types-aiobotocore-mediastore-data (>=2.5.0,<2.6.0)", "types-aiobotocore-mediatailor (>=2.5.0,<2.6.0)", "types-aiobotocore-medical-imaging (>=2.5.0,<2.6.0)", "types-aiobotocore-memorydb (>=2.5.0,<2.6.0)", "types-aiobotocore-meteringmarketplace (>=2.5.0,<2.6.0)", "types-aiobotocore-mgh (>=2.5.0,<2.6.0)", "types-aiobotocore-mgn (>=2.5.0,<2.6.0)", "types-aiobotocore-migration-hub-refactor-spaces (>=2.5.0,<2.6.0)", "types-aiobotocore-migrationhub-config (>=2.5.0,<2.6.0)", "types-aiobotocore-migrationhuborchestrator (>=2.5.0,<2.6.0)", "types-aiobotocore-migrationhubstrategy (>=2.5.0,<2.6.0)", "types-aiobotocore-mobile (>=2.5.0,<2.6.0)", "types-aiobotocore-mq (>=2.5.0,<2.6.0)", "types-aiobotocore-mturk (>=2.5.0,<2.6.0)", "types-aiobotocore-mwaa (>=2.5.0,<2.6.0)", "types-aiobotocore-neptune (>=2.5.0,<2.6.0)", "types-aiobotocore-network-firewall (>=2.5.0,<2.6.0)", "types-aiobotocore-networkmanager (>=2.5.0,<2.6.0)", "types-aiobotocore-nimble (>=2.5.0,<2.6.0)", "types-aiobotocore-oam (>=2.5.0,<2.6.0)", "types-aiobotocore-omics (>=2.5.0,<2.6.0)", "types-aiobotocore-opensearch (>=2.5.0,<2.6.0)", "types-aiobotocore-opensearchserverless (>=2.5.0,<2.6.0)", "types-aiobotocore-opsworks (>=2.5.0,<2.6.0)", "types-aiobotocore-opsworkscm (>=2.5.0,<2.6.0)", "types-aiobotocore-organizations (>=2.5.0,<2.6.0)", "types-aiobotocore-osis (>=2.5.0,<2.6.0)", "types-aiobotocore-outposts (>=2.5.0,<2.6.0)", "types-aiobotocore-panorama (>=2.5.0,<2.6.0)", "types-aiobotocore-payment-cryptography (>=2.5.0,<2.6.0)", "types-aiobotocore-payment-cryptography-data (>=2.5.0,<2.6.0)", "types-aiobotocore-personalize (>=2.5.0,<2.6.0)", "types-aiobotocore-personalize-events (>=2.5.0,<2.6.0)", "types-aiobotocore-personalize-runtime (>=2.5.0,<2.6.0)", "types-aiobotocore-pi (>=2.5.0,<2.6.0)", "types-aiobotocore-pinpoint (>=2.5.0,<2.6.0)", "types-aiobotocore-pinpoint-email (>=2.5.0,<2.6.0)", "types-aiobotocore-pinpoint-sms-voice (>=2.5.0,<2.6.0)", "types-aiobotocore-pinpoint-sms-voice-v2 (>=2.5.0,<2.6.0)", "types-aiobotocore-pipes (>=2.5.0,<2.6.0)", "types-aiobotocore-polly (>=2.5.0,<2.6.0)", "types-aiobotocore-pricing (>=2.5.0,<2.6.0)", "types-aiobotocore-privatenetworks (>=2.5.0,<2.6.0)", "types-aiobotocore-proton (>=2.5.0,<2.6.0)", "types-aiobotocore-qldb (>=2.5.0,<2.6.0)", "types-aiobotocore-qldb-session (>=2.5.0,<2.6.0)", "types-aiobotocore-quicksight (>=2.5.0,<2.6.0)", "types-aiobotocore-ram (>=2.5.0,<2.6.0)", "types-aiobotocore-rbin (>=2.5.0,<2.6.0)", "types-aiobotocore-rds (>=2.5.0,<2.6.0)", "types-aiobotocore-rds-data (>=2.5.0,<2.6.0)", "types-aiobotocore-redshift (>=2.5.0,<2.6.0)", "types-aiobotocore-redshift-data (>=2.5.0,<2.6.0)", "types-aiobotocore-redshift-serverless (>=2.5.0,<2.6.0)", "types-aiobotocore-rekognition (>=2.5.0,<2.6.0)", "types-aiobotocore-resiliencehub (>=2.5.0,<2.6.0)", "types-aiobotocore-resource-explorer-2 (>=2.5.0,<2.6.0)", "types-aiobotocore-resource-groups (>=2.5.0,<2.6.0)", "types-aiobotocore-resourcegroupstaggingapi (>=2.5.0,<2.6.0)", "types-aiobotocore-robomaker (>=2.5.0,<2.6.0)", "types-aiobotocore-rolesanywhere (>=2.5.0,<2.6.0)", "types-aiobotocore-route53 (>=2.5.0,<2.6.0)", "types-aiobotocore-route53-recovery-cluster (>=2.5.0,<2.6.0)", "types-aiobotocore-route53-recovery-control-config (>=2.5.0,<2.6.0)", "types-aiobotocore-route53-recovery-readiness (>=2.5.0,<2.6.0)", "types-aiobotocore-route53domains (>=2.5.0,<2.6.0)", "types-aiobotocore-route53resolver (>=2.5.0,<2.6.0)", "types-aiobotocore-rum (>=2.5.0,<2.6.0)", "types-aiobotocore-s3 (>=2.5.0,<2.6.0)", "types-aiobotocore-s3control (>=2.5.0,<2.6.0)", "types-aiobotocore-s3outposts (>=2.5.0,<2.6.0)", "types-aiobotocore-sagemaker (>=2.5.0,<2.6.0)", "types-aiobotocore-sagemaker-a2i-runtime (>=2.5.0,<2.6.0)", "types-aiobotocore-sagemaker-edge (>=2.5.0,<2.6.0)", "types-aiobotocore-sagemaker-featurestore-runtime (>=2.5.0,<2.6.0)", "types-aiobotocore-sagemaker-geospatial (>=2.5.0,<2.6.0)", "types-aiobotocore-sagemaker-metrics (>=2.5.0,<2.6.0)", "types-aiobotocore-sagemaker-runtime (>=2.5.0,<2.6.0)", "types-aiobotocore-savingsplans (>=2.5.0,<2.6.0)", "types-aiobotocore-scheduler (>=2.5.0,<2.6.0)", "types-aiobotocore-schemas (>=2.5.0,<2.6.0)", "types-aiobotocore-sdb (>=2.5.0,<2.6.0)", "types-aiobotocore-secretsmanager (>=2.5.0,<2.6.0)", "types-aiobotocore-securityhub (>=2.5.0,<2.6.0)", "types-aiobotocore-securitylake (>=2.5.0,<2.6.0)", "types-aiobotocore-serverlessrepo (>=2.5.0,<2.6.0)", "types-aiobotocore-service-quotas (>=2.5.0,<2.6.0)", "types-aiobotocore-servicecatalog (>=2.5.0,<2.6.0)", "types-aiobotocore-servicecatalog-appregistry (>=2.5.0,<2.6.0)", "types-aiobotocore-servicediscovery (>=2.5.0,<2.6.0)", "types-aiobotocore-ses (>=2.5.0,<2.6.0)", "types-aiobotocore-sesv2 (>=2.5.0,<2.6.0)", "types-aiobotocore-shield (>=2.5.0,<2.6.0)", "types-aiobotocore-signer (>=2.5.0,<2.6.0)", "types-aiobotocore-simspaceweaver (>=2.5.0,<2.6.0)", "types-aiobotocore-sms (>=2.5.0,<2.6.0)", "types-aiobotocore-sms-voice (>=2.5.0,<2.6.0)", "types-aiobotocore-snow-device-management (>=2.5.0,<2.6.0)", "types-aiobotocore-snowball (>=2.5.0,<2.6.0)", "types-aiobotocore-sns (>=2.5.0,<2.6.0)", "types-aiobotocore-sqs (>=2.5.0,<2.6.0)", "types-aiobotocore-ssm (>=2.5.0,<2.6.0)", "types-aiobotocore-ssm-contacts (>=2.5.0,<2.6.0)", "types-aiobotocore-ssm-incidents (>=2.5.0,<2.6.0)", "types-aiobotocore-ssm-sap (>=2.5.0,<2.6.0)", "types-aiobotocore-sso (>=2.5.0,<2.6.0)", "types-aiobotocore-sso-admin (>=2.5.0,<2.6.0)", "types-aiobotocore-sso-oidc (>=2.5.0,<2.6.0)", "types-aiobotocore-stepfunctions (>=2.5.0,<2.6.0)", "types-aiobotocore-storagegateway (>=2.5.0,<2.6.0)", "types-aiobotocore-sts (>=2.5.0,<2.6.0)", "types-aiobotocore-support (>=2.5.0,<2.6.0)", "types-aiobotocore-support-app (>=2.5.0,<2.6.0)", "types-aiobotocore-swf (>=2.5.0,<2.6.0)", "types-aiobotocore-synthetics (>=2.5.0,<2.6.0)", "types-aiobotocore-textract (>=2.5.0,<2.6.0)", "types-aiobotocore-timestream-query (>=2.5.0,<2.6.0)", "types-aiobotocore-timestream-write (>=2.5.0,<2.6.0)", "types-aiobotocore-tnb (>=2.5.0,<2.6.0)", "types-aiobotocore-transcribe (>=2.5.0,<2.6.0)", "types-aiobotocore-transfer (>=2.5.0,<2.6.0)", "types-aiobotocore-translate (>=2.5.0,<2.6.0)", "types-aiobotocore-verifiedpermissions (>=2.5.0,<2.6.0)", "types-aiobotocore-voice-id (>=2.5.0,<2.6.0)", "types-aiobotocore-vpc-lattice (>=2.5.0,<2.6.0)", "types-aiobotocore-waf (>=2.5.0,<2.6.0)", "types-aiobotocore-waf-regional (>=2.5.0,<2.6.0)", "types-aiobotocore-wafv2 (>=2.5.0,<2.6.0)", "types-aiobotocore-wellarchitected (>=2.5.0,<2.6.0)", "types-aiobotocore-wisdom (>=2.5.0,<2.6.0)", "types-aiobotocore-workdocs (>=2.5.0,<2.6.0)", "types-aiobotocore-worklink (>=2.5.0,<2.6.0)", "types-aiobotocore-workmail (>=2.5.0,<2.6.0)", "types-aiobotocore-workmailmessageflow (>=2.5.0,<2.6.0)", "types-aiobotocore-workspaces (>=2.5.0,<2.6.0)", "types-aiobotocore-workspaces-web (>=2.5.0,<2.6.0)", "types-aiobotocore-xray (>=2.5.0,<2.6.0)"]
-amp = ["types-aiobotocore-amp (>=2.5.0,<2.6.0)"]
-amplify = ["types-aiobotocore-amplify (>=2.5.0,<2.6.0)"]
-amplifybackend = ["types-aiobotocore-amplifybackend (>=2.5.0,<2.6.0)"]
-amplifyuibuilder = ["types-aiobotocore-amplifyuibuilder (>=2.5.0,<2.6.0)"]
-apigateway = ["types-aiobotocore-apigateway (>=2.5.0,<2.6.0)"]
-apigatewaymanagementapi = ["types-aiobotocore-apigatewaymanagementapi (>=2.5.0,<2.6.0)"]
-apigatewayv2 = ["types-aiobotocore-apigatewayv2 (>=2.5.0,<2.6.0)"]
-appconfig = ["types-aiobotocore-appconfig (>=2.5.0,<2.6.0)"]
-appconfigdata = ["types-aiobotocore-appconfigdata (>=2.5.0,<2.6.0)"]
-appfabric = ["types-aiobotocore-appfabric (>=2.5.0,<2.6.0)"]
-appflow = ["types-aiobotocore-appflow (>=2.5.0,<2.6.0)"]
-appintegrations = ["types-aiobotocore-appintegrations (>=2.5.0,<2.6.0)"]
-application-autoscaling = ["types-aiobotocore-application-autoscaling (>=2.5.0,<2.6.0)"]
-application-insights = ["types-aiobotocore-application-insights (>=2.5.0,<2.6.0)"]
-applicationcostprofiler = ["types-aiobotocore-applicationcostprofiler (>=2.5.0,<2.6.0)"]
-appmesh = ["types-aiobotocore-appmesh (>=2.5.0,<2.6.0)"]
-apprunner = ["types-aiobotocore-apprunner (>=2.5.0,<2.6.0)"]
-appstream = ["types-aiobotocore-appstream (>=2.5.0,<2.6.0)"]
-appsync = ["types-aiobotocore-appsync (>=2.5.0,<2.6.0)"]
-arc-zonal-shift = ["types-aiobotocore-arc-zonal-shift (>=2.5.0,<2.6.0)"]
-athena = ["types-aiobotocore-athena (>=2.5.0,<2.6.0)"]
-auditmanager = ["types-aiobotocore-auditmanager (>=2.5.0,<2.6.0)"]
-autoscaling = ["types-aiobotocore-autoscaling (>=2.5.0,<2.6.0)"]
-autoscaling-plans = ["types-aiobotocore-autoscaling-plans (>=2.5.0,<2.6.0)"]
-backup = ["types-aiobotocore-backup (>=2.5.0,<2.6.0)"]
-backup-gateway = ["types-aiobotocore-backup-gateway (>=2.5.0,<2.6.0)"]
-backupstorage = ["types-aiobotocore-backupstorage (>=2.5.0,<2.6.0)"]
-batch = ["types-aiobotocore-batch (>=2.5.0,<2.6.0)"]
-billingconductor = ["types-aiobotocore-billingconductor (>=2.5.0,<2.6.0)"]
-braket = ["types-aiobotocore-braket (>=2.5.0,<2.6.0)"]
-budgets = ["types-aiobotocore-budgets (>=2.5.0,<2.6.0)"]
-ce = ["types-aiobotocore-ce (>=2.5.0,<2.6.0)"]
-chime = ["types-aiobotocore-chime (>=2.5.0,<2.6.0)"]
-chime-sdk-identity = ["types-aiobotocore-chime-sdk-identity (>=2.5.0,<2.6.0)"]
-chime-sdk-media-pipelines = ["types-aiobotocore-chime-sdk-media-pipelines (>=2.5.0,<2.6.0)"]
-chime-sdk-meetings = ["types-aiobotocore-chime-sdk-meetings (>=2.5.0,<2.6.0)"]
-chime-sdk-messaging = ["types-aiobotocore-chime-sdk-messaging (>=2.5.0,<2.6.0)"]
-chime-sdk-voice = ["types-aiobotocore-chime-sdk-voice (>=2.5.0,<2.6.0)"]
-cleanrooms = ["types-aiobotocore-cleanrooms (>=2.5.0,<2.6.0)"]
-cloud9 = ["types-aiobotocore-cloud9 (>=2.5.0,<2.6.0)"]
-cloudcontrol = ["types-aiobotocore-cloudcontrol (>=2.5.0,<2.6.0)"]
-clouddirectory = ["types-aiobotocore-clouddirectory (>=2.5.0,<2.6.0)"]
-cloudformation = ["types-aiobotocore-cloudformation (>=2.5.0,<2.6.0)"]
-cloudfront = ["types-aiobotocore-cloudfront (>=2.5.0,<2.6.0)"]
-cloudhsm = ["types-aiobotocore-cloudhsm (>=2.5.0,<2.6.0)"]
-cloudhsmv2 = ["types-aiobotocore-cloudhsmv2 (>=2.5.0,<2.6.0)"]
-cloudsearch = ["types-aiobotocore-cloudsearch (>=2.5.0,<2.6.0)"]
-cloudsearchdomain = ["types-aiobotocore-cloudsearchdomain (>=2.5.0,<2.6.0)"]
-cloudtrail = ["types-aiobotocore-cloudtrail (>=2.5.0,<2.6.0)"]
-cloudtrail-data = ["types-aiobotocore-cloudtrail-data (>=2.5.0,<2.6.0)"]
-cloudwatch = ["types-aiobotocore-cloudwatch (>=2.5.0,<2.6.0)"]
-codeartifact = ["types-aiobotocore-codeartifact (>=2.5.0,<2.6.0)"]
-codebuild = ["types-aiobotocore-codebuild (>=2.5.0,<2.6.0)"]
-codecatalyst = ["types-aiobotocore-codecatalyst (>=2.5.0,<2.6.0)"]
-codecommit = ["types-aiobotocore-codecommit (>=2.5.0,<2.6.0)"]
-codedeploy = ["types-aiobotocore-codedeploy (>=2.5.0,<2.6.0)"]
-codeguru-reviewer = ["types-aiobotocore-codeguru-reviewer (>=2.5.0,<2.6.0)"]
-codeguru-security = ["types-aiobotocore-codeguru-security (>=2.5.0,<2.6.0)"]
-codeguruprofiler = ["types-aiobotocore-codeguruprofiler (>=2.5.0,<2.6.0)"]
-codepipeline = ["types-aiobotocore-codepipeline (>=2.5.0,<2.6.0)"]
-codestar = ["types-aiobotocore-codestar (>=2.5.0,<2.6.0)"]
-codestar-connections = ["types-aiobotocore-codestar-connections (>=2.5.0,<2.6.0)"]
-codestar-notifications = ["types-aiobotocore-codestar-notifications (>=2.5.0,<2.6.0)"]
-cognito-identity = ["types-aiobotocore-cognito-identity (>=2.5.0,<2.6.0)"]
-cognito-idp = ["types-aiobotocore-cognito-idp (>=2.5.0,<2.6.0)"]
-cognito-sync = ["types-aiobotocore-cognito-sync (>=2.5.0,<2.6.0)"]
-comprehend = ["types-aiobotocore-comprehend (>=2.5.0,<2.6.0)"]
-comprehendmedical = ["types-aiobotocore-comprehendmedical (>=2.5.0,<2.6.0)"]
-compute-optimizer = ["types-aiobotocore-compute-optimizer (>=2.5.0,<2.6.0)"]
-config = ["types-aiobotocore-config (>=2.5.0,<2.6.0)"]
-connect = ["types-aiobotocore-connect (>=2.5.0,<2.6.0)"]
-connect-contact-lens = ["types-aiobotocore-connect-contact-lens (>=2.5.0,<2.6.0)"]
-connectcampaigns = ["types-aiobotocore-connectcampaigns (>=2.5.0,<2.6.0)"]
-connectcases = ["types-aiobotocore-connectcases (>=2.5.0,<2.6.0)"]
-connectparticipant = ["types-aiobotocore-connectparticipant (>=2.5.0,<2.6.0)"]
-controltower = ["types-aiobotocore-controltower (>=2.5.0,<2.6.0)"]
-cur = ["types-aiobotocore-cur (>=2.5.0,<2.6.0)"]
-customer-profiles = ["types-aiobotocore-customer-profiles (>=2.5.0,<2.6.0)"]
-databrew = ["types-aiobotocore-databrew (>=2.5.0,<2.6.0)"]
-dataexchange = ["types-aiobotocore-dataexchange (>=2.5.0,<2.6.0)"]
-datapipeline = ["types-aiobotocore-datapipeline (>=2.5.0,<2.6.0)"]
-datasync = ["types-aiobotocore-datasync (>=2.5.0,<2.6.0)"]
-dax = ["types-aiobotocore-dax (>=2.5.0,<2.6.0)"]
-detective = ["types-aiobotocore-detective (>=2.5.0,<2.6.0)"]
-devicefarm = ["types-aiobotocore-devicefarm (>=2.5.0,<2.6.0)"]
-devops-guru = ["types-aiobotocore-devops-guru (>=2.5.0,<2.6.0)"]
-directconnect = ["types-aiobotocore-directconnect (>=2.5.0,<2.6.0)"]
-discovery = ["types-aiobotocore-discovery (>=2.5.0,<2.6.0)"]
-dlm = ["types-aiobotocore-dlm (>=2.5.0,<2.6.0)"]
-dms = ["types-aiobotocore-dms (>=2.5.0,<2.6.0)"]
-docdb = ["types-aiobotocore-docdb (>=2.5.0,<2.6.0)"]
-docdb-elastic = ["types-aiobotocore-docdb-elastic (>=2.5.0,<2.6.0)"]
-drs = ["types-aiobotocore-drs (>=2.5.0,<2.6.0)"]
-ds = ["types-aiobotocore-ds (>=2.5.0,<2.6.0)"]
-dynamodb = ["types-aiobotocore-dynamodb (>=2.5.0,<2.6.0)"]
-dynamodbstreams = ["types-aiobotocore-dynamodbstreams (>=2.5.0,<2.6.0)"]
-ebs = ["types-aiobotocore-ebs (>=2.5.0,<2.6.0)"]
-ec2 = ["types-aiobotocore-ec2 (>=2.5.0,<2.6.0)"]
-ec2-instance-connect = ["types-aiobotocore-ec2-instance-connect (>=2.5.0,<2.6.0)"]
-ecr = ["types-aiobotocore-ecr (>=2.5.0,<2.6.0)"]
-ecr-public = ["types-aiobotocore-ecr-public (>=2.5.0,<2.6.0)"]
-ecs = ["types-aiobotocore-ecs (>=2.5.0,<2.6.0)"]
-efs = ["types-aiobotocore-efs (>=2.5.0,<2.6.0)"]
-eks = ["types-aiobotocore-eks (>=2.5.0,<2.6.0)"]
-elastic-inference = ["types-aiobotocore-elastic-inference (>=2.5.0,<2.6.0)"]
-elasticache = ["types-aiobotocore-elasticache (>=2.5.0,<2.6.0)"]
-elasticbeanstalk = ["types-aiobotocore-elasticbeanstalk (>=2.5.0,<2.6.0)"]
-elastictranscoder = ["types-aiobotocore-elastictranscoder (>=2.5.0,<2.6.0)"]
-elb = ["types-aiobotocore-elb (>=2.5.0,<2.6.0)"]
-elbv2 = ["types-aiobotocore-elbv2 (>=2.5.0,<2.6.0)"]
-emr = ["types-aiobotocore-emr (>=2.5.0,<2.6.0)"]
-emr-containers = ["types-aiobotocore-emr-containers (>=2.5.0,<2.6.0)"]
-emr-serverless = ["types-aiobotocore-emr-serverless (>=2.5.0,<2.6.0)"]
-entityresolution = ["types-aiobotocore-entityresolution (>=2.5.0,<2.6.0)"]
-es = ["types-aiobotocore-es (>=2.5.0,<2.6.0)"]
-essential = ["types-aiobotocore-cloudformation (>=2.5.0,<2.6.0)", "types-aiobotocore-dynamodb (>=2.5.0,<2.6.0)", "types-aiobotocore-ec2 (>=2.5.0,<2.6.0)", "types-aiobotocore-lambda (>=2.5.0,<2.6.0)", "types-aiobotocore-rds (>=2.5.0,<2.6.0)", "types-aiobotocore-s3 (>=2.5.0,<2.6.0)", "types-aiobotocore-sqs (>=2.5.0,<2.6.0)"]
-events = ["types-aiobotocore-events (>=2.5.0,<2.6.0)"]
-evidently = ["types-aiobotocore-evidently (>=2.5.0,<2.6.0)"]
-finspace = ["types-aiobotocore-finspace (>=2.5.0,<2.6.0)"]
-finspace-data = ["types-aiobotocore-finspace-data (>=2.5.0,<2.6.0)"]
-firehose = ["types-aiobotocore-firehose (>=2.5.0,<2.6.0)"]
-fis = ["types-aiobotocore-fis (>=2.5.0,<2.6.0)"]
-fms = ["types-aiobotocore-fms (>=2.5.0,<2.6.0)"]
-forecast = ["types-aiobotocore-forecast (>=2.5.0,<2.6.0)"]
-forecastquery = ["types-aiobotocore-forecastquery (>=2.5.0,<2.6.0)"]
-frauddetector = ["types-aiobotocore-frauddetector (>=2.5.0,<2.6.0)"]
-fsx = ["types-aiobotocore-fsx (>=2.5.0,<2.6.0)"]
-gamelift = ["types-aiobotocore-gamelift (>=2.5.0,<2.6.0)"]
-gamesparks = ["types-aiobotocore-gamesparks (>=2.5.0,<2.6.0)"]
-glacier = ["types-aiobotocore-glacier (>=2.5.0,<2.6.0)"]
-globalaccelerator = ["types-aiobotocore-globalaccelerator (>=2.5.0,<2.6.0)"]
-glue = ["types-aiobotocore-glue (>=2.5.0,<2.6.0)"]
-grafana = ["types-aiobotocore-grafana (>=2.5.0,<2.6.0)"]
-greengrass = ["types-aiobotocore-greengrass (>=2.5.0,<2.6.0)"]
-greengrassv2 = ["types-aiobotocore-greengrassv2 (>=2.5.0,<2.6.0)"]
-groundstation = ["types-aiobotocore-groundstation (>=2.5.0,<2.6.0)"]
-guardduty = ["types-aiobotocore-guardduty (>=2.5.0,<2.6.0)"]
-health = ["types-aiobotocore-health (>=2.5.0,<2.6.0)"]
-healthlake = ["types-aiobotocore-healthlake (>=2.5.0,<2.6.0)"]
-honeycode = ["types-aiobotocore-honeycode (>=2.5.0,<2.6.0)"]
-iam = ["types-aiobotocore-iam (>=2.5.0,<2.6.0)"]
-identitystore = ["types-aiobotocore-identitystore (>=2.5.0,<2.6.0)"]
-imagebuilder = ["types-aiobotocore-imagebuilder (>=2.5.0,<2.6.0)"]
-importexport = ["types-aiobotocore-importexport (>=2.5.0,<2.6.0)"]
-inspector = ["types-aiobotocore-inspector (>=2.5.0,<2.6.0)"]
-inspector2 = ["types-aiobotocore-inspector2 (>=2.5.0,<2.6.0)"]
-internetmonitor = ["types-aiobotocore-internetmonitor (>=2.5.0,<2.6.0)"]
-iot = ["types-aiobotocore-iot (>=2.5.0,<2.6.0)"]
-iot-data = ["types-aiobotocore-iot-data (>=2.5.0,<2.6.0)"]
-iot-jobs-data = ["types-aiobotocore-iot-jobs-data (>=2.5.0,<2.6.0)"]
-iot-roborunner = ["types-aiobotocore-iot-roborunner (>=2.5.0,<2.6.0)"]
-iot1click-devices = ["types-aiobotocore-iot1click-devices (>=2.5.0,<2.6.0)"]
-iot1click-projects = ["types-aiobotocore-iot1click-projects (>=2.5.0,<2.6.0)"]
-iotanalytics = ["types-aiobotocore-iotanalytics (>=2.5.0,<2.6.0)"]
-iotdeviceadvisor = ["types-aiobotocore-iotdeviceadvisor (>=2.5.0,<2.6.0)"]
-iotevents = ["types-aiobotocore-iotevents (>=2.5.0,<2.6.0)"]
-iotevents-data = ["types-aiobotocore-iotevents-data (>=2.5.0,<2.6.0)"]
-iotfleethub = ["types-aiobotocore-iotfleethub (>=2.5.0,<2.6.0)"]
-iotfleetwise = ["types-aiobotocore-iotfleetwise (>=2.5.0,<2.6.0)"]
-iotsecuretunneling = ["types-aiobotocore-iotsecuretunneling (>=2.5.0,<2.6.0)"]
-iotsitewise = ["types-aiobotocore-iotsitewise (>=2.5.0,<2.6.0)"]
-iotthingsgraph = ["types-aiobotocore-iotthingsgraph (>=2.5.0,<2.6.0)"]
-iottwinmaker = ["types-aiobotocore-iottwinmaker (>=2.5.0,<2.6.0)"]
-iotwireless = ["types-aiobotocore-iotwireless (>=2.5.0,<2.6.0)"]
-ivs = ["types-aiobotocore-ivs (>=2.5.0,<2.6.0)"]
-ivs-realtime = ["types-aiobotocore-ivs-realtime (>=2.5.0,<2.6.0)"]
-ivschat = ["types-aiobotocore-ivschat (>=2.5.0,<2.6.0)"]
-kafka = ["types-aiobotocore-kafka (>=2.5.0,<2.6.0)"]
-kafkaconnect = ["types-aiobotocore-kafkaconnect (>=2.5.0,<2.6.0)"]
-kendra = ["types-aiobotocore-kendra (>=2.5.0,<2.6.0)"]
-kendra-ranking = ["types-aiobotocore-kendra-ranking (>=2.5.0,<2.6.0)"]
-keyspaces = ["types-aiobotocore-keyspaces (>=2.5.0,<2.6.0)"]
-kinesis = ["types-aiobotocore-kinesis (>=2.5.0,<2.6.0)"]
-kinesis-video-archived-media = ["types-aiobotocore-kinesis-video-archived-media (>=2.5.0,<2.6.0)"]
-kinesis-video-media = ["types-aiobotocore-kinesis-video-media (>=2.5.0,<2.6.0)"]
-kinesis-video-signaling = ["types-aiobotocore-kinesis-video-signaling (>=2.5.0,<2.6.0)"]
-kinesis-video-webrtc-storage = ["types-aiobotocore-kinesis-video-webrtc-storage (>=2.5.0,<2.6.0)"]
-kinesisanalytics = ["types-aiobotocore-kinesisanalytics (>=2.5.0,<2.6.0)"]
-kinesisanalyticsv2 = ["types-aiobotocore-kinesisanalyticsv2 (>=2.5.0,<2.6.0)"]
-kinesisvideo = ["types-aiobotocore-kinesisvideo (>=2.5.0,<2.6.0)"]
-kms = ["types-aiobotocore-kms (>=2.5.0,<2.6.0)"]
-lakeformation = ["types-aiobotocore-lakeformation (>=2.5.0,<2.6.0)"]
-lambda = ["types-aiobotocore-lambda (>=2.5.0,<2.6.0)"]
-lex-models = ["types-aiobotocore-lex-models (>=2.5.0,<2.6.0)"]
-lex-runtime = ["types-aiobotocore-lex-runtime (>=2.5.0,<2.6.0)"]
-lexv2-models = ["types-aiobotocore-lexv2-models (>=2.5.0,<2.6.0)"]
-lexv2-runtime = ["types-aiobotocore-lexv2-runtime (>=2.5.0,<2.6.0)"]
-license-manager = ["types-aiobotocore-license-manager (>=2.5.0,<2.6.0)"]
-license-manager-linux-subscriptions = ["types-aiobotocore-license-manager-linux-subscriptions (>=2.5.0,<2.6.0)"]
-license-manager-user-subscriptions = ["types-aiobotocore-license-manager-user-subscriptions (>=2.5.0,<2.6.0)"]
-lightsail = ["types-aiobotocore-lightsail (>=2.5.0,<2.6.0)"]
-location = ["types-aiobotocore-location (>=2.5.0,<2.6.0)"]
-logs = ["types-aiobotocore-logs (>=2.5.0,<2.6.0)"]
-lookoutequipment = ["types-aiobotocore-lookoutequipment (>=2.5.0,<2.6.0)"]
-lookoutmetrics = ["types-aiobotocore-lookoutmetrics (>=2.5.0,<2.6.0)"]
-lookoutvision = ["types-aiobotocore-lookoutvision (>=2.5.0,<2.6.0)"]
-m2 = ["types-aiobotocore-m2 (>=2.5.0,<2.6.0)"]
-machinelearning = ["types-aiobotocore-machinelearning (>=2.5.0,<2.6.0)"]
-macie = ["types-aiobotocore-macie (>=2.5.0,<2.6.0)"]
-macie2 = ["types-aiobotocore-macie2 (>=2.5.0,<2.6.0)"]
-managedblockchain = ["types-aiobotocore-managedblockchain (>=2.5.0,<2.6.0)"]
-managedblockchain-query = ["types-aiobotocore-managedblockchain-query (>=2.5.0,<2.6.0)"]
-marketplace-catalog = ["types-aiobotocore-marketplace-catalog (>=2.5.0,<2.6.0)"]
-marketplace-entitlement = ["types-aiobotocore-marketplace-entitlement (>=2.5.0,<2.6.0)"]
-marketplacecommerceanalytics = ["types-aiobotocore-marketplacecommerceanalytics (>=2.5.0,<2.6.0)"]
-mediaconnect = ["types-aiobotocore-mediaconnect (>=2.5.0,<2.6.0)"]
-mediaconvert = ["types-aiobotocore-mediaconvert (>=2.5.0,<2.6.0)"]
-medialive = ["types-aiobotocore-medialive (>=2.5.0,<2.6.0)"]
-mediapackage = ["types-aiobotocore-mediapackage (>=2.5.0,<2.6.0)"]
-mediapackage-vod = ["types-aiobotocore-mediapackage-vod (>=2.5.0,<2.6.0)"]
-mediapackagev2 = ["types-aiobotocore-mediapackagev2 (>=2.5.0,<2.6.0)"]
-mediastore = ["types-aiobotocore-mediastore (>=2.5.0,<2.6.0)"]
-mediastore-data = ["types-aiobotocore-mediastore-data (>=2.5.0,<2.6.0)"]
-mediatailor = ["types-aiobotocore-mediatailor (>=2.5.0,<2.6.0)"]
-medical-imaging = ["types-aiobotocore-medical-imaging (>=2.5.0,<2.6.0)"]
-memorydb = ["types-aiobotocore-memorydb (>=2.5.0,<2.6.0)"]
-meteringmarketplace = ["types-aiobotocore-meteringmarketplace (>=2.5.0,<2.6.0)"]
-mgh = ["types-aiobotocore-mgh (>=2.5.0,<2.6.0)"]
-mgn = ["types-aiobotocore-mgn (>=2.5.0,<2.6.0)"]
-migration-hub-refactor-spaces = ["types-aiobotocore-migration-hub-refactor-spaces (>=2.5.0,<2.6.0)"]
-migrationhub-config = ["types-aiobotocore-migrationhub-config (>=2.5.0,<2.6.0)"]
-migrationhuborchestrator = ["types-aiobotocore-migrationhuborchestrator (>=2.5.0,<2.6.0)"]
-migrationhubstrategy = ["types-aiobotocore-migrationhubstrategy (>=2.5.0,<2.6.0)"]
-mobile = ["types-aiobotocore-mobile (>=2.5.0,<2.6.0)"]
-mq = ["types-aiobotocore-mq (>=2.5.0,<2.6.0)"]
-mturk = ["types-aiobotocore-mturk (>=2.5.0,<2.6.0)"]
-mwaa = ["types-aiobotocore-mwaa (>=2.5.0,<2.6.0)"]
-neptune = ["types-aiobotocore-neptune (>=2.5.0,<2.6.0)"]
-network-firewall = ["types-aiobotocore-network-firewall (>=2.5.0,<2.6.0)"]
-networkmanager = ["types-aiobotocore-networkmanager (>=2.5.0,<2.6.0)"]
-nimble = ["types-aiobotocore-nimble (>=2.5.0,<2.6.0)"]
-oam = ["types-aiobotocore-oam (>=2.5.0,<2.6.0)"]
-omics = ["types-aiobotocore-omics (>=2.5.0,<2.6.0)"]
-opensearch = ["types-aiobotocore-opensearch (>=2.5.0,<2.6.0)"]
-opensearchserverless = ["types-aiobotocore-opensearchserverless (>=2.5.0,<2.6.0)"]
-opsworks = ["types-aiobotocore-opsworks (>=2.5.0,<2.6.0)"]
-opsworkscm = ["types-aiobotocore-opsworkscm (>=2.5.0,<2.6.0)"]
-organizations = ["types-aiobotocore-organizations (>=2.5.0,<2.6.0)"]
-osis = ["types-aiobotocore-osis (>=2.5.0,<2.6.0)"]
-outposts = ["types-aiobotocore-outposts (>=2.5.0,<2.6.0)"]
-panorama = ["types-aiobotocore-panorama (>=2.5.0,<2.6.0)"]
-payment-cryptography = ["types-aiobotocore-payment-cryptography (>=2.5.0,<2.6.0)"]
-payment-cryptography-data = ["types-aiobotocore-payment-cryptography-data (>=2.5.0,<2.6.0)"]
-personalize = ["types-aiobotocore-personalize (>=2.5.0,<2.6.0)"]
-personalize-events = ["types-aiobotocore-personalize-events (>=2.5.0,<2.6.0)"]
-personalize-runtime = ["types-aiobotocore-personalize-runtime (>=2.5.0,<2.6.0)"]
-pi = ["types-aiobotocore-pi (>=2.5.0,<2.6.0)"]
-pinpoint = ["types-aiobotocore-pinpoint (>=2.5.0,<2.6.0)"]
-pinpoint-email = ["types-aiobotocore-pinpoint-email (>=2.5.0,<2.6.0)"]
-pinpoint-sms-voice = ["types-aiobotocore-pinpoint-sms-voice (>=2.5.0,<2.6.0)"]
-pinpoint-sms-voice-v2 = ["types-aiobotocore-pinpoint-sms-voice-v2 (>=2.5.0,<2.6.0)"]
-pipes = ["types-aiobotocore-pipes (>=2.5.0,<2.6.0)"]
-polly = ["types-aiobotocore-polly (>=2.5.0,<2.6.0)"]
-pricing = ["types-aiobotocore-pricing (>=2.5.0,<2.6.0)"]
-privatenetworks = ["types-aiobotocore-privatenetworks (>=2.5.0,<2.6.0)"]
-proton = ["types-aiobotocore-proton (>=2.5.0,<2.6.0)"]
-qldb = ["types-aiobotocore-qldb (>=2.5.0,<2.6.0)"]
-qldb-session = ["types-aiobotocore-qldb-session (>=2.5.0,<2.6.0)"]
-quicksight = ["types-aiobotocore-quicksight (>=2.5.0,<2.6.0)"]
-ram = ["types-aiobotocore-ram (>=2.5.0,<2.6.0)"]
-rbin = ["types-aiobotocore-rbin (>=2.5.0,<2.6.0)"]
-rds = ["types-aiobotocore-rds (>=2.5.0,<2.6.0)"]
-rds-data = ["types-aiobotocore-rds-data (>=2.5.0,<2.6.0)"]
-redshift = ["types-aiobotocore-redshift (>=2.5.0,<2.6.0)"]
-redshift-data = ["types-aiobotocore-redshift-data (>=2.5.0,<2.6.0)"]
-redshift-serverless = ["types-aiobotocore-redshift-serverless (>=2.5.0,<2.6.0)"]
-rekognition = ["types-aiobotocore-rekognition (>=2.5.0,<2.6.0)"]
-resiliencehub = ["types-aiobotocore-resiliencehub (>=2.5.0,<2.6.0)"]
-resource-explorer-2 = ["types-aiobotocore-resource-explorer-2 (>=2.5.0,<2.6.0)"]
-resource-groups = ["types-aiobotocore-resource-groups (>=2.5.0,<2.6.0)"]
-resourcegroupstaggingapi = ["types-aiobotocore-resourcegroupstaggingapi (>=2.5.0,<2.6.0)"]
-robomaker = ["types-aiobotocore-robomaker (>=2.5.0,<2.6.0)"]
-rolesanywhere = ["types-aiobotocore-rolesanywhere (>=2.5.0,<2.6.0)"]
-route53 = ["types-aiobotocore-route53 (>=2.5.0,<2.6.0)"]
-route53-recovery-cluster = ["types-aiobotocore-route53-recovery-cluster (>=2.5.0,<2.6.0)"]
-route53-recovery-control-config = ["types-aiobotocore-route53-recovery-control-config (>=2.5.0,<2.6.0)"]
-route53-recovery-readiness = ["types-aiobotocore-route53-recovery-readiness (>=2.5.0,<2.6.0)"]
-route53domains = ["types-aiobotocore-route53domains (>=2.5.0,<2.6.0)"]
-route53resolver = ["types-aiobotocore-route53resolver (>=2.5.0,<2.6.0)"]
-rum = ["types-aiobotocore-rum (>=2.5.0,<2.6.0)"]
-s3 = ["types-aiobotocore-s3 (>=2.5.0,<2.6.0)"]
-s3control = ["types-aiobotocore-s3control (>=2.5.0,<2.6.0)"]
-s3outposts = ["types-aiobotocore-s3outposts (>=2.5.0,<2.6.0)"]
-sagemaker = ["types-aiobotocore-sagemaker (>=2.5.0,<2.6.0)"]
-sagemaker-a2i-runtime = ["types-aiobotocore-sagemaker-a2i-runtime (>=2.5.0,<2.6.0)"]
-sagemaker-edge = ["types-aiobotocore-sagemaker-edge (>=2.5.0,<2.6.0)"]
-sagemaker-featurestore-runtime = ["types-aiobotocore-sagemaker-featurestore-runtime (>=2.5.0,<2.6.0)"]
-sagemaker-geospatial = ["types-aiobotocore-sagemaker-geospatial (>=2.5.0,<2.6.0)"]
-sagemaker-metrics = ["types-aiobotocore-sagemaker-metrics (>=2.5.0,<2.6.0)"]
-sagemaker-runtime = ["types-aiobotocore-sagemaker-runtime (>=2.5.0,<2.6.0)"]
-savingsplans = ["types-aiobotocore-savingsplans (>=2.5.0,<2.6.0)"]
-scheduler = ["types-aiobotocore-scheduler (>=2.5.0,<2.6.0)"]
-schemas = ["types-aiobotocore-schemas (>=2.5.0,<2.6.0)"]
-sdb = ["types-aiobotocore-sdb (>=2.5.0,<2.6.0)"]
-secretsmanager = ["types-aiobotocore-secretsmanager (>=2.5.0,<2.6.0)"]
-securityhub = ["types-aiobotocore-securityhub (>=2.5.0,<2.6.0)"]
-securitylake = ["types-aiobotocore-securitylake (>=2.5.0,<2.6.0)"]
-serverlessrepo = ["types-aiobotocore-serverlessrepo (>=2.5.0,<2.6.0)"]
-service-quotas = ["types-aiobotocore-service-quotas (>=2.5.0,<2.6.0)"]
-servicecatalog = ["types-aiobotocore-servicecatalog (>=2.5.0,<2.6.0)"]
-servicecatalog-appregistry = ["types-aiobotocore-servicecatalog-appregistry (>=2.5.0,<2.6.0)"]
-servicediscovery = ["types-aiobotocore-servicediscovery (>=2.5.0,<2.6.0)"]
-ses = ["types-aiobotocore-ses (>=2.5.0,<2.6.0)"]
-sesv2 = ["types-aiobotocore-sesv2 (>=2.5.0,<2.6.0)"]
-shield = ["types-aiobotocore-shield (>=2.5.0,<2.6.0)"]
-signer = ["types-aiobotocore-signer (>=2.5.0,<2.6.0)"]
-simspaceweaver = ["types-aiobotocore-simspaceweaver (>=2.5.0,<2.6.0)"]
-sms = ["types-aiobotocore-sms (>=2.5.0,<2.6.0)"]
-sms-voice = ["types-aiobotocore-sms-voice (>=2.5.0,<2.6.0)"]
-snow-device-management = ["types-aiobotocore-snow-device-management (>=2.5.0,<2.6.0)"]
-snowball = ["types-aiobotocore-snowball (>=2.5.0,<2.6.0)"]
-sns = ["types-aiobotocore-sns (>=2.5.0,<2.6.0)"]
-sqs = ["types-aiobotocore-sqs (>=2.5.0,<2.6.0)"]
-ssm = ["types-aiobotocore-ssm (>=2.5.0,<2.6.0)"]
-ssm-contacts = ["types-aiobotocore-ssm-contacts (>=2.5.0,<2.6.0)"]
-ssm-incidents = ["types-aiobotocore-ssm-incidents (>=2.5.0,<2.6.0)"]
-ssm-sap = ["types-aiobotocore-ssm-sap (>=2.5.0,<2.6.0)"]
-sso = ["types-aiobotocore-sso (>=2.5.0,<2.6.0)"]
-sso-admin = ["types-aiobotocore-sso-admin (>=2.5.0,<2.6.0)"]
-sso-oidc = ["types-aiobotocore-sso-oidc (>=2.5.0,<2.6.0)"]
-stepfunctions = ["types-aiobotocore-stepfunctions (>=2.5.0,<2.6.0)"]
-storagegateway = ["types-aiobotocore-storagegateway (>=2.5.0,<2.6.0)"]
-sts = ["types-aiobotocore-sts (>=2.5.0,<2.6.0)"]
-support = ["types-aiobotocore-support (>=2.5.0,<2.6.0)"]
-support-app = ["types-aiobotocore-support-app (>=2.5.0,<2.6.0)"]
-swf = ["types-aiobotocore-swf (>=2.5.0,<2.6.0)"]
-synthetics = ["types-aiobotocore-synthetics (>=2.5.0,<2.6.0)"]
-textract = ["types-aiobotocore-textract (>=2.5.0,<2.6.0)"]
-timestream-query = ["types-aiobotocore-timestream-query (>=2.5.0,<2.6.0)"]
-timestream-write = ["types-aiobotocore-timestream-write (>=2.5.0,<2.6.0)"]
-tnb = ["types-aiobotocore-tnb (>=2.5.0,<2.6.0)"]
-transcribe = ["types-aiobotocore-transcribe (>=2.5.0,<2.6.0)"]
-transfer = ["types-aiobotocore-transfer (>=2.5.0,<2.6.0)"]
-translate = ["types-aiobotocore-translate (>=2.5.0,<2.6.0)"]
-verifiedpermissions = ["types-aiobotocore-verifiedpermissions (>=2.5.0,<2.6.0)"]
-voice-id = ["types-aiobotocore-voice-id (>=2.5.0,<2.6.0)"]
-vpc-lattice = ["types-aiobotocore-vpc-lattice (>=2.5.0,<2.6.0)"]
-waf = ["types-aiobotocore-waf (>=2.5.0,<2.6.0)"]
-waf-regional = ["types-aiobotocore-waf-regional (>=2.5.0,<2.6.0)"]
-wafv2 = ["types-aiobotocore-wafv2 (>=2.5.0,<2.6.0)"]
-wellarchitected = ["types-aiobotocore-wellarchitected (>=2.5.0,<2.6.0)"]
-wisdom = ["types-aiobotocore-wisdom (>=2.5.0,<2.6.0)"]
-workdocs = ["types-aiobotocore-workdocs (>=2.5.0,<2.6.0)"]
-worklink = ["types-aiobotocore-worklink (>=2.5.0,<2.6.0)"]
-workmail = ["types-aiobotocore-workmail (>=2.5.0,<2.6.0)"]
-workmailmessageflow = ["types-aiobotocore-workmailmessageflow (>=2.5.0,<2.6.0)"]
-workspaces = ["types-aiobotocore-workspaces (>=2.5.0,<2.6.0)"]
-workspaces-web = ["types-aiobotocore-workspaces-web (>=2.5.0,<2.6.0)"]
-xray = ["types-aiobotocore-xray (>=2.5.0,<2.6.0)"]
+accessanalyzer = ["types-aiobotocore-accessanalyzer (>=2.6.0,<2.7.0)"]
+account = ["types-aiobotocore-account (>=2.6.0,<2.7.0)"]
+acm = ["types-aiobotocore-acm (>=2.6.0,<2.7.0)"]
+acm-pca = ["types-aiobotocore-acm-pca (>=2.6.0,<2.7.0)"]
+aiobotocore = ["aiobotocore (==2.6.0)", "botocore (==1.31.17)"]
+alexaforbusiness = ["types-aiobotocore-alexaforbusiness (>=2.6.0,<2.7.0)"]
+all = ["types-aiobotocore-accessanalyzer (>=2.6.0,<2.7.0)", "types-aiobotocore-account (>=2.6.0,<2.7.0)", "types-aiobotocore-acm (>=2.6.0,<2.7.0)", "types-aiobotocore-acm-pca (>=2.6.0,<2.7.0)", "types-aiobotocore-alexaforbusiness (>=2.6.0,<2.7.0)", "types-aiobotocore-amp (>=2.6.0,<2.7.0)", "types-aiobotocore-amplify (>=2.6.0,<2.7.0)", "types-aiobotocore-amplifybackend (>=2.6.0,<2.7.0)", "types-aiobotocore-amplifyuibuilder (>=2.6.0,<2.7.0)", "types-aiobotocore-apigateway (>=2.6.0,<2.7.0)", "types-aiobotocore-apigatewaymanagementapi (>=2.6.0,<2.7.0)", "types-aiobotocore-apigatewayv2 (>=2.6.0,<2.7.0)", "types-aiobotocore-appconfig (>=2.6.0,<2.7.0)", "types-aiobotocore-appconfigdata (>=2.6.0,<2.7.0)", "types-aiobotocore-appfabric (>=2.6.0,<2.7.0)", "types-aiobotocore-appflow (>=2.6.0,<2.7.0)", "types-aiobotocore-appintegrations (>=2.6.0,<2.7.0)", "types-aiobotocore-application-autoscaling (>=2.6.0,<2.7.0)", "types-aiobotocore-application-insights (>=2.6.0,<2.7.0)", "types-aiobotocore-applicationcostprofiler (>=2.6.0,<2.7.0)", "types-aiobotocore-appmesh (>=2.6.0,<2.7.0)", "types-aiobotocore-apprunner (>=2.6.0,<2.7.0)", "types-aiobotocore-appstream (>=2.6.0,<2.7.0)", "types-aiobotocore-appsync (>=2.6.0,<2.7.0)", "types-aiobotocore-arc-zonal-shift (>=2.6.0,<2.7.0)", "types-aiobotocore-athena (>=2.6.0,<2.7.0)", "types-aiobotocore-auditmanager (>=2.6.0,<2.7.0)", "types-aiobotocore-autoscaling (>=2.6.0,<2.7.0)", "types-aiobotocore-autoscaling-plans (>=2.6.0,<2.7.0)", "types-aiobotocore-backup (>=2.6.0,<2.7.0)", "types-aiobotocore-backup-gateway (>=2.6.0,<2.7.0)", "types-aiobotocore-backupstorage (>=2.6.0,<2.7.0)", "types-aiobotocore-batch (>=2.6.0,<2.7.0)", "types-aiobotocore-billingconductor (>=2.6.0,<2.7.0)", "types-aiobotocore-braket (>=2.6.0,<2.7.0)", "types-aiobotocore-budgets (>=2.6.0,<2.7.0)", "types-aiobotocore-ce (>=2.6.0,<2.7.0)", "types-aiobotocore-chime (>=2.6.0,<2.7.0)", "types-aiobotocore-chime-sdk-identity (>=2.6.0,<2.7.0)", "types-aiobotocore-chime-sdk-media-pipelines (>=2.6.0,<2.7.0)", "types-aiobotocore-chime-sdk-meetings (>=2.6.0,<2.7.0)", "types-aiobotocore-chime-sdk-messaging (>=2.6.0,<2.7.0)", "types-aiobotocore-chime-sdk-voice (>=2.6.0,<2.7.0)", "types-aiobotocore-cleanrooms (>=2.6.0,<2.7.0)", "types-aiobotocore-cloud9 (>=2.6.0,<2.7.0)", "types-aiobotocore-cloudcontrol (>=2.6.0,<2.7.0)", "types-aiobotocore-clouddirectory (>=2.6.0,<2.7.0)", "types-aiobotocore-cloudformation (>=2.6.0,<2.7.0)", "types-aiobotocore-cloudfront (>=2.6.0,<2.7.0)", "types-aiobotocore-cloudhsm (>=2.6.0,<2.7.0)", "types-aiobotocore-cloudhsmv2 (>=2.6.0,<2.7.0)", "types-aiobotocore-cloudsearch (>=2.6.0,<2.7.0)", "types-aiobotocore-cloudsearchdomain (>=2.6.0,<2.7.0)", "types-aiobotocore-cloudtrail (>=2.6.0,<2.7.0)", "types-aiobotocore-cloudtrail-data (>=2.6.0,<2.7.0)", "types-aiobotocore-cloudwatch (>=2.6.0,<2.7.0)", "types-aiobotocore-codeartifact (>=2.6.0,<2.7.0)", "types-aiobotocore-codebuild (>=2.6.0,<2.7.0)", "types-aiobotocore-codecatalyst (>=2.6.0,<2.7.0)", "types-aiobotocore-codecommit (>=2.6.0,<2.7.0)", "types-aiobotocore-codedeploy (>=2.6.0,<2.7.0)", "types-aiobotocore-codeguru-reviewer (>=2.6.0,<2.7.0)", "types-aiobotocore-codeguru-security (>=2.6.0,<2.7.0)", "types-aiobotocore-codeguruprofiler (>=2.6.0,<2.7.0)", "types-aiobotocore-codepipeline (>=2.6.0,<2.7.0)", "types-aiobotocore-codestar (>=2.6.0,<2.7.0)", "types-aiobotocore-codestar-connections (>=2.6.0,<2.7.0)", "types-aiobotocore-codestar-notifications (>=2.6.0,<2.7.0)", "types-aiobotocore-cognito-identity (>=2.6.0,<2.7.0)", "types-aiobotocore-cognito-idp (>=2.6.0,<2.7.0)", "types-aiobotocore-cognito-sync (>=2.6.0,<2.7.0)", "types-aiobotocore-comprehend (>=2.6.0,<2.7.0)", "types-aiobotocore-comprehendmedical (>=2.6.0,<2.7.0)", "types-aiobotocore-compute-optimizer (>=2.6.0,<2.7.0)", "types-aiobotocore-config (>=2.6.0,<2.7.0)", "types-aiobotocore-connect (>=2.6.0,<2.7.0)", "types-aiobotocore-connect-contact-lens (>=2.6.0,<2.7.0)", "types-aiobotocore-connectcampaigns (>=2.6.0,<2.7.0)", "types-aiobotocore-connectcases (>=2.6.0,<2.7.0)", "types-aiobotocore-connectparticipant (>=2.6.0,<2.7.0)", "types-aiobotocore-controltower (>=2.6.0,<2.7.0)", "types-aiobotocore-cur (>=2.6.0,<2.7.0)", "types-aiobotocore-customer-profiles (>=2.6.0,<2.7.0)", "types-aiobotocore-databrew (>=2.6.0,<2.7.0)", "types-aiobotocore-dataexchange (>=2.6.0,<2.7.0)", "types-aiobotocore-datapipeline (>=2.6.0,<2.7.0)", "types-aiobotocore-datasync (>=2.6.0,<2.7.0)", "types-aiobotocore-dax (>=2.6.0,<2.7.0)", "types-aiobotocore-detective (>=2.6.0,<2.7.0)", "types-aiobotocore-devicefarm (>=2.6.0,<2.7.0)", "types-aiobotocore-devops-guru (>=2.6.0,<2.7.0)", "types-aiobotocore-directconnect (>=2.6.0,<2.7.0)", "types-aiobotocore-discovery (>=2.6.0,<2.7.0)", "types-aiobotocore-dlm (>=2.6.0,<2.7.0)", "types-aiobotocore-dms (>=2.6.0,<2.7.0)", "types-aiobotocore-docdb (>=2.6.0,<2.7.0)", "types-aiobotocore-docdb-elastic (>=2.6.0,<2.7.0)", "types-aiobotocore-drs (>=2.6.0,<2.7.0)", "types-aiobotocore-ds (>=2.6.0,<2.7.0)", "types-aiobotocore-dynamodb (>=2.6.0,<2.7.0)", "types-aiobotocore-dynamodbstreams (>=2.6.0,<2.7.0)", "types-aiobotocore-ebs (>=2.6.0,<2.7.0)", "types-aiobotocore-ec2 (>=2.6.0,<2.7.0)", "types-aiobotocore-ec2-instance-connect (>=2.6.0,<2.7.0)", "types-aiobotocore-ecr (>=2.6.0,<2.7.0)", "types-aiobotocore-ecr-public (>=2.6.0,<2.7.0)", "types-aiobotocore-ecs (>=2.6.0,<2.7.0)", "types-aiobotocore-efs (>=2.6.0,<2.7.0)", "types-aiobotocore-eks (>=2.6.0,<2.7.0)", "types-aiobotocore-elastic-inference (>=2.6.0,<2.7.0)", "types-aiobotocore-elasticache (>=2.6.0,<2.7.0)", "types-aiobotocore-elasticbeanstalk (>=2.6.0,<2.7.0)", "types-aiobotocore-elastictranscoder (>=2.6.0,<2.7.0)", "types-aiobotocore-elb (>=2.6.0,<2.7.0)", "types-aiobotocore-elbv2 (>=2.6.0,<2.7.0)", "types-aiobotocore-emr (>=2.6.0,<2.7.0)", "types-aiobotocore-emr-containers (>=2.6.0,<2.7.0)", "types-aiobotocore-emr-serverless (>=2.6.0,<2.7.0)", "types-aiobotocore-entityresolution (>=2.6.0,<2.7.0)", "types-aiobotocore-es (>=2.6.0,<2.7.0)", "types-aiobotocore-events (>=2.6.0,<2.7.0)", "types-aiobotocore-evidently (>=2.6.0,<2.7.0)", "types-aiobotocore-finspace (>=2.6.0,<2.7.0)", "types-aiobotocore-finspace-data (>=2.6.0,<2.7.0)", "types-aiobotocore-firehose (>=2.6.0,<2.7.0)", "types-aiobotocore-fis (>=2.6.0,<2.7.0)", "types-aiobotocore-fms (>=2.6.0,<2.7.0)", "types-aiobotocore-forecast (>=2.6.0,<2.7.0)", "types-aiobotocore-forecastquery (>=2.6.0,<2.7.0)", "types-aiobotocore-frauddetector (>=2.6.0,<2.7.0)", "types-aiobotocore-fsx (>=2.6.0,<2.7.0)", "types-aiobotocore-gamelift (>=2.6.0,<2.7.0)", "types-aiobotocore-gamesparks (>=2.6.0,<2.7.0)", "types-aiobotocore-glacier (>=2.6.0,<2.7.0)", "types-aiobotocore-globalaccelerator (>=2.6.0,<2.7.0)", "types-aiobotocore-glue (>=2.6.0,<2.7.0)", "types-aiobotocore-grafana (>=2.6.0,<2.7.0)", "types-aiobotocore-greengrass (>=2.6.0,<2.7.0)", "types-aiobotocore-greengrassv2 (>=2.6.0,<2.7.0)", "types-aiobotocore-groundstation (>=2.6.0,<2.7.0)", "types-aiobotocore-guardduty (>=2.6.0,<2.7.0)", "types-aiobotocore-health (>=2.6.0,<2.7.0)", "types-aiobotocore-healthlake (>=2.6.0,<2.7.0)", "types-aiobotocore-honeycode (>=2.6.0,<2.7.0)", "types-aiobotocore-iam (>=2.6.0,<2.7.0)", "types-aiobotocore-identitystore (>=2.6.0,<2.7.0)", "types-aiobotocore-imagebuilder (>=2.6.0,<2.7.0)", "types-aiobotocore-importexport (>=2.6.0,<2.7.0)", "types-aiobotocore-inspector (>=2.6.0,<2.7.0)", "types-aiobotocore-inspector2 (>=2.6.0,<2.7.0)", "types-aiobotocore-internetmonitor (>=2.6.0,<2.7.0)", "types-aiobotocore-iot (>=2.6.0,<2.7.0)", "types-aiobotocore-iot-data (>=2.6.0,<2.7.0)", "types-aiobotocore-iot-jobs-data (>=2.6.0,<2.7.0)", "types-aiobotocore-iot-roborunner (>=2.6.0,<2.7.0)", "types-aiobotocore-iot1click-devices (>=2.6.0,<2.7.0)", "types-aiobotocore-iot1click-projects (>=2.6.0,<2.7.0)", "types-aiobotocore-iotanalytics (>=2.6.0,<2.7.0)", "types-aiobotocore-iotdeviceadvisor (>=2.6.0,<2.7.0)", "types-aiobotocore-iotevents (>=2.6.0,<2.7.0)", "types-aiobotocore-iotevents-data (>=2.6.0,<2.7.0)", "types-aiobotocore-iotfleethub (>=2.6.0,<2.7.0)", "types-aiobotocore-iotfleetwise (>=2.6.0,<2.7.0)", "types-aiobotocore-iotsecuretunneling (>=2.6.0,<2.7.0)", "types-aiobotocore-iotsitewise (>=2.6.0,<2.7.0)", "types-aiobotocore-iotthingsgraph (>=2.6.0,<2.7.0)", "types-aiobotocore-iottwinmaker (>=2.6.0,<2.7.0)", "types-aiobotocore-iotwireless (>=2.6.0,<2.7.0)", "types-aiobotocore-ivs (>=2.6.0,<2.7.0)", "types-aiobotocore-ivs-realtime (>=2.6.0,<2.7.0)", "types-aiobotocore-ivschat (>=2.6.0,<2.7.0)", "types-aiobotocore-kafka (>=2.6.0,<2.7.0)", "types-aiobotocore-kafkaconnect (>=2.6.0,<2.7.0)", "types-aiobotocore-kendra (>=2.6.0,<2.7.0)", "types-aiobotocore-kendra-ranking (>=2.6.0,<2.7.0)", "types-aiobotocore-keyspaces (>=2.6.0,<2.7.0)", "types-aiobotocore-kinesis (>=2.6.0,<2.7.0)", "types-aiobotocore-kinesis-video-archived-media (>=2.6.0,<2.7.0)", "types-aiobotocore-kinesis-video-media (>=2.6.0,<2.7.0)", "types-aiobotocore-kinesis-video-signaling (>=2.6.0,<2.7.0)", "types-aiobotocore-kinesis-video-webrtc-storage (>=2.6.0,<2.7.0)", "types-aiobotocore-kinesisanalytics (>=2.6.0,<2.7.0)", "types-aiobotocore-kinesisanalyticsv2 (>=2.6.0,<2.7.0)", "types-aiobotocore-kinesisvideo (>=2.6.0,<2.7.0)", "types-aiobotocore-kms (>=2.6.0,<2.7.0)", "types-aiobotocore-lakeformation (>=2.6.0,<2.7.0)", "types-aiobotocore-lambda (>=2.6.0,<2.7.0)", "types-aiobotocore-lex-models (>=2.6.0,<2.7.0)", "types-aiobotocore-lex-runtime (>=2.6.0,<2.7.0)", "types-aiobotocore-lexv2-models (>=2.6.0,<2.7.0)", "types-aiobotocore-lexv2-runtime (>=2.6.0,<2.7.0)", "types-aiobotocore-license-manager (>=2.6.0,<2.7.0)", "types-aiobotocore-license-manager-linux-subscriptions (>=2.6.0,<2.7.0)", "types-aiobotocore-license-manager-user-subscriptions (>=2.6.0,<2.7.0)", "types-aiobotocore-lightsail (>=2.6.0,<2.7.0)", "types-aiobotocore-location (>=2.6.0,<2.7.0)", "types-aiobotocore-logs (>=2.6.0,<2.7.0)", "types-aiobotocore-lookoutequipment (>=2.6.0,<2.7.0)", "types-aiobotocore-lookoutmetrics (>=2.6.0,<2.7.0)", "types-aiobotocore-lookoutvision (>=2.6.0,<2.7.0)", "types-aiobotocore-m2 (>=2.6.0,<2.7.0)", "types-aiobotocore-machinelearning (>=2.6.0,<2.7.0)", "types-aiobotocore-macie (>=2.6.0,<2.7.0)", "types-aiobotocore-macie2 (>=2.6.0,<2.7.0)", "types-aiobotocore-managedblockchain (>=2.6.0,<2.7.0)", "types-aiobotocore-managedblockchain-query (>=2.6.0,<2.7.0)", "types-aiobotocore-marketplace-catalog (>=2.6.0,<2.7.0)", "types-aiobotocore-marketplace-entitlement (>=2.6.0,<2.7.0)", "types-aiobotocore-marketplacecommerceanalytics (>=2.6.0,<2.7.0)", "types-aiobotocore-mediaconnect (>=2.6.0,<2.7.0)", "types-aiobotocore-mediaconvert (>=2.6.0,<2.7.0)", "types-aiobotocore-medialive (>=2.6.0,<2.7.0)", "types-aiobotocore-mediapackage (>=2.6.0,<2.7.0)", "types-aiobotocore-mediapackage-vod (>=2.6.0,<2.7.0)", "types-aiobotocore-mediapackagev2 (>=2.6.0,<2.7.0)", "types-aiobotocore-mediastore (>=2.6.0,<2.7.0)", "types-aiobotocore-mediastore-data (>=2.6.0,<2.7.0)", "types-aiobotocore-mediatailor (>=2.6.0,<2.7.0)", "types-aiobotocore-medical-imaging (>=2.6.0,<2.7.0)", "types-aiobotocore-memorydb (>=2.6.0,<2.7.0)", "types-aiobotocore-meteringmarketplace (>=2.6.0,<2.7.0)", "types-aiobotocore-mgh (>=2.6.0,<2.7.0)", "types-aiobotocore-mgn (>=2.6.0,<2.7.0)", "types-aiobotocore-migration-hub-refactor-spaces (>=2.6.0,<2.7.0)", "types-aiobotocore-migrationhub-config (>=2.6.0,<2.7.0)", "types-aiobotocore-migrationhuborchestrator (>=2.6.0,<2.7.0)", "types-aiobotocore-migrationhubstrategy (>=2.6.0,<2.7.0)", "types-aiobotocore-mobile (>=2.6.0,<2.7.0)", "types-aiobotocore-mq (>=2.6.0,<2.7.0)", "types-aiobotocore-mturk (>=2.6.0,<2.7.0)", "types-aiobotocore-mwaa (>=2.6.0,<2.7.0)", "types-aiobotocore-neptune (>=2.6.0,<2.7.0)", "types-aiobotocore-network-firewall (>=2.6.0,<2.7.0)", "types-aiobotocore-networkmanager (>=2.6.0,<2.7.0)", "types-aiobotocore-nimble (>=2.6.0,<2.7.0)", "types-aiobotocore-oam (>=2.6.0,<2.7.0)", "types-aiobotocore-omics (>=2.6.0,<2.7.0)", "types-aiobotocore-opensearch (>=2.6.0,<2.7.0)", "types-aiobotocore-opensearchserverless (>=2.6.0,<2.7.0)", "types-aiobotocore-opsworks (>=2.6.0,<2.7.0)", "types-aiobotocore-opsworkscm (>=2.6.0,<2.7.0)", "types-aiobotocore-organizations (>=2.6.0,<2.7.0)", "types-aiobotocore-osis (>=2.6.0,<2.7.0)", "types-aiobotocore-outposts (>=2.6.0,<2.7.0)", "types-aiobotocore-panorama (>=2.6.0,<2.7.0)", "types-aiobotocore-payment-cryptography (>=2.6.0,<2.7.0)", "types-aiobotocore-payment-cryptography-data (>=2.6.0,<2.7.0)", "types-aiobotocore-personalize (>=2.6.0,<2.7.0)", "types-aiobotocore-personalize-events (>=2.6.0,<2.7.0)", "types-aiobotocore-personalize-runtime (>=2.6.0,<2.7.0)", "types-aiobotocore-pi (>=2.6.0,<2.7.0)", "types-aiobotocore-pinpoint (>=2.6.0,<2.7.0)", "types-aiobotocore-pinpoint-email (>=2.6.0,<2.7.0)", "types-aiobotocore-pinpoint-sms-voice (>=2.6.0,<2.7.0)", "types-aiobotocore-pinpoint-sms-voice-v2 (>=2.6.0,<2.7.0)", "types-aiobotocore-pipes (>=2.6.0,<2.7.0)", "types-aiobotocore-polly (>=2.6.0,<2.7.0)", "types-aiobotocore-pricing (>=2.6.0,<2.7.0)", "types-aiobotocore-privatenetworks (>=2.6.0,<2.7.0)", "types-aiobotocore-proton (>=2.6.0,<2.7.0)", "types-aiobotocore-qldb (>=2.6.0,<2.7.0)", "types-aiobotocore-qldb-session (>=2.6.0,<2.7.0)", "types-aiobotocore-quicksight (>=2.6.0,<2.7.0)", "types-aiobotocore-ram (>=2.6.0,<2.7.0)", "types-aiobotocore-rbin (>=2.6.0,<2.7.0)", "types-aiobotocore-rds (>=2.6.0,<2.7.0)", "types-aiobotocore-rds-data (>=2.6.0,<2.7.0)", "types-aiobotocore-redshift (>=2.6.0,<2.7.0)", "types-aiobotocore-redshift-data (>=2.6.0,<2.7.0)", "types-aiobotocore-redshift-serverless (>=2.6.0,<2.7.0)", "types-aiobotocore-rekognition (>=2.6.0,<2.7.0)", "types-aiobotocore-resiliencehub (>=2.6.0,<2.7.0)", "types-aiobotocore-resource-explorer-2 (>=2.6.0,<2.7.0)", "types-aiobotocore-resource-groups (>=2.6.0,<2.7.0)", "types-aiobotocore-resourcegroupstaggingapi (>=2.6.0,<2.7.0)", "types-aiobotocore-robomaker (>=2.6.0,<2.7.0)", "types-aiobotocore-rolesanywhere (>=2.6.0,<2.7.0)", "types-aiobotocore-route53 (>=2.6.0,<2.7.0)", "types-aiobotocore-route53-recovery-cluster (>=2.6.0,<2.7.0)", "types-aiobotocore-route53-recovery-control-config (>=2.6.0,<2.7.0)", "types-aiobotocore-route53-recovery-readiness (>=2.6.0,<2.7.0)", "types-aiobotocore-route53domains (>=2.6.0,<2.7.0)", "types-aiobotocore-route53resolver (>=2.6.0,<2.7.0)", "types-aiobotocore-rum (>=2.6.0,<2.7.0)", "types-aiobotocore-s3 (>=2.6.0,<2.7.0)", "types-aiobotocore-s3control (>=2.6.0,<2.7.0)", "types-aiobotocore-s3outposts (>=2.6.0,<2.7.0)", "types-aiobotocore-sagemaker (>=2.6.0,<2.7.0)", "types-aiobotocore-sagemaker-a2i-runtime (>=2.6.0,<2.7.0)", "types-aiobotocore-sagemaker-edge (>=2.6.0,<2.7.0)", "types-aiobotocore-sagemaker-featurestore-runtime (>=2.6.0,<2.7.0)", "types-aiobotocore-sagemaker-geospatial (>=2.6.0,<2.7.0)", "types-aiobotocore-sagemaker-metrics (>=2.6.0,<2.7.0)", "types-aiobotocore-sagemaker-runtime (>=2.6.0,<2.7.0)", "types-aiobotocore-savingsplans (>=2.6.0,<2.7.0)", "types-aiobotocore-scheduler (>=2.6.0,<2.7.0)", "types-aiobotocore-schemas (>=2.6.0,<2.7.0)", "types-aiobotocore-sdb (>=2.6.0,<2.7.0)", "types-aiobotocore-secretsmanager (>=2.6.0,<2.7.0)", "types-aiobotocore-securityhub (>=2.6.0,<2.7.0)", "types-aiobotocore-securitylake (>=2.6.0,<2.7.0)", "types-aiobotocore-serverlessrepo (>=2.6.0,<2.7.0)", "types-aiobotocore-service-quotas (>=2.6.0,<2.7.0)", "types-aiobotocore-servicecatalog (>=2.6.0,<2.7.0)", "types-aiobotocore-servicecatalog-appregistry (>=2.6.0,<2.7.0)", "types-aiobotocore-servicediscovery (>=2.6.0,<2.7.0)", "types-aiobotocore-ses (>=2.6.0,<2.7.0)", "types-aiobotocore-sesv2 (>=2.6.0,<2.7.0)", "types-aiobotocore-shield (>=2.6.0,<2.7.0)", "types-aiobotocore-signer (>=2.6.0,<2.7.0)", "types-aiobotocore-simspaceweaver (>=2.6.0,<2.7.0)", "types-aiobotocore-sms (>=2.6.0,<2.7.0)", "types-aiobotocore-sms-voice (>=2.6.0,<2.7.0)", "types-aiobotocore-snow-device-management (>=2.6.0,<2.7.0)", "types-aiobotocore-snowball (>=2.6.0,<2.7.0)", "types-aiobotocore-sns (>=2.6.0,<2.7.0)", "types-aiobotocore-sqs (>=2.6.0,<2.7.0)", "types-aiobotocore-ssm (>=2.6.0,<2.7.0)", "types-aiobotocore-ssm-contacts (>=2.6.0,<2.7.0)", "types-aiobotocore-ssm-incidents (>=2.6.0,<2.7.0)", "types-aiobotocore-ssm-sap (>=2.6.0,<2.7.0)", "types-aiobotocore-sso (>=2.6.0,<2.7.0)", "types-aiobotocore-sso-admin (>=2.6.0,<2.7.0)", "types-aiobotocore-sso-oidc (>=2.6.0,<2.7.0)", "types-aiobotocore-stepfunctions (>=2.6.0,<2.7.0)", "types-aiobotocore-storagegateway (>=2.6.0,<2.7.0)", "types-aiobotocore-sts (>=2.6.0,<2.7.0)", "types-aiobotocore-support (>=2.6.0,<2.7.0)", "types-aiobotocore-support-app (>=2.6.0,<2.7.0)", "types-aiobotocore-swf (>=2.6.0,<2.7.0)", "types-aiobotocore-synthetics (>=2.6.0,<2.7.0)", "types-aiobotocore-textract (>=2.6.0,<2.7.0)", "types-aiobotocore-timestream-query (>=2.6.0,<2.7.0)", "types-aiobotocore-timestream-write (>=2.6.0,<2.7.0)", "types-aiobotocore-tnb (>=2.6.0,<2.7.0)", "types-aiobotocore-transcribe (>=2.6.0,<2.7.0)", "types-aiobotocore-transfer (>=2.6.0,<2.7.0)", "types-aiobotocore-translate (>=2.6.0,<2.7.0)", "types-aiobotocore-verifiedpermissions (>=2.6.0,<2.7.0)", "types-aiobotocore-voice-id (>=2.6.0,<2.7.0)", "types-aiobotocore-vpc-lattice (>=2.6.0,<2.7.0)", "types-aiobotocore-waf (>=2.6.0,<2.7.0)", "types-aiobotocore-waf-regional (>=2.6.0,<2.7.0)", "types-aiobotocore-wafv2 (>=2.6.0,<2.7.0)", "types-aiobotocore-wellarchitected (>=2.6.0,<2.7.0)", "types-aiobotocore-wisdom (>=2.6.0,<2.7.0)", "types-aiobotocore-workdocs (>=2.6.0,<2.7.0)", "types-aiobotocore-worklink (>=2.6.0,<2.7.0)", "types-aiobotocore-workmail (>=2.6.0,<2.7.0)", "types-aiobotocore-workmailmessageflow (>=2.6.0,<2.7.0)", "types-aiobotocore-workspaces (>=2.6.0,<2.7.0)", "types-aiobotocore-workspaces-web (>=2.6.0,<2.7.0)", "types-aiobotocore-xray (>=2.6.0,<2.7.0)"]
+amp = ["types-aiobotocore-amp (>=2.6.0,<2.7.0)"]
+amplify = ["types-aiobotocore-amplify (>=2.6.0,<2.7.0)"]
+amplifybackend = ["types-aiobotocore-amplifybackend (>=2.6.0,<2.7.0)"]
+amplifyuibuilder = ["types-aiobotocore-amplifyuibuilder (>=2.6.0,<2.7.0)"]
+apigateway = ["types-aiobotocore-apigateway (>=2.6.0,<2.7.0)"]
+apigatewaymanagementapi = ["types-aiobotocore-apigatewaymanagementapi (>=2.6.0,<2.7.0)"]
+apigatewayv2 = ["types-aiobotocore-apigatewayv2 (>=2.6.0,<2.7.0)"]
+appconfig = ["types-aiobotocore-appconfig (>=2.6.0,<2.7.0)"]
+appconfigdata = ["types-aiobotocore-appconfigdata (>=2.6.0,<2.7.0)"]
+appfabric = ["types-aiobotocore-appfabric (>=2.6.0,<2.7.0)"]
+appflow = ["types-aiobotocore-appflow (>=2.6.0,<2.7.0)"]
+appintegrations = ["types-aiobotocore-appintegrations (>=2.6.0,<2.7.0)"]
+application-autoscaling = ["types-aiobotocore-application-autoscaling (>=2.6.0,<2.7.0)"]
+application-insights = ["types-aiobotocore-application-insights (>=2.6.0,<2.7.0)"]
+applicationcostprofiler = ["types-aiobotocore-applicationcostprofiler (>=2.6.0,<2.7.0)"]
+appmesh = ["types-aiobotocore-appmesh (>=2.6.0,<2.7.0)"]
+apprunner = ["types-aiobotocore-apprunner (>=2.6.0,<2.7.0)"]
+appstream = ["types-aiobotocore-appstream (>=2.6.0,<2.7.0)"]
+appsync = ["types-aiobotocore-appsync (>=2.6.0,<2.7.0)"]
+arc-zonal-shift = ["types-aiobotocore-arc-zonal-shift (>=2.6.0,<2.7.0)"]
+athena = ["types-aiobotocore-athena (>=2.6.0,<2.7.0)"]
+auditmanager = ["types-aiobotocore-auditmanager (>=2.6.0,<2.7.0)"]
+autoscaling = ["types-aiobotocore-autoscaling (>=2.6.0,<2.7.0)"]
+autoscaling-plans = ["types-aiobotocore-autoscaling-plans (>=2.6.0,<2.7.0)"]
+backup = ["types-aiobotocore-backup (>=2.6.0,<2.7.0)"]
+backup-gateway = ["types-aiobotocore-backup-gateway (>=2.6.0,<2.7.0)"]
+backupstorage = ["types-aiobotocore-backupstorage (>=2.6.0,<2.7.0)"]
+batch = ["types-aiobotocore-batch (>=2.6.0,<2.7.0)"]
+billingconductor = ["types-aiobotocore-billingconductor (>=2.6.0,<2.7.0)"]
+braket = ["types-aiobotocore-braket (>=2.6.0,<2.7.0)"]
+budgets = ["types-aiobotocore-budgets (>=2.6.0,<2.7.0)"]
+ce = ["types-aiobotocore-ce (>=2.6.0,<2.7.0)"]
+chime = ["types-aiobotocore-chime (>=2.6.0,<2.7.0)"]
+chime-sdk-identity = ["types-aiobotocore-chime-sdk-identity (>=2.6.0,<2.7.0)"]
+chime-sdk-media-pipelines = ["types-aiobotocore-chime-sdk-media-pipelines (>=2.6.0,<2.7.0)"]
+chime-sdk-meetings = ["types-aiobotocore-chime-sdk-meetings (>=2.6.0,<2.7.0)"]
+chime-sdk-messaging = ["types-aiobotocore-chime-sdk-messaging (>=2.6.0,<2.7.0)"]
+chime-sdk-voice = ["types-aiobotocore-chime-sdk-voice (>=2.6.0,<2.7.0)"]
+cleanrooms = ["types-aiobotocore-cleanrooms (>=2.6.0,<2.7.0)"]
+cloud9 = ["types-aiobotocore-cloud9 (>=2.6.0,<2.7.0)"]
+cloudcontrol = ["types-aiobotocore-cloudcontrol (>=2.6.0,<2.7.0)"]
+clouddirectory = ["types-aiobotocore-clouddirectory (>=2.6.0,<2.7.0)"]
+cloudformation = ["types-aiobotocore-cloudformation (>=2.6.0,<2.7.0)"]
+cloudfront = ["types-aiobotocore-cloudfront (>=2.6.0,<2.7.0)"]
+cloudhsm = ["types-aiobotocore-cloudhsm (>=2.6.0,<2.7.0)"]
+cloudhsmv2 = ["types-aiobotocore-cloudhsmv2 (>=2.6.0,<2.7.0)"]
+cloudsearch = ["types-aiobotocore-cloudsearch (>=2.6.0,<2.7.0)"]
+cloudsearchdomain = ["types-aiobotocore-cloudsearchdomain (>=2.6.0,<2.7.0)"]
+cloudtrail = ["types-aiobotocore-cloudtrail (>=2.6.0,<2.7.0)"]
+cloudtrail-data = ["types-aiobotocore-cloudtrail-data (>=2.6.0,<2.7.0)"]
+cloudwatch = ["types-aiobotocore-cloudwatch (>=2.6.0,<2.7.0)"]
+codeartifact = ["types-aiobotocore-codeartifact (>=2.6.0,<2.7.0)"]
+codebuild = ["types-aiobotocore-codebuild (>=2.6.0,<2.7.0)"]
+codecatalyst = ["types-aiobotocore-codecatalyst (>=2.6.0,<2.7.0)"]
+codecommit = ["types-aiobotocore-codecommit (>=2.6.0,<2.7.0)"]
+codedeploy = ["types-aiobotocore-codedeploy (>=2.6.0,<2.7.0)"]
+codeguru-reviewer = ["types-aiobotocore-codeguru-reviewer (>=2.6.0,<2.7.0)"]
+codeguru-security = ["types-aiobotocore-codeguru-security (>=2.6.0,<2.7.0)"]
+codeguruprofiler = ["types-aiobotocore-codeguruprofiler (>=2.6.0,<2.7.0)"]
+codepipeline = ["types-aiobotocore-codepipeline (>=2.6.0,<2.7.0)"]
+codestar = ["types-aiobotocore-codestar (>=2.6.0,<2.7.0)"]
+codestar-connections = ["types-aiobotocore-codestar-connections (>=2.6.0,<2.7.0)"]
+codestar-notifications = ["types-aiobotocore-codestar-notifications (>=2.6.0,<2.7.0)"]
+cognito-identity = ["types-aiobotocore-cognito-identity (>=2.6.0,<2.7.0)"]
+cognito-idp = ["types-aiobotocore-cognito-idp (>=2.6.0,<2.7.0)"]
+cognito-sync = ["types-aiobotocore-cognito-sync (>=2.6.0,<2.7.0)"]
+comprehend = ["types-aiobotocore-comprehend (>=2.6.0,<2.7.0)"]
+comprehendmedical = ["types-aiobotocore-comprehendmedical (>=2.6.0,<2.7.0)"]
+compute-optimizer = ["types-aiobotocore-compute-optimizer (>=2.6.0,<2.7.0)"]
+config = ["types-aiobotocore-config (>=2.6.0,<2.7.0)"]
+connect = ["types-aiobotocore-connect (>=2.6.0,<2.7.0)"]
+connect-contact-lens = ["types-aiobotocore-connect-contact-lens (>=2.6.0,<2.7.0)"]
+connectcampaigns = ["types-aiobotocore-connectcampaigns (>=2.6.0,<2.7.0)"]
+connectcases = ["types-aiobotocore-connectcases (>=2.6.0,<2.7.0)"]
+connectparticipant = ["types-aiobotocore-connectparticipant (>=2.6.0,<2.7.0)"]
+controltower = ["types-aiobotocore-controltower (>=2.6.0,<2.7.0)"]
+cur = ["types-aiobotocore-cur (>=2.6.0,<2.7.0)"]
+customer-profiles = ["types-aiobotocore-customer-profiles (>=2.6.0,<2.7.0)"]
+databrew = ["types-aiobotocore-databrew (>=2.6.0,<2.7.0)"]
+dataexchange = ["types-aiobotocore-dataexchange (>=2.6.0,<2.7.0)"]
+datapipeline = ["types-aiobotocore-datapipeline (>=2.6.0,<2.7.0)"]
+datasync = ["types-aiobotocore-datasync (>=2.6.0,<2.7.0)"]
+dax = ["types-aiobotocore-dax (>=2.6.0,<2.7.0)"]
+detective = ["types-aiobotocore-detective (>=2.6.0,<2.7.0)"]
+devicefarm = ["types-aiobotocore-devicefarm (>=2.6.0,<2.7.0)"]
+devops-guru = ["types-aiobotocore-devops-guru (>=2.6.0,<2.7.0)"]
+directconnect = ["types-aiobotocore-directconnect (>=2.6.0,<2.7.0)"]
+discovery = ["types-aiobotocore-discovery (>=2.6.0,<2.7.0)"]
+dlm = ["types-aiobotocore-dlm (>=2.6.0,<2.7.0)"]
+dms = ["types-aiobotocore-dms (>=2.6.0,<2.7.0)"]
+docdb = ["types-aiobotocore-docdb (>=2.6.0,<2.7.0)"]
+docdb-elastic = ["types-aiobotocore-docdb-elastic (>=2.6.0,<2.7.0)"]
+drs = ["types-aiobotocore-drs (>=2.6.0,<2.7.0)"]
+ds = ["types-aiobotocore-ds (>=2.6.0,<2.7.0)"]
+dynamodb = ["types-aiobotocore-dynamodb (>=2.6.0,<2.7.0)"]
+dynamodbstreams = ["types-aiobotocore-dynamodbstreams (>=2.6.0,<2.7.0)"]
+ebs = ["types-aiobotocore-ebs (>=2.6.0,<2.7.0)"]
+ec2 = ["types-aiobotocore-ec2 (>=2.6.0,<2.7.0)"]
+ec2-instance-connect = ["types-aiobotocore-ec2-instance-connect (>=2.6.0,<2.7.0)"]
+ecr = ["types-aiobotocore-ecr (>=2.6.0,<2.7.0)"]
+ecr-public = ["types-aiobotocore-ecr-public (>=2.6.0,<2.7.0)"]
+ecs = ["types-aiobotocore-ecs (>=2.6.0,<2.7.0)"]
+efs = ["types-aiobotocore-efs (>=2.6.0,<2.7.0)"]
+eks = ["types-aiobotocore-eks (>=2.6.0,<2.7.0)"]
+elastic-inference = ["types-aiobotocore-elastic-inference (>=2.6.0,<2.7.0)"]
+elasticache = ["types-aiobotocore-elasticache (>=2.6.0,<2.7.0)"]
+elasticbeanstalk = ["types-aiobotocore-elasticbeanstalk (>=2.6.0,<2.7.0)"]
+elastictranscoder = ["types-aiobotocore-elastictranscoder (>=2.6.0,<2.7.0)"]
+elb = ["types-aiobotocore-elb (>=2.6.0,<2.7.0)"]
+elbv2 = ["types-aiobotocore-elbv2 (>=2.6.0,<2.7.0)"]
+emr = ["types-aiobotocore-emr (>=2.6.0,<2.7.0)"]
+emr-containers = ["types-aiobotocore-emr-containers (>=2.6.0,<2.7.0)"]
+emr-serverless = ["types-aiobotocore-emr-serverless (>=2.6.0,<2.7.0)"]
+entityresolution = ["types-aiobotocore-entityresolution (>=2.6.0,<2.7.0)"]
+es = ["types-aiobotocore-es (>=2.6.0,<2.7.0)"]
+essential = ["types-aiobotocore-cloudformation (>=2.6.0,<2.7.0)", "types-aiobotocore-dynamodb (>=2.6.0,<2.7.0)", "types-aiobotocore-ec2 (>=2.6.0,<2.7.0)", "types-aiobotocore-lambda (>=2.6.0,<2.7.0)", "types-aiobotocore-rds (>=2.6.0,<2.7.0)", "types-aiobotocore-s3 (>=2.6.0,<2.7.0)", "types-aiobotocore-sqs (>=2.6.0,<2.7.0)"]
+events = ["types-aiobotocore-events (>=2.6.0,<2.7.0)"]
+evidently = ["types-aiobotocore-evidently (>=2.6.0,<2.7.0)"]
+finspace = ["types-aiobotocore-finspace (>=2.6.0,<2.7.0)"]
+finspace-data = ["types-aiobotocore-finspace-data (>=2.6.0,<2.7.0)"]
+firehose = ["types-aiobotocore-firehose (>=2.6.0,<2.7.0)"]
+fis = ["types-aiobotocore-fis (>=2.6.0,<2.7.0)"]
+fms = ["types-aiobotocore-fms (>=2.6.0,<2.7.0)"]
+forecast = ["types-aiobotocore-forecast (>=2.6.0,<2.7.0)"]
+forecastquery = ["types-aiobotocore-forecastquery (>=2.6.0,<2.7.0)"]
+frauddetector = ["types-aiobotocore-frauddetector (>=2.6.0,<2.7.0)"]
+fsx = ["types-aiobotocore-fsx (>=2.6.0,<2.7.0)"]
+gamelift = ["types-aiobotocore-gamelift (>=2.6.0,<2.7.0)"]
+gamesparks = ["types-aiobotocore-gamesparks (>=2.6.0,<2.7.0)"]
+glacier = ["types-aiobotocore-glacier (>=2.6.0,<2.7.0)"]
+globalaccelerator = ["types-aiobotocore-globalaccelerator (>=2.6.0,<2.7.0)"]
+glue = ["types-aiobotocore-glue (>=2.6.0,<2.7.0)"]
+grafana = ["types-aiobotocore-grafana (>=2.6.0,<2.7.0)"]
+greengrass = ["types-aiobotocore-greengrass (>=2.6.0,<2.7.0)"]
+greengrassv2 = ["types-aiobotocore-greengrassv2 (>=2.6.0,<2.7.0)"]
+groundstation = ["types-aiobotocore-groundstation (>=2.6.0,<2.7.0)"]
+guardduty = ["types-aiobotocore-guardduty (>=2.6.0,<2.7.0)"]
+health = ["types-aiobotocore-health (>=2.6.0,<2.7.0)"]
+healthlake = ["types-aiobotocore-healthlake (>=2.6.0,<2.7.0)"]
+honeycode = ["types-aiobotocore-honeycode (>=2.6.0,<2.7.0)"]
+iam = ["types-aiobotocore-iam (>=2.6.0,<2.7.0)"]
+identitystore = ["types-aiobotocore-identitystore (>=2.6.0,<2.7.0)"]
+imagebuilder = ["types-aiobotocore-imagebuilder (>=2.6.0,<2.7.0)"]
+importexport = ["types-aiobotocore-importexport (>=2.6.0,<2.7.0)"]
+inspector = ["types-aiobotocore-inspector (>=2.6.0,<2.7.0)"]
+inspector2 = ["types-aiobotocore-inspector2 (>=2.6.0,<2.7.0)"]
+internetmonitor = ["types-aiobotocore-internetmonitor (>=2.6.0,<2.7.0)"]
+iot = ["types-aiobotocore-iot (>=2.6.0,<2.7.0)"]
+iot-data = ["types-aiobotocore-iot-data (>=2.6.0,<2.7.0)"]
+iot-jobs-data = ["types-aiobotocore-iot-jobs-data (>=2.6.0,<2.7.0)"]
+iot-roborunner = ["types-aiobotocore-iot-roborunner (>=2.6.0,<2.7.0)"]
+iot1click-devices = ["types-aiobotocore-iot1click-devices (>=2.6.0,<2.7.0)"]
+iot1click-projects = ["types-aiobotocore-iot1click-projects (>=2.6.0,<2.7.0)"]
+iotanalytics = ["types-aiobotocore-iotanalytics (>=2.6.0,<2.7.0)"]
+iotdeviceadvisor = ["types-aiobotocore-iotdeviceadvisor (>=2.6.0,<2.7.0)"]
+iotevents = ["types-aiobotocore-iotevents (>=2.6.0,<2.7.0)"]
+iotevents-data = ["types-aiobotocore-iotevents-data (>=2.6.0,<2.7.0)"]
+iotfleethub = ["types-aiobotocore-iotfleethub (>=2.6.0,<2.7.0)"]
+iotfleetwise = ["types-aiobotocore-iotfleetwise (>=2.6.0,<2.7.0)"]
+iotsecuretunneling = ["types-aiobotocore-iotsecuretunneling (>=2.6.0,<2.7.0)"]
+iotsitewise = ["types-aiobotocore-iotsitewise (>=2.6.0,<2.7.0)"]
+iotthingsgraph = ["types-aiobotocore-iotthingsgraph (>=2.6.0,<2.7.0)"]
+iottwinmaker = ["types-aiobotocore-iottwinmaker (>=2.6.0,<2.7.0)"]
+iotwireless = ["types-aiobotocore-iotwireless (>=2.6.0,<2.7.0)"]
+ivs = ["types-aiobotocore-ivs (>=2.6.0,<2.7.0)"]
+ivs-realtime = ["types-aiobotocore-ivs-realtime (>=2.6.0,<2.7.0)"]
+ivschat = ["types-aiobotocore-ivschat (>=2.6.0,<2.7.0)"]
+kafka = ["types-aiobotocore-kafka (>=2.6.0,<2.7.0)"]
+kafkaconnect = ["types-aiobotocore-kafkaconnect (>=2.6.0,<2.7.0)"]
+kendra = ["types-aiobotocore-kendra (>=2.6.0,<2.7.0)"]
+kendra-ranking = ["types-aiobotocore-kendra-ranking (>=2.6.0,<2.7.0)"]
+keyspaces = ["types-aiobotocore-keyspaces (>=2.6.0,<2.7.0)"]
+kinesis = ["types-aiobotocore-kinesis (>=2.6.0,<2.7.0)"]
+kinesis-video-archived-media = ["types-aiobotocore-kinesis-video-archived-media (>=2.6.0,<2.7.0)"]
+kinesis-video-media = ["types-aiobotocore-kinesis-video-media (>=2.6.0,<2.7.0)"]
+kinesis-video-signaling = ["types-aiobotocore-kinesis-video-signaling (>=2.6.0,<2.7.0)"]
+kinesis-video-webrtc-storage = ["types-aiobotocore-kinesis-video-webrtc-storage (>=2.6.0,<2.7.0)"]
+kinesisanalytics = ["types-aiobotocore-kinesisanalytics (>=2.6.0,<2.7.0)"]
+kinesisanalyticsv2 = ["types-aiobotocore-kinesisanalyticsv2 (>=2.6.0,<2.7.0)"]
+kinesisvideo = ["types-aiobotocore-kinesisvideo (>=2.6.0,<2.7.0)"]
+kms = ["types-aiobotocore-kms (>=2.6.0,<2.7.0)"]
+lakeformation = ["types-aiobotocore-lakeformation (>=2.6.0,<2.7.0)"]
+lambda = ["types-aiobotocore-lambda (>=2.6.0,<2.7.0)"]
+lex-models = ["types-aiobotocore-lex-models (>=2.6.0,<2.7.0)"]
+lex-runtime = ["types-aiobotocore-lex-runtime (>=2.6.0,<2.7.0)"]
+lexv2-models = ["types-aiobotocore-lexv2-models (>=2.6.0,<2.7.0)"]
+lexv2-runtime = ["types-aiobotocore-lexv2-runtime (>=2.6.0,<2.7.0)"]
+license-manager = ["types-aiobotocore-license-manager (>=2.6.0,<2.7.0)"]
+license-manager-linux-subscriptions = ["types-aiobotocore-license-manager-linux-subscriptions (>=2.6.0,<2.7.0)"]
+license-manager-user-subscriptions = ["types-aiobotocore-license-manager-user-subscriptions (>=2.6.0,<2.7.0)"]
+lightsail = ["types-aiobotocore-lightsail (>=2.6.0,<2.7.0)"]
+location = ["types-aiobotocore-location (>=2.6.0,<2.7.0)"]
+logs = ["types-aiobotocore-logs (>=2.6.0,<2.7.0)"]
+lookoutequipment = ["types-aiobotocore-lookoutequipment (>=2.6.0,<2.7.0)"]
+lookoutmetrics = ["types-aiobotocore-lookoutmetrics (>=2.6.0,<2.7.0)"]
+lookoutvision = ["types-aiobotocore-lookoutvision (>=2.6.0,<2.7.0)"]
+m2 = ["types-aiobotocore-m2 (>=2.6.0,<2.7.0)"]
+machinelearning = ["types-aiobotocore-machinelearning (>=2.6.0,<2.7.0)"]
+macie = ["types-aiobotocore-macie (>=2.6.0,<2.7.0)"]
+macie2 = ["types-aiobotocore-macie2 (>=2.6.0,<2.7.0)"]
+managedblockchain = ["types-aiobotocore-managedblockchain (>=2.6.0,<2.7.0)"]
+managedblockchain-query = ["types-aiobotocore-managedblockchain-query (>=2.6.0,<2.7.0)"]
+marketplace-catalog = ["types-aiobotocore-marketplace-catalog (>=2.6.0,<2.7.0)"]
+marketplace-entitlement = ["types-aiobotocore-marketplace-entitlement (>=2.6.0,<2.7.0)"]
+marketplacecommerceanalytics = ["types-aiobotocore-marketplacecommerceanalytics (>=2.6.0,<2.7.0)"]
+mediaconnect = ["types-aiobotocore-mediaconnect (>=2.6.0,<2.7.0)"]
+mediaconvert = ["types-aiobotocore-mediaconvert (>=2.6.0,<2.7.0)"]
+medialive = ["types-aiobotocore-medialive (>=2.6.0,<2.7.0)"]
+mediapackage = ["types-aiobotocore-mediapackage (>=2.6.0,<2.7.0)"]
+mediapackage-vod = ["types-aiobotocore-mediapackage-vod (>=2.6.0,<2.7.0)"]
+mediapackagev2 = ["types-aiobotocore-mediapackagev2 (>=2.6.0,<2.7.0)"]
+mediastore = ["types-aiobotocore-mediastore (>=2.6.0,<2.7.0)"]
+mediastore-data = ["types-aiobotocore-mediastore-data (>=2.6.0,<2.7.0)"]
+mediatailor = ["types-aiobotocore-mediatailor (>=2.6.0,<2.7.0)"]
+medical-imaging = ["types-aiobotocore-medical-imaging (>=2.6.0,<2.7.0)"]
+memorydb = ["types-aiobotocore-memorydb (>=2.6.0,<2.7.0)"]
+meteringmarketplace = ["types-aiobotocore-meteringmarketplace (>=2.6.0,<2.7.0)"]
+mgh = ["types-aiobotocore-mgh (>=2.6.0,<2.7.0)"]
+mgn = ["types-aiobotocore-mgn (>=2.6.0,<2.7.0)"]
+migration-hub-refactor-spaces = ["types-aiobotocore-migration-hub-refactor-spaces (>=2.6.0,<2.7.0)"]
+migrationhub-config = ["types-aiobotocore-migrationhub-config (>=2.6.0,<2.7.0)"]
+migrationhuborchestrator = ["types-aiobotocore-migrationhuborchestrator (>=2.6.0,<2.7.0)"]
+migrationhubstrategy = ["types-aiobotocore-migrationhubstrategy (>=2.6.0,<2.7.0)"]
+mobile = ["types-aiobotocore-mobile (>=2.6.0,<2.7.0)"]
+mq = ["types-aiobotocore-mq (>=2.6.0,<2.7.0)"]
+mturk = ["types-aiobotocore-mturk (>=2.6.0,<2.7.0)"]
+mwaa = ["types-aiobotocore-mwaa (>=2.6.0,<2.7.0)"]
+neptune = ["types-aiobotocore-neptune (>=2.6.0,<2.7.0)"]
+network-firewall = ["types-aiobotocore-network-firewall (>=2.6.0,<2.7.0)"]
+networkmanager = ["types-aiobotocore-networkmanager (>=2.6.0,<2.7.0)"]
+nimble = ["types-aiobotocore-nimble (>=2.6.0,<2.7.0)"]
+oam = ["types-aiobotocore-oam (>=2.6.0,<2.7.0)"]
+omics = ["types-aiobotocore-omics (>=2.6.0,<2.7.0)"]
+opensearch = ["types-aiobotocore-opensearch (>=2.6.0,<2.7.0)"]
+opensearchserverless = ["types-aiobotocore-opensearchserverless (>=2.6.0,<2.7.0)"]
+opsworks = ["types-aiobotocore-opsworks (>=2.6.0,<2.7.0)"]
+opsworkscm = ["types-aiobotocore-opsworkscm (>=2.6.0,<2.7.0)"]
+organizations = ["types-aiobotocore-organizations (>=2.6.0,<2.7.0)"]
+osis = ["types-aiobotocore-osis (>=2.6.0,<2.7.0)"]
+outposts = ["types-aiobotocore-outposts (>=2.6.0,<2.7.0)"]
+panorama = ["types-aiobotocore-panorama (>=2.6.0,<2.7.0)"]
+payment-cryptography = ["types-aiobotocore-payment-cryptography (>=2.6.0,<2.7.0)"]
+payment-cryptography-data = ["types-aiobotocore-payment-cryptography-data (>=2.6.0,<2.7.0)"]
+personalize = ["types-aiobotocore-personalize (>=2.6.0,<2.7.0)"]
+personalize-events = ["types-aiobotocore-personalize-events (>=2.6.0,<2.7.0)"]
+personalize-runtime = ["types-aiobotocore-personalize-runtime (>=2.6.0,<2.7.0)"]
+pi = ["types-aiobotocore-pi (>=2.6.0,<2.7.0)"]
+pinpoint = ["types-aiobotocore-pinpoint (>=2.6.0,<2.7.0)"]
+pinpoint-email = ["types-aiobotocore-pinpoint-email (>=2.6.0,<2.7.0)"]
+pinpoint-sms-voice = ["types-aiobotocore-pinpoint-sms-voice (>=2.6.0,<2.7.0)"]
+pinpoint-sms-voice-v2 = ["types-aiobotocore-pinpoint-sms-voice-v2 (>=2.6.0,<2.7.0)"]
+pipes = ["types-aiobotocore-pipes (>=2.6.0,<2.7.0)"]
+polly = ["types-aiobotocore-polly (>=2.6.0,<2.7.0)"]
+pricing = ["types-aiobotocore-pricing (>=2.6.0,<2.7.0)"]
+privatenetworks = ["types-aiobotocore-privatenetworks (>=2.6.0,<2.7.0)"]
+proton = ["types-aiobotocore-proton (>=2.6.0,<2.7.0)"]
+qldb = ["types-aiobotocore-qldb (>=2.6.0,<2.7.0)"]
+qldb-session = ["types-aiobotocore-qldb-session (>=2.6.0,<2.7.0)"]
+quicksight = ["types-aiobotocore-quicksight (>=2.6.0,<2.7.0)"]
+ram = ["types-aiobotocore-ram (>=2.6.0,<2.7.0)"]
+rbin = ["types-aiobotocore-rbin (>=2.6.0,<2.7.0)"]
+rds = ["types-aiobotocore-rds (>=2.6.0,<2.7.0)"]
+rds-data = ["types-aiobotocore-rds-data (>=2.6.0,<2.7.0)"]
+redshift = ["types-aiobotocore-redshift (>=2.6.0,<2.7.0)"]
+redshift-data = ["types-aiobotocore-redshift-data (>=2.6.0,<2.7.0)"]
+redshift-serverless = ["types-aiobotocore-redshift-serverless (>=2.6.0,<2.7.0)"]
+rekognition = ["types-aiobotocore-rekognition (>=2.6.0,<2.7.0)"]
+resiliencehub = ["types-aiobotocore-resiliencehub (>=2.6.0,<2.7.0)"]
+resource-explorer-2 = ["types-aiobotocore-resource-explorer-2 (>=2.6.0,<2.7.0)"]
+resource-groups = ["types-aiobotocore-resource-groups (>=2.6.0,<2.7.0)"]
+resourcegroupstaggingapi = ["types-aiobotocore-resourcegroupstaggingapi (>=2.6.0,<2.7.0)"]
+robomaker = ["types-aiobotocore-robomaker (>=2.6.0,<2.7.0)"]
+rolesanywhere = ["types-aiobotocore-rolesanywhere (>=2.6.0,<2.7.0)"]
+route53 = ["types-aiobotocore-route53 (>=2.6.0,<2.7.0)"]
+route53-recovery-cluster = ["types-aiobotocore-route53-recovery-cluster (>=2.6.0,<2.7.0)"]
+route53-recovery-control-config = ["types-aiobotocore-route53-recovery-control-config (>=2.6.0,<2.7.0)"]
+route53-recovery-readiness = ["types-aiobotocore-route53-recovery-readiness (>=2.6.0,<2.7.0)"]
+route53domains = ["types-aiobotocore-route53domains (>=2.6.0,<2.7.0)"]
+route53resolver = ["types-aiobotocore-route53resolver (>=2.6.0,<2.7.0)"]
+rum = ["types-aiobotocore-rum (>=2.6.0,<2.7.0)"]
+s3 = ["types-aiobotocore-s3 (>=2.6.0,<2.7.0)"]
+s3control = ["types-aiobotocore-s3control (>=2.6.0,<2.7.0)"]
+s3outposts = ["types-aiobotocore-s3outposts (>=2.6.0,<2.7.0)"]
+sagemaker = ["types-aiobotocore-sagemaker (>=2.6.0,<2.7.0)"]
+sagemaker-a2i-runtime = ["types-aiobotocore-sagemaker-a2i-runtime (>=2.6.0,<2.7.0)"]
+sagemaker-edge = ["types-aiobotocore-sagemaker-edge (>=2.6.0,<2.7.0)"]
+sagemaker-featurestore-runtime = ["types-aiobotocore-sagemaker-featurestore-runtime (>=2.6.0,<2.7.0)"]
+sagemaker-geospatial = ["types-aiobotocore-sagemaker-geospatial (>=2.6.0,<2.7.0)"]
+sagemaker-metrics = ["types-aiobotocore-sagemaker-metrics (>=2.6.0,<2.7.0)"]
+sagemaker-runtime = ["types-aiobotocore-sagemaker-runtime (>=2.6.0,<2.7.0)"]
+savingsplans = ["types-aiobotocore-savingsplans (>=2.6.0,<2.7.0)"]
+scheduler = ["types-aiobotocore-scheduler (>=2.6.0,<2.7.0)"]
+schemas = ["types-aiobotocore-schemas (>=2.6.0,<2.7.0)"]
+sdb = ["types-aiobotocore-sdb (>=2.6.0,<2.7.0)"]
+secretsmanager = ["types-aiobotocore-secretsmanager (>=2.6.0,<2.7.0)"]
+securityhub = ["types-aiobotocore-securityhub (>=2.6.0,<2.7.0)"]
+securitylake = ["types-aiobotocore-securitylake (>=2.6.0,<2.7.0)"]
+serverlessrepo = ["types-aiobotocore-serverlessrepo (>=2.6.0,<2.7.0)"]
+service-quotas = ["types-aiobotocore-service-quotas (>=2.6.0,<2.7.0)"]
+servicecatalog = ["types-aiobotocore-servicecatalog (>=2.6.0,<2.7.0)"]
+servicecatalog-appregistry = ["types-aiobotocore-servicecatalog-appregistry (>=2.6.0,<2.7.0)"]
+servicediscovery = ["types-aiobotocore-servicediscovery (>=2.6.0,<2.7.0)"]
+ses = ["types-aiobotocore-ses (>=2.6.0,<2.7.0)"]
+sesv2 = ["types-aiobotocore-sesv2 (>=2.6.0,<2.7.0)"]
+shield = ["types-aiobotocore-shield (>=2.6.0,<2.7.0)"]
+signer = ["types-aiobotocore-signer (>=2.6.0,<2.7.0)"]
+simspaceweaver = ["types-aiobotocore-simspaceweaver (>=2.6.0,<2.7.0)"]
+sms = ["types-aiobotocore-sms (>=2.6.0,<2.7.0)"]
+sms-voice = ["types-aiobotocore-sms-voice (>=2.6.0,<2.7.0)"]
+snow-device-management = ["types-aiobotocore-snow-device-management (>=2.6.0,<2.7.0)"]
+snowball = ["types-aiobotocore-snowball (>=2.6.0,<2.7.0)"]
+sns = ["types-aiobotocore-sns (>=2.6.0,<2.7.0)"]
+sqs = ["types-aiobotocore-sqs (>=2.6.0,<2.7.0)"]
+ssm = ["types-aiobotocore-ssm (>=2.6.0,<2.7.0)"]
+ssm-contacts = ["types-aiobotocore-ssm-contacts (>=2.6.0,<2.7.0)"]
+ssm-incidents = ["types-aiobotocore-ssm-incidents (>=2.6.0,<2.7.0)"]
+ssm-sap = ["types-aiobotocore-ssm-sap (>=2.6.0,<2.7.0)"]
+sso = ["types-aiobotocore-sso (>=2.6.0,<2.7.0)"]
+sso-admin = ["types-aiobotocore-sso-admin (>=2.6.0,<2.7.0)"]
+sso-oidc = ["types-aiobotocore-sso-oidc (>=2.6.0,<2.7.0)"]
+stepfunctions = ["types-aiobotocore-stepfunctions (>=2.6.0,<2.7.0)"]
+storagegateway = ["types-aiobotocore-storagegateway (>=2.6.0,<2.7.0)"]
+sts = ["types-aiobotocore-sts (>=2.6.0,<2.7.0)"]
+support = ["types-aiobotocore-support (>=2.6.0,<2.7.0)"]
+support-app = ["types-aiobotocore-support-app (>=2.6.0,<2.7.0)"]
+swf = ["types-aiobotocore-swf (>=2.6.0,<2.7.0)"]
+synthetics = ["types-aiobotocore-synthetics (>=2.6.0,<2.7.0)"]
+textract = ["types-aiobotocore-textract (>=2.6.0,<2.7.0)"]
+timestream-query = ["types-aiobotocore-timestream-query (>=2.6.0,<2.7.0)"]
+timestream-write = ["types-aiobotocore-timestream-write (>=2.6.0,<2.7.0)"]
+tnb = ["types-aiobotocore-tnb (>=2.6.0,<2.7.0)"]
+transcribe = ["types-aiobotocore-transcribe (>=2.6.0,<2.7.0)"]
+transfer = ["types-aiobotocore-transfer (>=2.6.0,<2.7.0)"]
+translate = ["types-aiobotocore-translate (>=2.6.0,<2.7.0)"]
+verifiedpermissions = ["types-aiobotocore-verifiedpermissions (>=2.6.0,<2.7.0)"]
+voice-id = ["types-aiobotocore-voice-id (>=2.6.0,<2.7.0)"]
+vpc-lattice = ["types-aiobotocore-vpc-lattice (>=2.6.0,<2.7.0)"]
+waf = ["types-aiobotocore-waf (>=2.6.0,<2.7.0)"]
+waf-regional = ["types-aiobotocore-waf-regional (>=2.6.0,<2.7.0)"]
+wafv2 = ["types-aiobotocore-wafv2 (>=2.6.0,<2.7.0)"]
+wellarchitected = ["types-aiobotocore-wellarchitected (>=2.6.0,<2.7.0)"]
+wisdom = ["types-aiobotocore-wisdom (>=2.6.0,<2.7.0)"]
+workdocs = ["types-aiobotocore-workdocs (>=2.6.0,<2.7.0)"]
+worklink = ["types-aiobotocore-worklink (>=2.6.0,<2.7.0)"]
+workmail = ["types-aiobotocore-workmail (>=2.6.0,<2.7.0)"]
+workmailmessageflow = ["types-aiobotocore-workmailmessageflow (>=2.6.0,<2.7.0)"]
+workspaces = ["types-aiobotocore-workspaces (>=2.6.0,<2.7.0)"]
+workspaces-web = ["types-aiobotocore-workspaces-web (>=2.6.0,<2.7.0)"]
+xray = ["types-aiobotocore-xray (>=2.6.0,<2.7.0)"]
[[package]]
name = "types-aiobotocore-cloudformation"
-version = "2.5.4"
-description = "Type annotations for aiobotocore.CloudFormation 2.5.4 service generated with mypy-boto3-builder 7.17.2"
+version = "2.6.0"
+description = "Type annotations for aiobotocore.CloudFormation 2.6.0 service generated with mypy-boto3-builder 7.17.2"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "types-aiobotocore-cloudformation-2.5.4.tar.gz", hash = "sha256:6c93dfc8cdd834150600453275bea126693e47211880fa14c27182e300b2be21"},
- {file = "types_aiobotocore_cloudformation-2.5.4-py3-none-any.whl", hash = "sha256:8d6b7d1e5997a31321fab44400580ce8bdd031e73abe39a121a04f70fa01f613"},
+ {file = "types-aiobotocore-cloudformation-2.6.0.tar.gz", hash = "sha256:13289063434255add7b91a411fb697100edc071f01cf244ff75edffce831d26c"},
+ {file = "types_aiobotocore_cloudformation-2.6.0-py3-none-any.whl", hash = "sha256:c6f59375633e028d3506c0e533f5b8a47d39b437619667f582e8a0469e71b793"},
]
[[package]]
name = "types-aiobotocore-dynamodb"
-version = "2.5.4"
-description = "Type annotations for aiobotocore.DynamoDB 2.5.4 service generated with mypy-boto3-builder 7.17.2"
+version = "2.6.0"
+description = "Type annotations for aiobotocore.DynamoDB 2.6.0 service generated with mypy-boto3-builder 7.17.2"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "types-aiobotocore-dynamodb-2.5.4.tar.gz", hash = "sha256:14e9691d7fddc5707825e3c6665adc8de86598fd6e1803340a7a778deef9a716"},
- {file = "types_aiobotocore_dynamodb-2.5.4-py3-none-any.whl", hash = "sha256:550d8ac1fb5dec3a76f5ca12bb6540032b36eb2048b716c999c209079cb5e89c"},
+ {file = "types-aiobotocore-dynamodb-2.6.0.tar.gz", hash = "sha256:745a3f62c11083b4d707934436614ebf7ed1dc1d86a0dd139488942d6110afd2"},
+ {file = "types_aiobotocore_dynamodb-2.6.0-py3-none-any.whl", hash = "sha256:36a64b40300a0147800dec1cdd13b7af013d7fe57ac0638656d109946795dbe7"},
]
[[package]]
name = "types-aiobotocore-ec2"
-version = "2.5.4"
-description = "Type annotations for aiobotocore.EC2 2.5.4 service generated with mypy-boto3-builder 7.17.2"
+version = "2.6.0"
+description = "Type annotations for aiobotocore.EC2 2.6.0 service generated with mypy-boto3-builder 7.17.2"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "types-aiobotocore-ec2-2.5.4.tar.gz", hash = "sha256:1c894e3b30d1ae47bceb401f598d7f5e76e607d765566ac2105ae440221dd573"},
- {file = "types_aiobotocore_ec2-2.5.4-py3-none-any.whl", hash = "sha256:675bc3304bf89c593d3043b1c0975f7c7e01eb18bf3404b53d23dc72f2b8e63f"},
+ {file = "types-aiobotocore-ec2-2.6.0.tar.gz", hash = "sha256:852bb03dc40493d42091cfc9b5c669dafa8b5e731037d82dce392e0b506fd42e"},
+ {file = "types_aiobotocore_ec2-2.6.0-py3-none-any.whl", hash = "sha256:1a8230446f90f62f482c792d095a150ec08c8f21ae61e83df178e7f8b719f108"},
]
[[package]]
name = "types-aiobotocore-lambda"
-version = "2.5.4"
-description = "Type annotations for aiobotocore.Lambda 2.5.4 service generated with mypy-boto3-builder 7.17.2"
+version = "2.6.0"
+description = "Type annotations for aiobotocore.Lambda 2.6.0 service generated with mypy-boto3-builder 7.17.2"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "types-aiobotocore-lambda-2.5.4.tar.gz", hash = "sha256:e114222b92626102eec8714b1eb2738f9db8f6b88d7eac10f9f43784be69cd37"},
- {file = "types_aiobotocore_lambda-2.5.4-py3-none-any.whl", hash = "sha256:6d07efd96b17c50574ead4e83479873906eb93559dab85f14b8b357d02f629c7"},
+ {file = "types-aiobotocore-lambda-2.6.0.tar.gz", hash = "sha256:a6464c42ee618a610f3bbcff005ec835bec7ee38e6932415d6a9767a9178c980"},
+ {file = "types_aiobotocore_lambda-2.6.0-py3-none-any.whl", hash = "sha256:410d38576aaff4fbb432e6251c0fffa2a3354f11b82fd8cb7c4220a4c542361f"},
]
[[package]]
name = "types-aiobotocore-rds"
-version = "2.5.4"
-description = "Type annotations for aiobotocore.RDS 2.5.4 service generated with mypy-boto3-builder 7.17.2"
+version = "2.6.0"
+description = "Type annotations for aiobotocore.RDS 2.6.0 service generated with mypy-boto3-builder 7.17.2"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "types-aiobotocore-rds-2.5.4.tar.gz", hash = "sha256:3f2e5b512d8346a392ecf4347fc486a39aa7d02557d0382c737df2eac2894702"},
- {file = "types_aiobotocore_rds-2.5.4-py3-none-any.whl", hash = "sha256:c8fe8c35e9f023389f26eeff7ff0c4cd591f3fc3b004045a646641c8e6f3c052"},
+ {file = "types-aiobotocore-rds-2.6.0.tar.gz", hash = "sha256:33420338c6ea19d2e5d164a2a4f8ab8c39f716be00434ebe8f79b40a2de3c811"},
+ {file = "types_aiobotocore_rds-2.6.0-py3-none-any.whl", hash = "sha256:ec4c7f841d5c37b362f2d14056d835256bafd91c9bccaa365488bb70d6482677"},
]
[[package]]
name = "types-aiobotocore-s3"
-version = "2.5.4"
-description = "Type annotations for aiobotocore.S3 2.5.4 service generated with mypy-boto3-builder 7.17.2"
+version = "2.6.0"
+description = "Type annotations for aiobotocore.S3 2.6.0 service generated with mypy-boto3-builder 7.17.2"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "types-aiobotocore-s3-2.5.4.tar.gz", hash = "sha256:747da7e7dca50ca93d86f379733d2c53cea2c1e9ee052d653c2db584fb599f7b"},
- {file = "types_aiobotocore_s3-2.5.4-py3-none-any.whl", hash = "sha256:33d51ff1cc8046efcf48cb69f6663fd90d0d824db4b480a20ab3f2689fc574de"},
+ {file = "types-aiobotocore-s3-2.6.0.tar.gz", hash = "sha256:308a7f946c096a1d898ffd8a15fa1e5b6b90955d4365b3fc4d871db0dbc4314f"},
+ {file = "types_aiobotocore_s3-2.6.0-py3-none-any.whl", hash = "sha256:00d5356048d2cfc45f4800c99b163453a375d9c86a59c54bc1471ee4afee3842"},
]
[[package]]
name = "types-aiobotocore-sqs"
-version = "2.5.4"
-description = "Type annotations for aiobotocore.SQS 2.5.4 service generated with mypy-boto3-builder 7.17.2"
+version = "2.6.0"
+description = "Type annotations for aiobotocore.SQS 2.6.0 service generated with mypy-boto3-builder 7.17.2"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "types-aiobotocore-sqs-2.5.4.tar.gz", hash = "sha256:15e56e2cbb9f0c5af5b232357fe31ad43df3a0fa67242d70ceb07ad04273480e"},
- {file = "types_aiobotocore_sqs-2.5.4-py3-none-any.whl", hash = "sha256:8871724b9bc96cbf8ca5f605813268764275113ec728d7346e3a85d405a27090"},
+ {file = "types-aiobotocore-sqs-2.6.0.tar.gz", hash = "sha256:279412a4942384ee93dae1a90ecb477445494cbb932318a599898a76d07bbba8"},
+ {file = "types_aiobotocore_sqs-2.6.0-py3-none-any.whl", hash = "sha256:7057e12e1f48c3ef9c742b3af87ef7dfca930300442ab38dc87fd1f48be0a0eb"},
]
[[package]]
name = "types-awscrt"
-version = "0.17.0"
+version = "0.19.2"
description = "Type annotations and code completion for awscrt"
+category = "dev"
optional = false
python-versions = ">=3.7,<4.0"
files = [
- {file = "types_awscrt-0.17.0-py3-none-any.whl", hash = "sha256:278c1a913098e226769cd28dc37643a2f360907353a7e8918e1bcdf93d4e34f2"},
- {file = "types_awscrt-0.17.0.tar.gz", hash = "sha256:4214783a747af900a5f98ec020d52ecae5910b470fd636813637a45b82a97516"},
+ {file = "types_awscrt-0.19.2-py3-none-any.whl", hash = "sha256:477a14565909312fe1de70d0b301548e83c038f436b8a1d7c83729e87cdd0b85"},
+ {file = "types_awscrt-0.19.2.tar.gz", hash = "sha256:d8c379420ba75b1e43687d12b0b772a5bb17f352859a2bef6aa8f0abde123f55"},
]
[[package]]
name = "types-s3transfer"
-version = "0.6.1"
+version = "0.7.0"
description = "Type annotations and code completion for s3transfer"
+category = "dev"
optional = false
python-versions = ">=3.7,<4.0"
files = [
- {file = "types_s3transfer-0.6.1-py3-none-any.whl", hash = "sha256:6d1ac1dedac750d570428362acdf60fdd4f277b0788855c3894d3226756b2bfb"},
- {file = "types_s3transfer-0.6.1.tar.gz", hash = "sha256:75ac1d7143d58c1e6af467cfd4a96c67ee058a3adf7c249d9309999e1f5f41e4"},
+ {file = "types_s3transfer-0.7.0-py3-none-any.whl", hash = "sha256:ae9ed9273465d9f43da8b96307383da410c6b59c3b2464c88d20b578768e97c6"},
+ {file = "types_s3transfer-0.7.0.tar.gz", hash = "sha256:aca0f2486d0a3a5037cd5b8f3e20a4522a29579a8dd183281ff0aa1c4e2c8aa7"},
]
-[package.dependencies]
-types-awscrt = "*"
-
[[package]]
name = "types-toml"
version = "0.10.8.7"
description = "Typing stubs for toml"
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -3654,19 +3822,21 @@ files = [
[[package]]
name = "typing-extensions"
-version = "4.7.1"
-description = "Backported and Experimental Type Hints for Python 3.7+"
+version = "4.8.0"
+description = "Backported and Experimental Type Hints for Python 3.8+"
+category = "main"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"},
- {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"},
+ {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"},
+ {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"},
]
[[package]]
name = "tzdata"
version = "2023.3"
description = "Provider of IANA time zone data"
+category = "dev"
optional = false
python-versions = ">=2"
files = [
@@ -3678,6 +3848,7 @@ files = [
name = "urllib3"
version = "1.26.18"
description = "HTTP library with thread-safe connection pooling, file post, and more."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
files = [
@@ -3694,6 +3865,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
name = "uvicorn"
version = "0.23.2"
description = "The lightning-fast ASGI server."
+category = "main"
optional = false
python-versions = ">=3.8"
files = [
@@ -3710,13 +3882,14 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)",
[[package]]
name = "virtualenv"
-version = "20.24.2"
+version = "20.24.5"
description = "Virtual Python Environment builder"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "virtualenv-20.24.2-py3-none-any.whl", hash = "sha256:43a3052be36080548bdee0b42919c88072037d50d56c28bd3f853cbe92b953ff"},
- {file = "virtualenv-20.24.2.tar.gz", hash = "sha256:fd8a78f46f6b99a67b7ec5cf73f92357891a7b3a40fd97637c27f854aae3b9e0"},
+ {file = "virtualenv-20.24.5-py3-none-any.whl", hash = "sha256:b80039f280f4919c77b30f1c23294ae357c4c8701042086e3fc005963e4e537b"},
+ {file = "virtualenv-20.24.5.tar.gz", hash = "sha256:e8361967f6da6fbdf1426483bfe9fca8287c242ac0bc30429905721cefbff752"},
]
[package.dependencies]
@@ -3725,33 +3898,35 @@ filelock = ">=3.12.2,<4"
platformdirs = ">=3.9.1,<4"
[package.extras]
-docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"]
+docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "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 = "wcwidth"
-version = "0.2.6"
+version = "0.2.8"
description = "Measures the displayed width of unicode strings in a terminal"
+category = "dev"
optional = false
python-versions = "*"
files = [
- {file = "wcwidth-0.2.6-py2.py3-none-any.whl", hash = "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e"},
- {file = "wcwidth-0.2.6.tar.gz", hash = "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0"},
+ {file = "wcwidth-0.2.8-py2.py3-none-any.whl", hash = "sha256:77f719e01648ed600dfa5402c347481c0992263b81a027344f3e1ba25493a704"},
+ {file = "wcwidth-0.2.8.tar.gz", hash = "sha256:8705c569999ffbb4f6a87c6d1b80f324bd6db952f5eb0b95bc07517f4c1813d4"},
]
[[package]]
name = "websocket-client"
-version = "1.6.1"
+version = "1.6.3"
description = "WebSocket client for Python with low level API options"
+category = "dev"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "websocket-client-1.6.1.tar.gz", hash = "sha256:c951af98631d24f8df89ab1019fc365f2227c0892f12fd150e935607c79dd0dd"},
- {file = "websocket_client-1.6.1-py3-none-any.whl", hash = "sha256:f1f9f2ad5291f0225a49efad77abf9e700b6fef553900623060dad6e26503b9d"},
+ {file = "websocket-client-1.6.3.tar.gz", hash = "sha256:3aad25d31284266bcfcfd1fd8a743f63282305a364b8d0948a43bd606acc652f"},
+ {file = "websocket_client-1.6.3-py3-none-any.whl", hash = "sha256:6cfc30d051ebabb73a5fa246efdcc14c8fbebbd0330f8984ac3bb6d9edd2ad03"},
]
[package.extras]
-docs = ["Sphinx (>=3.4)", "sphinx-rtd-theme (>=0.5)"]
+docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"]
optional = ["python-socks", "wsaccel"]
test = ["websockets"]
@@ -3759,6 +3934,7 @@ test = ["websockets"]
name = "win32-setctime"
version = "1.1.0"
description = "A small Python utility to set file creation time on Windows"
+category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -3773,6 +3949,7 @@ dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"]
name = "wrapt"
version = "1.15.0"
description = "Module for decorators, wrappers and monkey patching."
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
files = [
@@ -3857,6 +4034,7 @@ files = [
name = "yarl"
version = "1.9.2"
description = "Yet another URL library"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -3943,4 +4121,4 @@ multidict = ">=4.0"
[metadata]
lock-version = "2.0"
python-versions = "^3.11"
-content-hash = "9a93ffa4c1c5c3fd23438cf6d077a68126e4e339a1b034c8bda792f7f279fc15"
+content-hash = "f56b20c3ccbb0c245a66074f0ad16f681813c6c049167c34ead05664e391be18"
diff --git a/jobbergate-api/pyproject.toml b/jobbergate-api/pyproject.toml
index 27ac202f..90d98a32 100644
--- a/jobbergate-api/pyproject.toml
+++ b/jobbergate-api/pyproject.toml
@@ -4,7 +4,7 @@ version = "4.1.0a2"
description = "Jobbergate API"
authors = ["Omnivector Solutions "]
license = "MIT"
-readme = "README.rst"
+readme = "README.md"
repository = "https://github.com/omnivector-solutions/jobbergate"
classifiers = [
"License :: OSI Approved :: MIT License",
@@ -35,7 +35,7 @@ Jinja2 = "^3.1.2"
loguru = "^0.6.0"
nest-asyncio = "^1.5.7"
pendulum = "^2.1.2"
-py-buzz = "^3.2.1"
+py-buzz = "^4.0.0"
pydantic = { extras = ["email"], version = "^1.10.12" }
python-dotenv = "^1.0.0"
python-multipart = "^0.0.6"
@@ -58,7 +58,7 @@ nest_asyncio = "^1.3.3"
pgcli = "^3.1.0"
pre-commit = "^2.9.2"
psycopg2 = "^2.9.5"
-py-docker-gadgets = "^0.1.1"
+py-docker-gadgets = "^0.1.3"
pyproject-flake8 = "^5.0.4"
pytest = "^7"
pytest-asyncio = "^0.21"
@@ -141,5 +141,5 @@ warn_required_dynamic_aliases = true
warn_untyped_fields = true
[build-system]
-requires = ["poetry>=1.0.0"]
-build-backend = "poetry.masonry.api"
+requires = ["poetry-core>=1.0.0"]
+build-backend = "poetry.core.masonry.api"
diff --git a/jobbergate-cli/CHANGELOG.rst b/jobbergate-cli/CHANGELOG.md
similarity index 74%
rename from jobbergate-cli/CHANGELOG.rst
rename to jobbergate-cli/CHANGELOG.md
index d17ce72f..88dadaeb 100644
--- a/jobbergate-cli/CHANGELOG.rst
+++ b/jobbergate-cli/CHANGELOG.md
@@ -1,14 +1,11 @@
-============
- Change Log
-============
+# Change Log
This file keeps track of all notable changes to jobbergate-cli
-Unreleased
-----------
+## Unreleased
-4.1.0a2 -- 2023-10-10
----------------------
+
+## 4.1.0a2 -- 2023-10-10
- Added a `create` for Job Scripts to to create without Template. (former `create` renamed to `render`)
- Fixed help information for id on `get-job-script`, `download-job-script`, and `get-job-submission` commands
- Added short arguments for backward compatiblity
@@ -17,33 +14,33 @@ Unreleased
- Add show-files command to compat mode
- Add support to select all and deselect all options in checkboxes using Ctrl+A and Ctrl+R as shortcuts
-4.1.0a1 -- 2023-10-02
----------------------
-4.1.0a0 -- 2023-09-25
----------------------
+## 4.1.0a1 -- 2023-10-02
+
+
+## 4.1.0a0 -- 2023-09-25
- Added an alternative way to present to login url on narrow terminals
-4.0.0 -- 2023-09-14
--------------------
+
+## 4.0.0 -- 2023-09-14
- Modified internal details to address the new data model on Jobbergate API
- Drop support for Python 3.6
- Fixed refresh token not being updated on cache after token refresh
-3.4.3 -- 2023-01-30
--------------------
+
+## 3.4.3 -- 2023-01-30
- Keep version in sync with the API.
-3.4.2 -- 2023-01-25
--------------------
+
+## 3.4.2 -- 2023-01-25
- Keep version in sync with the API.
-3.4.1 -- 2023-01-16
--------------------
+
+## 3.4.1 -- 2023-01-16
- Keep version in sync with the API.
-3.4.0 -- 2023-01-03
--------------------
+
+## 3.4.0 -- 2023-01-03
- Added support for `execution_parameters` in job submission at the CLI
- Added new command to download application files to the current working directory
- Added new command to download job script files to the current working directory
@@ -52,85 +49,85 @@ Unreleased
- Added parameters `from_job_script_id` to filter job submissions on the list command
- Fixed missing user defined fields when loading jobbergate.yaml
-3.3.4 -- 2022-12-05
--------------------
+
+## 3.3.4 -- 2022-12-05
- Make the name optional when creating a new job script on the CLI
- Fixed `report_message` not showing on the detailed view of a job submissions
-3.3.3 -- 2022-10-17
--------------------
+
+## 3.3.3 -- 2022-10-17
- Fixed issue with optional output directory
-3.3.2 -- 2022-10-13
--------------------
+
+## 3.3.2 -- 2022-10-13
- Fixed `output_directory` on JobbergateConfig making it optional, as it is at the API level
- Fixed issues with `CRLF` end of lines when uploading application files
-3.3.1 -- 2022-10-10
--------------------
+
+## 3.3.1 -- 2022-10-10
- Fixed refresh (invalid paths for refresh endpoints)
- Added DEFAULT_CLUSTER_NAME (fast-mode broken due to invalid cluster)
-3.3.0 -- 2022-10-04
--------------------
+
+## 3.3.0 -- 2022-10-04
- Added error details to configuration error report
- Added ``OIDC_USE_HTTPS`` setting to allow non-https OIDC hosts
- Removed cluster validation from job-submission due to reliance on external cluster registry
- Added a `show-files` subcommand to `job-scripts` to show job script files
- Modified cache dir and dotenv path in order to avoid conflicts when installed alongside legacy jobbergate
-3.2.4 -- 2022-09-12
--------------------
+
+## 3.2.4 -- 2022-09-12
- Refactor the logic to upload application files to the API.
- Remove file validation from the CLI.
- Remove compression of the upload files into tarballs.
-3.2.3 -- 2022-08-01
--------------------
+
+## 3.2.3 -- 2022-08-01
- Patch cli authentication configurations.
- Added support to release on PyPI.
-3.2.2 -- 2022-07-28
--------------------
+
+## 3.2.2 -- 2022-07-28
- Keep version in sync with the API.
-3.2.1 -- 2022-06-24
--------------------
+
+## 3.2.1 -- 2022-06-24
- Keep version in sync with the API.
-3.2.0 -- 2022-06-24
--------------------
+
+## 3.2.0 -- 2022-06-24
- Set ``environment`` variable for Sentry based on settings parameter.
- Adjusted variables and data structures for keycloak migration
-3.1.1 -- 2022-06-01
--------------------
+
+## 3.1.1 -- 2022-06-01
- Added warning and handling for empty access tokens in the cache.
-3.1.0 -- 2022-04-20
--------------------
+
+## 3.1.0 -- 2022-04-20
- Added execution_directory to job submissions
- Added checks for empty cached token files
-3.0.4 -- 2022-04-11
--------------------
+
+## 3.0.4 -- 2022-04-11
- Made supplying param_dict optional in API job-scripts create.
- Included some example scripts for working with API directly.
-3.0.3 -- 2022-04-08
--------------------
+
+## 3.0.3 -- 2022-04-08
- Restored jobberappslib (with deprecation warnings as appropriate)
-3.0.2 -- 2022-04-08
--------------------
+
+## 3.0.2 -- 2022-04-08
- Fixed compatiblity issues with python 3.6
-3.0.1 -- 2022-04-08
--------------------
+
+## 3.0.1 -- 2022-04-08
- Fixed publish github action
-3.0.0 -- 2022-04-04
--------------------
+
+## 3.0.0 -- 2022-04-04
- Complete re-write of the Jobbergate CLI
- Used typer to implement the application
- Styled user output with Rich formatting
@@ -138,53 +135,52 @@ Unreleased
- Refactored the question asking system in applications
- Added over 100 unit tests
-2.2.9 -- 2022-02-16
--------------------
+
+## 2.2.9 -- 2022-02-16
- Added AUTH0_LOGIN_DOMAIN setting
- Adjusted auth workflow to prefer AUTH0_LOGIN_DOMAIN over AUTH0_DOMAIN
-2.2.8 -- 2022-02-15
--------------------
+
+## 2.2.8 -- 2022-02-15
- Fixed job submission data format for creation POST request
-2.2.7 -- 2022-02-15
--------------------
+
+## 2.2.7 -- 2022-02-15
- Applied fix for requests and added more debug logging
-2.2.6 -- 2022-02-14
--------------------
+
+## 2.2.6 -- 2022-02-14
- Added search and sort capability to the list endpoints to the API
-2.2.5 -- 2022-02-14
--------------------
+
+## 2.2.5 -- 2022-02-14
- Removed job_script_data_as_string from create parameters for job_script create in API
-2.2.4 -- 2022-02-14
--------------------
+
+## 2.2.4 -- 2022-02-14
- Fixed urls in the CLI again
-2.2.3 -- 2022-02-14
--------------------
+
+## 2.2.3 -- 2022-02-14
- Improved error messages for users and captured error info
-2.2.2 -- 2022-02-07
--------------------
+## 2.2.2 -- 2022-02-07
- Fixed applicaiton creation
-2.2.1 -- 2022-02-03
--------------------
+
+## 2.2.1 -- 2022-02-03
- Fixed issue with SENTRY_DSN shadowing API initialization
-2.2.0 -- 2022-02-03
--------------------
+
+## 2.2.0 -- 2022-02-03
- Removed trailing slashes from api endpoints
-2.1.2 -- 2022-02-02
--------------------
+
+## 2.1.2 -- 2022-02-02
- Revised login workflow to use client-credentials auth workflow
- Fixed IDENTITY_CLAIMS_KEY to be overrideable by environment
-2.0.0 -- 2021-12-08
--------------------
+
+## 2.0.0 -- 2021-12-08
- Migrated from legacy jobbegate-cli project
diff --git a/jobbergate-cli/README.rst b/jobbergate-cli/README.md
similarity index 51%
rename from jobbergate-cli/README.rst
rename to jobbergate-cli/README.md
index b6318f7f..ef2b8c7a 100644
--- a/jobbergate-cli/README.rst
+++ b/jobbergate-cli/README.md
@@ -1,39 +1,36 @@
-================
- Jobbergate CLI
-================
+# Jobbergate CLI
The Jobbergate CLI provides a command-line interface to view and manage the Jobbergate
resources. It can be used to create Job Scripts from template and then submit them to
the Slurm cluster to which Jobbergate is connected.
Jobbergate CLI is a Python project implemented with the
-`Typer `_ CLI builder library. Its dependencies and
-environment are managed by `Poetry `_.
+[Typer](https://typer.tiangolo.com/) CLI builder library. Its dependencies and
+environment are managed by [Poetry](https://python-poetry.org/).
-The CLI has a rich help system that can be accessed by passing the ``--help`` flag to
+The CLI has a rich help system that can be accessed by passing the `--help` flag to
the main command:
-.. code-block:: console
-
- jobbergate job-scripts --help
+```shell
+jobbergate job-scripts --help
+```
There is also help and parameter guides for each of the subcommands that can be accessed
-by passing them the ``--help`` flag:
-
-.. code-block:: console
+by passing them the `--help` flag:
- jobbergate job-scripts list --help
+```shell
+jobbergate job-scripts list --help
+```
See also:
-* `jobbergate-api `_
+* [jobbergate-api](https://github.com/omnivector-solutions/jobbergate/jobbergate-api)
+
-License
--------
-* `MIT `_
+## License
+* [MIT](./LICENSE)
-Copyright
----------
+## Copyright
* Copyright (c) 2020 OmniVector Solutions
diff --git a/jobbergate-cli/pyproject.toml b/jobbergate-cli/pyproject.toml
index dd75e9b9..b2519e0d 100644
--- a/jobbergate-cli/pyproject.toml
+++ b/jobbergate-cli/pyproject.toml
@@ -4,7 +4,7 @@ version = "4.1.0a2"
description = "Jobbergate CLI Client"
authors = ["Omnivector Solutions "]
license = "MIT"
-readme = "README.rst"
+readme = "README.md"
repository = "https://github.com/omnivector-solutions/jobbergate"
packages = [{ include = "jobbergate_cli" }]
classifiers = [
diff --git a/jobbergate-composed/README.md b/jobbergate-composed/README.md
new file mode 100644
index 00000000..a1556cb2
--- /dev/null
+++ b/jobbergate-composed/README.md
@@ -0,0 +1,82 @@
+# Jobbergate Composed
+
+_Jobbergate, Slurm, and Keycloak deployed to docker-compose._
+
+By making a simple, local deployment of Jobbergate, this project provides:
+
+- A test-bed for Jobbergate with minimal dependencies
+- An example against which guides, tutorials, and other examples can operate
+- A demonstration of how Jobbergate interacts with other components
+- A reference for the environment variables and settings Jobbergate relies upon
+
+
+> **Warning**
+>
+> The images and configuration found in this sub-project should _not_ be used in
+> production environments. They are very specifically tailored for example use-
+> cases where debuggging and access need to be simplified.
+
+
+## Requirements
+
+* [Docker Desktop with Docker Compose](https://www.docker.com/get-started/)
+
+
+## Usage
+
+To spin everything up using `docker-compose`, simply execute the following command:
+
+```shell
+docker-compose up --build
+```
+
+
+Then, you can begin executing commands via the `jobberate-cli` by running bash within
+the container built for it:
+
+```shell
+docker-compose run jobbergate-cli bash
+```
+
+
+Once the bash shell in the container has started, you can start running jobbergate
+commands:
+
+```shell
+jobbergate --help
+```
+
+
+Here's an example of Jobbergate CLI in action within a composed container:
+
+[![Composed Demo](https://asciinema.org/a/AipfkeV2OiOMpM3yPwCSocJ6l.png)](https://asciinema.org/a/AipfkeV2OiOMpM3yPwCSocJ6l?autoplay=1)
+
+
+Note that this setup creates a user automatically that can be used for exploring the
+app or unit testing. The username is "local-user" with a password of "local".
+
+
+## Usage Note
+
+To use the login link provided in the terminal, you need to set up an alias for
+keycloak (the identity & auth provider) in your operating system's hostfile.
+
+Simply add this line to your hostfile:
+
+```
+127.0.0.1 keycloak.local
+```
+
+
+For Linux and OSX, this file is located at `/etc/hosts`.
+For Windows, it is found at `c:\windows\system32\drivers\etc\hosts`
+
+
+# License
+
+* [MIT](LICENSE)
+
+
+# Copyright
+
+* Copyright (c) 2022 OmniVector Solutions
diff --git a/jobbergate-composed/README.rst b/jobbergate-composed/README.rst
deleted file mode 100644
index cba3a3a5..00000000
--- a/jobbergate-composed/README.rst
+++ /dev/null
@@ -1,88 +0,0 @@
-=====================
- Jobbergate Composed
-=====================
-
-_Jobbergate, Slurm, and Keycloak deployed to docker-compose._
-
-By making a simple, local deployment of Jobbergate, this project provides:
-
-* A test-bed for Jobbergate with minimal dependencies
-* An example against which guides, tutorials, and other examples can operate
-* A demonstration of how Jobbergate interacts with other components
-* A reference for the environment variables and settings Jobbergate relies upon
-
-
-.. warning::
-
- The images and configuration found in this sub-project should _not_ be used in
- production environments. They are very specifically tailored for example use-
- cases where debuggging and access need to be simplified.
-
-
-Requirements
-------------
-
-* `Docker Desktop with Docker Compose `_
-
-
-Usage
------
-
-To spin everything up using ``docker-compose``, simply execute the following command:
-
-.. code-block:: console
-
- docker-compose up --build
-
-
-Then, you can begin executing commands via the ``jobberate-cli`` by running bash within
-the container built for it:
-
-.. code-block:: console
-
- docker-compose run jobbergate-cli bash
-
-
-Once the bash shell in the container has started, you can start running jobbergate
-commands:
-
-.. code-block:: console
-
- jobbergate --help
-
-
-Here's an example of Jobbergate CLI in action within a composed container:
-
-.. raw:: html
-
-
-
-
-
-Note that this setup creates a user automatically that can be used for exploring the
-app or unit testing. The username is "local-user" with a password of "local".
-
-
-Usage Note
-----------
-
-To use the login link provided in the terminal, you need to set up an alias for
-keycloak (the identity & auth provider) in your operating system's hostfile.
-
-Simply add this line to your hostfile::
-
- 127.0.0.1 keycloak.local
-
-
-For Linux and OSX, this file is located at ``/etc/hosts``.
-For Windows, it is found at ``c:\windows\system32\drivers\etc\hosts``
-
-
-License
--------
-* `MIT `_
-
-
-Copyright
----------
-* Copyright (c) 2022 OmniVector Solutions
diff --git a/jobbergate-core/CHANGELOG.md b/jobbergate-core/CHANGELOG.md
new file mode 100644
index 00000000..ec6a1e0b
--- /dev/null
+++ b/jobbergate-core/CHANGELOG.md
@@ -0,0 +1,18 @@
+# Change Log
+
+This file keeps track of all notable changes to jobbergate-core
+
+## Unreleased
+
+
+## 4.1.0a2 -- 2023-10-10
+
+
+## 4.1.0a1 -- 2023-10-02
+
+
+## 4.1.0a0 -- 2023-09-25
+
+
+## 4.0.0 -- 2023-09-14
+- Keep version in sync with the other components.
diff --git a/jobbergate-core/CHANGELOG.rst b/jobbergate-core/CHANGELOG.rst
deleted file mode 100644
index 918daa48..00000000
--- a/jobbergate-core/CHANGELOG.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-============
- Change Log
-============
-
-This file keeps track of all notable changes to jobbergate-core
-
-Unreleased
-----------
-
-4.1.0a2 -- 2023-10-10
----------------------
-
-4.1.0a1 -- 2023-10-02
----------------------
-
-4.1.0a0 -- 2023-09-25
----------------------
-
-4.0.0 -- 2023-09-14
--------------------
-- Keep version in sync with the other components.
diff --git a/jobbergate-core/README.md b/jobbergate-core/README.md
new file mode 100644
index 00000000..93ebb53e
--- /dev/null
+++ b/jobbergate-core/README.md
@@ -0,0 +1,12 @@
+# Jobbergate Core
+
+Jobbergate-core is a sub-project that contains the key components and logic that is shared among all other sub-projects
+(CLI, API, and Agent). Additionally, jobbergate-core exists to support custom automation built on top of Jobbergate.
+
+
+# License
+* [MIT](LICENSE)
+
+
+# Copyright
+* Copyright (c) 2023 OmniVector Solutions
diff --git a/jobbergate-core/README.rst b/jobbergate-core/README.rst
deleted file mode 100644
index 6fe6666d..00000000
--- a/jobbergate-core/README.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-=================
- Jobbergate Core
-=================
-
-Jobbergate-core is a sub-project that contains the key components and logic that is shared among all other sub-projects (CLI, API, and Agent). Additionally, jobbergate-core exists to support custom automation built on top of Jobbergate.
-
-License
--------
-* `MIT `_
-
-
-Copyright
----------
-* Copyright (c) 2023 OmniVector Solutions
-
diff --git a/jobbergate-core/poetry.lock b/jobbergate-core/poetry.lock
index e11b0e73..8ac4cc32 100644
--- a/jobbergate-core/poetry.lock
+++ b/jobbergate-core/poetry.lock
@@ -1,75 +1,53 @@
-# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand.
[[package]]
name = "anyio"
-version = "3.6.2"
+version = "4.0.0"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
+category = "main"
optional = false
-python-versions = ">=3.6.2"
+python-versions = ">=3.8"
files = [
- {file = "anyio-3.6.2-py3-none-any.whl", hash = "sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3"},
- {file = "anyio-3.6.2.tar.gz", hash = "sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421"},
+ {file = "anyio-4.0.0-py3-none-any.whl", hash = "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f"},
+ {file = "anyio-4.0.0.tar.gz", hash = "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"},
]
[package.dependencies]
+exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""}
idna = ">=2.8"
sniffio = ">=1.1"
[package.extras]
-doc = ["packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
-test = ["contextlib2", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "uvloop (>=0.15)"]
-trio = ["trio (>=0.16,<0.22)"]
-
-[[package]]
-name = "attrs"
-version = "22.2.0"
-description = "Classes Without Boilerplate"
-optional = false
-python-versions = ">=3.6"
-files = [
- {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"},
- {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"},
-]
-
-[package.extras]
-cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"]
-dev = ["attrs[docs,tests]"]
-docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"]
-tests = ["attrs[tests-no-zope]", "zope.interface"]
-tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"]
+doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)"]
+test = ["anyio[trio]", "coverage[toml] (>=7)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"]
+trio = ["trio (>=0.22)"]
[[package]]
name = "black"
-version = "23.1.0"
+version = "23.10.0"
description = "The uncompromising code formatter."
+category = "dev"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "black-23.1.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:b6a92a41ee34b883b359998f0c8e6eb8e99803aa8bf3123bf2b2e6fec505a221"},
- {file = "black-23.1.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:57c18c5165c1dbe291d5306e53fb3988122890e57bd9b3dcb75f967f13411a26"},
- {file = "black-23.1.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:9880d7d419bb7e709b37e28deb5e68a49227713b623c72b2b931028ea65f619b"},
- {file = "black-23.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6663f91b6feca5d06f2ccd49a10f254f9298cc1f7f49c46e498a0771b507104"},
- {file = "black-23.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:9afd3f493666a0cd8f8df9a0200c6359ac53940cbde049dcb1a7eb6ee2dd7074"},
- {file = "black-23.1.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:bfffba28dc52a58f04492181392ee380e95262af14ee01d4bc7bb1b1c6ca8d27"},
- {file = "black-23.1.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c1c476bc7b7d021321e7d93dc2cbd78ce103b84d5a4cf97ed535fbc0d6660648"},
- {file = "black-23.1.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:382998821f58e5c8238d3166c492139573325287820963d2f7de4d518bd76958"},
- {file = "black-23.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bf649fda611c8550ca9d7592b69f0637218c2369b7744694c5e4902873b2f3a"},
- {file = "black-23.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:121ca7f10b4a01fd99951234abdbd97728e1240be89fde18480ffac16503d481"},
- {file = "black-23.1.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:a8471939da5e824b891b25751955be52ee7f8a30a916d570a5ba8e0f2eb2ecad"},
- {file = "black-23.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8178318cb74f98bc571eef19068f6ab5613b3e59d4f47771582f04e175570ed8"},
- {file = "black-23.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a436e7881d33acaf2536c46a454bb964a50eff59b21b51c6ccf5a40601fbef24"},
- {file = "black-23.1.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:a59db0a2094d2259c554676403fa2fac3473ccf1354c1c63eccf7ae65aac8ab6"},
- {file = "black-23.1.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:0052dba51dec07ed029ed61b18183942043e00008ec65d5028814afaab9a22fd"},
- {file = "black-23.1.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:49f7b39e30f326a34b5c9a4213213a6b221d7ae9d58ec70df1c4a307cf2a1580"},
- {file = "black-23.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:162e37d49e93bd6eb6f1afc3e17a3d23a823042530c37c3c42eeeaf026f38468"},
- {file = "black-23.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b70eb40a78dfac24842458476135f9b99ab952dd3f2dab738c1881a9b38b753"},
- {file = "black-23.1.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:a29650759a6a0944e7cca036674655c2f0f63806ddecc45ed40b7b8aa314b651"},
- {file = "black-23.1.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:bb460c8561c8c1bec7824ecbc3ce085eb50005883a6203dcfb0122e95797ee06"},
- {file = "black-23.1.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c91dfc2c2a4e50df0026f88d2215e166616e0c80e86004d0003ece0488db2739"},
- {file = "black-23.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a951cc83ab535d248c89f300eccbd625e80ab880fbcfb5ac8afb5f01a258ac9"},
- {file = "black-23.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0680d4380db3719ebcfb2613f34e86c8e6d15ffeabcf8ec59355c5e7b85bb555"},
- {file = "black-23.1.0-py3-none-any.whl", hash = "sha256:7a0f701d314cfa0896b9001df70a530eb2472babb76086344e688829efd97d32"},
- {file = "black-23.1.0.tar.gz", hash = "sha256:b0bd97bea8903f5a2ba7219257a44e3f1f9d00073d6cc1add68f0beec69692ac"},
+ {file = "black-23.10.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:f8dc7d50d94063cdfd13c82368afd8588bac4ce360e4224ac399e769d6704e98"},
+ {file = "black-23.10.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:f20ff03f3fdd2fd4460b4f631663813e57dc277e37fb216463f3b907aa5a9bdd"},
+ {file = "black-23.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3d9129ce05b0829730323bdcb00f928a448a124af5acf90aa94d9aba6969604"},
+ {file = "black-23.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:960c21555be135c4b37b7018d63d6248bdae8514e5c55b71e994ad37407f45b8"},
+ {file = "black-23.10.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:30b78ac9b54cf87bcb9910ee3d499d2bc893afd52495066c49d9ee6b21eee06e"},
+ {file = "black-23.10.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:0e232f24a337fed7a82c1185ae46c56c4a6167fb0fe37411b43e876892c76699"},
+ {file = "black-23.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31946ec6f9c54ed7ba431c38bc81d758970dd734b96b8e8c2b17a367d7908171"},
+ {file = "black-23.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:c870bee76ad5f7a5ea7bd01dc646028d05568d33b0b09b7ecfc8ec0da3f3f39c"},
+ {file = "black-23.10.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:6901631b937acbee93c75537e74f69463adaf34379a04eef32425b88aca88a23"},
+ {file = "black-23.10.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:481167c60cd3e6b1cb8ef2aac0f76165843a374346aeeaa9d86765fe0dd0318b"},
+ {file = "black-23.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f74892b4b836e5162aa0452393112a574dac85e13902c57dfbaaf388e4eda37c"},
+ {file = "black-23.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:47c4510f70ec2e8f9135ba490811c071419c115e46f143e4dce2ac45afdcf4c9"},
+ {file = "black-23.10.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:76baba9281e5e5b230c9b7f83a96daf67a95e919c2dfc240d9e6295eab7b9204"},
+ {file = "black-23.10.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:a3c2ddb35f71976a4cfeca558848c2f2f89abc86b06e8dd89b5a65c1e6c0f22a"},
+ {file = "black-23.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db451a3363b1e765c172c3fd86213a4ce63fb8524c938ebd82919bf2a6e28c6a"},
+ {file = "black-23.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:7fb5fc36bb65160df21498d5a3dd330af8b6401be3f25af60c6ebfe23753f747"},
+ {file = "black-23.10.0-py3-none-any.whl", hash = "sha256:e223b731a0e025f8ef427dd79d8cd69c167da807f5710add30cdf131f13dd62e"},
+ {file = "black-23.10.0.tar.gz", hash = "sha256:31b9f87b277a68d0e99d2905edae08807c007973eaa609da5f0c62def6b7c0bd"},
]
[package.dependencies]
@@ -79,7 +57,7 @@ packaging = ">=22.0"
pathspec = ">=0.9.0"
platformdirs = ">=2"
tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
-typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""}
+typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""}
[package.extras]
colorama = ["colorama (>=0.4.3)"]
@@ -91,6 +69,7 @@ uvloop = ["uvloop (>=0.15.2)"]
name = "certifi"
version = "2023.7.22"
description = "Python package for providing Mozilla's CA Bundle."
+category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -100,97 +79,114 @@ files = [
[[package]]
name = "charset-normalizer"
-version = "3.1.0"
+version = "3.3.0"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+category = "dev"
optional = false
python-versions = ">=3.7.0"
files = [
- {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"},
- {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"},
- {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"},
- {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"},
- {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"},
- {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"},
- {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"},
- {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"},
- {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"},
- {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"},
- {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"},
- {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"},
- {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"},
- {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"},
- {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"},
- {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"},
- {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"},
- {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"},
- {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"},
- {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"},
- {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"},
- {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"},
- {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"},
- {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"},
- {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"},
- {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"},
- {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"},
- {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"},
- {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"},
- {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"},
- {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"},
- {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"},
- {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"},
- {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"},
- {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"},
- {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"},
- {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"},
- {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"},
- {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"},
- {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"},
- {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"},
- {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"},
- {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"},
- {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"},
- {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"},
- {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"},
- {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"},
- {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"},
- {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"},
- {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"},
- {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"},
- {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"},
- {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"},
- {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"},
- {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"},
- {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"},
- {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"},
- {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"},
- {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"},
- {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"},
- {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"},
- {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"},
- {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"},
- {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"},
- {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"},
- {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"},
- {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"},
- {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"},
- {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"},
- {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"},
- {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"},
- {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"},
- {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"},
- {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"},
- {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"},
+ {file = "charset-normalizer-3.3.0.tar.gz", hash = "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-win32.whl", hash = "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-win32.whl", hash = "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-win32.whl", hash = "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-win32.whl", hash = "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-win32.whl", hash = "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-win32.whl", hash = "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884"},
+ {file = "charset_normalizer-3.3.0-py3-none-any.whl", hash = "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2"},
]
[[package]]
name = "click"
-version = "8.1.3"
+version = "8.1.7"
description = "Composable command line interface toolkit"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
- {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
+ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
+ {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
]
[package.dependencies]
@@ -200,6 +196,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""}
name = "colorama"
version = "0.4.6"
description = "Cross-platform colored terminal text."
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
files = [
@@ -209,62 +206,64 @@ files = [
[[package]]
name = "coverage"
-version = "7.2.2"
+version = "7.3.2"
description = "Code coverage measurement for Python"
+category = "dev"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "coverage-7.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c90e73bdecb7b0d1cea65a08cb41e9d672ac6d7995603d6465ed4914b98b9ad7"},
- {file = "coverage-7.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e2926b8abedf750c2ecf5035c07515770944acf02e1c46ab08f6348d24c5f94d"},
- {file = "coverage-7.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57b77b9099f172804e695a40ebaa374f79e4fb8b92f3e167f66facbf92e8e7f5"},
- {file = "coverage-7.2.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:efe1c0adad110bf0ad7fb59f833880e489a61e39d699d37249bdf42f80590169"},
- {file = "coverage-7.2.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2199988e0bc8325d941b209f4fd1c6fa007024b1442c5576f1a32ca2e48941e6"},
- {file = "coverage-7.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:81f63e0fb74effd5be736cfe07d710307cc0a3ccb8f4741f7f053c057615a137"},
- {file = "coverage-7.2.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:186e0fc9cf497365036d51d4d2ab76113fb74f729bd25da0975daab2e107fd90"},
- {file = "coverage-7.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:420f94a35e3e00a2b43ad5740f935358e24478354ce41c99407cddd283be00d2"},
- {file = "coverage-7.2.2-cp310-cp310-win32.whl", hash = "sha256:38004671848b5745bb05d4d621526fca30cee164db42a1f185615f39dc997292"},
- {file = "coverage-7.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:0ce383d5f56d0729d2dd40e53fe3afeb8f2237244b0975e1427bfb2cf0d32bab"},
- {file = "coverage-7.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3eb55b7b26389dd4f8ae911ba9bc8c027411163839dea4c8b8be54c4ee9ae10b"},
- {file = "coverage-7.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d2b96123a453a2d7f3995ddb9f28d01fd112319a7a4d5ca99796a7ff43f02af5"},
- {file = "coverage-7.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:299bc75cb2a41e6741b5e470b8c9fb78d931edbd0cd009c58e5c84de57c06731"},
- {file = "coverage-7.2.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5e1df45c23d4230e3d56d04414f9057eba501f78db60d4eeecfcb940501b08fd"},
- {file = "coverage-7.2.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:006ed5582e9cbc8115d2e22d6d2144a0725db542f654d9d4fda86793832f873d"},
- {file = "coverage-7.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d683d230b5774816e7d784d7ed8444f2a40e7a450e5720d58af593cb0b94a212"},
- {file = "coverage-7.2.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8efb48fa743d1c1a65ee8787b5b552681610f06c40a40b7ef94a5b517d885c54"},
- {file = "coverage-7.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4c752d5264053a7cf2fe81c9e14f8a4fb261370a7bb344c2a011836a96fb3f57"},
- {file = "coverage-7.2.2-cp311-cp311-win32.whl", hash = "sha256:55272f33da9a5d7cccd3774aeca7a01e500a614eaea2a77091e9be000ecd401d"},
- {file = "coverage-7.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:92ebc1619650409da324d001b3a36f14f63644c7f0a588e331f3b0f67491f512"},
- {file = "coverage-7.2.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5afdad4cc4cc199fdf3e18088812edcf8f4c5a3c8e6cb69127513ad4cb7471a9"},
- {file = "coverage-7.2.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0484d9dd1e6f481b24070c87561c8d7151bdd8b044c93ac99faafd01f695c78e"},
- {file = "coverage-7.2.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d530191aa9c66ab4f190be8ac8cc7cfd8f4f3217da379606f3dd4e3d83feba69"},
- {file = "coverage-7.2.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ac0f522c3b6109c4b764ffec71bf04ebc0523e926ca7cbe6c5ac88f84faced0"},
- {file = "coverage-7.2.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ba279aae162b20444881fc3ed4e4f934c1cf8620f3dab3b531480cf602c76b7f"},
- {file = "coverage-7.2.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:53d0fd4c17175aded9c633e319360d41a1f3c6e352ba94edcb0fa5167e2bad67"},
- {file = "coverage-7.2.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c99cb7c26a3039a8a4ee3ca1efdde471e61b4837108847fb7d5be7789ed8fd9"},
- {file = "coverage-7.2.2-cp37-cp37m-win32.whl", hash = "sha256:5cc0783844c84af2522e3a99b9b761a979a3ef10fb87fc4048d1ee174e18a7d8"},
- {file = "coverage-7.2.2-cp37-cp37m-win_amd64.whl", hash = "sha256:817295f06eacdc8623dc4df7d8b49cea65925030d4e1e2a7c7218380c0072c25"},
- {file = "coverage-7.2.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6146910231ece63facfc5984234ad1b06a36cecc9fd0c028e59ac7c9b18c38c6"},
- {file = "coverage-7.2.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:387fb46cb8e53ba7304d80aadca5dca84a2fbf6fe3faf6951d8cf2d46485d1e5"},
- {file = "coverage-7.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:046936ab032a2810dcaafd39cc4ef6dd295df1a7cbead08fe996d4765fca9fe4"},
- {file = "coverage-7.2.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e627dee428a176ffb13697a2c4318d3f60b2ccdde3acdc9b3f304206ec130ccd"},
- {file = "coverage-7.2.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fa54fb483decc45f94011898727802309a109d89446a3c76387d016057d2c84"},
- {file = "coverage-7.2.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3668291b50b69a0c1ef9f462c7df2c235da3c4073f49543b01e7eb1dee7dd540"},
- {file = "coverage-7.2.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7c20b731211261dc9739bbe080c579a1835b0c2d9b274e5fcd903c3a7821cf88"},
- {file = "coverage-7.2.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5764e1f7471cb8f64b8cda0554f3d4c4085ae4b417bfeab236799863703e5de2"},
- {file = "coverage-7.2.2-cp38-cp38-win32.whl", hash = "sha256:4f01911c010122f49a3e9bdc730eccc66f9b72bd410a3a9d3cb8448bb50d65d3"},
- {file = "coverage-7.2.2-cp38-cp38-win_amd64.whl", hash = "sha256:c448b5c9e3df5448a362208b8d4b9ed85305528313fca1b479f14f9fe0d873b8"},
- {file = "coverage-7.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bfe7085783cda55e53510482fa7b5efc761fad1abe4d653b32710eb548ebdd2d"},
- {file = "coverage-7.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9d22e94e6dc86de981b1b684b342bec5e331401599ce652900ec59db52940005"},
- {file = "coverage-7.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:507e4720791977934bba016101579b8c500fb21c5fa3cd4cf256477331ddd988"},
- {file = "coverage-7.2.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc4803779f0e4b06a2361f666e76f5c2e3715e8e379889d02251ec911befd149"},
- {file = "coverage-7.2.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db8c2c5ace167fd25ab5dd732714c51d4633f58bac21fb0ff63b0349f62755a8"},
- {file = "coverage-7.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4f68ee32d7c4164f1e2c8797535a6d0a3733355f5861e0f667e37df2d4b07140"},
- {file = "coverage-7.2.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d52f0a114b6a58305b11a5cdecd42b2e7f1ec77eb20e2b33969d702feafdd016"},
- {file = "coverage-7.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:797aad79e7b6182cb49c08cc5d2f7aa7b2128133b0926060d0a8889ac43843be"},
- {file = "coverage-7.2.2-cp39-cp39-win32.whl", hash = "sha256:db45eec1dfccdadb179b0f9ca616872c6f700d23945ecc8f21bb105d74b1c5fc"},
- {file = "coverage-7.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:8dbe2647bf58d2c5a6c5bcc685f23b5f371909a5624e9f5cd51436d6a9f6c6ef"},
- {file = "coverage-7.2.2-pp37.pp38.pp39-none-any.whl", hash = "sha256:872d6ce1f5be73f05bea4df498c140b9e7ee5418bfa2cc8204e7f9b817caa968"},
- {file = "coverage-7.2.2.tar.gz", hash = "sha256:36dd42da34fe94ed98c39887b86db9d06777b1c8f860520e21126a75507024f2"},
+ {file = "coverage-7.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf"},
+ {file = "coverage-7.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda"},
+ {file = "coverage-7.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a"},
+ {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c"},
+ {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f"},
+ {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6"},
+ {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148"},
+ {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9"},
+ {file = "coverage-7.3.2-cp310-cp310-win32.whl", hash = "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f"},
+ {file = "coverage-7.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611"},
+ {file = "coverage-7.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c"},
+ {file = "coverage-7.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074"},
+ {file = "coverage-7.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a"},
+ {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3"},
+ {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a"},
+ {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1"},
+ {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c"},
+ {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312"},
+ {file = "coverage-7.3.2-cp311-cp311-win32.whl", hash = "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640"},
+ {file = "coverage-7.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2"},
+ {file = "coverage-7.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836"},
+ {file = "coverage-7.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63"},
+ {file = "coverage-7.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216"},
+ {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4"},
+ {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf"},
+ {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf"},
+ {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84"},
+ {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a"},
+ {file = "coverage-7.3.2-cp312-cp312-win32.whl", hash = "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb"},
+ {file = "coverage-7.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed"},
+ {file = "coverage-7.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738"},
+ {file = "coverage-7.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2"},
+ {file = "coverage-7.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2"},
+ {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c"},
+ {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9"},
+ {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82"},
+ {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901"},
+ {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76"},
+ {file = "coverage-7.3.2-cp38-cp38-win32.whl", hash = "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92"},
+ {file = "coverage-7.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a"},
+ {file = "coverage-7.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce"},
+ {file = "coverage-7.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9"},
+ {file = "coverage-7.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f"},
+ {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25"},
+ {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9"},
+ {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6"},
+ {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc"},
+ {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083"},
+ {file = "coverage-7.3.2-cp39-cp39-win32.whl", hash = "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce"},
+ {file = "coverage-7.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f"},
+ {file = "coverage-7.3.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637"},
+ {file = "coverage-7.3.2.tar.gz", hash = "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef"},
]
[package.dependencies]
@@ -277,6 +276,7 @@ toml = ["tomli"]
name = "ecdsa"
version = "0.18.0"
description = "ECDSA cryptographic signature library (pure python)"
+category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
@@ -293,13 +293,14 @@ gmpy2 = ["gmpy2"]
[[package]]
name = "exceptiongroup"
-version = "1.1.1"
+version = "1.1.3"
description = "Backport of PEP 654 (exception groups)"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"},
- {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"},
+ {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"},
+ {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"},
]
[package.extras]
@@ -309,6 +310,7 @@ test = ["pytest (>=6)"]
name = "flake8"
version = "3.9.2"
description = "the modular source code checker: pep8 pyflakes and co"
+category = "dev"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
files = [
@@ -325,6 +327,7 @@ pyflakes = ">=2.3.0,<2.4.0"
name = "freezegun"
version = "1.2.2"
description = "Let your Python tests travel through time"
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -339,6 +342,7 @@ python-dateutil = ">=2.7"
name = "h11"
version = "0.14.0"
description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -350,6 +354,7 @@ files = [
name = "httpcore"
version = "0.17.3"
description = "A minimal low-level HTTP client."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -361,16 +366,17 @@ files = [
anyio = ">=3.0,<5.0"
certifi = "*"
h11 = ">=0.13,<0.15"
-sniffio = "==1.*"
+sniffio = ">=1.0.0,<2.0.0"
[package.extras]
http2 = ["h2 (>=3,<5)"]
-socks = ["socksio (==1.*)"]
+socks = ["socksio (>=1.0.0,<2.0.0)"]
[[package]]
name = "httpx"
version = "0.24.1"
description = "The next generation HTTP client."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -386,14 +392,15 @@ sniffio = "*"
[package.extras]
brotli = ["brotli", "brotlicffi"]
-cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
+cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<14)"]
http2 = ["h2 (>=3,<5)"]
-socks = ["socksio (==1.*)"]
+socks = ["socksio (>=1.0.0,<2.0.0)"]
[[package]]
name = "idna"
version = "3.4"
description = "Internationalized Domain Names in Applications (IDNA)"
+category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -405,6 +412,7 @@ files = [
name = "iniconfig"
version = "2.0.0"
description = "brain-dead simple config-ini parsing"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -416,6 +424,7 @@ files = [
name = "isort"
version = "5.12.0"
description = "A Python utility / library to sort Python imports."
+category = "dev"
optional = false
python-versions = ">=3.8.0"
files = [
@@ -433,6 +442,7 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"]
name = "loguru"
version = "0.6.0"
description = "Python logging made (stupidly) simple"
+category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -451,6 +461,7 @@ dev = ["Sphinx (>=4.1.1)", "black (>=19.10b0)", "colorama (>=0.3.4)", "docutils
name = "mccabe"
version = "0.6.1"
description = "McCabe checker, plugin for flake8"
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -462,6 +473,7 @@ files = [
name = "mypy"
version = "0.931"
description = "Optional static typing for Python"
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -500,6 +512,7 @@ python2 = ["typed-ast (>=1.4.0,<2)"]
name = "mypy-extensions"
version = "1.0.0"
description = "Type system extensions for programs checked with the mypy type checker."
+category = "dev"
optional = false
python-versions = ">=3.5"
files = [
@@ -509,30 +522,33 @@ files = [
[[package]]
name = "packaging"
-version = "23.0"
+version = "23.2"
description = "Core utilities for Python packages"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"},
- {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"},
+ {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
+ {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
]
[[package]]
name = "pathspec"
-version = "0.11.1"
+version = "0.11.2"
description = "Utility library for gitignore style pattern matching of file paths."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"},
- {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"},
+ {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"},
+ {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"},
]
[[package]]
name = "pendulum"
version = "2.1.2"
description = "Python datetimes made easy"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
@@ -565,28 +581,30 @@ pytzdata = ">=2020.1"
[[package]]
name = "platformdirs"
-version = "3.2.0"
+version = "3.11.0"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "platformdirs-3.2.0-py3-none-any.whl", hash = "sha256:ebe11c0d7a805086e99506aa331612429a72ca7cd52a1f0d277dc4adc20cb10e"},
- {file = "platformdirs-3.2.0.tar.gz", hash = "sha256:d5b638ca397f25f979350ff789db335903d7ea010ab28903f57b27e1b16c2b08"},
+ {file = "platformdirs-3.11.0-py3-none-any.whl", hash = "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"},
+ {file = "platformdirs-3.11.0.tar.gz", hash = "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3"},
]
[package.extras]
-docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"]
-test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.2.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"]
+docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"]
[[package]]
name = "pluggy"
-version = "1.0.0"
+version = "1.3.0"
description = "plugin and hook calling mechanisms for python"
+category = "dev"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
files = [
- {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
- {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
+ {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"},
+ {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"},
]
[package.extras]
@@ -595,30 +613,33 @@ testing = ["pytest", "pytest-benchmark"]
[[package]]
name = "py-buzz"
-version = "3.2.1"
+version = "4.1.0"
description = "\"That's not flying, it's falling with style\": Exceptions with extras"
+category = "main"
optional = false
-python-versions = ">=3.6.2,<4.0.0"
+python-versions = ">=3.8,<4.0"
files = [
- {file = "py-buzz-3.2.1.tar.gz", hash = "sha256:f4fc6a119d9d74bc60822cbdac65876423cd56d9911833968db1c9ee8e2ed069"},
- {file = "py_buzz-3.2.1-py3-none-any.whl", hash = "sha256:2dfc7dc9c7e19d49e0e75def2efad84510fcbf06dad538c8960faa50d39d34bf"},
+ {file = "py_buzz-4.1.0-py3-none-any.whl", hash = "sha256:77dc0dc9c9923b6f8079dc2e2c3b4fbebd2308acaca1500f8eda2711cd308f97"},
+ {file = "py_buzz-4.1.0.tar.gz", hash = "sha256:ac11dba4922b2af114126044597d2fcd15e8c6a74368bed91f3c6732c8f09812"},
]
[[package]]
name = "pyasn1"
-version = "0.4.8"
-description = "ASN.1 types and codecs"
+version = "0.5.0"
+description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)"
+category = "main"
optional = false
-python-versions = "*"
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7"
files = [
- {file = "pyasn1-0.4.8-py2.py3-none-any.whl", hash = "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d"},
- {file = "pyasn1-0.4.8.tar.gz", hash = "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"},
+ {file = "pyasn1-0.5.0-py2.py3-none-any.whl", hash = "sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57"},
+ {file = "pyasn1-0.5.0.tar.gz", hash = "sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde"},
]
[[package]]
name = "pycodestyle"
version = "2.7.0"
description = "Python style guide checker"
+category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@@ -628,47 +649,48 @@ files = [
[[package]]
name = "pydantic"
-version = "1.10.7"
+version = "1.10.13"
description = "Data validation and settings management using python type hints"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "pydantic-1.10.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e79e999e539872e903767c417c897e729e015872040e56b96e67968c3b918b2d"},
- {file = "pydantic-1.10.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:01aea3a42c13f2602b7ecbbea484a98169fb568ebd9e247593ea05f01b884b2e"},
- {file = "pydantic-1.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:516f1ed9bc2406a0467dd777afc636c7091d71f214d5e413d64fef45174cfc7a"},
- {file = "pydantic-1.10.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae150a63564929c675d7f2303008d88426a0add46efd76c3fc797cd71cb1b46f"},
- {file = "pydantic-1.10.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ecbbc51391248116c0a055899e6c3e7ffbb11fb5e2a4cd6f2d0b93272118a209"},
- {file = "pydantic-1.10.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f4a2b50e2b03d5776e7f21af73e2070e1b5c0d0df255a827e7c632962f8315af"},
- {file = "pydantic-1.10.7-cp310-cp310-win_amd64.whl", hash = "sha256:a7cd2251439988b413cb0a985c4ed82b6c6aac382dbaff53ae03c4b23a70e80a"},
- {file = "pydantic-1.10.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:68792151e174a4aa9e9fc1b4e653e65a354a2fa0fed169f7b3d09902ad2cb6f1"},
- {file = "pydantic-1.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe2507b8ef209da71b6fb5f4e597b50c5a34b78d7e857c4f8f3115effaef5fe"},
- {file = "pydantic-1.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10a86d8c8db68086f1e30a530f7d5f83eb0685e632e411dbbcf2d5c0150e8dcd"},
- {file = "pydantic-1.10.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d75ae19d2a3dbb146b6f324031c24f8a3f52ff5d6a9f22f0683694b3afcb16fb"},
- {file = "pydantic-1.10.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:464855a7ff7f2cc2cf537ecc421291b9132aa9c79aef44e917ad711b4a93163b"},
- {file = "pydantic-1.10.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:193924c563fae6ddcb71d3f06fa153866423ac1b793a47936656e806b64e24ca"},
- {file = "pydantic-1.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:b4a849d10f211389502059c33332e91327bc154acc1845f375a99eca3afa802d"},
- {file = "pydantic-1.10.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cc1dde4e50a5fc1336ee0581c1612215bc64ed6d28d2c7c6f25d2fe3e7c3e918"},
- {file = "pydantic-1.10.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0cfe895a504c060e5d36b287ee696e2fdad02d89e0d895f83037245218a87fe"},
- {file = "pydantic-1.10.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:670bb4683ad1e48b0ecb06f0cfe2178dcf74ff27921cdf1606e527d2617a81ee"},
- {file = "pydantic-1.10.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:950ce33857841f9a337ce07ddf46bc84e1c4946d2a3bba18f8280297157a3fd1"},
- {file = "pydantic-1.10.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c15582f9055fbc1bfe50266a19771bbbef33dd28c45e78afbe1996fd70966c2a"},
- {file = "pydantic-1.10.7-cp37-cp37m-win_amd64.whl", hash = "sha256:82dffb306dd20bd5268fd6379bc4bfe75242a9c2b79fec58e1041fbbdb1f7914"},
- {file = "pydantic-1.10.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c7f51861d73e8b9ddcb9916ae7ac39fb52761d9ea0df41128e81e2ba42886cd"},
- {file = "pydantic-1.10.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6434b49c0b03a51021ade5c4daa7d70c98f7a79e95b551201fff682fc1661245"},
- {file = "pydantic-1.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64d34ab766fa056df49013bb6e79921a0265204c071984e75a09cbceacbbdd5d"},
- {file = "pydantic-1.10.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:701daea9ffe9d26f97b52f1d157e0d4121644f0fcf80b443248434958fd03dc3"},
- {file = "pydantic-1.10.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cf135c46099ff3f919d2150a948ce94b9ce545598ef2c6c7bf55dca98a304b52"},
- {file = "pydantic-1.10.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0f85904f73161817b80781cc150f8b906d521fa11e3cdabae19a581c3606209"},
- {file = "pydantic-1.10.7-cp38-cp38-win_amd64.whl", hash = "sha256:9f6f0fd68d73257ad6685419478c5aece46432f4bdd8d32c7345f1986496171e"},
- {file = "pydantic-1.10.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c230c0d8a322276d6e7b88c3f7ce885f9ed16e0910354510e0bae84d54991143"},
- {file = "pydantic-1.10.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:976cae77ba6a49d80f461fd8bba183ff7ba79f44aa5cfa82f1346b5626542f8e"},
- {file = "pydantic-1.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d45fc99d64af9aaf7e308054a0067fdcd87ffe974f2442312372dfa66e1001d"},
- {file = "pydantic-1.10.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d2a5ebb48958754d386195fe9e9c5106f11275867051bf017a8059410e9abf1f"},
- {file = "pydantic-1.10.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:abfb7d4a7cd5cc4e1d1887c43503a7c5dd608eadf8bc615413fc498d3e4645cd"},
- {file = "pydantic-1.10.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:80b1fab4deb08a8292d15e43a6edccdffa5377a36a4597bb545b93e79c5ff0a5"},
- {file = "pydantic-1.10.7-cp39-cp39-win_amd64.whl", hash = "sha256:d71e69699498b020ea198468e2480a2f1e7433e32a3a99760058c6520e2bea7e"},
- {file = "pydantic-1.10.7-py3-none-any.whl", hash = "sha256:0cd181f1d0b1d00e2b705f1bf1ac7799a2d938cce3376b8007df62b29be3c2c6"},
- {file = "pydantic-1.10.7.tar.gz", hash = "sha256:cfc83c0678b6ba51b0532bea66860617c4cd4251ecf76e9846fa5a9f3454e97e"},
+ {file = "pydantic-1.10.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:efff03cc7a4f29d9009d1c96ceb1e7a70a65cfe86e89d34e4a5f2ab1e5693737"},
+ {file = "pydantic-1.10.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3ecea2b9d80e5333303eeb77e180b90e95eea8f765d08c3d278cd56b00345d01"},
+ {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1740068fd8e2ef6eb27a20e5651df000978edce6da6803c2bef0bc74540f9548"},
+ {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84bafe2e60b5e78bc64a2941b4c071a4b7404c5c907f5f5a99b0139781e69ed8"},
+ {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bc0898c12f8e9c97f6cd44c0ed70d55749eaf783716896960b4ecce2edfd2d69"},
+ {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:654db58ae399fe6434e55325a2c3e959836bd17a6f6a0b6ca8107ea0571d2e17"},
+ {file = "pydantic-1.10.13-cp310-cp310-win_amd64.whl", hash = "sha256:75ac15385a3534d887a99c713aa3da88a30fbd6204a5cd0dc4dab3d770b9bd2f"},
+ {file = "pydantic-1.10.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c553f6a156deb868ba38a23cf0df886c63492e9257f60a79c0fd8e7173537653"},
+ {file = "pydantic-1.10.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e08865bc6464df8c7d61439ef4439829e3ab62ab1669cddea8dd00cd74b9ffe"},
+ {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e31647d85a2013d926ce60b84f9dd5300d44535a9941fe825dc349ae1f760df9"},
+ {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:210ce042e8f6f7c01168b2d84d4c9eb2b009fe7bf572c2266e235edf14bacd80"},
+ {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8ae5dd6b721459bfa30805f4c25880e0dd78fc5b5879f9f7a692196ddcb5a580"},
+ {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f8e81fc5fb17dae698f52bdd1c4f18b6ca674d7068242b2aff075f588301bbb0"},
+ {file = "pydantic-1.10.13-cp311-cp311-win_amd64.whl", hash = "sha256:61d9dce220447fb74f45e73d7ff3b530e25db30192ad8d425166d43c5deb6df0"},
+ {file = "pydantic-1.10.13-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4b03e42ec20286f052490423682016fd80fda830d8e4119f8ab13ec7464c0132"},
+ {file = "pydantic-1.10.13-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f59ef915cac80275245824e9d771ee939133be38215555e9dc90c6cb148aaeb5"},
+ {file = "pydantic-1.10.13-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a1f9f747851338933942db7af7b6ee8268568ef2ed86c4185c6ef4402e80ba8"},
+ {file = "pydantic-1.10.13-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:97cce3ae7341f7620a0ba5ef6cf043975cd9d2b81f3aa5f4ea37928269bc1b87"},
+ {file = "pydantic-1.10.13-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:854223752ba81e3abf663d685f105c64150873cc6f5d0c01d3e3220bcff7d36f"},
+ {file = "pydantic-1.10.13-cp37-cp37m-win_amd64.whl", hash = "sha256:b97c1fac8c49be29486df85968682b0afa77e1b809aff74b83081cc115e52f33"},
+ {file = "pydantic-1.10.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c958d053453a1c4b1c2062b05cd42d9d5c8eb67537b8d5a7e3c3032943ecd261"},
+ {file = "pydantic-1.10.13-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c5370a7edaac06daee3af1c8b1192e305bc102abcbf2a92374b5bc793818599"},
+ {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d6f6e7305244bddb4414ba7094ce910560c907bdfa3501e9db1a7fd7eaea127"},
+ {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3a3c792a58e1622667a2837512099eac62490cdfd63bd407993aaf200a4cf1f"},
+ {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c636925f38b8db208e09d344c7aa4f29a86bb9947495dd6b6d376ad10334fb78"},
+ {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:678bcf5591b63cc917100dc50ab6caebe597ac67e8c9ccb75e698f66038ea953"},
+ {file = "pydantic-1.10.13-cp38-cp38-win_amd64.whl", hash = "sha256:6cf25c1a65c27923a17b3da28a0bdb99f62ee04230c931d83e888012851f4e7f"},
+ {file = "pydantic-1.10.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8ef467901d7a41fa0ca6db9ae3ec0021e3f657ce2c208e98cd511f3161c762c6"},
+ {file = "pydantic-1.10.13-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:968ac42970f57b8344ee08837b62f6ee6f53c33f603547a55571c954a4225691"},
+ {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9849f031cf8a2f0a928fe885e5a04b08006d6d41876b8bbd2fc68a18f9f2e3fd"},
+ {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56e3ff861c3b9c6857579de282ce8baabf443f42ffba355bf070770ed63e11e1"},
+ {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f00790179497767aae6bcdc36355792c79e7bbb20b145ff449700eb076c5f96"},
+ {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:75b297827b59bc229cac1a23a2f7a4ac0031068e5be0ce385be1462e7e17a35d"},
+ {file = "pydantic-1.10.13-cp39-cp39-win_amd64.whl", hash = "sha256:e70ca129d2053fb8b728ee7d1af8e553a928d7e301a311094b8a0501adc8763d"},
+ {file = "pydantic-1.10.13-py3-none-any.whl", hash = "sha256:b87326822e71bd5f313e7d3bfdc77ac3247035ac10b0c0618bd99dcf95b1e687"},
+ {file = "pydantic-1.10.13.tar.gz", hash = "sha256:32c8b48dcd3b2ac4e78b0ba4af3a2c2eb6048cb75202f0ea7b34feb740efc340"},
]
[package.dependencies]
@@ -682,6 +704,7 @@ email = ["email-validator (>=1.0.3)"]
name = "pyflakes"
version = "2.3.1"
description = "passive checker of Python programs"
+category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@@ -693,6 +716,7 @@ files = [
name = "pyproject-flake8"
version = "3.9.2"
description = "pyproject-flake8 (`pflake8`), a monkey patching wrapper to connect flake8 with pyproject.toml configuration"
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -706,17 +730,17 @@ tomli = {version = "*", markers = "python_version < \"3.11\""}
[[package]]
name = "pytest"
-version = "7.2.2"
+version = "7.4.2"
description = "pytest: simple powerful testing with Python"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "pytest-7.2.2-py3-none-any.whl", hash = "sha256:130328f552dcfac0b1cec75c12e3f005619dc5f874f0a06e8ff7263f0ee6225e"},
- {file = "pytest-7.2.2.tar.gz", hash = "sha256:c99ab0c73aceb050f68929bc93af19ab6db0558791c6a0715723abe9d0ade9d4"},
+ {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"},
+ {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"},
]
[package.dependencies]
-attrs = ">=19.2.0"
colorama = {version = "*", markers = "sys_platform == \"win32\""}
exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
iniconfig = "*"
@@ -725,12 +749,13 @@ pluggy = ">=0.12,<2.0"
tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
[package.extras]
-testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"]
+testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
[[package]]
name = "pytest-cov"
version = "3.0.0"
description = "Pytest plugin for measuring coverage."
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@@ -749,6 +774,7 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale
name = "pytest-env"
version = "0.6.2"
description = "py.test plugin that allows you to add environment variables."
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -762,6 +788,7 @@ pytest = ">=2.6.0"
name = "pytest-freezegun"
version = "0.4.2"
description = "Wrap tests with fixtures in freeze_time"
+category = "dev"
optional = false
python-versions = "*"
files = [
@@ -775,13 +802,14 @@ pytest = ">=3.0.0"
[[package]]
name = "pytest-mock"
-version = "3.10.0"
+version = "3.12.0"
description = "Thin-wrapper around the mock package for easier use with pytest"
+category = "dev"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "pytest-mock-3.10.0.tar.gz", hash = "sha256:fbbdb085ef7c252a326fd8cdcac0aa3b1333d8811f131bdcc701002e1be7ed4f"},
- {file = "pytest_mock-3.10.0-py3-none-any.whl", hash = "sha256:f4c973eeae0282963eb293eb173ce91b091a79c1334455acfac9ddee8a1c784b"},
+ {file = "pytest-mock-3.12.0.tar.gz", hash = "sha256:31a40f038c22cad32287bb43932054451ff5583ff094bca6f675df2f8bc1a6e9"},
+ {file = "pytest_mock-3.12.0-py3-none-any.whl", hash = "sha256:0972719a7263072da3a21c7f4773069bcc7486027d7e8e1f81d98a47e701bc4f"},
]
[package.dependencies]
@@ -794,6 +822,7 @@ dev = ["pre-commit", "pytest-asyncio", "tox"]
name = "pytest-random-order"
version = "1.1.0"
description = "Randomise the order in which pytest tests are run with some control over the randomness"
+category = "dev"
optional = false
python-versions = ">=3.5.0"
files = [
@@ -808,6 +837,7 @@ pytest = ">=3.0.0"
name = "python-dateutil"
version = "2.8.2"
description = "Extensions to the standard Python datetime module"
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
files = [
@@ -822,6 +852,7 @@ six = ">=1.5"
name = "python-jose"
version = "3.3.0"
description = "JOSE implementation in Python"
+category = "main"
optional = false
python-versions = "*"
files = [
@@ -843,6 +874,7 @@ pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"]
name = "pytzdata"
version = "2020.1"
description = "The Olson timezone database for Python."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@@ -854,6 +886,7 @@ files = [
name = "requests"
version = "2.31.0"
description = "Python HTTP for Humans."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -873,13 +906,14 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
[[package]]
name = "requests-mock"
-version = "1.10.0"
+version = "1.11.0"
description = "Mock out responses from the requests package"
+category = "dev"
optional = false
python-versions = "*"
files = [
- {file = "requests-mock-1.10.0.tar.gz", hash = "sha256:59c9c32419a9fb1ae83ec242d98e889c45bd7d7a65d48375cc243ec08441658b"},
- {file = "requests_mock-1.10.0-py2.py3-none-any.whl", hash = "sha256:2fdbb637ad17ee15c06f33d31169e71bf9fe2bdb7bc9da26185be0dd8d842699"},
+ {file = "requests-mock-1.11.0.tar.gz", hash = "sha256:ef10b572b489a5f28e09b708697208c4a3b2b89ef80a9f01584340ea357ec3c4"},
+ {file = "requests_mock-1.11.0-py2.py3-none-any.whl", hash = "sha256:f7fae383f228633f6bececebdab236c478ace2284d6292c6e7e2867b9ab74d15"},
]
[package.dependencies]
@@ -888,12 +922,13 @@ six = "*"
[package.extras]
fixture = ["fixtures"]
-test = ["fixtures", "mock", "purl", "pytest", "requests-futures", "sphinx", "testrepository (>=0.0.18)", "testtools"]
+test = ["fixtures", "mock", "purl", "pytest", "requests-futures", "sphinx", "testtools"]
[[package]]
name = "respx"
version = "0.20.2"
description = "A utility for mocking out the Python HTTPX and HTTP Core libraries."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -908,6 +943,7 @@ httpx = ">=0.21.0"
name = "rsa"
version = "4.9"
description = "Pure-Python RSA implementation"
+category = "main"
optional = false
python-versions = ">=3.6,<4"
files = [
@@ -922,6 +958,7 @@ pyasn1 = ">=0.1.3"
name = "six"
version = "1.16.0"
description = "Python 2 and 3 compatibility utilities"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
@@ -933,6 +970,7 @@ files = [
name = "sniffio"
version = "1.3.0"
description = "Sniff out which async library your code is running under"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -944,6 +982,7 @@ files = [
name = "toml"
version = "0.10.2"
description = "Python Library for Tom's Obvious, Minimal Language"
+category = "dev"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
@@ -955,6 +994,7 @@ files = [
name = "tomli"
version = "2.0.1"
description = "A lil' TOML parser"
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -964,35 +1004,39 @@ files = [
[[package]]
name = "typing-extensions"
-version = "4.5.0"
-description = "Backported and Experimental Type Hints for Python 3.7+"
+version = "4.8.0"
+description = "Backported and Experimental Type Hints for Python 3.8+"
+category = "main"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"},
- {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"},
+ {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"},
+ {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"},
]
[[package]]
name = "urllib3"
-version = "1.26.18"
+version = "2.0.7"
description = "HTTP library with thread-safe connection pooling, file post, and more."
+category = "dev"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
+python-versions = ">=3.7"
files = [
- {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"},
- {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"},
+ {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"},
+ {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"},
]
[package.extras]
-brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"]
-secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"]
-socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
+brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
+secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"]
+socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
+zstd = ["zstandard (>=0.18.0)"]
[[package]]
name = "win32-setctime"
version = "1.1.0"
description = "A small Python utility to set file creation time on Windows"
+category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -1006,4 +1050,4 @@ dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"]
[metadata]
lock-version = "2.0"
python-versions = "^3.8"
-content-hash = "98ce541dd57af5f5ce787083b524df5994a317bde7fafea1992e8a1a083db4f3"
+content-hash = "8650c8a2e677b792aeff3b7cf0756d4a3f35ed3ebdd637c9e40605f469db195e"
diff --git a/jobbergate-core/pyproject.toml b/jobbergate-core/pyproject.toml
index 32396f8e..bd796d09 100644
--- a/jobbergate-core/pyproject.toml
+++ b/jobbergate-core/pyproject.toml
@@ -4,7 +4,7 @@ version = "4.1.0a2"
description = "Jobbergate Core"
authors = ["Omnivector Solutions "]
license = "MIT"
-readme = "README.rst"
+readme = "README.md"
repository = "https://github.com/omnivector-solutions/jobbergate"
classifiers = [
"License :: OSI Approved :: MIT License",
@@ -23,7 +23,7 @@ python = "^3.8"
httpx = "^0.24.1"
loguru = "^0.6.0"
pendulum = "^2.1.2"
-py-buzz = "^3.1.0"
+py-buzz = "^4.0.0"
pydantic = "^1.8.2"
python-jose = "^3.3.0"
diff --git a/jobbergate-docs/CHANGELOG.rst b/jobbergate-docs/CHANGELOG.md
similarity index 52%
rename from jobbergate-docs/CHANGELOG.rst
rename to jobbergate-docs/CHANGELOG.md
index 7514d726..e31f03cb 100644
--- a/jobbergate-docs/CHANGELOG.rst
+++ b/jobbergate-docs/CHANGELOG.md
@@ -1,42 +1,38 @@
-============
- Change Log
-============
+# Change Log
This file keeps track of all notable changes to jobbergate-docs
-Unreleased
-----------
-4.1.0a2 -- 2023-10-10
----------------------
+## Unreleased
+- Converted to Markdown and built with mkdocs-material
-4.1.0a1 -- 2023-10-02
----------------------
+## 4.1.0a2 -- 2023-10-10
-4.1.0a0 -- 2023-09-25
----------------------
+## 4.1.0a1 -- 2023-10-02
-4.0.0 -- 2023-09-14
--------------------
+
+## 4.1.0a0 -- 2023-09-25
+
+
+## 4.0.0 -- 2023-09-14
- Keep synchronized with jobbergate-cli and jobbergate-api
-3.4.3 -- 2023-01-30
--------------------
+
+## 3.4.3 -- 2023-01-30
- Keep synchronized with jobbergate-cli and jobbergate-api
-3.4.2 -- 2023-01-25
--------------------
+
+## 3.4.2 -- 2023-01-25
- Keep synchronized with jobbergate-cli and jobbergate-api
-3.4.1 -- 2023-01-16
--------------------
+
+## 3.4.1 -- 2023-01-16
- Keep synchronized with jobbergate-cli and jobbergate-api
-3.4.0 -- 2023-01-03
--------------------
+
+## 3.4.0 -- 2023-01-03
- Keep synchronized with jobbergate-cli and jobbergate-api
-3.3.4 -- 2022-12-05
--------------------
+## 3.3.4 -- 2022-12-05
- Massive update of the Jobbergate documentation
- Inclusion of Motorbike example and walk-through
diff --git a/jobbergate-docs/LICENSE b/jobbergate-docs/LICENSE.md
similarity index 94%
rename from jobbergate-docs/LICENSE
rename to jobbergate-docs/LICENSE.md
index 064bd0f9..4b09184b 100644
--- a/jobbergate-docs/LICENSE
+++ b/jobbergate-docs/LICENSE.md
@@ -1,6 +1,6 @@
-MIT License
+# MIT License
-Copyright (c) 2020-2022 Omnivector Solutions
+Copyright (c) `2020` `Omnivector, LLC`
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/jobbergate-docs/Makefile b/jobbergate-docs/Makefile
index 38957c09..58663818 100644
--- a/jobbergate-docs/Makefile
+++ b/jobbergate-docs/Makefile
@@ -25,11 +25,11 @@ format: install
.PHONY: docs
docs: install
- poetry run sphinx-build src/ build/
+ poetry run mkdocs build --config-file=docs/mkdocs.yaml
-.PHONY: dev
-dev: install
- poetry run sphinx-autobuild src/ build/ --watch ../jobbergate-core/jobbergate_core
+.PHONY: docs-serve
+docs-serve: install
+ poetry run mkdocs serve --config-file=docs/mkdocs.yaml --dev-addr=localhost:10000
.PHONY: clean
clean:
diff --git a/jobbergate-docs/README.md b/jobbergate-docs/README.md
new file mode 100644
index 00000000..97445c1a
--- /dev/null
+++ b/jobbergate-docs/README.md
@@ -0,0 +1,42 @@
+> An [Omnivector](https://www.omnivector.io/) initiative
+>
+> [![omnivector-logo](https://omnivector-public-assets.s3.us-west-2.amazonaws.com/branding/omnivector-logo-text-black-horz.png)](https://www.omnivector.io/)
+
+
+# Jobbergate Documentation
+
+This repository contains the source for the Jobbergate Documentation page.
+
+It is built using [MkDocs](https://www.mkdocs.org/).
+
+
+## Build the Docs
+
+To build the documentation static site, run the following command:
+
+```bash
+make docs
+```
+
+
+To view the rendered documentation locally, run:
+
+```bash
+make docs-serve
+```
+
+
+## Other Commands
+
+To lint the python files in the `src` directory, run:
+
+```bash
+make lint
+```
+
+
+To clean up build artifacts, run:
+
+```bash
+make clean
+```
diff --git a/jobbergate-docs/README.rst b/jobbergate-docs/README.rst
deleted file mode 100644
index a06b2cec..00000000
--- a/jobbergate-docs/README.rst
+++ /dev/null
@@ -1,36 +0,0 @@
-.. figure:: https://github.com/omnivector-solutions/jobbergate/blob/main/jobbergate-docs/src/images/logo.png
- :alt: Logo
- :align: center
- :width: 80px
-
- An Omnivector Solutions initiative
-
-===========================
- Jobbergatge Documentation
-===========================
-
-This repository contains the source for the Jobbergate Documentation page.
-
-It is built using [sphinx](https://www.sphinx-doc.org/en/master/) to render the source into
-a static website.
-
-
-Build the Docs
-==============
-
-To build the documentation static site, run the following command::
-
- $ make docs
-
-
-Other Commands
-==============
-
-To lint the python files in the ``src`` directory, run::
-
- $ make lint
-
-
-To clean up build artifacts, run::
-
- $ make clean
diff --git a/jobbergate-docs/docs/mkdocs.yaml b/jobbergate-docs/docs/mkdocs.yaml
new file mode 100644
index 00000000..c76825e5
--- /dev/null
+++ b/jobbergate-docs/docs/mkdocs.yaml
@@ -0,0 +1,85 @@
+# Configuration for mkdocs
+
+site_name: Jobbergate Documentation
+repo_url: https://github.com/omnivector-solutions/jobbergate
+docs_dir: source
+theme:
+ name: material
+ logo: https://omnivector-public-assets.s3.us-west-2.amazonaws.com/branding/omnivector-logo.png
+ font:
+ code: Fira Code
+ features:
+ - navigation.expand
+ - navigation.tracking
+ - content.code.copy
+ pallete:
+ # Dark/Light mode toggle is not working and can't figure out why
+ - scheme: default
+ toggle:
+ icon: material/brightness-4
+ name: Switch to dark mode
+ - scheme: slate
+ toggle:
+ icon: material/brightness-7
+ name: Switch to light mode
+watch:
+ - ../../jobbergate-api/
+ - ../../jobbergate-cli/
+plugins:
+ search:
+ lang: en
+ mkdocstrings:
+ default_handler: python
+ handlers:
+ python:
+ paths: [..]
+ options:
+ heading_level: 3
+ show_root_heading: true
+ separate_signature: true
+ show_signature_annotations: true
+ show_source: false
+ docstring_style: google
+ show_submodules: true
+markdown_extensions:
+ - pymdownx.highlight:
+ anchor_linenums: true
+ line_spans: __span
+ pygments_lang_class: true
+ - pymdownx.inlinehilite:
+ - pymdownx.snippets:
+ - pymdownx.superfences:
+ - pymdownx.details:
+ - admonition:
+ - attr_list:
+extra_css:
+ - stylesheets/extra.css
+nav:
+ - Home: index.md
+ - Elements:
+ - Resources:
+ - Overview: elements/resources/index.md
+ - Job Scripts: elements/resources/job_scripts.md
+ - Job Script Templates: elements/resources/job_script_templates.md
+ - Job Submissions: elements/resources/job_submissions.md
+ - Apps:
+ - Overview: elements/apps/index.md
+ - Jobbergate Agent: elements/apps/agent.md
+ - Jobbergate API: elements/apps/api.md
+ - Jobbergate CLI: elements/apps/cli.md
+ - Jobbergate Core: elements/apps/core.md
+ - Tutorial: tutorial.md
+ - Authors: authors.md
+ - Developer Guide:
+ - Developer Tools: developer_guide/dev_tools.md
+ - Quality Assurance Tools: developer_guide/qa_tools.md
+ - Integration Testing: developer_guide/integration_testing.md
+ - Continuous Integration: developer_guide/ci.md
+ - S3 File Storage: developer_guide/s3_file_storage.md
+ - Keycloak Setup: developer_guide/keycloak_setup.md
+ - Template Workflows: developer_guide/template_workflows.md
+ - Reference:
+ - Jobbergate Agent: reference/agent.md
+ - Jobbergate API: reference/api.md
+ - Jobbergate CLI: reference/cli.md
+ - Jobbergate Core: reference/core.md
diff --git a/jobbergate-docs/docs/source/authors.md b/jobbergate-docs/docs/source/authors.md
new file mode 100644
index 00000000..caf31267
--- /dev/null
+++ b/jobbergate-docs/docs/source/authors.md
@@ -0,0 +1,32 @@
+# Authors
+
+Jobbergate is written and maintained by [Omnivector, LLC](https://omnivector.io){:target="\_blank"}. It is an [open
+source](https://github.com/omnivector-solutions/jobbergate) project developed in collaboration with Scania, AB.
+
+
+## Attribution
+
+This project began as a rewrite of the original
+[Jobbergate project](https://github.com/HeMan/jobbergate){:target="\_blank"}
+authored by Jimmy Hedman. The original provided the inspiration for an interactive tool used to gather template variable
+values to render jinja2 templates into Slurm job scripts.
+
+Building upon Jimmy's great idea, Jobbergate has grown into an entire
+system for managing and submitting reusable Slurm jobs, but the core idea of reusing templates combined with user input
+for the template values has remained the core of the project throughout its evolution.
+
+
+## Jobbergate Development Team:
+
+The Jobbergate project's main contributors are as follows:
+
+* [Felipe Schuch](https://github.com/fschuch) [📧](mailto:felipe@omnivector.solutions)
+* [James Beedy](https://github.com/jamesbeedy) [📧](mailto:james@omnivector.solutions)
+* [Lucas Carvalho](https://github.com/zsinx6)
+* [Matheus Tosta](https://github.com/matheushent) [📧](mailto:matheus@omnivector.solutions)
+* [Tucker Beck](https://github.com/dusktreader) [📧](mailto:tucker@omnivector.solutions)
+
+
+## Get in touch:
+
+Contact [Omnivector by email](mailto:info@omnivector.solutions)
diff --git a/jobbergate-docs/docs/source/developer_guide/ci.md b/jobbergate-docs/docs/source/developer_guide/ci.md
new file mode 100644
index 00000000..8e238006
--- /dev/null
+++ b/jobbergate-docs/docs/source/developer_guide/ci.md
@@ -0,0 +1,86 @@
+# Continuous Integration
+
+Jobbergate employs [GitHub actions](https://github.com/omnivector-solutions/jobbergate/actions) for its continuous
+integration processes. Detailed descriptions of these actions are provided on this page.
+
+
+## Automated Quality Assurance
+
+Jobbergate's git repository incorporates a GitHub Action, specified in
+[test_on_push.yaml](https://github.com/omnivector-solutions/jobbergate/blob/main/.github/workflows/test_on_push.yaml),
+which is designed to execute our [quality assurance tools](./qa_tools.md) across all
+Jobbergate sub-projects simultaneously. The action is activated anytime a new commit is
+pushed to the `main` branch or whenever a pull request is submitted.
+
+The suite of quality assurance tools encompasses unit tests, code coverage, linters,
+code formatters, and static type checkers. Comprehensive documentation about each tool
+is available in the [Quality Assurance Tools](./qa.md) section.
+
+
+## Automated Publication to PyPI
+
+The major components of Jobbergate are published on PyPI, the Python Package Index.
+They are available at:
+
+ - [jobbergate-api](https://pypi.org/project/jobbergate-api/)
+ - [jobbergate-cli](https://pypi.org/project/jobbergate-cli/)
+ - [jobbergate-agent](https://pypi.org/project/jobbergate-agent/)
+ - [jobbergate-core](https://pypi.org/project/jobbergate-core/)
+
+These packages are automatically published to PyPI by three linked GitHub Actions that
+are detailed below.
+
+
+### Prepare for release
+
+The first action involved in publication is the
+[prepare_release.yaml](https://github.com/omnivector-solutions/jobbergate/blob/main/.github/workflows/prepare_release.yaml))
+action. It is triggered manually on github through a "workflow dispatch event" whenever
+new features or fixes need to be published.
+
+
+The action takes two arguments that must be supplied by the user. They are:
+
+ - **Use workflow from:**
+ The branch from which the release will be created. The default is `main`, and it's
+ highly recommended that releases are cut from this branch in order to keep a linear
+ commit history between releases and pre-releases.
+ - **Release Type:**
+ This will describe the release type that will be created. Because Jobbergate uses
+ semantic versioning, it's important to carefully select the correct type of release.
+ For mor information on release types, please see the
+ [Poetry documentation](https://python-poetry.org/docs/cli/#version) to learn more.
+
+Once activated, this action:
+
+ - Uses Poetry to bump the version number of all the Jobbergate sub-packages according to
+ the release type selected.
+ - Checks if the new version number is synchronized between the sub-packages, and fails if they are not.
+ - Creates a new dated entry for the new release on each of the sub-packages' changelog
+ files from the contents of the "Unreleased" section.
+ - Creates a new branch named `prepare-release/`.
+ - Opens a draft pull request titled `Release `.
+
+In this way, all the changes above can be reviewed before the release is published,
+and all quality assurance tests are executed for the pull request.
+
+The remaining steps of the workflow are chained automatically once the PR is
+accepted and merged into main.
+
+
+### Create a new tag
+
+The next action in the sequence is the
+[tag_on_merged_pull_request.yaml](https://github.com/omnivector-solutions/jobbergate/blob/main/.github/workflows/tag_on_merged_pull_request.yaml)
+action. Once the automatically created release PR is merged into the `main` branch, this
+action is triggered. It creates and pushes a new git tag to GitHub. The tag is based on
+the new version number for the release.
+
+
+### Publish on Tag
+
+The final action is
+[publish_on_tag.yaml](https://github.com/omnivector-solutions/jobbergate/blob/main/.github/workflows/publish_on_tag.yaml)
+This action is triggered when a new version tag is pushed to the repository.
+It first double checks if the tag matches the version number of each Jobbergate
+component, and then it builds and publishes the packages on PyPI.
diff --git a/jobbergate-docs/docs/source/developer_guide/dev_tools.md b/jobbergate-docs/docs/source/developer_guide/dev_tools.md
new file mode 100644
index 00000000..1d6c423b
--- /dev/null
+++ b/jobbergate-docs/docs/source/developer_guide/dev_tools.md
@@ -0,0 +1,335 @@
+# API Dev Tools
+
+The Jobbergate API sub-project is equipped with a few tools designed to assist with
+some everyday development tasks. These can help streamline the process of setting up and
+interacting with the API.
+
+The dev-tools are shipped as a CLI program that can be invoked via Poetry within the
+project. All of the commands will operate within the virtual environment set up by
+Poetry.
+
+
+## Invoking `dev-tools`
+
+To invoke the dev tools, you must execute the commands from the home directory for the
+`jobbergate-api`. To see some information about the `dev-tools`, execute:
+
+```console
+$ poetry run dev-tools --help
+```
+
+This will provide some help output that shows what options and sub-commands are
+available:
+
+```
+Usage: dev-tools [OPTIONS] COMMAND [ARGS]...
+
+Options:
+ --install-completion [bash|zsh|fish|powershell|pwsh]
+ Install completion for the specified shell.
+ --show-completion [bash|zsh|fish|powershell|pwsh]
+ Show completion for the specified shell, to
+ copy it or customize the installation.
+ --help Show this message and exit.
+
+Commands:
+ db
+ dev-server Start a development server locally.
+ show-env Print out the current environment settings.
+```
+
+The `--help` option is available for all of the subcommands provided in `dev-tools`.
+
+
+## The `db` subcommand
+
+There are a few convenience methods in the `dev-tools` for interacting with Jobbergate
+API's PostgreSQL database. These tools are found in the `db` subcommand. To see more
+info about this sub-command, run:
+
+```shell
+poetry run dev-tools db --help
+```
+
+
+### The `start` subcommand
+
+This command is used to start up a database in docker that is configured using the
+values found in the execution environment for Jobbergate.
+
+To start a development database, invoke this command:
+
+```shell
+poetry run dev-tools db start
+```
+
+Note that the values for the database name, host, port, and password will all be
+gathered from the environment that the API is configured to use. The script should
+produce some logging output that will indicate the status of the db:
+
+```
+2022-09-07 15:44:56.634 | DEBUG | dev_tools.db:start:57 - Starting dev-jobbergate-postgres with:
+{
+ "image": "postgres:14.1",
+ "env": {
+ "POSTGRES_PASSWORD": "compose-db-pswd",
+ "POSTGRES_DB": "compose-db-name",
+ "POSTGRES_USER": "compose-db-user"
+ },
+ "ports": {
+ "5432/tcp": 5432
+ }
+}
+2022-09-07 15:44:56.634 | DEBUG | docker_gadgets.gadgets:start_service:19 - Starting service 'dev-jobbergate-postgres'
+2022-09-07 15:44:56.642 | DEBUG | docker_gadgets.gadgets:start_service:26 - Retrieving external image for dev-jobbergate-postgres using postgres:14.1
+2022-09-07 15:44:56.649 | DEBUG | docker_gadgets.helpers:get_image_external:43 - Pulling postgres:14.1 image (tag='14.1')
+2022-09-07 15:45:03.190 | DEBUG | docker_gadgets.helpers:cleanup_container:13 - Checking for existing container: dev-jobbergate-postgres
+2022-09-07 15:45:03.195 | DEBUG | docker_gadgets.helpers:cleanup_container:24 - No existing container found: dev-jobbergate-postgres
+2022-09-07 15:45:03.196 | DEBUG | docker_gadgets.gadgets:start_service:31 - Checking if needed ports {'5432/tcp': 5432} are available
+2022-09-07 15:45:03.217 | DEBUG | docker_gadgets.gadgets:start_service:34 - Starting container: dev-jobbergate-postgres
+2022-09-07 15:45:03.647 | DEBUG | docker_gadgets.gadgets:start_service:48 - Started container: dev-jobbergate-postgres ()
+```
+
+In this example, the container name is `dev-jobbergate-postgres` and it is running in
+the docker container referenced by `e686e97595` with the port 5432 mapped from
+the host machine to the container.
+
+!!!Note
+
+ This command is also very convenient for starting up a database for unit testing. To
+ do so, you need the `--test` flag to the command. When you run the unit tests suite,
+ it will use the database started by this command.
+
+
+### The `start-all` subcommand
+
+This command is just a convenient way of spinning up both a development database and a
+test database in one command. It is equivalent to running the following two commands in
+succession:
+
+```shell
+poetry run dev-tools db start
+```
+
+
+```shell
+poetry run dev-tools db start --test
+```
+
+
+### The `login` subcommand
+
+This command allows you to log in to the database that your Jobbergate API is configured
+to connect with. It allows you to login to databases, regardless of whether they are
+locally hosted via Docker or situated on a remote PostgreSQL server. this ensures
+seamless access to any database that the Jobbergate API is configured to connect with.
+
+To log in to the database, execute this command:
+
+```shell
+poetry run dev-tools db login
+```
+
+The command will show some debug output including the URL of the database to which it is
+connecting and will then show a REPL connection to the database:
+
+```shell
+2022-09-07 15:52:02.089 | DEBUG | dev_tools.db:login:26 - Logging into database: postgresql://compose-db-user:compose-db-pswd@localhost:5432/compose-db-name
+Server: PostgreSQL 14.1 (Debian 14.1-1.pgdg110+1)
+Version: 3.4.1
+Home: http://pgcli.com
+compose-db-name>
+```
+
+
+### The `migrate` subcommand
+
+
+This command uses [alembic](https://alembic.sqlalchemy.org/en/latest/) to generate a
+migration script to bring the current database (described by the environment) up to date
+with the [SQLAlchemy](https://www.sqlalchemy.org/) models specified in the Jobbergate
+API source code.
+
+To invoke the migration script generation, execute:
+
+```shell
+poetry run dev-tools db migrate --message="An example migration"
+```
+
+
+Some logging info will be produced, including the location of the new migration script:
+
+```
+2022-09-07 15:58:09.725 | DEBUG | dev_tools.db:migrate:79 - Creating migration with message: An example migration
+INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
+INFO [alembic.runtime.migration] Will assume transactional DDL.
+INFO [alembic.ddl.postgresql] Detected sequence named 'applications_id_seq' as owned by integer column 'applications(id)', assuming SERIAL and omitting
+INFO [alembic.ddl.postgresql] Detected sequence named 'job_scripts_id_seq' as owned by integer column 'job_scripts(id)', assuming SERIAL and omitting
+INFO [alembic.ddl.postgresql] Detected sequence named 'job_submissions_id_seq' as owned by integer column 'job_submissions(id)', assuming SERIAL and omitting
+ Generating /home/dusktreader/git-repos/omnivector/jobbergate/jobbergate-api/alembic/versions/20220907_155809--c275de463a90_an_example_migration.py ... done
+ Running post write hook "black" ...
+reformatted /home/dusktreader/git-repos/omnivector/jobbergate/jobbergate-api/alembic/versions/20220907_155809--c275de463a90_an_example_migration.py
+
+All done! ✨ 🍰 ✨
+1 file reformatted.
+ done
+ Running post write hook "isort" ...
+Fixing /home/dusktreader/git-repos/omnivector/jobbergate/jobbergate-api/alembic/versions/20220907_155809--c275de463a90_an_example_migration.py
+ done
+```
+
+The generated migration should *always* be reviewed before it is committed to the
+repository.
+
+It is also possible to produce a blank migration if you need to execute some raw SQL or
+write an Alembic script by hand. Just pass the `--blank` parameter on the command
+line:
+
+```shell
+poetry run dev-tools db migrate --blank --message="A blank migration"
+```
+
+
+### The `upgrade` subcommand
+
+This subcommand is used to apply a database migration to the database that the
+Jobbergate API is configured to connect with.
+
+By default, it will apply all the migrations that have not yet been applied to the
+database.
+
+To apply the migrations, execute the command:
+
+```shell
+$ poetry run dev-tools db upgrade
+```
+
+
+It will produce some logging output that shows what migrations were applied:
+
+```
+2022-09-07 16:05:46.315 | DEBUG | dev_tools.db:upgrade:89 - Upgrading database...
+INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
+INFO [alembic.runtime.migration] Will assume transactional DDL.
+INFO [alembic.runtime.migration] Running upgrade d22da0741b7f -> c275de463a90, An example migration
+```
+
+
+If you wish to only upgrade the database *to* a specific migration, you can pass that
+migration's id to the `--target` param.
+
+
+## The `show-env` subcommand
+
+This command will show how the Jobbergate API is configured through its environment
+settings. To see the environment, execute this command:
+
+```shell
+poetry run dev-tools show-env
+```
+
+The output that the command produces will look something like:
+
+```
+Jobbergate settings:
+ DEPLOY_ENV: LOCAL
+ LOG_LEVEL: DEBUG
+ DATABASE_HOST: localhost
+ DATABASE_USER: compose-db-user
+ DATABASE_PSWD: compose-db-pswd
+ DATABASE_NAME: compose-db-name
+ DATABASE_PORT: 5432
+ TEST_DATABASE_HOST: localhost
+ TEST_DATABASE_USER: test-user
+ TEST_DATABASE_PSWD: test-pswd
+ TEST_DATABASE_NAME: test-db
+ TEST_DATABASE_PORT: 5433
+ S3_BUCKET_NAME: jobbergate-k8s-staging
+ S3_ENDPOINT_URL: None
+ ARMASEC_DOMAIN: localhost:9080/realms/master/protocol/openid-connect
+ ARMASEC_USE_HTTPS: True
+ ARMASEC_AUDIENCE: https://local.omnivector.solutions
+ ARMASEC_DEBUG: True
+ ARMASEC_ADMIN_DOMAIN: None
+ ARMASEC_ADMIN_AUDIENCE: None
+ ARMASEC_ADMIN_MATCH_KEY: None
+ ARMASEC_ADMIN_MATCH_VALUE: None
+ IDENTITY_CLAIMS_KEY: https://omnivector.solutions
+ SENTRY_DSN: None
+ SENTRY_SAMPLE_RATE: 1.0
+ MAX_UPLOAD_FILE_SIZE: 104857600
+ SENDGRID_FROM_EMAIL: None
+ SENDGRID_API_KEY: None
+```
+
+The command can also produce the output as JSON if needed by pyassing the `--json` flag:
+
+```shell
+poetry run dev-tools show-env --json
+```
+
+The JSON output will look something like:
+```
+{"DEPLOY_ENV": "LOCAL", "LOG_LEVEL": "DEBUG", "DATABASE_HOST": "localhost", "DATABASE_USER": "compose-db-user", "DATABASE_PSWD": "compose-db-pswd", "DATABASE_NAME": "compose-db-name", "DATABASE_PORT": 5432, "TEST_DATABASE_HOST": "localhost", "TEST_DATABASE_USER": "test-user", "TEST_DATABASE_PSWD": "test-pswd", "TEST_DATABASE_NAME": "test-db", "TEST_DATABASE_PORT": 5433, "S3_BUCKET_NAME": "jobbergate-k8s-staging", "S3_ENDPOINT_URL": null, "ARMASEC_DOMAIN": "localhost:9080/realms/master/protocol/openid-connect", "ARMASEC_USE_HTTPS": true, "ARMASEC_AUDIENCE": "https://local.omnivector.solutions", "ARMASEC_DEBUG": true, "ARMASEC_ADMIN_DOMAIN": null, "ARMASEC_ADMIN_AUDIENCE": null, "ARMASEC_ADMIN_MATCH_KEY": null, "ARMASEC_ADMIN_MATCH_VALUE": null, "IDENTITY_CLAIMS_KEY": "https://omnivector.solutions", "SENTRY_DSN": null, "SENTRY_SAMPLE_RATE": 1.0, "MAX_UPLOAD_FILE_SIZE": 104857600, "SENDGRID_FROM_EMAIL": null, "SENDGRID_API_KEY": null}
+```
+
+
+## The `dev-server` subcommand
+
+This command starts up a local development server for the Jobbergate API. It will
+be created using the configuration set up in the environment settings.
+
+To start the server, run:
+
+```shell
+poetry run dev-tools dev-server
+```
+
+The command will produce some logging output that looks like this:
+```
+2022-09-07 16:15:05.830 | INFO | dev_tools.dev_server:dev_server:50 - Waiting for the database
+2022-09-07 16:15:05.830 | DEBUG | dev_tools.dev_server:_wait_for_db:23 - database url is: postgresql://compose-db-user:compose-db-pswd@localhost:5432/compose-db-name
+2022-09-07 16:15:05.830 | DEBUG | dev_tools.dev_server:_wait_for_db:26 - Checking health of database at postgresql://compose-db-user:compose-db-pswd@localhost:5432/compose-db-name: Attempt #0
+INFO: Will watch for changes in these directories: ['/home/dusktreader/git-repos/omnivector/jobbergate/jobbergate-api']
+INFO: Uvicorn running on http://0.0.0.0:5000 (Press CTRL+C to quit)
+INFO: Started reloader process [27314] using statreload
+2022-09-07 16:15:06.555 | INFO | jobbergate_api.main::39 - Skipping Sentry
+INFO: Started server process [27319]
+INFO: Waiting for application startup.
+2022-09-07 16:15:06.587 | INFO | jobbergate_api.main:init_logger:71 - Logging configured 📝 Level: DEBUG
+2022-09-07 16:15:06.587 | DEBUG | jobbergate_api.main:init_database:79 - Initializing database
+INFO: Application startup complete.
+```
+
+
+There are additional options that can control some of the details of the settings of the
+dev server. These can be examined with the `--help` flag:
+
+```shell
+poetry run dev-tools dev-server --help
+```
+
+The dev server options will be printed like:
+
+```
+Usage: dev-tools dev-server [OPTIONS]
+
+ Start a development server locally.
+
+Options:
+ --db-wait-count INTEGER How many times to attempt a check [default: 3]
+ --db-wait-interval FLOAT Seconds to wait between checks [default: 5.0]
+ --port INTEGER The port where the server should listen [default:
+ 5000]
+ --log-level TEXT The level to log uvicorn output [default: DEBUG]
+ --help Show this message and exit.
+```
+
+
+The `--db-wait-*` flags are used to make the dev server wait for the dev database to
+become available. These are mostly useful in the context of `docker-compose`.
+
+It should also be noted that a development uvicorn server will automatically reload the
+app if the source files of the app change. This is very helpful for debugging behavior
+in the app without having to manually stop and start the app after every source code
+modification.
diff --git a/jobbergate-docs/docs/source/developer_guide/integration_testing.md b/jobbergate-docs/docs/source/developer_guide/integration_testing.md
new file mode 100644
index 00000000..8010beec
--- /dev/null
+++ b/jobbergate-docs/docs/source/developer_guide/integration_testing.md
@@ -0,0 +1,532 @@
+# Integration Testing
+
+While conducting integration testing for Jobbergate, it's critical to examine the entire
+cycle of the platform, ranging from the creation of an Application to remote
+Job Submission via the Jobbergate Agent.
+
+To test most of the platforms functionality, the `docker-compose` setup located in the
+[Jobbergate Composed](https://github.com/omnivector-solutions/jobbergate/jobbergate-composed)
+sub-project is sufficient. Begin by referring to the guide in that sub-project's README.
+Pay close attention to the execution of Jobbergate CLI commands as they play a
+significant role in integration testing. For testing you can use the pre-configured user
+credentials:
+
+- **Username:** local-user
+- **Password:** local
+
+Integration testing should cover the following work-flows:
+
+- Logging in through the CLI
+- Creating an Application
+- Querying a single Application
+- Updating an Application
+- Rendering a Job Script from an Application
+- Updating a Job Script
+- Submitting a Job Script
+- Verifying a Job Submission
+- Deleting the Job Submission, Job Script, and Application
+- Logging out through the CLI
+
+
+## Setup
+
+To begin, you will need two separate terminals open. Change directory to the
+`jobbergate-composed` sub-project of the toplevel `jobbergate` folder.
+
+First, you need to start up the Jobbergate platform with docker-compose. In one of your
+terminals, run the following command:
+
+```shell
+docker-compose up --build
+```
+
+Once all the services are started, jump into the prepared `jobbergate-cli` container
+to execute CLI commands. To do so, execute this command in the other terminal you have
+prepared:
+
+```shell
+docker-compose run jobbergate-cli bash
+```
+
+Now you may start executing commands with the Jobbergate CLI.
+
+To assist with some of the commands below, create a `NAME` environment variable that
+will help to identify resources that you create during the process. You should
+set the value based on the current date so that the associated resources are easy to
+identify. Run the following command to set it:
+
+```shell
+export NAME="test--$(whoami)--$(date -I)"
+```
+
+You have now created a test name like `test--tbeck--2023-10-13`.
+
+
+## Logging in through the CLI
+
+The first work-flow you will test covers the auth mechanics of both the CLI and the API.
+
+Run the following command in the Jobbergate CLI:
+
+```shell
+jobbergate login
+```
+
+Next, open the link that is printed out and log in as `local-user` (password "local").
+If asked, grant all of the permissions.
+
+Verify that the CLI reports that the user has been successfully logged in.
+
+At this point, verify that the token that has been retrieved for the user is correct.
+
+Run the following command in the CLI:
+
+```shell
+jobbergate show-token --decode
+```
+
+This command will pretty print the payload of the token.
+Verify that it contains:
+
+ - "view" and "edit" `permissions` for job-templates, job-scripts, and job-submissions
+ - `email` equalling "local-user@jobberate.local"
+ - `aud` includes "https://local.omnivector.solutions"
+ - `azp` equals "jobbergate-cli"
+
+
+## Creating an Application
+
+Next, test the command to create an Application through the CLI, and verify that the
+resource is created in the database. Also, verify that the files are successfully
+uploaded to the file store.
+
+For integration testing, use the built-in
+[simple application](https://github.com/omnivector-solutions/jobbergate/tree/main/examples/simple-application).
+example. This example application has 3 simple template variables, and, when submitted,
+the rendered Job Script simply prints the values of those variables.
+
+Run the following command in the Jobbergate CLI:
+
+```shell
+jobbergate applications create --name=$NAME --identifier=$NAME --application-path=/example
+```
+
+
+Verify that output shows that a single application was inserted and that the files were
+uploaded:
+
+```
+ Created Application
+┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃ Key ┃ Value ┃
+┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ id │ 1 │
+│ name │ test--root--2023-10-13 │
+│ owner_email │ local-user@jobbergate.local-mail │
+│ is_archived │ False │
+│ description │ │
+│ identifier │ test--root--2023-10-13 │
+│ application_uploaded │ True │
+└──────────────────────┴──────────────────────────────────┘
+```
+
+
+## Querying a single Application
+
+Next, verify that we can look up a single Application by both its `id` and its
+`identifier`. Also include the `--full` argument to the base `jobbergate` command
+so that the output will show all the fields in the database including the source file,
+the config, and the timestamps.
+
+First, fetch the Application by `id` using the following command in the CLI:
+
+```shell
+jobbergate --full applications get-one --id=1
+```
+
+The output should look something like this:
+
+```
+┏━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃ Key ┃ Value ┃
+┡━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ id │ 1 │
+│ name │ test--root--2023-10-13 │
+│ owner_email │ local-user@jobbergate.local-mail │
+│ created_at │ 2023-10-13T19:44:21.935886 │
+│ updated_at │ 2023-10-13T19:44:21.958325 │
+│ identifier │ test--root--2023-10-13 │
+│ description │ │
+│ template_vars │ {'bar': 'BAR', 'baz': 'BAZ', 'foo': 'FOO', 'workdir': '/nfs'} │
+│ template_files │ [{'parent_id': 5, 'filename': 'dummy-script.py.j2', 'file_type': 'ENTRYPOINT', 'created_at': '2023-10-13T19:44:22.020542', │
+│ │ 'updated_at': '2023-10-13T19:44:22.020556'}] │
+│ workflow_files │ [{'parent_id': 5, 'filename': 'jobbergate.py', 'runtime_config': {'template_files': None, 'job_script_name': None, │
+│ │ 'default_template': 'dummy-script.py.j2', 'output_directory': '.', 'supporting_files': None, 'supporting_files_output_name': None}, │
+│ │ 'created_at': '2023-10-13T19:44:22.110739', 'updated_at': '2023-10-13T19:44:22.110750'}] │
+└────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+```
+
+Verify that the `id`, `name`, `identifier`, and timestamps match the Application
+that was created.
+
+Next, fetch the same application by `identifier` and verify that it is the same
+Application:
+
+```shell
+jobbergate --full applications get-one --identifier=test--tbeck--2023-10-13
+```
+
+
+## Updating an Application
+
+Next, verify that you can update the application through the CLI.
+
+Run this command to verify that we can change the name:
+
+```shell
+jobbergate applications update --id=1 --application-desc="Here is a test description"
+```
+
+Verify that you can see the new description in the application when you fetch it via the
+`get-one` subcommand. Also, check the output with the `--full` parameter to make
+sure that the `updated_at` field is different and later than the `created_at` field.
+
+
+## Rendering a Job Script from an Application
+
+Now that an application has been uploaded uploaded, use it to render a new Job Script.
+
+There are a few different options to test here to check for correct behavior:
+
+ - Basic, interactive render
+ - Render in "fast mode" with a `--param-file`
+ - Render with additional SBATCH params
+
+
+### Basic, interactive render
+
+First, render an Application to a Job Script by executing the interactive code that
+gathers the values for template variables from the user.
+
+To start the rendering process, execute:
+
+```shell
+jobbergate job-scripts render --name=$NAME --application-id=1
+```
+
+Verify that you are shown 3 prompts to supply values for the template variables. Fill
+these in with any values you like. Notice that the third question has a default response
+supplied already. Accept this value or replace it with your preferred value:
+
+```
+ [?] gimme the foo!: FOO
+ [?] gimme the bar!: BAR
+ [?] gimme the foo!: BAZ
+ [?] gimme the workdir!: /nfs
+```
+
+When prompted if you would like to submit the job, decline with "n".
+
+After completing the questions, verify that the CLI reports that the new Job Script was
+created using the supplied values:
+
+```
+ Created Job Script
+┏━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃ Key ┃ Value ┃
+┡━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ id │ 1 │
+│ application_id │ 1 │
+│ name │ test--root--2023-10-13 │
+│ description │ │
+│ owner_email │ local-user@jobbergate.local-mail │
+└────────────────┴──────────────────────────────────┘
+
+```
+
+Now we need to verify that the Job Script was rendered with the correct values. Run the
+following command:
+
+```shell
+jobbergate job-scripts show-files --id=1
+```
+
+The output should show the Job Script with the provided template variable values
+rendered as expected:
+
+```
+╭─────────────────────────────────────────────────────────────────── dummy-script.py ────────────────────────────────────────────────────────────────────╮
+│ │
+│ #!/bin/python3 │
+│ │
+│ #SBATCH -J dummy_job │
+│ #SBATCH -t 60 │
+│ │
+│ print("Executing dummy job script") │
+│ with open("/nfs/dummy-output.txt", mode="w") as dump_file: │
+│ print("I am a very, very dumb job script", file=dump_file) │
+│ print("foo=FOO", file=dump_file) │
+│ print("bar=BAR", file=dump_file) │
+│ print("baz=BAZ", file=dump_file) │
+│ │
+╰─────────────────────────────────────────────────────────── This is the main job script file ───────────────────────────────────────────────────────────╯
+```
+
+
+### Render in "fast mode" with a `--param-file`
+
+Next, verify that a Job Script can be rendered while skipping the interactive question
+answering segment by pre-supplying the application with the values to use for rendering.
+Since only the third question has a default, supply at least the other two questions
+with a param using the `--param-file` parameter.
+
+First, create a file to hold the params (hit `ctrl-d` to finish and write the file):
+
+```shell
+cat > params.json
+{
+ "foo": "FOO",
+ "bar": "BAR"
+}
+```
+
+Now, render the Application using this file. Include the `--no-submit` flag because
+the Job Script shouldn't be submitted immediately. Verify only the rendering process for
+the new Job Script:
+
+```shell
+jobbergate job-scripts render --name=$NAME --application-id=1 --fast --param-file=params.json --no-submit
+```
+
+The output from the command will show you the default values that were used that you did
+not specify in the `params.json` file:
+
+```
+Default values used
+┏━━━━━━━━━┳━━━━━━━┓
+┃ Key ┃ Value ┃
+┡━━━━━━━━━╇━━━━━━━┩
+│ baz │ zab │
+│ workdir │ /nfs │
+└─────────┴───────┘
+
+
+ Created Job Script
+┏━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃ Key ┃ Value ┃
+┡━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ id │ 2 │
+│ application_id │ 1 │
+│ name │ test--root--2023-10-13 │
+│ description │ │
+│ owner_email │ local-user@jobbergate.local-mail │
+└────────────────┴──────────────────────────────────┘
+```
+
+Now check the rendered file again using the `show-files` sub-command.
+
+
+### Render with additional SBATCH params
+
+Finally, test that additional `SBATCH` params can be inserted at render time. The code
+will insert these additional parameters into the rendered Job Script files.
+
+To supply extra `SBATCH` params, they are provided on the command line using the
+`--sbatch-params` option. Use this command to test it out:
+
+```shell
+jobbergate job-scripts render --name=$NAME --application-id=1 --fast --param-file=params.json --no-submit --sbatch-params="--cluster=fake" --sbatch-params="--partition=dummy"
+```
+
+The output should look like:
+
+```
+Default values used
+┏━━━━━━━━━┳━━━━━━━┓
+┃ Key ┃ Value ┃
+┡━━━━━━━━━╇━━━━━━━┩
+│ baz │ zab │
+│ workdir │ /nfs │
+└─────────┴───────┘
+
+
+ Created Job Script
+┏━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃ Key ┃ Value ┃
+┡━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ id │ 3 │
+│ application_id │ 1 │
+│ name │ test--root--2023-10-13 │
+│ description │ │
+│ owner_email │ local-user@jobbergate.local-mail │
+└────────────────┴──────────────────────────────────┘
+```
+
+Now, review the rendered Job Script file using the `--show-files` command. You should
+see that the additional two SBATCH parameters are included:
+
+```
+#SBATCH --cluster=fake │
+#SBATCH --partition=dummy
+```
+
+
+## Updating a Job Script
+
+Next, verify that an existing Job Script can be updated.
+
+Run this command to verify that you can change the description:
+
+```shell
+
+jobbergate job-scripts update --id=1 --description="Here is a test description"
+```
+
+Verify that you can see the new description in the Job Script when you fetch it via the
+`get-one` subcommand. Also, check the output with the `--full` parameter to make
+sure that the `updated_at` field is different and later than the `created_at` field.
+
+
+## Submitting a Job Script
+
+Next, test the process of submitting a Job Script to a slurm cluster for execution.
+Note that the `docker-compose.yaml` used for testing sets up a volume-mounted
+directory named `/nfs`. The `/nfs` directory in the container is mounted from the
+`slurm-fake-nfs` directory in the `jobbergate-composed` subproject. You can look in this
+directory after the job completes execution to check the results.
+
+You will need to verify that jobs are being submitted correctly vai the following steps:
+
+* Submit the job through the CLI
+* Verify that the agent submitted the job
+* Verify that the agent updates the Job Submission status
+* Verify the output from the job
+
+
+### Submit the job through the CLI
+
+Submit the Job Script using the CLI by running the following command:
+
+```shell
+jobbergate job-submissions create --name=$NAME --job-script-id=1 --cluster-name=local-slurm --execution-directory=/nfs
+```
+
+Verify that the output shows that the Job Submission has been created for the target
+Job Script
+
+
+```
+ Created Job Submission
+┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃ Key ┃ Value ┃
+┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ id │ 1 │
+│ job_script_id │ 1 │
+│ cluster_name │ local-slurm │
+│ slurm_job_id │ None │
+│ execution_directory │ /nfs │
+│ name │ test--root--2023-10-13 │
+│ description │ │
+│ owner_email │ local-user@jobbergate.local-mail │
+│ status │ CREATED │
+│ report_message │ None │
+└─────────────────────┴──────────────────────────────────┘
+```
+
+
+### Verify that the agent submitted the job
+
+To verify that the agent submitted the job correctly, review the log output from the
+agent.
+
+The agent performs the following process to complete a Job Submission with Slurm
+
+ - Fetch a pending job from the API
+ - Submit the job to slurm
+ - Mark the job as submitted and add the slurm job id to it
+
+You can access the log data by running the following command in a terminal that has
+changed directory to the `jobbergate-composed` folder:
+
+```shell
+docker-compose logs jobbergate-agent
+```
+
+It may be useful to pipe the output to a text viewer like `less`.
+
+If the agent has successfully submitted the job, you should see some log lines that
+look like this (ellipses indicate omitted content):
+
+```
+...Retrieved 1 pending job submission...
+...Submitting pending job submission 1
+...
+...Submitting pending job submission 1 to slurm...
+...
+...Received slurm job id 1 for job submission 1
+...Marking job job_submission_id=22 as SUBMITTED (slurm_job_id=1)
+```
+
+If you find those log lines, then the Agent has successfully submitted the job to slurm.
+
+
+### Verify that the job was completed
+
+To verify that the job completed successfully, review the log output from the
+agent.
+
+The agent performs the following process to complete Job Submissions
+
+ - Fetch the submitted job from the API
+ - Check the status of the job in slurm using the the `slurm_job_id`
+ - If the job is completed, mark the Job Submission as COMPLETED
+
+You should look for log lines that look like this (ellipses indicate omitted content):
+
+```
+...Retrieved 1 active job submissions...
+...Fetching status of job_submission 1 from slurm
+...Fetching slurm job status for slurm job 1
+...
+...Status for slurm job 1 is job_id=1 job_state='COMPLETED'...
+...Updating job_submission with status=COMPLETED
+```
+
+
+### Verify the output from the job
+
+In the terminal where you are running Jobbergate CLI commands, you can check the `/nfs`
+directory to see the results. You should see three output files in the directory:
+
+ - test--root--2023-10-13.out
+ - test--root--2023-10-13.err
+ - dummy-output.txt
+
+First, check the standard output from the script:
+
+```shell
+cat /nfs/test--root--2023-10-13.out
+```
+
+You should see a single line that says:
+
+```
+Executing dummy job script
+```
+
+The standard error from the script should be empty.
+
+The final file, `dummy-output.txt`, should contain the following content:
+
+```
+I am a very, very dumb job script
+foo=FOO
+bar=BAR
+baz=BAZ
+```
+
+# Conclusion
+
+The process described in this document covers integration tests across the entire
+Jobbergate platform. These integration tests should be performed before new versions of
+Jobbergate are published and before Jobbergate is deployed to a new environment.
diff --git a/jobbergate-docs/docs/source/developer_guide/keycloak_setup.md b/jobbergate-docs/docs/source/developer_guide/keycloak_setup.md
new file mode 100644
index 00000000..fe506f19
--- /dev/null
+++ b/jobbergate-docs/docs/source/developer_guide/keycloak_setup.md
@@ -0,0 +1,198 @@
+# Setting up Keycloak for Jobbergate
+
+Jobbergate's security is provided by the [Armasec package](https://github.com/omnivector-solutions/armasec) which should
+be compatible with any OIDC provider. However, the recommended provider is Keycloak.
+
+In this guide, we outline the steps to integrate an existing Keycloak instance (version 19.0.2 as used in this example)
+with Jobbergate to ensure a smooth user experience and enhanced security features.
+
+Although this tutorial focuses on integrating Keycloak with a locally deployed instance of Jobbergate, such as one
+housed in a Docker container via the `jobbergate-composed` sub-project, the procedures can be easily adapted to suit
+deployments on single-node Keycloak clusters or other complex configurations.
+
+
+## Create a new Realm
+
+You have the option to utilize an existing realm for Jobbergate, but for a streamlined process, it's typically more
+advantageous to create a new realm specifically for your Jobbergate deployment.
+
+Once you're logged into the Keycloak interface, navigate and click the Add realm button, found beneath the Select realm
+dropdown menu on the left-hand side.
+
+For those using a local Jobbergate deployment, you should assign the Name as "jobbergate-local".
+
+You'll also need to specify a Frontend URL. Avoid using "localhost" because a valid domain is required for the
+redirection to function correctly. A suitable alternative is the .local special domain; this domain is ideal as it isn't
+subject to reservation on any DNS. For instance, your full Frontend URL would be "http://keycloak.local:8080".
+
+The remaining realm settings can be left at their default configurations.
+
+
+### Setup Hostfile
+
+For the Keycloak admin UI to work correctly in a local deployment, it's essential to include the `keycloak.local` domain
+in your system’s hostfile.
+
+For users on Linux or OSX, you can find this file at `/etc/hosts`. Windows users can locate it at
+`c:\windows\system32\drivers\etc\hosts`.
+
+Editing this file requires administrative or sudo privileges.
+
+Upon accessing the file, append the following line and save your changes:
+
+```
+127.0.0.1 keycloak.local
+```
+
+This step ensures that the `Frontend URL` resolves correctly, facilitating seamless navigation and operation.
+
+
+## Create a new Client for the CLI
+
+To facilitate login and JWT authentication for the Jobbergate CLI, it's essential to allocate a dedicated client.
+
+Begin by navigating to the `Clients` section, found on the left sidebar, and then proceed to click on the `Create`
+button located on the right.
+
+When adjusting the `Client Protocol` settings, select the `openid-connect` option. For the `Client ID` setting, which
+choosing an easy to identify name like "jobbergate-cli" is best even though this field can be any unique string.
+
+To ensure the CLI can utilize this client for login purposes, it's vital to activate the `OAuth 2.0 Device Authorization
+Grant` option.
+
+If you're working with a local deployment, simply input "\*" in the `Valid Redirect URIs` section.
+
+
+### Add Roles
+
+Next, we need to add the needed roles for Jobbergate endpoints. These represent the fine-grained permissions that
+are checked for each request to make sure that the user has permission to fulfill the request.
+
+Click the `Roles` tab at the top, and then click on `Add Role` on the right.
+
+Add the following roles:
+
+| Name | Description |
+|---------------------------------|-------------------------------------------|
+| jobbergate:job-templates:edit | Allow to view job templates |
+| jobbergate:job-templates:view | Allow to view job templates |
+| jobbergate:job-scripts:edit | Allow to edit job scripts |
+| jobbergate:job-scripts:view | Allow to view job scripts |
+| jobbergate:job-submissions:edit | Allow to edit job submissions |
+| jobbergate:job-submissions:view | Allow to view job submissions |
+
+
+### Add Mappers
+
+Jobbergate requires two claims that are not available by default. We will add them to the JWTs with Mappers.
+
+Click the `Mappers` tab at the top, and then click the `Create` button to add a new Mapper.
+
+
+#### Audience
+
+First, we need to add an "audience" mapper. Select "audience" for the `Name` field. Next, select "Audience" for the
+`Mapper Type`. The `Included Custom Audience` value may be whatever you like. The local deploy, by default, uses
+"https://apis.omnivector.solutions". Make sure to enable the `Add to ID token` setting.
+
+
+#### Permissions
+
+The `Armasec` package expects to find "permissions" in a claim at the root
+of the JWT payload. To facilitate this, we need to add a mapper that will copy the permissions to the correct place in
+the JWT. We will call the new mapper our "permissions" mapper.
+
+Enter "Permissions" under the `Name` field. Next, select "User Client Role" as the `Mapper Type`.
+Select "jobbergatel-cli" for the `Client ID`. The `Token Claim Name` *must* have the value "permissions". The
+`Claim JSON Type` field must be "String".
+
+
+## Create a new Client for the Agent
+
+The Jobbergate Agent also requires its own client.
+
+Again, click the `Clients` section on the left navigation bar, and then click the `Create` button on the right.
+
+For the `Client Protocol` setting, choose the `openid-connect` protocol. The `Client ID` setting will be used to match
+jobs to the cluster they should be submitted to. So use the cluster name for this setting. For a local deployment, the
+`Client ID` should be "local-slurm".
+
+On the `Settings` tab, set `Access Type` to `confidential` and enter "\*" for the `Valid Redirect URIs`. Scroll down and
+click on the `Save` button.
+
+
+### Add Roles
+
+Click on the `Roles` tab, and click the `Add Role` button. Add all the following roles as above:
+
+| Name | Description |
+|---------------------------------|-------------------------------------------|
+| jobbergate:job-templates:edit | Allow to view Jobbergate applications |
+| jobbergate:job-templates:view | Allow to view applications |
+| jobbergate:job-scripts:edit | Allow to edit job scripts |
+| jobbergate:job-scripts:view | Allow to view job scripts |
+| jobbergate:job-submissions:edit | Allow to edit job submissions |
+| jobbergate:job-submissions:view | Allow to view job submissions |
+
+
+### Add Mappers
+
+Like the CLI client, the Agent's client also requires the "Audience" and "Permissions" mappers.
+
+Click the `Mappers` tab at the top, and then click the `Create` button to add a new Mapper.
+
+
+#### Audience
+
+First, we need to add an "audience" mapper. Select "audience" for the `Name` field. Next, select "Audience" for the
+`Mapper Type`. The `Included Custom Audience` value may be whatever you like. The local deploy, by default, uses
+"https://apis.omnivector.solutions". Make sure to enable the `Add to ID token` setting.
+
+
+#### Permissions
+
+Next, add a "permissions" mapper. The `Armasec` package expects to find a "permissions" claims under a claim at the root
+of the JWT payload. Enter "Permissions" under the `Name` field. Next, select "User Client Role" as the `Mapper Type`.
+Select "jobbergatel-cli" for the `Client ID`. The `Token Claim Name` *must* have the value "permissions". The
+`Claim JSON Type` field must be "String".
+
+
+### Add Service Account Roles
+
+To add the correct roles to the tokens issued for the Agent's client, we need to add some "Service Account Roles".
+
+Click the `Service Account Roles` tab. Then, from the `Client Roles` drop-down, select the `local-slurm` client. Select
+all of the Jobbergate roles created above and then click the `Add selected` button.
+
+
+## Create User(s)
+
+You will need to create some users that can use Jobbergate. These users will be able to sign-in through the Jobbergate
+CLI. Each user must have a unique email address. Other than that, no special settings are needed.
+
+To add a user, click `Users` on the left nav bar. Next, click the `Add user` button on the right.
+
+Use the following settings, and then click the `Save` button.
+
+| Username | local-user |
+| Email | local-user@jobbergate.local |
+| First Name | Local |
+| Last Name | User |
+
+After you have created the user, edit it by clicking on it in the list. You may need to click on the `View all users`
+button to see it.
+
+Click the `Credentials` tab at the top. Enter "local" for the `Password` and `Password Confirmation` field. Turn the
+`Temporary` setting to `OFF`, and click `Reset Password`. Click the `Set password` verification button.
+
+Next, click the `Role Mappings` tab at the top. Select the `jobbergate-local` entry in the `Client Roles` drop-down.
+Select all of the roles for jobbergate added above and click `Add selected` to add them to the user.
+
+
+## Conclusion
+
+Your Keycloak instance is now prepared for use by Jobbergate! For additional information on configuring Keycloak and
+Armasec, consult documentation at:
+
+ - https://www.keycloak.org/documentation
+ - https://omnivector-solutions.github.io/armasec/
diff --git a/jobbergate-docs/docs/source/developer_guide/qa_tools.md b/jobbergate-docs/docs/source/developer_guide/qa_tools.md
new file mode 100644
index 00000000..d2009b77
--- /dev/null
+++ b/jobbergate-docs/docs/source/developer_guide/qa_tools.md
@@ -0,0 +1,184 @@
+# Quality Assurance Tools
+
+Jobbergate utilizes quality control tools across its three primary components (API, CLI, and Agent). The tools are
+invoked in the same way in each of the sub-projects, and may be invoked *en masse* from the root Jobbergate directory.
+
+
+## Running Unit Tests
+
+The main sub-projects each make use of [pytest](https://docs.pytest.org/en/7.1.x/) to apply unit testing. The unit tests
+for each are contained in a subdirectory named `tests/`.
+
+To invoke all of the unit tests for a sub-project, simply issue the following command:
+
+```shell
+make test
+```
+
+Once you enter the command above, the unit tests suite will start running. For the API, this process takes a few
+minutes. The others only take a few seconds. The status of the tests will be logged to the console as well as a coverage
+report for the unit tests:
+
+```
+================================================================== test session starts ===================================================================
+platform linux -- Python 3.8.12, pytest-6.2.5, py-1.11.0, pluggy-1.0.0
+Using --random-order-bucket=module
+Using --random-order-seed=650699
+
+rootdir: /home/dusktreader/git-repos/omnivector/jobbergate/jobbergate-api, configfile: pyproject.toml, testpaths: jobbergate_api/tests
+plugins: asyncio-0.12.0, random-order-1.0.4, respx-0.17.1, env-0.6.2, armasec-0.11.0, freezegun-0.4.2, cov-2.12.1, anyio-3.5.0
+collecting ... 2022-09-07 16:31:37.548 | INFO | jobbergate_api.main::39 - Skipping Sentry
+collected 158 items
+
+tests/apps/job_scripts/test_routers.py ........................ [ 15%]
+tests/apps/applications/test_schemas.py .... [ 17%]
+tests/test_file_validation.py ........... [ 24%]
+tests/test_email_notification.py ....... [ 29%]
+tests/apps/applications/test_application_files.py ......... [ 34%]
+tests/apps/job_submissions/test_routers.py ................................. [ 55%]
+tests/apps/job_scripts/test_job_script_files.py ......... [ 61%]
+tests/apps/test_main.py . [ 62%]
+tests/test_meta_mapper.py ... [ 63%]
+tests/test_s3_manager.py ... [ 65%]
+tests/test_config.py ................ [ 75%]
+tests/test_pagination.py ........ [ 81%]
+tests/test_storage.py .. [ 82%]
+tests/test_security.py ... [ 84%]
+tests/apps/applications/test_routers.py ......................... [100%]
+
+==================================================================== warnings summary ====================================================================
+tests/conftest.py:53
+ /home/dusktreader/git-repos/omnivector/jobbergate/jobbergate-api/tests/conftest.py:53: PytestUnknownMarkWarning: Unknown pytest.mark.enforce_empty_database - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.html
+ @pytest.mark.enforce_empty_database()
+
+tests/apps/job_scripts/test_routers.py: 37 warnings
+tests/apps/job_submissions/test_routers.py: 40 warnings
+tests/test_pagination.py: 10 warnings
+tests/apps/applications/test_routers.py: 42 warnings
+ /home/dusktreader/.cache/pypoetry/virtualenvs/jobbergate-api-zc2JKxO9-py3.8/lib/python3.8/site-packages/databases/backends/postgres.py:114: DeprecationWarning: The `Row.keys()` method is deprecated to mimic SQLAlchemy behaviour, use `Row._mapping.keys()` instead.
+ warnings.warn(
+
+-- Docs: https://docs.pytest.org/en/stable/warnings.html
+
+---------- coverage: platform linux, python 3.8.12-final-0 -----------
+Name Stmts Miss Cover Missing
+------------------------------------------------------------------------------------------------
+jobbergate_api/__init__.py 0 0 100%
+jobbergate_api/apps/__init__.py 0 0 100%
+jobbergate_api/apps/applications/__init__.py 0 0 100%
+jobbergate_api/apps/applications/application_files.py 77 0 100%
+jobbergate_api/apps/applications/models.py 7 0 100%
+jobbergate_api/apps/applications/routers.py 136 14 90% 64-66, 129-131, 136-137, 210-212, 331-332, 341
+jobbergate_api/apps/applications/schemas.py 66 0 100%
+jobbergate_api/apps/job_scripts/__init__.py 0 0 100%
+jobbergate_api/apps/job_scripts/job_script_files.py 121 4 97% 67, 80-81, 270
+jobbergate_api/apps/job_scripts/models.py 7 0 100%
+jobbergate_api/apps/job_scripts/routers.py 132 11 92% 98-100, 108-109, 235-237, 267-269, 301
+jobbergate_api/apps/job_scripts/schemas.py 38 0 100%
+jobbergate_api/apps/job_submissions/__init__.py 0 0 100%
+jobbergate_api/apps/job_submissions/constants.py 11 0 100%
+jobbergate_api/apps/job_submissions/models.py 8 0 100%
+jobbergate_api/apps/job_submissions/routers.py 186 12 94% 101-103, 260-262, 382, 395-400, 406, 449
+jobbergate_api/apps/job_submissions/schemas.py 51 0 100%
+jobbergate_api/apps/permissions.py 8 0 100%
+jobbergate_api/config.py 58 1 98% 102
+jobbergate_api/email_notification.py 28 0 100%
+jobbergate_api/file_validation.py 102 6 94% 36-56, 111, 175
+jobbergate_api/main.py 47 4 91% 31-37, 94
+jobbergate_api/meta_mapper.py 24 1 96% 104
+jobbergate_api/metadata.py 2 0 100%
+jobbergate_api/pagination.py 31 0 100%
+jobbergate_api/s3_manager.py 14 0 100%
+jobbergate_api/security.py 22 0 100%
+jobbergate_api/storage.py 52 1 98% 128
+tests/__init__.py 0 0 100%
+tests/apps/__init__.py 0 0 100%
+tests/apps/applications/__init__.py 0 0 100%
+tests/apps/applications/test_application_files.py 104 0 100%
+tests/apps/applications/test_routers.py 368 0 100%
+tests/apps/applications/test_schemas.py 14 0 100%
+tests/apps/conftest.py 41 0 100%
+tests/apps/job_scripts/__init__.py 0 0 100%
+tests/apps/job_scripts/conftest.py 10 2 80% 32, 49
+tests/apps/job_scripts/test_job_script_files.py 102 0 100%
+tests/apps/job_scripts/test_routers.py 373 3 99% 48-64, 72
+tests/apps/job_submissions/__init__.py 0 0 100%
+tests/apps/job_submissions/test_routers.py 483 0 100%
+tests/apps/test_main.py 7 0 100%
+tests/conftest.py 114 1 99% 127
+tests/test_config.py 33 0 100%
+tests/test_email_notification.py 44 0 100%
+tests/test_file_validation.py 17 0 100%
+tests/test_meta_mapper.py 27 0 100%
+tests/test_pagination.py 55 0 100%
+tests/test_s3_manager.py 17 0 100%
+tests/test_security.py 39 0 100%
+tests/test_storage.py 7 0 100%
+------------------------------------------------------------------------------------------------
+TOTAL 3083 60 98%
+
+Required test coverage of 95.0% reached. Total coverage: 98.05%
+=========================================================== 158 passed, 130 warnings in 52.46s ===========================================================
+```
+
+!!!Note
+
+ The API unit tests require that a test database is already running. You can start one by using the
+ [dev-tools](./dev_tools.md) provided in the API sub-project.
+
+
+## Running Linters
+
+The main sub-projects each use a group of linting tools to make sure that the code follows code quality standards. These
+linters will report any lines or segments of the code that do not meet the project's standards.
+
+To invoke all of the linters for a sub-project, issue the following command:
+
+```shell
+make lint
+```
+
+If any issues are reported, fix the reported error and try running it again. The linters
+will only succeed if all of the issues are fixed.
+
+
+## Running Formatters
+
+For most of the linting issues, the code can be auto-corrected using the configured
+code formatters.
+
+Currently, the sub-projects use the following formatters:
+
+- [black](https://black.readthedocs.io/en/stable/)
+- [isort](https://github.com/PyCQA/isort)
+
+To apply the formatters, use this command:
+
+```shell
+make format
+```
+
+
+The formatters will report any files that were changed in their reports.
+
+
+## Running Static Code Checkers
+
+The Jobbergate sub-projects include type-hints that must be checked using the
+[mypy](http://www.mypy-lang.org/) static code checker. It may invoked using `make`:
+
+```shell
+make mypy
+```
+
+If any issues are located, they will be reported. Each type issue must be fixed before
+the static type checker passes.
+
+
+## Running All Quality Checks
+
+Finally, all of the quality checks can be run using this command:
+
+```shell
+$ make qa
+```
diff --git a/jobbergate-docs/docs/source/developer_guide/template_workflows.md b/jobbergate-docs/docs/source/developer_guide/template_workflows.md
new file mode 100644
index 00000000..074c96d5
--- /dev/null
+++ b/jobbergate-docs/docs/source/developer_guide/template_workflows.md
@@ -0,0 +1,94 @@
+# Job Script Template Workflow Files
+
+
+The main workflow file is a python script that is used within an interactive framework
+that gathers the values for template variables that will be needed when Job Scripts are
+rendered from Applications.
+
+Throughout the documentation, this file is referred to as the "Workflow Source File."
+
+The entire purpose of the Workflow Source File is to construct a workflow of questions
+organized in a series of that can be changed dynamically according to the answers
+provided by the user.
+
+
+## The JobbergateApplication class
+
+Each Workflow Source File script must define exactly one class named
+`JobbergateApplication`.
+
+This class should be a regular python class that inherits from the
+`JobbergateApplicationBase`. This base class is imported from
+[the application_base module](https://github.com/omnivector-solutions/jobbergate/blob/main/jobbergate-cli/jobbergate_cli/subapps/applications/applications_base.py).
+
+The `JobbergateApplication` implementation may be a simple or complex as needed by
+the user. However, it must define a `mainflow()` method which is the first of the
+workflow methods that the Application processes.
+
+
+## The workflow methods
+
+The `mainflow()` method is essentially the entry point for the Workflow Source File.
+It must return a list of questions that should be asked to the user in order. These
+questions will be used to gather the template variable values.
+
+The `mainflow()` method must take a dictionary named `data` as a keyword argument.
+This kwarg should default to `None`, and it should be set to an empty dict if the
+default is not overridden.
+
+Each workflow can also specify the net workflow method to call after its questions have
+been asked and answered. In this way, the workflows can be organized in a dynamic series
+where the path is dictated by the user responses.
+
+The workflow methods specify the next flow in the sequence by setting an item keyed by
+"nextworkflow" in the `data` dictionary. The value of this item is the name of the
+next workflow method to call.
+
+Each workflow method can examine the results from previous workflows by referencing the
+`data` dict. All of the key/value pairs in the dictionary (besides "nextworkflow")
+represent answers to previous questions.
+
+
+## The Questions
+
+The Workflow Source File is built around a question asking framework that defines
+different sorts of questions that can be asked of the user.
+
+The question types are defined by classes that derive from a base `QuestionBase`
+class. The question types include:
+
+- Text: gather a simple string response from the user
+- Integer: gather a simple int response from the user
+- List: prompt the user to select one item from a list
+- Directory: prompt the user for a directory path
+- File: prompt the user for a file path
+- Checkbox: prompt the user to select as many items from a list as they want
+- Confirm: prompt the user to offer a boolean response
+- BooleanList: prompt a series of boolean resonses
+- Const: set the variable to the default value without even asking the user
+
+!!!note
+
+ The BooleanList question has some very complex logic. The source code should be
+ examined to understand what this does in detail.
+
+All of the implementation of the question classes (including the base class) can be found
+in [the questions module](https://github.com/omnivector-solutions/jobbergate/blob/main/jobbergate-cli/jobbergate_cli/subapps/applications/questions.py)
+of the Jobbergate source code.
+
+
+## Other class attributes
+
+Each Workflow Source File also has access to some attributes set up by the
+`JobbergateApplicationBase`.
+
+The `jobbergate_config` attribute will contain any of the properties that are set in
+the `jobbergate_config` section of the Application Config (`jobbergate.yaml`).
+These values can include anything set up by the user at application creation time.
+
+The `application_config` attribute contains all of the properties that are set in the
+`application_config` section of the Application config (`jobbergate.yaml`). This
+section may be empty. If it is, the `application_config` atrribute will be an empty
+dictionary. This dictionary should only be populated by the template variables that
+the Workflow Source File seeks to collect from the user. The values for each item are the
+default values for that template variable.
diff --git a/jobbergate-docs/docs/source/elements/apps/agent.md b/jobbergate-docs/docs/source/elements/apps/agent.md
new file mode 100644
index 00000000..d8f523f4
--- /dev/null
+++ b/jobbergate-docs/docs/source/elements/apps/agent.md
@@ -0,0 +1,48 @@
+# Jobbergate Agent Overview
+
+The [Jobbergate Agent](https://github.com/omnivector-solutions/jobbergate/jobbergate-agent)
+is a daemon application that is designed to be integrated into the slurm cluster.
+
+It predominantly fulfills two key roles:
+
+* Submitting newly created Job Submissions to the Slurm cluster
+* Monitoring and updating the status of Job Submissions as they undergo processing
+
+## Submitting Jobs
+
+
+The Jobbergate Agent constantly monitors the Job Submissions resource for entries marked with
+a `CREATED` status. These are Job Submissions that the API has instantiated but are yet to be
+dispatched to Slurm.
+
+When submitting a job to Slurm, the Jobbergate Agent pulls the Job Script itself plus any
+supporting files associated with it down to the cluster. Once all the files have been downloaded,
+the Job Script is submitted to Slurm via it's RESTful API. The Job Submission saves the identifier
+for the Slurm Job so that it can be associated with the Job Script that was submitted. The Job
+Submission also tracks all of the supporting files and submission parameters that were submitted
+along with the Job Script.
+
+Upon job submission to Slurm, the Jobbergate Agent retrieves not only the Job Script but also any
+related supporting files, downloading them to the cluster. After ensuring all files are downloaded,
+the Job Script is dispatched to Slurm through its RESTful API. The Job Submission retains the
+unique identifier for the Slurm Job, ensuring it's linked to the submitted Job Script.
+Additionally, the Job Submission logs all the supporting files and submission parameters that were
+provided in tandem with the Job Script at submission time.
+
+
+## Updating Job Status
+
+Once submitted, the Jobbergate Agent updates the status of the Job Submission to `SUBMITTED`.
+If there is an error during the submission process, the Agent sets the Job Submission
+status to `REJECTED`.
+
+Upon completion of the job by the Slurm cluster, the Agent updates the status either to
+`COMPLETE` if successful, or `FAILED` if the job could not complete. This signifies the conclusion
+of tasks related to that particular Job Submission.
+
+
+# Usage
+
+The Jobbergate Agent operates in the background; it's designed to be initiated and left uninterrupted.
+
+For insights into its ongoing operations, the Agent offers detailed logging which can be analyzed.
diff --git a/jobbergate-docs/docs/source/elements/apps/api.md b/jobbergate-docs/docs/source/elements/apps/api.md
new file mode 100644
index 00000000..0ec1e7bd
--- /dev/null
+++ b/jobbergate-docs/docs/source/elements/apps/api.md
@@ -0,0 +1,127 @@
+# Jobbergate API Overview
+
+The [Jobbergate API](https://github.com/omnivector-solutions/jobbergate/jobbergate-api) is a RESTful API that functions
+as the Jobbergate platform's backbone. It offers access to the platform's data for various components, including the
+Jobbergate CLI, agent, and any other interfaces requiring interaction with Jobbergate assets.
+
+The API's endpoints are secured via OpenID Connect, and they require a valid auth token that is created when a user logs
+into the system.
+
+
+# Usage
+
+The Jobbergate API is a standard RESTful API. It can be accessed vi a command-line tool like
+[Curl](https://man7.org/linux/man-pages/man1/curl.1.html) or API testing tool like [Postman](https://www.postman.com/).
+
+
+## Getting an Auth Token
+
+To use the Jobbergate API, you need to obtain an access token first. This token both authenticates your requests and
+provides authorization according to your user's rights.
+
+The authentication for Jobbergate API is managed by an affiliated OIDC service. While it's possible to directly
+interface with this service from your application to get an authentication token, the simplest method is via the
+Jobbergate CLI. Refer to the "Logging In" segment on the [CLI usage](./jobbergate_cli.md#usage) page.
+
+
+## Querying the API
+
+Once you have an auth token, you can interact with any of the Jobbergate API endpoints. The complete set of endpoints,
+parameters, and constraints are available through swagger documentation under `jobbergate/docs` wherever the API is
+deployed.
+
+For all requests made to secured endpoints, you must include the auth token in the `Authorization` header of your
+requests with a "Bearer" prefix.
+
+
+## Query Examples
+
+To demonstrate how to use the API, the following examples will show how to fetch a list of all available Job Scripts.
+
+For these examples:
+
+ - The auth token will be "XXXXXXXX"
+ - The Jobbergate API is deployed at "http://jobbergate.local"
+
+
+### curl
+
+From a linux terminal, you can use the [curl](https://man7.org/linux/man-pages/man1/curl.1.html) command to make a
+request to the API:
+
+```shell
+curl --header "Authorization: Bearer XXXXXXXX" http://jobbergate.local/jobbergate/job-scripts
+```
+
+The output of the above command should look something like:
+```
+{"results":[{"id":1,"created_at":"2022-09-09T21:34:16.889289","updated_at":"2022-09-09T21:34:16.889289","job_script_name":"test script","job_script_description":null,"job_script_owner_email":"local-user@jobbergate.local","application_id":1}],"pagination":{"total":1,"start":null,"limit":null}}
+```
+
+To see the result more clearly, you can use a tool like `jq` to format the JSON response:
+
+```json
+{
+ "results": [
+ {
+ "id": 1,
+ "created_at": "2022-09-09T21:34:16.889289",
+ "updated_at": "2022-09-09T21:34:16.889289",
+ "job_script_name": "test script",
+ "job_script_description": null,
+ "job_script_owner_email": "local-user@jobbergate.local",
+ "application_id": 1
+ }
+ ],
+ "pagination": {
+ "total": 1,
+ "start": null,
+ "limit": null
+ }
+}
+```
+
+
+### Python and httpx
+
+In python, you can use the [httpx](https://www.python-httpx.org/) package to send requests to and process responses from
+the API:
+
+```python
+import json
+import httpx
+
+
+token = "XXXXXXXX"
+
+resp = httpx.get(
+ "http://localhost:8000/jobbergate/job-scripts",
+ headers=dict(Authorization=f"Bearer {token}"),
+)
+
+print(json.dumps(resp.json(), indent=2))
+```
+
+
+The script will print out results like this:
+
+```json
+{
+ "results": [
+ {
+ "id": 1,
+ "created_at": "2022-09-09T21:34:16.889289",
+ "updated_at": "2022-09-09T21:34:16.889289",
+ "job_script_name": "foo",
+ "job_script_description": null,
+ "job_script_owner_email": "local-user@jobbergate.local",
+ "application_id": 1
+ }
+ ],
+ "pagination": {
+ "total": 1,
+ "start": null,
+ "limit": null
+ }
+}
+```
diff --git a/jobbergate-docs/docs/source/elements/apps/cli.md b/jobbergate-docs/docs/source/elements/apps/cli.md
new file mode 100644
index 00000000..7df4e7f4
--- /dev/null
+++ b/jobbergate-docs/docs/source/elements/apps/cli.md
@@ -0,0 +1,139 @@
+# Jobbergate CLI Overview
+
+The [Jobbergate CLI](https://github.com/omnivector-solutions/jobbergate/jobbergate-cli) offers an interactive
+gateway to the functionalities of the Jobbergate API's. Users can utilize the CLI to manage resources and execute
+various tasks.
+
+The CLI operates under two primary modes:
+
+ - **Resource Creation**: The CLI introduces `create` subcommands for every resource, allowing users to establish new
+ instances.
+ - **Resource Viewing**: With `list` and `get-one` subcommands available for each resource, users can inspect different
+ detail levels about the resource entities stored in the database.
+
+To ensure secure access, the Jobbergate CLI offers a sign-in mechanism to the Jobbergate API. Once authenticated,
+users may use all the resources in Jobbergate that their account has been granted access to.
+
+
+## Discovering Command details
+
+You can start learning about the commands and usage of the Jobbergate CLI by starting with this command:
+
+```shell
+
+$ jobbergate --help
+Usage: jobbergate [OPTIONS] COMMAND [ARGS]...
+
+ Welcome to the Jobbergate CLI!
+
+ More information can be shown for each command listed below by running it
+ with the --help option.
+
+Options:
+ --verbose / --no-verbose Enable verbose logging to the terminal
+ [default: no-verbose]
+ --full / --no-full Print all fields from CRUD commands
+ [default: no-full]
+ --raw / --no-raw Print output from CRUD commands as raw json
+ [default: no-raw]
+ --version / --no-version Print the version of jobbergate-cli and exit
+ [default: no-version]
+ --install-completion [bash|zsh|fish|powershell|pwsh]
+ Install completion for the specified shell.
+ --show-completion [bash|zsh|fish|powershell|pwsh]
+ Show completion for the specified shell, to
+ copy it or customize the installation.
+ --help Show this message and exit.
+
+Commands:
+ applications Commands to interact with applications
+ job-scripts Commands to interact with job scripts
+ job-submissions Commands to interact with job submissions
+ login Log in to the jobbergate-cli by storing the supplied...
+ logout Logs out of the jobbergate-cli.
+ show-token Show the token for the logged in user.
+```
+
+If you want to delve deeper and understand the usage of a specific subcommand, you can use the `--help` flag with that
+particular subcommand. For example, to better understand the usage of the `job-scripts create` subcommand, you would
+run:
+
+```shell
+$ jobbergate job-scripts create --help
+```
+
+
+
+## Logging In
+
+The first thing you need to do with the Jobbergate CLI is to log in:
+
+```shell
+jobbergate login
+```
+Upon executing the command, a message will appear like:
+
+```
+╭───────────────────────────────────────────── Waiting for login ──────────────────────────────────────────────────────╮
+│ │
+│ To complete login, please open the following link in a browser: │
+│ │
+│ http://keycloak.local:8080/realms/jobbergate-local/device?user_code=BMVJ-NLZS │
+│ │
+│ Waiting up to 5.0 minutes for you to complete the process... │
+│ │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
+
+Waiting for web login... ━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3% 0:04:50
+```
+
+Next, you will need to:
+
+ 1. Open the provided link by either clicking on it (if your terminal supports it) or copy/paste it into a browser.
+ 2. Enter your login credentials
+ 3. Complete the sign in process
+ 4. Return to your terminal
+
+You should see a message like:
+
+```
+╭──────────────────────────────────────────────── Logged in! ──────────────────────────────────────────────────────────╮
+│ │
+│ User was logged in with email 'local-user@jobbergate.local' │
+│ │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
+```
+
+
+## Checking the Auth Token
+
+To get access to the auth token you acquired by logging in, run this command:
+
+```shell
+jobbergate show-token --plain
+```
+Executing this command will display the authentication token in a plain text format, without any additional characters
+or formatting. This makes it easier for you to manually select and copy the token, especially in environments where
+clipboard access might be restricted, such as when using docker-compose or an SSH connection.
+
+Once the token is displayed, you can copy the token to your clipboard to use with API requests.
+
+It's essential to treat this token with care, as it provides access to the Jobbergate system under your user account.
+Ensure you don't share it with unauthorized individuals and avoid unintentionally exposing it in logs or scripts.
+
+
+
+## Resource Commands
+
+Now that you are logged in, you can interact with any of the three main Jobbergate resources. Most of the resources
+provide the following sub-commands:
+
+* **create**: Create a new instance of the resource
+* **delete**: Delete an instance of the resource
+* **get-one**: Fetch details about a single instance of the resource
+* **list**: Fetch a listing of all the resources limited by filters
+* **update**: Update an instance of the resource.
+
+Details for each subcommand can be viewed by passing the `--help` flag to any of them.
+
+Use the `--help` option to explore the CLI and disccover the usage and options for all the subcommands.
diff --git a/jobbergate-docs/docs/source/elements/apps/core.md b/jobbergate-docs/docs/source/elements/apps/core.md
new file mode 100644
index 00000000..40bfe26c
--- /dev/null
+++ b/jobbergate-docs/docs/source/elements/apps/core.md
@@ -0,0 +1,8 @@
+# Jobbergate Core Overview
+
+Jobbergate-core is an SDK designed to offer seamless access to Jobbergate's features within any Python project. It is
+ideal for constructing automation atop the Jobbergate platform or tailoring workflows that hinge on Jobbergate
+components.
+
+
+_**Coming Soon**: More in-depth documentation of Jobbergate Core_
diff --git a/jobbergate-docs/docs/source/elements/apps/index.md b/jobbergate-docs/docs/source/elements/apps/index.md
new file mode 100644
index 00000000..7a614ba1
--- /dev/null
+++ b/jobbergate-docs/docs/source/elements/apps/index.md
@@ -0,0 +1,18 @@
+# Jobbergate Apps
+
+Jobbergate consists of three interconnected Python applications that operate harmoniously. These applications enable the
+creation and dispatch of Job Scripts to a Slurm cluster, eliminating the need for the Jobbergate user to engage directly
+with Slurm – a process that might be challenging or unfeasible.
+
+While the primary interface for user interaction with Jobbergate is the [CLI](./cli.md), both the [API](./api.md) and
+[Core package](./core.md) can be employed to develop automation and craft tools leveraging Jobbergate's capabilities.
+
+The three apps in Jobbergate are:
+
+- [Jobbergate API](./api.md)
+- [Jobbergate CLI](./cli.md)
+- [Jobbergate Agent](./agent.md)
+
+And the SDK that provides python integration is:
+
+- [Jobbergate Core](./core.md)
diff --git a/jobbergate-docs/docs/source/elements/resources/index.md b/jobbergate-docs/docs/source/elements/resources/index.md
new file mode 100644
index 00000000..3287487d
--- /dev/null
+++ b/jobbergate-docs/docs/source/elements/resources/index.md
@@ -0,0 +1,11 @@
+# Jobbergate Resources
+
+Jobbergate utilizes three primary resources for the efficient management of job script creation, templating, and
+submission. These resources are maintained in distinct database tables and can be accessed via individual API endpoints
+or through specific subcommands in the CLI.
+
+The principal resources of Jobbergate include:
+
+- [Job Scripts](./job_script_templates.md)
+- [Job Script Templates](./job_script_templates.md)
+- [Job Submissions](./job_script_templates.md)
diff --git a/jobbergate-docs/docs/source/elements/resources/job_script_templates.md b/jobbergate-docs/docs/source/elements/resources/job_script_templates.md
new file mode 100644
index 00000000..89221bf7
--- /dev/null
+++ b/jobbergate-docs/docs/source/elements/resources/job_script_templates.md
@@ -0,0 +1,10 @@
+# Job Script Templates
+
+Job Script Templates serve as adaptable blueprints for Job Scripts, allowing for the dynamic replacement of crucial
+values upon rendering. The end result of this process is a Job Script primed for cluster submission.
+
+The specific values incorporated into the template to generate a Job Script are termed "template variables." Users can
+define constrains and default settings for these values within the Job Script Template's workflow script.
+
+Additionally, Job Script Templates provide a framework that allows for the interactive collection of values from users
+via the [Jobbergate CLI](../apps/cli.md).
diff --git a/jobbergate-docs/docs/source/elements/resources/job_scripts.md b/jobbergate-docs/docs/source/elements/resources/job_scripts.md
new file mode 100644
index 00000000..25d58b7c
--- /dev/null
+++ b/jobbergate-docs/docs/source/elements/resources/job_scripts.md
@@ -0,0 +1,12 @@
+# Job Scripts
+
+In Jobbergate, the primary resource is the Job Script. These scripts dictate the instructions for jobs intended to
+execute on the Slurm cluster. They can either be Python files or shell scripts. Jobbergate facilitates the generation,
+modification, and submission of these Job Scripts to the cluster.
+
+Job Scripts can either be uploaded directly from a user's workstation or be derived by rendering the
+[Job Script Templates](./job_script_templates.md).
+
+Submission of Job Scripts to any affiliated Slurm cluster can be accomplished through the CLI, API, or Core
+integrations. After submission, the execution status of a Job Script can be monitored using the
+[Job Submission](./job_submissions.md) resource.
diff --git a/jobbergate-docs/docs/source/elements/resources/job_submissions.md b/jobbergate-docs/docs/source/elements/resources/job_submissions.md
new file mode 100644
index 00000000..dee96e6b
--- /dev/null
+++ b/jobbergate-docs/docs/source/elements/resources/job_submissions.md
@@ -0,0 +1,6 @@
+Job Submissions
+---------------
+
+Job Submissions primarily monitor the status and metadata of a [Job Script](./job_scripts.md) dispatched by Jobbergate
+to a Slurm cluster. They possess identifying details linking them to the Job Script that was submitted and to the
+corresponding Job objects created by Slurm.
diff --git a/jobbergate-docs/docs/source/index.md b/jobbergate-docs/docs/source/index.md
new file mode 100644
index 00000000..2386ebd2
--- /dev/null
+++ b/jobbergate-docs/docs/source/index.md
@@ -0,0 +1,22 @@
+!!! example "An [Omnivector](https://www.omnivector.io/){:target="\_blank"} initiative"
+
+ [![omnivector-logo](https://omnivector-public-assets.s3.us-west-2.amazonaws.com/branding/omnivector-logo-text-black-horz.png)](https://www.omnivector.io/){:target="_blank"}
+
+# Jobbergate Documentation
+
+The following documentation provides a comprehensive overview of the Jobbergate system, detailing its purpose,
+installation process, and operational guidelines.
+
+Jobbergate serves as an advanced job templating and submission system, designed to seamlessly integrate with Slurm. This
+integration facilitates the efficient re-use and remote submission of job scripts to a Slurm cluster.
+
+At the heart of Jobbergate is its API, which acts as the pivotal control center for the entire system. This API
+interacts with an agent positioned alongside a Slurm cluster. This agent is responsible for establishing communication
+between both the Jobbergate API and the Slurm RESTful API. Furthermore, Jobbergate offers a Command Line Interface (CLI)
+to ensure users have an intuitive means of interacting with the system.
+
+Given that the API is cloud-based, users are granted the capability to modify jobs, dispatch them to affiliated clusters,
+and oversee their progress from any device with internet connectivity.
+
+Additionally, Jobbergate introduces a Python SDK named "Jobbergate Core". This SDK is equipped with tools tailored for
+automation and can be effortlessly integrated into any Python-based project.
diff --git a/jobbergate-docs/docs/source/reference/agent.md b/jobbergate-docs/docs/source/reference/agent.md
new file mode 100644
index 00000000..daf59603
--- /dev/null
+++ b/jobbergate-docs/docs/source/reference/agent.md
@@ -0,0 +1,3 @@
+# Jobbergate Agent Reference
+
+::: jobbergate_agent
diff --git a/jobbergate-docs/docs/source/reference/api.md b/jobbergate-docs/docs/source/reference/api.md
new file mode 100644
index 00000000..68c6feb4
--- /dev/null
+++ b/jobbergate-docs/docs/source/reference/api.md
@@ -0,0 +1,3 @@
+# Jobbergate API Reference
+
+::: jobbergate_api
diff --git a/jobbergate-docs/docs/source/reference/cli.md b/jobbergate-docs/docs/source/reference/cli.md
new file mode 100644
index 00000000..01a97931
--- /dev/null
+++ b/jobbergate-docs/docs/source/reference/cli.md
@@ -0,0 +1,3 @@
+# Jobbergate CLI Reference
+
+::: jobbergate_cli
diff --git a/jobbergate-docs/docs/source/reference/core.md b/jobbergate-docs/docs/source/reference/core.md
new file mode 100644
index 00000000..2472130d
--- /dev/null
+++ b/jobbergate-docs/docs/source/reference/core.md
@@ -0,0 +1,3 @@
+# Jobbergate Core Reference
+
+::: jobbergate_core
diff --git a/jobbergate-docs/docs/source/tutorial.md b/jobbergate-docs/docs/source/tutorial.md
new file mode 100644
index 00000000..5668adff
--- /dev/null
+++ b/jobbergate-docs/docs/source/tutorial.md
@@ -0,0 +1,525 @@
+# Tutorial
+
+Welcome to this step-by-step tutorial that introduces the basic functionalities of Jobbergate!
+to seamlessly upload a Job Script and submit it to a Slurm cluster using the Jobbergate CLI.
+
+In this walk-through, you will learn how to upload a Job Script and submit it to a Slurm cluster using the
+Jobbergate CLI. To accomplish this, we will guide you through the following steps:
+
+ - Initiating a session by logging into the Jobbergate system
+ - Uploading a basic Job Script to Jobbergate
+ - Submitting the Job Script to the cluster
+ - Reviewing the results and monitoring the status of your submitted job
+ - Cleaning up by deleting the Job Script
+ - Logging out of the Jobbergate system
+
+
+## Getting Started
+
+Before diving into the tutorial, there are some initial setup steps that are needed to ensure that your computer is
+prepared to run the tutorial locally. Make sure you have administrative access to your machine, as it's required for
+the setup process.
+
+
+### Install docker-compose
+
+For this tutorial, we will be using an instance of Jobbergate that is deployed locally along-side a local Slurm cluster.
+We will set all this up using docker-compose. If you do not have it already, follow
+[this guide](https://docs.docker.com/compose/install/) to install docker-compose before you continue the tutorial.
+
+
+### Update the hostfile
+
+Next, you’ll need to add the following line to your computer’s hostfile:
+
+```
+127.0.0.1 keycloak.local
+```
+
+#### For Linux and OSX users:
+
+ - The hostfile is located at `/etc/hosts`.
+ - Open a terminal.
+ - Use this command to open the file in a text editor
+ ```shell
+ sudo nano /etc/hosts
+ ```
+ (you may, of course, substitute your editor of choice here)
+ - Add the above line at the end of the file.
+ - Save and close the file.
+
+
+#### For Windows users:
+
+ - The hostfile can be found at c:\windows\system32\drivers\etc\hosts.
+ - Open Notepad as an administrator.
+ - Open the hostfile in Notepad.
+ - Append the above line to the file.
+ - Save and exit.
+
+
+
+### Clone Jobbergate with git
+
+To run the Jobbergate and Slurm locally, you will first need a copy of the Jobbergate source code. The easiest way to
+get it is to use Git to download the source code repository from GitHub onto your machine.
+
+Git is a version control system that lets you manage and keep track ofyour source code history. If you haven't installed
+it yet, download and install Git using the instructions available [here](https://git-scm.com/).
+
+With Git installed, you can now clone the Jobbergate source code from its GitHub repository. Cloning allows you to have
+a local copy (or clone) of the source code on your machine.
+
+Run the following command in your terminal:
+
+```shell
+$ git clone git@github.com:omnivector-solutions/jobbergate.git
+```
+
+Now you have a full copy of the Jobbergate source code including the Docker Compose configuration to stand up a local
+Slurm Cluster and the example Job Script we will be using for this tutorial.
+
+Next, switch to the directory in the source code that contains the Docker Compose configuration:
+
+```shell
+$ cd jobbergate/jobbergate-composed
+```
+
+
+### Start the Jobbergate Services
+
+With the Jobbergate source code in place, it's time to initiate the Jobbergate Services and the local Slurm cluster
+using Docker Compose. Follow the steps outlined below to get things up and running.
+
+#### Start up the services
+Run the following command to build and start the services. The `--build` flag ensures that Docker Compose build the
+images before attempting to start the services. The `--detach` flag runs the services in the background so that you
+can run other commands in the terminal.
+
+```shell
+$ docker-compose up --build --detach
+```
+
+This operation might take a few minutes as it involves building the images and starting up all the associated services.
+
+
+#### Verify the status of the services
+
+To confirm that all the services are running smoothly, execute the following command. It will list the status of all the
+services initiated by Docker Compose:
+
+```shell
+docker-compose ps
+```
+
+If the services are up and running as expected, you should see output similar to the following, indicating that all the
+services are in a healthy state
+
+```
+NAME COMMAND SERVICE STATUS PORTS
+c1 "/usr/local/bin/slur…" c1 running 6818/tcp
+c2 "/usr/local/bin/slur…" c2 running 6818/tcp
+jobbergate-composed-cluster-agent-1 "/agent/entrypoint.sh" cluster-agent running
+jobbergate-composed-db-1 "docker-entrypoint.s…" db running 0.0.0.0:5432->5432/tcp
+jobbergate-composed-jobbergate-api-1 "/bin/sh -c /app/dev…" jobbergate-api running (healthy) 0.0.0.0:8000->80/tcp
+jobbergate-composed-jobbergate-cli-1 "python3" jobbergate-cli exited (0)
+jobbergate-composed-keycloak.local-1 "/opt/keycloak/bin/k…" keycloak.local running 0.0.0.0:8080->8080/tcp, 8443/tcp
+jobbergate-composed-minio-1 "/usr/bin/docker-ent…" minio running 0.0.0.0:9000-9001->9000-9001/tcp
+jobbergate-composed-minio-create-bucket-1 "/create-bucket.sh" minio-create-bucket exited (1)
+mysql "docker-entrypoint.s…" mysql running 3306/tcp, 33060/tcp
+slurmctld "/usr/local/bin/slur…" slurmctld running 6817/tcp
+slurmdbd "/usr/local/bin/slur…" slurmdbd running 6819/tcp
+slurmrestd "/usr/local/bin/slur…" slurmrestd running 0.0.0.0:6820->6820/tcp
+```
+
+The `STATUS` for each service should be "running" except for the `minio-create-bucket` and `jobbergate-cli`
+services which should be "exited".
+
+
+#### Confirm Jobbergate CLI availability
+
+Since this tutorial relies on running commands in the Jobbergate CLI, it's essential to verify that the CLI is available
+and working as expected at this juncture.
+
+
+First, initiate a connection to the `jobbergate-cli` container by executing the following command. This gives you
+direct access to the CLI.
+
+```shell
+$ docker-compose run jobbergate-cli bash
+```
+
+Upon successful connection, your command prompt should change to reflect that you're inside the container. It will look
+something like this:
+
+```shell
+root@e226a9a401d1:/app#
+```
+
+This confirms that you're now operating within the `jobbergate-cli` container environment.
+
+Next, we need to make sure that the Jobbergate CLI is available and accepting commands. Test this by listing the
+available commands in Jobbergate CLI with the `--help` option:
+
+```shell
+jobbergate --help
+```
+
+The command above will yield a detailed description of the CLI's usage and the variety of sub-commands it provides:
+
+```
+ Usage: jobbergate [OPTIONS] COMMAND [ARGS]...
+
+ Welcome to the Jobbergate CLI!
+ More information can be shown for each command listed below by running it with the --help option.
+
+╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ --verbose --no-verbose Enable verbose logging to the terminal │
+│ [default: no-verbose] │
+│ --full --no-full Print all fields from CRUD commands │
+│ [default: no-full] │
+│ --raw --no-raw Print output from CRUD commands as raw json │
+│ [default: no-raw] │
+│ --version --no-version Print the version of jobbergate-cli and │
+│ exit │
+│ [default: no-version] │
+│ --install-completion [bash|zsh|fish|powershell|pwsh] Install completion for the specified shell. │
+│ [default: None] │
+│ --show-completion [bash|zsh|fish|powershell|pwsh] Show completion for the specified shell, to │
+│ copy it or customize the installation. │
+│ [default: None] │
+│ --help Show this message and exit. │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
+╭─ Commands ───────────────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ applications Commands to interact with applications │
+│ job-scripts Commands to interact with job scripts │
+│ job-submissions Commands to interact with job submissions │
+│ login Log in to the jobbergate-cli by storing the supplied token argument in the cache. │
+│ logout Logs out of the jobbergate-cli. Clears the saved user credentials. │
+│ show-token Show the token for the logged in user. │
+╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
+```
+
+
+## Log in to Jobbergate
+
+To begin working with Jobbergate data, you must first sign into the system. For the purpose of this tutorial, there's
+just one user available. We'll soley focus on this user in this guide, but should you wish to add more users, you can
+do so by accessing the Keycloak server (details provided in the [Appendix](#appendix)).
+
+To log in using the Jobbergate CLI, execute the following command:
+
+```shell
+$ jobbergate login
+```
+
+The CLI will provide a URL for you to log into your account:
+
+```
+╭─────────────────────────────────────────────── Waiting for login ─────────────────────────────────────────────────╮
+│ │
+│ To complete login, please open the following link in a browser: │
+│ │
+│ http://keycloak.local:8080/realms/jobbergate-local/device?user_code=CZAU-TZAH │
+│ │
+│ Waiting up to 5.0 minutes for you to complete the process... │
+│ │
+╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
+
+Waiting for web login... ━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3% 0:04:50
+```
+
+Open the URL shown in a browser and log in as "local-user":
+
+ - **username**: "local-user"
+ - **password**: "local"
+
+When prompted, grant all the requested access privileges to the CLI. Once you have finished, the CLI will show that you
+have successfully logged in:
+
+```shell
+╭────────────────────────────────────────────────── Logged in! ─────────────────────────────────────────────────────╮
+│ │
+│ User was logged in with email 'local-user@jobbergate.local' │
+│ │
+╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
+```
+
+You are now logged in through the CLI! Your auth token will be cached automatically for you, so you should not need to
+log in again for some time. However, be aware that your session does expire; you will have to log in again to get a new
+token. If this happens, the CLI will alert you that your token is invalid. When you receive this notification, you will
+need to log in anew.
+
+
+## Upload a Job Script to Jobbergate
+
+Job Scripts are integral to Jobbergate, serving as the foundation for running simulations on our cluster. To initiate a
+simulation, your first task is to upload the Job Script to the Jobbergate API.
+
+Within each Job Script, an entrypoint file is designated. This is the specific script that Slurm executes to commence
+the simulation on the cluster.
+
+
+### Get the example script
+
+To keep this tutorial focused on using Jobbergate and not any of the complexities of simulations or operating a cluster,
+we will use a
+[very basic example](https://github.com/omnivector-solutions/jobbergate/tree/main/examples/simple-job-script.py)
+job script. We will need a copy of this script where the `jobbergate-cli` can access it. Since it's a small script, we
+can just copy/paste it into the container where we are accessing the `jobbergate-cli`.
+
+In the terminal where you were typing jobbergate commands, enter this command:
+
+```shell
+cat > simple-job-script.py
+```
+
+Paste the contents of the job script and then press `ctrl-d` on your keyboard. This will create a saved copy of the
+job script that's ready to submit with the `jobbergate-cli`. To ensure that the command sequence captured the intended
+script contents, execute the following command to review the job script:
+
+```shell
+cat simple-job-script.python3
+```
+
+The script should appear exactly as you see it on the link above.
+
+
+
+### Create the Job Script from the example
+
+Now it's time to create a Job Script entry within the Jobbergate system. We'll use the `create` subcommand associated
+with the `job-scripts` command. To view all the options that come with this sub-command, you can use the `--help`
+option:
+
+```shell
+jobbergate job-scripts create --help
+```
+
+Now, let's create the Job Script. In your terminal, type:
+
+```shell
+jobbergate job-scripts create --name=tutorial --job-script-path=simple-job-script.py
+```
+
+You should see output like this indicating that the Job Script was successfully created:
+
+```
+ Created Job Script
+┏━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃ Key ┃ Value ┃
+┡━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ id │ 1 │
+│ application_id │ None │
+│ name │ tutorial │
+│ description │ │
+│ owner_email │ local-user@jobbergate.local-mail │
+└────────────────┴──────────────────────────────────┘
+```
+
+Great, your Job Script is now prepared and ready for submission to the cluster!
+
+!!! Note
+
+ Keep track of the `id` value produced by your command. The tutorial text assumes that it is "1", but it may be
+ different if you have done the tutorial before or had to restart!
+
+To confirm that the Job Script has been uploaded correctly, you can review the file content using the
+`show-files` subcommand:
+
+```shell
+$ jobbergate job-scripts show-files --id=1
+```
+
+The file should appear exactly as it does on the link above.
+
+
+## Submit a Job Script to the cluster
+
+With the Job Script ready, the next step is to submit it to the Slurm cluster. In this tutorial, a cluster named
+`local-slurm` is already attached and available for use. We will specify this cluster name when submitting the Job
+Script to ensure it is executed on the appropriate cluster.
+
+
+### Create the Job Submission
+
+We will use the `create` subcommand of the `job-submissions` command to submit the job to the cluster. To see all the
+options available for this command, we can use the `--help` option again:
+
+```shell
+jobbergate job-submissions create --help
+```
+
+For the tutorial, we need to issue the following command:
+
+```shell
+jobbergate job-submissions create --name=tutorial --job-script-id=1 --cluster-name=local-slurm
+```
+
+The command should produce output that looks like this:
+```
+ Created Job Submission
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃ Key ┃ Value ┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ id │ 1 │
+│ job_script_id │ 1 │
+│ client_id │ local-slurm │
+│ slurm_job_id │ None │
+│ execution_directory │ None │
+│ job_submission_name │ tutorial │
+│ job_submission_description │ None │
+│ job_submission_owner_email │ local-user@jobbergate.local │
+│ status │ CREATED │
+└────────────────────────────┴─────────────────────────────┘
+```
+
+The Job Submission was successfully created! However, it has not submitted to the cluster yet. This will happen when the
+Jobbergate Agent that is running remotely in the cluster pulls all "CREATED" Job Submissions down from the API and
+submits them to Slurm one by one.
+
+!!! Note
+
+ Again, be careful to use the correct `id` produced by this command for the remainder of the tutorial!
+
+
+### Check the status of the submitted job
+
+We can look up the status of a Job Submission using the following command:
+
+```shell
+jobbergate job-submissions get-one --id=1
+```
+
+This command should produce output that looks like:
+
+```
+ Job Submission
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃ Key ┃ Value ┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ id │ 1 │
+│ job_script_id │ 1 │
+│ client_id │ local-slurm │
+│ slurm_job_id │ 1 │
+│ execution_directory │ None │
+│ job_submission_name │ tutorial │
+│ job_submission_description │ None │
+│ job_submission_owner_email │ local-user@jobbergate.local │
+│ status │ SUBMITTED │
+└────────────────────────────┴─────────────────────────────┘
+```
+
+If the `status` reported by your command is `CREATED`, don't worry! The Jobbergate Agent just hasn't retrieved and
+submitted the job script yet. Wait a few more seconds and dry again. You should now see the status change to
+`SUBMITTED`.
+
+When the Job Submission status shifts to "SUBMITTED", it indicats that the Jobbergate Agent has retrieved the Job Script
+and submitted it to the `local-slurm` cluster. This status will persist until the completion of the Job Script's
+execution. The Jobbergate Agent continuaously monitors the job's progress within slurm, and , upon its completion, will
+update the Job Submission status to "COMPLETE".
+
+
+### Check the results of the job
+
+In this tutorial, we have locally mounted a "fake" NFS folder to contain the output from the job running in slurm. When
+the job finishes running, it will produce an output file in this folder. First we need to verify that the file was
+produced by listing the contents of the `nfs` directory:
+
+```shell
+ls /nfs
+```
+
+If the job completed, you should see a file in the `/nfs` directory named `simple-output.txt`. Check the contents of the
+file with a simple `cat` command:
+
+```
+cat /nfs/simple-output.txt
+```
+
+It should look look like:
+
+```
+Simple output from c1
+```
+
+It's possible that the output says it came from c2 if slurm ran the job on the `c2` compute node instead of `c1`.
+
+
+## Delete the resources
+
+Sometimes it is useful to remove resources that have been created in Jobbergate.
+
+When deleting the resources, you must delete in reverse order of creation:
+
+```
+Job Submission -> Job Script
+```
+
+Start by deleting the Job Submission:
+
+```shell
+$ jobbergate job-submissions delete --id=1
+
+╭──────────────────────────────────────── Job submission delete succeeded ──────────────────────────────────────────╮
+│ │
+│ The job submission was successfully deleted. │
+│ │
+╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
+```
+
+
+Then delete the Job Script:
+
+```shell
+
+$ jobbergate job-scripts delete --id=1
+
+╭──────────────────────────────────────── Job script delete succeeded ──────────────────────────────────────────────╮
+│ │
+│ The job script was successfully deleted. │
+│ │
+╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
+```
+
+If you attempt to delete a resource before any that were created _from_ it, you will see an error like this:
+
+```shell
+$ jobbergate job-scripts delete --id=1
+
+╭─────────────────────────────────────────────── REQUEST FAILED ────────────────────────────────────────────────────╮
+│ Request to delete job-script was not accepted by the API: │
+│ There are job_submissions that reference id 1. │
+╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
+````
+
+
+## Log out of the Jobbergate system
+
+You have completed the tutorial. Try logging out of Jobbergate now:
+
+```shell
+$ jobbergate logout
+
+╭──────────────────────────────────────────────── Logged out ───────────────────────────────────────────────────────╮
+│ │
+│ User was logged out. │
+│ │
+╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
+```
+
+This will clear any cached tokens, and any subsequent Jobbergate commands will require you to log in again
+
+
+## Appendix
+
+### Keycloak UI
+
+You can connect to the Keycloak UI to create additional realms, clients, and users. However, the use of Keycloak is a
+rather large topic that goes outside the scope of this Tutorial.
+
+To get started, you can connect to the Keycloak UI through a browser if the server is running as a part of the
+docker-compose cluster using [this local URL](http:localhost:8080). To log in as administrator use these credentials:
+
+ - **username**: admin
+ - **password**: admin
diff --git a/jobbergate-docs/poetry.lock b/jobbergate-docs/poetry.lock
index 7655c9e6..6952ff8b 100644
--- a/jobbergate-docs/poetry.lock
+++ b/jobbergate-docs/poetry.lock
@@ -1,25 +1,225 @@
-# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand.
[[package]]
-name = "alabaster"
-version = "0.7.13"
-description = "A configurable sidebar-enabled Sphinx theme"
+name = "aioboto3"
+version = "11.3.1"
+description = "Async boto3 wrapper"
+category = "main"
+optional = false
+python-versions = ">=3.7,<4.0"
+files = [
+ {file = "aioboto3-11.3.1-py3-none-any.whl", hash = "sha256:7ece9919d4aceabc4ea05f7c210008baf96c763e36cb3b4334742ff226a3a83e"},
+ {file = "aioboto3-11.3.1.tar.gz", hash = "sha256:1b3dd626c98599ee34ff29581c2da119bc408e562be7a61c627ae53fa106eb68"},
+]
+
+[package.dependencies]
+aiobotocore = {version = "2.6.0", extras = ["boto3"]}
+
+[package.extras]
+chalice = ["chalice (>=1.24.0)"]
+s3cse = ["cryptography (>=2.3.1)"]
+
+[[package]]
+name = "aiobotocore"
+version = "2.6.0"
+description = "Async client for aws services using botocore and aiohttp"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "aiobotocore-2.6.0-py3-none-any.whl", hash = "sha256:0186e6a843364748cdbbf76ee98e9337c44f71a4e694ad1b110d5c516fbce909"},
+ {file = "aiobotocore-2.6.0.tar.gz", hash = "sha256:4805d0140bdfa17bfc2d0ba1243c8cc4273e927201fca5cf2e497c0004a9fab7"},
+]
+
+[package.dependencies]
+aiohttp = ">=3.7.4.post0,<4.0.0"
+aioitertools = ">=0.5.1,<1.0.0"
+boto3 = {version = ">=1.28.17,<1.28.18", optional = true, markers = "extra == \"boto3\""}
+botocore = ">=1.31.17,<1.31.18"
+wrapt = ">=1.10.10,<2.0.0"
+
+[package.extras]
+awscli = ["awscli (>=1.29.17,<1.29.18)"]
+boto3 = ["boto3 (>=1.28.17,<1.28.18)"]
+
+[[package]]
+name = "aiohttp"
+version = "3.8.6"
+description = "Async http client/server framework (asyncio)"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "aiohttp-3.8.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:41d55fc043954cddbbd82503d9cc3f4814a40bcef30b3569bc7b5e34130718c1"},
+ {file = "aiohttp-3.8.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1d84166673694841d8953f0a8d0c90e1087739d24632fe86b1a08819168b4566"},
+ {file = "aiohttp-3.8.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:253bf92b744b3170eb4c4ca2fa58f9c4b87aeb1df42f71d4e78815e6e8b73c9e"},
+ {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3fd194939b1f764d6bb05490987bfe104287bbf51b8d862261ccf66f48fb4096"},
+ {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c5f938d199a6fdbdc10bbb9447496561c3a9a565b43be564648d81e1102ac22"},
+ {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2817b2f66ca82ee699acd90e05c95e79bbf1dc986abb62b61ec8aaf851e81c93"},
+ {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fa375b3d34e71ccccf172cab401cd94a72de7a8cc01847a7b3386204093bb47"},
+ {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9de50a199b7710fa2904be5a4a9b51af587ab24c8e540a7243ab737b45844543"},
+ {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e1d8cb0b56b3587c5c01de3bf2f600f186da7e7b5f7353d1bf26a8ddca57f965"},
+ {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8e31e9db1bee8b4f407b77fd2507337a0a80665ad7b6c749d08df595d88f1cf5"},
+ {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7bc88fc494b1f0311d67f29fee6fd636606f4697e8cc793a2d912ac5b19aa38d"},
+ {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ec00c3305788e04bf6d29d42e504560e159ccaf0be30c09203b468a6c1ccd3b2"},
+ {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ad1407db8f2f49329729564f71685557157bfa42b48f4b93e53721a16eb813ed"},
+ {file = "aiohttp-3.8.6-cp310-cp310-win32.whl", hash = "sha256:ccc360e87341ad47c777f5723f68adbb52b37ab450c8bc3ca9ca1f3e849e5fe2"},
+ {file = "aiohttp-3.8.6-cp310-cp310-win_amd64.whl", hash = "sha256:93c15c8e48e5e7b89d5cb4613479d144fda8344e2d886cf694fd36db4cc86865"},
+ {file = "aiohttp-3.8.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e2f9cc8e5328f829f6e1fb74a0a3a939b14e67e80832975e01929e320386b34"},
+ {file = "aiohttp-3.8.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e6a00ffcc173e765e200ceefb06399ba09c06db97f401f920513a10c803604ca"},
+ {file = "aiohttp-3.8.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:41bdc2ba359032e36c0e9de5a3bd00d6fb7ea558a6ce6b70acedf0da86458321"},
+ {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14cd52ccf40006c7a6cd34a0f8663734e5363fd981807173faf3a017e202fec9"},
+ {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2d5b785c792802e7b275c420d84f3397668e9d49ab1cb52bd916b3b3ffcf09ad"},
+ {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1bed815f3dc3d915c5c1e556c397c8667826fbc1b935d95b0ad680787896a358"},
+ {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96603a562b546632441926cd1293cfcb5b69f0b4159e6077f7c7dbdfb686af4d"},
+ {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d76e8b13161a202d14c9584590c4df4d068c9567c99506497bdd67eaedf36403"},
+ {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e3f1e3f1a1751bb62b4a1b7f4e435afcdade6c17a4fd9b9d43607cebd242924a"},
+ {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:76b36b3124f0223903609944a3c8bf28a599b2cc0ce0be60b45211c8e9be97f8"},
+ {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:a2ece4af1f3c967a4390c284797ab595a9f1bc1130ef8b01828915a05a6ae684"},
+ {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:16d330b3b9db87c3883e565340d292638a878236418b23cc8b9b11a054aaa887"},
+ {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:42c89579f82e49db436b69c938ab3e1559e5a4409eb8639eb4143989bc390f2f"},
+ {file = "aiohttp-3.8.6-cp311-cp311-win32.whl", hash = "sha256:efd2fcf7e7b9d7ab16e6b7d54205beded0a9c8566cb30f09c1abe42b4e22bdcb"},
+ {file = "aiohttp-3.8.6-cp311-cp311-win_amd64.whl", hash = "sha256:3b2ab182fc28e7a81f6c70bfbd829045d9480063f5ab06f6e601a3eddbbd49a0"},
+ {file = "aiohttp-3.8.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:fdee8405931b0615220e5ddf8cd7edd8592c606a8e4ca2a00704883c396e4479"},
+ {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d25036d161c4fe2225d1abff2bd52c34ed0b1099f02c208cd34d8c05729882f0"},
+ {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d791245a894be071d5ab04bbb4850534261a7d4fd363b094a7b9963e8cdbd31"},
+ {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0cccd1de239afa866e4ce5c789b3032442f19c261c7d8a01183fd956b1935349"},
+ {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f13f60d78224f0dace220d8ab4ef1dbc37115eeeab8c06804fec11bec2bbd07"},
+ {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a9b5a0606faca4f6cc0d338359d6fa137104c337f489cd135bb7fbdbccb1e39"},
+ {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:13da35c9ceb847732bf5c6c5781dcf4780e14392e5d3b3c689f6d22f8e15ae31"},
+ {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:4d4cbe4ffa9d05f46a28252efc5941e0462792930caa370a6efaf491f412bc66"},
+ {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:229852e147f44da0241954fc6cb910ba074e597f06789c867cb7fb0621e0ba7a"},
+ {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:713103a8bdde61d13490adf47171a1039fd880113981e55401a0f7b42c37d071"},
+ {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:45ad816b2c8e3b60b510f30dbd37fe74fd4a772248a52bb021f6fd65dff809b6"},
+ {file = "aiohttp-3.8.6-cp36-cp36m-win32.whl", hash = "sha256:2b8d4e166e600dcfbff51919c7a3789ff6ca8b3ecce16e1d9c96d95dd569eb4c"},
+ {file = "aiohttp-3.8.6-cp36-cp36m-win_amd64.whl", hash = "sha256:0912ed87fee967940aacc5306d3aa8ba3a459fcd12add0b407081fbefc931e53"},
+ {file = "aiohttp-3.8.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e2a988a0c673c2e12084f5e6ba3392d76c75ddb8ebc6c7e9ead68248101cd446"},
+ {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebf3fd9f141700b510d4b190094db0ce37ac6361a6806c153c161dc6c041ccda"},
+ {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3161ce82ab85acd267c8f4b14aa226047a6bee1e4e6adb74b798bd42c6ae1f80"},
+ {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d95fc1bf33a9a81469aa760617b5971331cdd74370d1214f0b3109272c0e1e3c"},
+ {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c43ecfef7deaf0617cee936836518e7424ee12cb709883f2c9a1adda63cc460"},
+ {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca80e1b90a05a4f476547f904992ae81eda5c2c85c66ee4195bb8f9c5fb47f28"},
+ {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:90c72ebb7cb3a08a7f40061079817133f502a160561d0675b0a6adf231382c92"},
+ {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bb54c54510e47a8c7c8e63454a6acc817519337b2b78606c4e840871a3e15349"},
+ {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:de6a1c9f6803b90e20869e6b99c2c18cef5cc691363954c93cb9adeb26d9f3ae"},
+ {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:a3628b6c7b880b181a3ae0a0683698513874df63783fd89de99b7b7539e3e8a8"},
+ {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:fc37e9aef10a696a5a4474802930079ccfc14d9f9c10b4662169671ff034b7df"},
+ {file = "aiohttp-3.8.6-cp37-cp37m-win32.whl", hash = "sha256:f8ef51e459eb2ad8e7a66c1d6440c808485840ad55ecc3cafefadea47d1b1ba2"},
+ {file = "aiohttp-3.8.6-cp37-cp37m-win_amd64.whl", hash = "sha256:b2fe42e523be344124c6c8ef32a011444e869dc5f883c591ed87f84339de5976"},
+ {file = "aiohttp-3.8.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:9e2ee0ac5a1f5c7dd3197de309adfb99ac4617ff02b0603fd1e65b07dc772e4b"},
+ {file = "aiohttp-3.8.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:01770d8c04bd8db568abb636c1fdd4f7140b284b8b3e0b4584f070180c1e5c62"},
+ {file = "aiohttp-3.8.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3c68330a59506254b556b99a91857428cab98b2f84061260a67865f7f52899f5"},
+ {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89341b2c19fb5eac30c341133ae2cc3544d40d9b1892749cdd25892bbc6ac951"},
+ {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:71783b0b6455ac8f34b5ec99d83e686892c50498d5d00b8e56d47f41b38fbe04"},
+ {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f628dbf3c91e12f4d6c8b3f092069567d8eb17814aebba3d7d60c149391aee3a"},
+ {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b04691bc6601ef47c88f0255043df6f570ada1a9ebef99c34bd0b72866c217ae"},
+ {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ee912f7e78287516df155f69da575a0ba33b02dd7c1d6614dbc9463f43066e3"},
+ {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9c19b26acdd08dd239e0d3669a3dddafd600902e37881f13fbd8a53943079dbc"},
+ {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:99c5ac4ad492b4a19fc132306cd57075c28446ec2ed970973bbf036bcda1bcc6"},
+ {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:f0f03211fd14a6a0aed2997d4b1c013d49fb7b50eeb9ffdf5e51f23cfe2c77fa"},
+ {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:8d399dade330c53b4106160f75f55407e9ae7505263ea86f2ccca6bfcbdb4921"},
+ {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ec4fd86658c6a8964d75426517dc01cbf840bbf32d055ce64a9e63a40fd7b771"},
+ {file = "aiohttp-3.8.6-cp38-cp38-win32.whl", hash = "sha256:33164093be11fcef3ce2571a0dccd9041c9a93fa3bde86569d7b03120d276c6f"},
+ {file = "aiohttp-3.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:bdf70bfe5a1414ba9afb9d49f0c912dc524cf60141102f3a11143ba3d291870f"},
+ {file = "aiohttp-3.8.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d52d5dc7c6682b720280f9d9db41d36ebe4791622c842e258c9206232251ab2b"},
+ {file = "aiohttp-3.8.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4ac39027011414dbd3d87f7edb31680e1f430834c8cef029f11c66dad0670aa5"},
+ {file = "aiohttp-3.8.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3f5c7ce535a1d2429a634310e308fb7d718905487257060e5d4598e29dc17f0b"},
+ {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b30e963f9e0d52c28f284d554a9469af073030030cef8693106d918b2ca92f54"},
+ {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:918810ef188f84152af6b938254911055a72e0f935b5fbc4c1a4ed0b0584aed1"},
+ {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:002f23e6ea8d3dd8d149e569fd580c999232b5fbc601c48d55398fbc2e582e8c"},
+ {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fcf3eabd3fd1a5e6092d1242295fa37d0354b2eb2077e6eb670accad78e40e1"},
+ {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:255ba9d6d5ff1a382bb9a578cd563605aa69bec845680e21c44afc2670607a95"},
+ {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d67f8baed00870aa390ea2590798766256f31dc5ed3ecc737debb6e97e2ede78"},
+ {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:86f20cee0f0a317c76573b627b954c412ea766d6ada1a9fcf1b805763ae7feeb"},
+ {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:39a312d0e991690ccc1a61f1e9e42daa519dcc34ad03eb6f826d94c1190190dd"},
+ {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e827d48cf802de06d9c935088c2924e3c7e7533377d66b6f31ed175c1620e05e"},
+ {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bd111d7fc5591ddf377a408ed9067045259ff2770f37e2d94e6478d0f3fc0c17"},
+ {file = "aiohttp-3.8.6-cp39-cp39-win32.whl", hash = "sha256:caf486ac1e689dda3502567eb89ffe02876546599bbf915ec94b1fa424eeffd4"},
+ {file = "aiohttp-3.8.6-cp39-cp39-win_amd64.whl", hash = "sha256:3f0e27e5b733803333bb2371249f41cf42bae8884863e8e8965ec69bebe53132"},
+ {file = "aiohttp-3.8.6.tar.gz", hash = "sha256:b0cf2a4501bff9330a8a5248b4ce951851e415bdcce9dc158e76cfd55e15085c"},
+]
+
+[package.dependencies]
+aiosignal = ">=1.1.2"
+async-timeout = ">=4.0.0a3,<5.0"
+attrs = ">=17.3.0"
+charset-normalizer = ">=2.0,<4.0"
+frozenlist = ">=1.1.1"
+multidict = ">=4.5,<7.0"
+yarl = ">=1.0,<2.0"
+
+[package.extras]
+speedups = ["Brotli", "aiodns", "cchardet"]
+
+[[package]]
+name = "aioitertools"
+version = "0.11.0"
+description = "itertools and builtins for AsyncIO and mixed iterables"
+category = "main"
optional = false
python-versions = ">=3.6"
files = [
- {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"},
- {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"},
+ {file = "aioitertools-0.11.0-py3-none-any.whl", hash = "sha256:04b95e3dab25b449def24d7df809411c10e62aab0cbe31a50ca4e68748c43394"},
+ {file = "aioitertools-0.11.0.tar.gz", hash = "sha256:42c68b8dd3a69c2bf7f2233bf7df4bb58b557bca5252ac02ed5187bbc67d6831"},
+]
+
+[[package]]
+name = "aiosignal"
+version = "1.3.1"
+description = "aiosignal: a list of registered asynchronous callbacks"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"},
+ {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"},
+]
+
+[package.dependencies]
+frozenlist = ">=1.1.0"
+
+[[package]]
+name = "alembic"
+version = "1.12.0"
+description = "A database migration tool for SQLAlchemy."
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "alembic-1.12.0-py3-none-any.whl", hash = "sha256:03226222f1cf943deee6c85d9464261a6c710cd19b4fe867a3ad1f25afda610f"},
+ {file = "alembic-1.12.0.tar.gz", hash = "sha256:8e7645c32e4f200675e69f0745415335eb59a3663f5feb487abfa0b30c45888b"},
+]
+
+[package.dependencies]
+Mako = "*"
+SQLAlchemy = ">=1.3.0"
+typing-extensions = ">=4"
+
+[package.extras]
+tz = ["python-dateutil"]
+
+[[package]]
+name = "ansicon"
+version = "1.89.0"
+description = "Python wrapper for loading Jason Hood's ANSICON"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "ansicon-1.89.0-py2.py3-none-any.whl", hash = "sha256:f1def52d17f65c2c9682cf8370c03f541f410c1752d6a14029f97318e4b9dfec"},
+ {file = "ansicon-1.89.0.tar.gz", hash = "sha256:e4d039def5768a47e4afec8e89e83ec3ae5a26bf00ad851f914d1240b444d2b1"},
]
[[package]]
name = "anyio"
-version = "3.6.2"
+version = "4.0.0"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
+category = "main"
optional = false
-python-versions = ">=3.6.2"
+python-versions = ">=3.8"
files = [
- {file = "anyio-3.6.2-py3-none-any.whl", hash = "sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3"},
- {file = "anyio-3.6.2.tar.gz", hash = "sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421"},
+ {file = "anyio-4.0.0-py3-none-any.whl", hash = "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f"},
+ {file = "anyio-4.0.0.tar.gz", hash = "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"},
]
[package.dependencies]
@@ -27,33 +227,185 @@ idna = ">=2.8"
sniffio = ">=1.1"
[package.extras]
-doc = ["packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
-test = ["contextlib2", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "uvloop (>=0.15)"]
-trio = ["trio (>=0.16,<0.22)"]
+doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)"]
+test = ["anyio[trio]", "coverage[toml] (>=7)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"]
+trio = ["trio (>=0.22)"]
[[package]]
-name = "babel"
-version = "2.11.0"
-description = "Internationalization utilities"
+name = "apscheduler"
+version = "3.10.3"
+description = "In-process task scheduler with Cron-like capabilities"
+category = "main"
optional = false
python-versions = ">=3.6"
files = [
- {file = "Babel-2.11.0-py3-none-any.whl", hash = "sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe"},
- {file = "Babel-2.11.0.tar.gz", hash = "sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6"},
+ {file = "APScheduler-3.10.3-py3-none-any.whl", hash = "sha256:1611d207b095ff52d97884e90736c192bdd94dbd44ce27eb92c3f1da24a400d3"},
+ {file = "APScheduler-3.10.3.tar.gz", hash = "sha256:3f17fd3915f14f4bfa597f552130a14a9d1cc74a002fa1d95dd671cb48dba70e"},
+]
+
+[package.dependencies]
+pytz = "*"
+six = ">=1.4.0"
+tzlocal = ">=2.0,<3.0.0 || >=4.0.0"
+
+[package.extras]
+doc = ["sphinx", "sphinx-rtd-theme"]
+gevent = ["gevent"]
+mongodb = ["pymongo (>=3.0)"]
+redis = ["redis (>=3.0)"]
+rethinkdb = ["rethinkdb (>=2.4.0)"]
+sqlalchemy = ["sqlalchemy (>=1.4)"]
+testing = ["pytest", "pytest-asyncio", "pytest-cov", "pytest-tornado5"]
+tornado = ["tornado (>=4.3)"]
+twisted = ["twisted"]
+zookeeper = ["kazoo"]
+
+[[package]]
+name = "armasec"
+version = "1.2.1"
+description = "Injectable FastAPI auth via OIDC"
+category = "main"
+optional = false
+python-versions = ">=3.8,<4.0"
+files = [
+ {file = "armasec-1.2.1-py3-none-any.whl", hash = "sha256:7144e6dc1c3f02709f9e09b733c263003782d12f36c3903af79ea8e8d78018cc"},
+ {file = "armasec-1.2.1.tar.gz", hash = "sha256:5b6bb73d6063127ae3f85027d7b1f7d5be1d87053a26e68fab0b4cdfd4f31687"},
]
[package.dependencies]
-pytz = ">=2015.7"
+auto-name-enum = ">=2,<3"
+fastapi = ">=0.68"
+httpx = ">=0,<1"
+jmespath = ">=1.0.1,<2.0.0"
+py-buzz = ">=4.1,<5.0"
+pydantic = "<2.0"
+pytest = ">=6,<8"
+python-jose = {version = ">=3.2,<4.0", extras = ["cryptography"]}
+respx = ">=0,<1"
+snick = ">=1.3,<2.0"
+
+[package.extras]
+cli = ["loguru (>=0.5.3,<0.6.0)", "pendulum (>=2.1.2,<3.0.0)", "pyperclip (>=1.8.2,<2.0.0)", "rich (>=13.5.2,<14.0.0)", "typer (>=0.9.0,<0.10.0)"]
+
+[[package]]
+name = "async-timeout"
+version = "4.0.3"
+description = "Timeout context manager for asyncio programs"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"},
+ {file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"},
+]
+
+[[package]]
+name = "asyncpg"
+version = "0.27.0"
+description = "An asyncio PostgreSQL driver"
+category = "main"
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "asyncpg-0.27.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fca608d199ffed4903dce1bcd97ad0fe8260f405c1c225bdf0002709132171c2"},
+ {file = "asyncpg-0.27.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:20b596d8d074f6f695c13ffb8646d0b6bb1ab570ba7b0cfd349b921ff03cfc1e"},
+ {file = "asyncpg-0.27.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a6206210c869ebd3f4eb9e89bea132aefb56ff3d1b7dd7e26b102b17e27bbb1"},
+ {file = "asyncpg-0.27.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a7a94c03386bb95456b12c66026b3a87d1b965f0f1e5733c36e7229f8f137747"},
+ {file = "asyncpg-0.27.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bfc3980b4ba6f97138b04f0d32e8af21d6c9fa1f8e6e140c07d15690a0a99279"},
+ {file = "asyncpg-0.27.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9654085f2b22f66952124de13a8071b54453ff972c25c59b5ce1173a4283ffd9"},
+ {file = "asyncpg-0.27.0-cp310-cp310-win32.whl", hash = "sha256:879c29a75969eb2722f94443752f4720d560d1e748474de54ae8dd230bc4956b"},
+ {file = "asyncpg-0.27.0-cp310-cp310-win_amd64.whl", hash = "sha256:ab0f21c4818d46a60ca789ebc92327d6d874d3b7ccff3963f7af0a21dc6cff52"},
+ {file = "asyncpg-0.27.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:18f77e8e71e826ba2d0c3ba6764930776719ae2b225ca07e014590545928b576"},
+ {file = "asyncpg-0.27.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2232d4625c558f2aa001942cac1d7952aa9f0dbfc212f63bc754277769e1ef2"},
+ {file = "asyncpg-0.27.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9a3a4ff43702d39e3c97a8786314123d314e0f0e4dabc8367db5b665c93914de"},
+ {file = "asyncpg-0.27.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccddb9419ab4e1c48742457d0c0362dbdaeb9b28e6875115abfe319b29ee225d"},
+ {file = "asyncpg-0.27.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:768e0e7c2898d40b16d4ef7a0b44e8150db3dd8995b4652aa1fe2902e92c7df8"},
+ {file = "asyncpg-0.27.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609054a1f47292a905582a1cfcca51a6f3f30ab9d822448693e66fdddde27920"},
+ {file = "asyncpg-0.27.0-cp311-cp311-win32.whl", hash = "sha256:8113e17cfe236dc2277ec844ba9b3d5312f61bd2fdae6d3ed1c1cdd75f6cf2d8"},
+ {file = "asyncpg-0.27.0-cp311-cp311-win_amd64.whl", hash = "sha256:bb71211414dd1eeb8d31ec529fe77cff04bf53efc783a5f6f0a32d84923f45cf"},
+ {file = "asyncpg-0.27.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4750f5cf49ed48a6e49c6e5aed390eee367694636c2dcfaf4a273ca832c5c43c"},
+ {file = "asyncpg-0.27.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:eca01eb112a39d31cc4abb93a5aef2a81514c23f70956729f42fb83b11b3483f"},
+ {file = "asyncpg-0.27.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5710cb0937f696ce303f5eed6d272e3f057339bb4139378ccecafa9ee923a71c"},
+ {file = "asyncpg-0.27.0-cp37-cp37m-win_amd64.whl", hash = "sha256:71cca80a056ebe19ec74b7117b09e650990c3ca535ac1c35234a96f65604192f"},
+ {file = "asyncpg-0.27.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4bb366ae34af5b5cabc3ac6a5347dfb6013af38c68af8452f27968d49085ecc0"},
+ {file = "asyncpg-0.27.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:16ba8ec2e85d586b4a12bcd03e8d29e3d99e832764d6a1d0b8c27dbbe4a2569d"},
+ {file = "asyncpg-0.27.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d20dea7b83651d93b1eb2f353511fe7fd554752844523f17ad30115d8b9c8cd6"},
+ {file = "asyncpg-0.27.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e56ac8a8237ad4adec97c0cd4728596885f908053ab725e22900b5902e7f8e69"},
+ {file = "asyncpg-0.27.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bf21ebf023ec67335258e0f3d3ad7b91bb9507985ba2b2206346de488267cad0"},
+ {file = "asyncpg-0.27.0-cp38-cp38-win32.whl", hash = "sha256:69aa1b443a182b13a17ff926ed6627af2d98f62f2fe5890583270cc4073f63bf"},
+ {file = "asyncpg-0.27.0-cp38-cp38-win_amd64.whl", hash = "sha256:62932f29cf2433988fcd799770ec64b374a3691e7902ecf85da14d5e0854d1ea"},
+ {file = "asyncpg-0.27.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fddcacf695581a8d856654bc4c8cfb73d5c9df26d5f55201722d3e6a699e9629"},
+ {file = "asyncpg-0.27.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7d8585707ecc6661d07367d444bbaa846b4e095d84451340da8df55a3757e152"},
+ {file = "asyncpg-0.27.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:975a320baf7020339a67315284a4d3bf7460e664e484672bd3e71dbd881bc692"},
+ {file = "asyncpg-0.27.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2232ebae9796d4600a7819fc383da78ab51b32a092795f4555575fc934c1c89d"},
+ {file = "asyncpg-0.27.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:88b62164738239f62f4af92567b846a8ef7cf8abf53eddd83650603de4d52163"},
+ {file = "asyncpg-0.27.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:eb4b2fdf88af4fb1cc569781a8f933d2a73ee82cd720e0cb4edabbaecf2a905b"},
+ {file = "asyncpg-0.27.0-cp39-cp39-win32.whl", hash = "sha256:8934577e1ed13f7d2d9cea3cc016cc6f95c19faedea2c2b56a6f94f257cea672"},
+ {file = "asyncpg-0.27.0-cp39-cp39-win_amd64.whl", hash = "sha256:1b6499de06fe035cf2fa932ec5617ed3f37d4ebbf663b655922e105a484a6af9"},
+ {file = "asyncpg-0.27.0.tar.gz", hash = "sha256:720986d9a4705dd8a40fdf172036f5ae787225036a7eb46e704c45aa8f62c054"},
+]
+
+[package.extras]
+dev = ["Cython (>=0.29.24,<0.30.0)", "Sphinx (>=4.1.2,<4.2.0)", "flake8 (>=5.0.4,<5.1.0)", "pytest (>=6.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)", "uvloop (>=0.15.3)"]
+docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"]
+test = ["flake8 (>=5.0.4,<5.1.0)", "uvloop (>=0.15.3)"]
+
+[[package]]
+name = "attrs"
+version = "23.1.0"
+description = "Classes Without Boilerplate"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"},
+ {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"},
+]
+
+[package.extras]
+cov = ["attrs[tests]", "coverage[toml] (>=5.3)"]
+dev = ["attrs[docs,tests]", "pre-commit"]
+docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"]
+tests = ["attrs[tests-no-zope]", "zope-interface"]
+tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
+
+[[package]]
+name = "auto-name-enum"
+version = "2.0.0"
+description = "String-based Enum class that automatically assigns values"
+category = "main"
+optional = false
+python-versions = ">=3.6.2,<4.0.0"
+files = [
+ {file = "auto-name-enum-2.0.0.tar.gz", hash = "sha256:aa38d9c2730b95b0bb700cd93fb5f65a2a982f6d79bbbcd0c64e5bcfe8f3d5b1"},
+ {file = "auto_name_enum-2.0.0-py3-none-any.whl", hash = "sha256:fb9fe25985d7ef890e7b419d242b9ec145162ae1252121f8a5e3e8cca0e6d87a"},
+]
+
+[[package]]
+name = "babel"
+version = "2.13.0"
+description = "Internationalization utilities"
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Babel-2.13.0-py3-none-any.whl", hash = "sha256:fbfcae1575ff78e26c7449136f1abbefc3c13ce542eeb13d43d50d8b047216ec"},
+ {file = "Babel-2.13.0.tar.gz", hash = "sha256:04c3e2d28d2b7681644508f836be388ae49e0cfe91465095340395b60d00f210"},
+]
+
+[package.extras]
+dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"]
[[package]]
name = "beautifulsoup4"
-version = "4.11.2"
+version = "4.12.2"
description = "Screen-scraping library"
+category = "dev"
optional = false
python-versions = ">=3.6.0"
files = [
- {file = "beautifulsoup4-4.11.2-py3-none-any.whl", hash = "sha256:0e79446b10b3ecb499c1556f7e228a53e64a2bfcebd455f370d8927cb5b59e39"},
- {file = "beautifulsoup4-4.11.2.tar.gz", hash = "sha256:bc4bdda6717de5a2987436fb8d72f45dc90dd856bdfd512a1314ce90349a0106"},
+ {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"},
+ {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"},
]
[package.dependencies]
@@ -63,10 +415,28 @@ soupsieve = ">1.2"
html5lib = ["html5lib"]
lxml = ["lxml"]
+[[package]]
+name = "bidict"
+version = "0.22.1"
+description = "The bidirectional mapping library for Python."
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "bidict-0.22.1-py3-none-any.whl", hash = "sha256:6ef212238eb884b664f28da76f33f1d28b260f665fc737b413b287d5487d1e7b"},
+ {file = "bidict-0.22.1.tar.gz", hash = "sha256:1e0f7f74e4860e6d0943a05d4134c63a2fad86f3d4732fb265bd79e4e856d81d"},
+]
+
+[package.extras]
+docs = ["furo", "sphinx", "sphinx-copybutton"]
+lint = ["pre-commit"]
+test = ["hypothesis", "pytest", "pytest-benchmark[histogram]", "pytest-cov", "pytest-xdist", "sortedcollections", "sortedcontainers", "sphinx"]
+
[[package]]
name = "black"
version = "21.12b0"
description = "The uncompromising code formatter."
+category = "dev"
optional = false
python-versions = ">=3.6.2"
files = [
@@ -80,10 +450,7 @@ mypy-extensions = ">=0.4.3"
pathspec = ">=0.9.0,<1"
platformdirs = ">=2"
tomli = ">=0.2.6,<2.0.0"
-typing-extensions = [
- {version = ">=3.10.0.0,<3.10.0.1 || >3.10.0.1", markers = "python_version >= \"3.10\""},
- {version = ">=3.10.0.0", markers = "python_version < \"3.10\""},
-]
+typing-extensions = {version = ">=3.10.0.0,<3.10.0.1 || >3.10.0.1", markers = "python_version >= \"3.10\""}
[package.extras]
colorama = ["colorama (>=0.4.3)"]
@@ -92,10 +459,68 @@ jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
python2 = ["typed-ast (>=1.4.3)"]
uvloop = ["uvloop (>=0.15.2)"]
+[[package]]
+name = "blessed"
+version = "1.20.0"
+description = "Easy, practical library for making terminal apps, by providing an elegant, well-documented interface to Colors, Keyboard input, and screen Positioning capabilities."
+category = "main"
+optional = false
+python-versions = ">=2.7"
+files = [
+ {file = "blessed-1.20.0-py2.py3-none-any.whl", hash = "sha256:0c542922586a265e699188e52d5f5ac5ec0dd517e5a1041d90d2bbf23f906058"},
+ {file = "blessed-1.20.0.tar.gz", hash = "sha256:2cdd67f8746e048f00df47a2880f4d6acbcdb399031b604e34ba8f71d5787680"},
+]
+
+[package.dependencies]
+jinxed = {version = ">=1.1.0", markers = "platform_system == \"Windows\""}
+six = ">=1.9.0"
+wcwidth = ">=0.1.4"
+
+[[package]]
+name = "boto3"
+version = "1.28.17"
+description = "The AWS SDK for Python"
+category = "main"
+optional = false
+python-versions = ">= 3.7"
+files = [
+ {file = "boto3-1.28.17-py3-none-any.whl", hash = "sha256:bca0526f819e0f19c0f1e6eba3e2d1d6b6a92a45129f98c0d716e5aab6d9444b"},
+ {file = "boto3-1.28.17.tar.gz", hash = "sha256:90f7cfb5e1821af95b1fc084bc50e6c47fa3edc99f32de1a2591faa0c546bea7"},
+]
+
+[package.dependencies]
+botocore = ">=1.31.17,<1.32.0"
+jmespath = ">=0.7.1,<2.0.0"
+s3transfer = ">=0.6.0,<0.7.0"
+
+[package.extras]
+crt = ["botocore[crt] (>=1.21.0,<2.0a0)"]
+
+[[package]]
+name = "botocore"
+version = "1.31.17"
+description = "Low-level, data-driven core of boto 3."
+category = "main"
+optional = false
+python-versions = ">= 3.7"
+files = [
+ {file = "botocore-1.31.17-py3-none-any.whl", hash = "sha256:6ac34a1d34aa3750e78b77b8596617e2bab938964694d651939dba2cbde2c12b"},
+ {file = "botocore-1.31.17.tar.gz", hash = "sha256:396459065dba4339eb4da4ec8b4e6599728eb89b7caaceea199e26f7d824a41c"},
+]
+
+[package.dependencies]
+jmespath = ">=0.7.1,<2.0.0"
+python-dateutil = ">=2.1,<3.0.0"
+urllib3 = ">=1.25.4,<1.27"
+
+[package.extras]
+crt = ["awscrt (==0.16.26)"]
+
[[package]]
name = "certifi"
version = "2023.7.22"
description = "Python package for providing Mozilla's CA Bundle."
+category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -104,111 +529,180 @@ files = [
]
[[package]]
-name = "charset-normalizer"
-version = "3.0.1"
-description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+name = "cffi"
+version = "1.16.0"
+description = "Foreign Function Interface for Python calling C code."
+category = "main"
optional = false
-python-versions = "*"
+python-versions = ">=3.8"
files = [
- {file = "charset-normalizer-3.0.1.tar.gz", hash = "sha256:ebea339af930f8ca5d7a699b921106c6e29c617fe9606fa7baa043c1cdae326f"},
- {file = "charset_normalizer-3.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88600c72ef7587fe1708fd242b385b6ed4b8904976d5da0893e31df8b3480cb6"},
- {file = "charset_normalizer-3.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c75ffc45f25324e68ab238cb4b5c0a38cd1c3d7f1fb1f72b5541de469e2247db"},
- {file = "charset_normalizer-3.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db72b07027db150f468fbada4d85b3b2729a3db39178abf5c543b784c1254539"},
- {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62595ab75873d50d57323a91dd03e6966eb79c41fa834b7a1661ed043b2d404d"},
- {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ff6f3db31555657f3163b15a6b7c6938d08df7adbfc9dd13d9d19edad678f1e8"},
- {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:772b87914ff1152b92a197ef4ea40efe27a378606c39446ded52c8f80f79702e"},
- {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70990b9c51340e4044cfc394a81f614f3f90d41397104d226f21e66de668730d"},
- {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:292d5e8ba896bbfd6334b096e34bffb56161c81408d6d036a7dfa6929cff8783"},
- {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2edb64ee7bf1ed524a1da60cdcd2e1f6e2b4f66ef7c077680739f1641f62f555"},
- {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:31a9ddf4718d10ae04d9b18801bd776693487cbb57d74cc3458a7673f6f34639"},
- {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:44ba614de5361b3e5278e1241fda3dc1838deed864b50a10d7ce92983797fa76"},
- {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:12db3b2c533c23ab812c2b25934f60383361f8a376ae272665f8e48b88e8e1c6"},
- {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c512accbd6ff0270939b9ac214b84fb5ada5f0409c44298361b2f5e13f9aed9e"},
- {file = "charset_normalizer-3.0.1-cp310-cp310-win32.whl", hash = "sha256:502218f52498a36d6bf5ea77081844017bf7982cdbe521ad85e64cabee1b608b"},
- {file = "charset_normalizer-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:601f36512f9e28f029d9481bdaf8e89e5148ac5d89cffd3b05cd533eeb423b59"},
- {file = "charset_normalizer-3.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0298eafff88c99982a4cf66ba2efa1128e4ddaca0b05eec4c456bbc7db691d8d"},
- {file = "charset_normalizer-3.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a8d0fc946c784ff7f7c3742310cc8a57c5c6dc31631269876a88b809dbeff3d3"},
- {file = "charset_normalizer-3.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:87701167f2a5c930b403e9756fab1d31d4d4da52856143b609e30a1ce7160f3c"},
- {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14e76c0f23218b8f46c4d87018ca2e441535aed3632ca134b10239dfb6dadd6b"},
- {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c0a590235ccd933d9892c627dec5bc7511ce6ad6c1011fdf5b11363022746c1"},
- {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c7fe7afa480e3e82eed58e0ca89f751cd14d767638e2550c77a92a9e749c317"},
- {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79909e27e8e4fcc9db4addea88aa63f6423ebb171db091fb4373e3312cb6d603"},
- {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ac7b6a045b814cf0c47f3623d21ebd88b3e8cf216a14790b455ea7ff0135d18"},
- {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:72966d1b297c741541ca8cf1223ff262a6febe52481af742036a0b296e35fa5a"},
- {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f9d0c5c045a3ca9bedfc35dca8526798eb91a07aa7a2c0fee134c6c6f321cbd7"},
- {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5995f0164fa7df59db4746112fec3f49c461dd6b31b841873443bdb077c13cfc"},
- {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4a8fcf28c05c1f6d7e177a9a46a1c52798bfe2ad80681d275b10dcf317deaf0b"},
- {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:761e8904c07ad053d285670f36dd94e1b6ab7f16ce62b9805c475b7aa1cffde6"},
- {file = "charset_normalizer-3.0.1-cp311-cp311-win32.whl", hash = "sha256:71140351489970dfe5e60fc621ada3e0f41104a5eddaca47a7acb3c1b851d6d3"},
- {file = "charset_normalizer-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:9ab77acb98eba3fd2a85cd160851816bfce6871d944d885febf012713f06659c"},
- {file = "charset_normalizer-3.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:84c3990934bae40ea69a82034912ffe5a62c60bbf6ec5bc9691419641d7d5c9a"},
- {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74292fc76c905c0ef095fe11e188a32ebd03bc38f3f3e9bcb85e4e6db177b7ea"},
- {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c95a03c79bbe30eec3ec2b7f076074f4281526724c8685a42872974ef4d36b72"},
- {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c39b0e3eac288fedc2b43055cfc2ca7a60362d0e5e87a637beac5d801ef478"},
- {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df2c707231459e8a4028eabcd3cfc827befd635b3ef72eada84ab13b52e1574d"},
- {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93ad6d87ac18e2a90b0fe89df7c65263b9a99a0eb98f0a3d2e079f12a0735837"},
- {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:59e5686dd847347e55dffcc191a96622f016bc0ad89105e24c14e0d6305acbc6"},
- {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:cd6056167405314a4dc3c173943f11249fa0f1b204f8b51ed4bde1a9cd1834dc"},
- {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:083c8d17153ecb403e5e1eb76a7ef4babfc2c48d58899c98fcaa04833e7a2f9a"},
- {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:f5057856d21e7586765171eac8b9fc3f7d44ef39425f85dbcccb13b3ebea806c"},
- {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:7eb33a30d75562222b64f569c642ff3dc6689e09adda43a082208397f016c39a"},
- {file = "charset_normalizer-3.0.1-cp36-cp36m-win32.whl", hash = "sha256:95dea361dd73757c6f1c0a1480ac499952c16ac83f7f5f4f84f0658a01b8ef41"},
- {file = "charset_normalizer-3.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:eaa379fcd227ca235d04152ca6704c7cb55564116f8bc52545ff357628e10602"},
- {file = "charset_normalizer-3.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3e45867f1f2ab0711d60c6c71746ac53537f1684baa699f4f668d4c6f6ce8e14"},
- {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cadaeaba78750d58d3cc6ac4d1fd867da6fc73c88156b7a3212a3cd4819d679d"},
- {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:911d8a40b2bef5b8bbae2e36a0b103f142ac53557ab421dc16ac4aafee6f53dc"},
- {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:503e65837c71b875ecdd733877d852adbc465bd82c768a067badd953bf1bc5a3"},
- {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a60332922359f920193b1d4826953c507a877b523b2395ad7bc716ddd386d866"},
- {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:16a8663d6e281208d78806dbe14ee9903715361cf81f6d4309944e4d1e59ac5b"},
- {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a16418ecf1329f71df119e8a65f3aa68004a3f9383821edcb20f0702934d8087"},
- {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9d9153257a3f70d5f69edf2325357251ed20f772b12e593f3b3377b5f78e7ef8"},
- {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:02a51034802cbf38db3f89c66fb5d2ec57e6fe7ef2f4a44d070a593c3688667b"},
- {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:2e396d70bc4ef5325b72b593a72c8979999aa52fb8bcf03f701c1b03e1166918"},
- {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:11b53acf2411c3b09e6af37e4b9005cba376c872503c8f28218c7243582df45d"},
- {file = "charset_normalizer-3.0.1-cp37-cp37m-win32.whl", hash = "sha256:0bf2dae5291758b6f84cf923bfaa285632816007db0330002fa1de38bfcb7154"},
- {file = "charset_normalizer-3.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:2c03cc56021a4bd59be889c2b9257dae13bf55041a3372d3295416f86b295fb5"},
- {file = "charset_normalizer-3.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:024e606be3ed92216e2b6952ed859d86b4cfa52cd5bc5f050e7dc28f9b43ec42"},
- {file = "charset_normalizer-3.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4b0d02d7102dd0f997580b51edc4cebcf2ab6397a7edf89f1c73b586c614272c"},
- {file = "charset_normalizer-3.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:358a7c4cb8ba9b46c453b1dd8d9e431452d5249072e4f56cfda3149f6ab1405e"},
- {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81d6741ab457d14fdedc215516665050f3822d3e56508921cc7239f8c8e66a58"},
- {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8b8af03d2e37866d023ad0ddea594edefc31e827fee64f8de5611a1dbc373174"},
- {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9cf4e8ad252f7c38dd1f676b46514f92dc0ebeb0db5552f5f403509705e24753"},
- {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e696f0dd336161fca9adbb846875d40752e6eba585843c768935ba5c9960722b"},
- {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c22d3fe05ce11d3671297dc8973267daa0f938b93ec716e12e0f6dee81591dc1"},
- {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:109487860ef6a328f3eec66f2bf78b0b72400280d8f8ea05f69c51644ba6521a"},
- {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:37f8febc8ec50c14f3ec9637505f28e58d4f66752207ea177c1d67df25da5aed"},
- {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:f97e83fa6c25693c7a35de154681fcc257c1c41b38beb0304b9c4d2d9e164479"},
- {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a152f5f33d64a6be73f1d30c9cc82dfc73cec6477ec268e7c6e4c7d23c2d2291"},
- {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:39049da0ffb96c8cbb65cbf5c5f3ca3168990adf3551bd1dee10c48fce8ae820"},
- {file = "charset_normalizer-3.0.1-cp38-cp38-win32.whl", hash = "sha256:4457ea6774b5611f4bed5eaa5df55f70abde42364d498c5134b7ef4c6958e20e"},
- {file = "charset_normalizer-3.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:e62164b50f84e20601c1ff8eb55620d2ad25fb81b59e3cd776a1902527a788af"},
- {file = "charset_normalizer-3.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8eade758719add78ec36dc13201483f8e9b5d940329285edcd5f70c0a9edbd7f"},
- {file = "charset_normalizer-3.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8499ca8f4502af841f68135133d8258f7b32a53a1d594aa98cc52013fff55678"},
- {file = "charset_normalizer-3.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3fc1c4a2ffd64890aebdb3f97e1278b0cc72579a08ca4de8cd2c04799a3a22be"},
- {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00d3ffdaafe92a5dc603cb9bd5111aaa36dfa187c8285c543be562e61b755f6b"},
- {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2ac1b08635a8cd4e0cbeaf6f5e922085908d48eb05d44c5ae9eabab148512ca"},
- {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6f45710b4459401609ebebdbcfb34515da4fc2aa886f95107f556ac69a9147e"},
- {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ae1de54a77dc0d6d5fcf623290af4266412a7c4be0b1ff7444394f03f5c54e3"},
- {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b590df687e3c5ee0deef9fc8c547d81986d9a1b56073d82de008744452d6541"},
- {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab5de034a886f616a5668aa5d098af2b5385ed70142090e2a31bcbd0af0fdb3d"},
- {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9cb3032517f1627cc012dbc80a8ec976ae76d93ea2b5feaa9d2a5b8882597579"},
- {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:608862a7bf6957f2333fc54ab4399e405baad0163dc9f8d99cb236816db169d4"},
- {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0f438ae3532723fb6ead77e7c604be7c8374094ef4ee2c5e03a3a17f1fca256c"},
- {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:356541bf4381fa35856dafa6a965916e54bed415ad8a24ee6de6e37deccf2786"},
- {file = "charset_normalizer-3.0.1-cp39-cp39-win32.whl", hash = "sha256:39cf9ed17fe3b1bc81f33c9ceb6ce67683ee7526e65fde1447c772afc54a1bb8"},
- {file = "charset_normalizer-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:0a11e971ed097d24c534c037d298ad32c6ce81a45736d31e0ff0ad37ab437d59"},
- {file = "charset_normalizer-3.0.1-py3-none-any.whl", hash = "sha256:7e189e2e1d3ed2f4aebabd2d5b0f931e883676e51c7624826e0a4e5fe8a0bf24"},
+ {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"},
+ {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"},
+ {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"},
+ {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"},
+ {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"},
+ {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"},
+ {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"},
+ {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"},
+ {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"},
+ {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"},
+ {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"},
+ {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"},
+ {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"},
+ {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"},
+ {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"},
+ {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"},
+ {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"},
+ {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"},
+ {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"},
+ {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"},
+ {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"},
+ {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"},
+ {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"},
+ {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"},
+ {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"},
+ {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"},
+ {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"},
+ {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"},
+ {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"},
+ {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"},
+ {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"},
+ {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"},
+ {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"},
+ {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"},
+ {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"},
+ {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"},
+ {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"},
+ {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"},
+ {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"},
+ {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"},
+ {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"},
+ {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"},
+ {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"},
+ {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"},
+ {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"},
+ {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"},
+ {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"},
+ {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"},
+ {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"},
+ {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"},
+ {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"},
+ {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"},
+]
+
+[package.dependencies]
+pycparser = "*"
+
+[[package]]
+name = "charset-normalizer"
+version = "3.3.0"
+description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+category = "main"
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "charset-normalizer-3.3.0.tar.gz", hash = "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-win32.whl", hash = "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d"},
+ {file = "charset_normalizer-3.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-win32.whl", hash = "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786"},
+ {file = "charset_normalizer-3.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-win32.whl", hash = "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df"},
+ {file = "charset_normalizer-3.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-win32.whl", hash = "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c"},
+ {file = "charset_normalizer-3.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-win32.whl", hash = "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e"},
+ {file = "charset_normalizer-3.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-win32.whl", hash = "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a"},
+ {file = "charset_normalizer-3.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884"},
+ {file = "charset_normalizer-3.3.0-py3-none-any.whl", hash = "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2"},
]
[[package]]
name = "click"
-version = "8.1.3"
+version = "8.1.7"
description = "Composable command line interface toolkit"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
- {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
+ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
+ {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
]
[package.dependencies]
@@ -218,6 +712,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""}
name = "colorama"
version = "0.4.6"
description = "Cross-platform colored terminal text."
+category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
files = [
@@ -226,20 +721,91 @@ files = [
]
[[package]]
-name = "docutils"
-version = "0.16"
-description = "Docutils -- Python Documentation Utilities"
+name = "commonmark"
+version = "0.9.1"
+description = "Python parser for the CommonMark Markdown spec"
+category = "main"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+python-versions = "*"
files = [
- {file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"},
- {file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"},
+ {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"},
+ {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"},
]
+[package.extras]
+test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"]
+
+[[package]]
+name = "cryptography"
+version = "41.0.4"
+description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "cryptography-41.0.4-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:80907d3faa55dc5434a16579952ac6da800935cd98d14dbd62f6f042c7f5e839"},
+ {file = "cryptography-41.0.4-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:35c00f637cd0b9d5b6c6bd11b6c3359194a8eba9c46d4e875a3660e3b400005f"},
+ {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cecfefa17042941f94ab54f769c8ce0fe14beff2694e9ac684176a2535bf9714"},
+ {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e40211b4923ba5a6dc9769eab704bdb3fbb58d56c5b336d30996c24fcf12aadb"},
+ {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:23a25c09dfd0d9f28da2352503b23e086f8e78096b9fd585d1d14eca01613e13"},
+ {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2ed09183922d66c4ec5fdaa59b4d14e105c084dd0febd27452de8f6f74704143"},
+ {file = "cryptography-41.0.4-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5a0f09cefded00e648a127048119f77bc2b2ec61e736660b5789e638f43cc397"},
+ {file = "cryptography-41.0.4-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:9eeb77214afae972a00dee47382d2591abe77bdae166bda672fb1e24702a3860"},
+ {file = "cryptography-41.0.4-cp37-abi3-win32.whl", hash = "sha256:3b224890962a2d7b57cf5eeb16ccaafba6083f7b811829f00476309bce2fe0fd"},
+ {file = "cryptography-41.0.4-cp37-abi3-win_amd64.whl", hash = "sha256:c880eba5175f4307129784eca96f4e70b88e57aa3f680aeba3bab0e980b0f37d"},
+ {file = "cryptography-41.0.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:004b6ccc95943f6a9ad3142cfabcc769d7ee38a3f60fb0dddbfb431f818c3a67"},
+ {file = "cryptography-41.0.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:86defa8d248c3fa029da68ce61fe735432b047e32179883bdb1e79ed9bb8195e"},
+ {file = "cryptography-41.0.4-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:37480760ae08065437e6573d14be973112c9e6dcaf5f11d00147ee74f37a3829"},
+ {file = "cryptography-41.0.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b5f4dfe950ff0479f1f00eda09c18798d4f49b98f4e2006d644b3301682ebdca"},
+ {file = "cryptography-41.0.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7e53db173370dea832190870e975a1e09c86a879b613948f09eb49324218c14d"},
+ {file = "cryptography-41.0.4-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5b72205a360f3b6176485a333256b9bcd48700fc755fef51c8e7e67c4b63e3ac"},
+ {file = "cryptography-41.0.4-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:93530900d14c37a46ce3d6c9e6fd35dbe5f5601bf6b3a5c325c7bffc030344d9"},
+ {file = "cryptography-41.0.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efc8ad4e6fc4f1752ebfb58aefece8b4e3c4cae940b0994d43649bdfce8d0d4f"},
+ {file = "cryptography-41.0.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c3391bd8e6de35f6f1140e50aaeb3e2b3d6a9012536ca23ab0d9c35ec18c8a91"},
+ {file = "cryptography-41.0.4-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:0d9409894f495d465fe6fda92cb70e8323e9648af912d5b9141d616df40a87b8"},
+ {file = "cryptography-41.0.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:8ac4f9ead4bbd0bc8ab2d318f97d85147167a488be0e08814a37eb2f439d5cf6"},
+ {file = "cryptography-41.0.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:047c4603aeb4bbd8db2756e38f5b8bd7e94318c047cfe4efeb5d715e08b49311"},
+ {file = "cryptography-41.0.4.tar.gz", hash = "sha256:7febc3094125fc126a7f6fb1f420d0da639f3f32cb15c8ff0dc3997c4549f51a"},
+]
+
+[package.dependencies]
+cffi = ">=1.12"
+
+[package.extras]
+docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"]
+docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"]
+nox = ["nox"]
+pep8test = ["black", "check-sdist", "mypy", "ruff"]
+sdist = ["build"]
+ssh = ["bcrypt (>=3.1.5)"]
+test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"]
+test-randomorder = ["pytest-randomly"]
+
+[[package]]
+name = "dnspython"
+version = "2.4.2"
+description = "DNS toolkit"
+category = "main"
+optional = false
+python-versions = ">=3.8,<4.0"
+files = [
+ {file = "dnspython-2.4.2-py3-none-any.whl", hash = "sha256:57c6fbaaeaaf39c891292012060beb141791735dbb4004798328fc2c467402d8"},
+ {file = "dnspython-2.4.2.tar.gz", hash = "sha256:8dcfae8c7460a2f84b4072e26f1c9f4101ca20c071649cb7c34e8b6a93d58984"},
+]
+
+[package.extras]
+dnssec = ["cryptography (>=2.6,<42.0)"]
+doh = ["h2 (>=4.1.0)", "httpcore (>=0.17.3)", "httpx (>=0.24.1)"]
+doq = ["aioquic (>=0.9.20)"]
+idna = ["idna (>=2.1,<4.0)"]
+trio = ["trio (>=0.14,<0.23)"]
+wmi = ["wmi (>=1.5.1,<2.0.0)"]
+
[[package]]
name = "ecdsa"
version = "0.18.0"
description = "ECDSA cryptographic signature library (pure python)"
+category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
@@ -254,66 +820,320 @@ six = ">=1.9.0"
gmpy = ["gmpy"]
gmpy2 = ["gmpy2"]
+[[package]]
+name = "email-validator"
+version = "2.0.0.post2"
+description = "A robust email address syntax and deliverability validation library."
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "email_validator-2.0.0.post2-py3-none-any.whl", hash = "sha256:2466ba57cda361fb7309fd3d5a225723c788ca4bbad32a0ebd5373b99730285c"},
+ {file = "email_validator-2.0.0.post2.tar.gz", hash = "sha256:1ff6e86044200c56ae23595695c54e9614f4a9551e0e393614f764860b3d7900"},
+]
+
+[package.dependencies]
+dnspython = ">=2.0.0"
+idna = ">=2.0.0"
+
+[[package]]
+name = "fastapi"
+version = "0.99.1"
+description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "fastapi-0.99.1-py3-none-any.whl", hash = "sha256:976df7bab51ac7beda9f68c4513b8c4490b5c1135c72aafd0a5ee4023ec5282e"},
+ {file = "fastapi-0.99.1.tar.gz", hash = "sha256:ac78f717cd80d657bd183f94d33b9bda84aa376a46a9dab513586b8eef1dc6fc"},
+]
+
+[package.dependencies]
+pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0"
+starlette = ">=0.27.0,<0.28.0"
+typing-extensions = ">=4.5.0"
+
+[package.extras]
+all = ["email-validator (>=1.1.1)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "python-multipart (>=0.0.5)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"]
+
+[[package]]
+name = "fastapi-pagination"
+version = "0.12.10"
+description = "FastAPI pagination"
+category = "main"
+optional = false
+python-versions = ">=3.8,<4.0"
+files = [
+ {file = "fastapi_pagination-0.12.10-py3-none-any.whl", hash = "sha256:7a2fc9c0e019722d636f540f1b02c385be76216b89b44c1b8f0571d88aea398a"},
+ {file = "fastapi_pagination-0.12.10.tar.gz", hash = "sha256:44eff56b749b85235c02fc006b736d50932f0be55628a5240cb29b04adf74a8c"},
+]
+
+[package.dependencies]
+fastapi = ">=0.93.0"
+pydantic = ">=1.9.1"
+
+[package.extras]
+all = ["SQLAlchemy (>=1.3.20)", "asyncpg (>=0.24.0)", "beanie (>=1.11.9,<2.0.0)", "bunnet (>=1.1.0,<2.0.0)", "databases (>=0.6.0)", "django (<5.0.0)", "mongoengine (>=0.23.1,<0.28.0)", "motor (>=2.5.1,<4.0.0)", "orm (>=0.3.1)", "ormar (>=0.11.2)", "piccolo (>=0.89,<0.122)", "pony (>=0.7.16,<0.8.0)", "scylla-driver (>=3.25.6,<4.0.0)", "sqlakeyset (>=2.0.1680321678,<3.0.0)", "sqlmodel (>=0.0.8,<0.0.9)", "tortoise-orm (>=0.16.18,<0.21.0)"]
+asyncpg = ["SQLAlchemy (>=1.3.20)", "asyncpg (>=0.24.0)"]
+beanie = ["beanie (>=1.11.9,<2.0.0)"]
+bunnet = ["bunnet (>=1.1.0,<2.0.0)"]
+databases = ["databases (>=0.6.0)"]
+django = ["databases (>=0.6.0)", "django (<5.0.0)"]
+mongoengine = ["mongoengine (>=0.23.1,<0.28.0)"]
+motor = ["motor (>=2.5.1,<4.0.0)"]
+orm = ["databases (>=0.6.0)", "orm (>=0.3.1)"]
+ormar = ["ormar (>=0.11.2)"]
+piccolo = ["piccolo (>=0.89,<0.122)"]
+scylla-driver = ["scylla-driver (>=3.25.6,<4.0.0)"]
+sqlalchemy = ["SQLAlchemy (>=1.3.20)", "sqlakeyset (>=2.0.1680321678,<3.0.0)"]
+sqlmodel = ["sqlakeyset (>=2.0.1680321678,<3.0.0)", "sqlmodel (>=0.0.8,<0.0.9)"]
+tortoise = ["tortoise-orm (>=0.16.18,<0.21.0)"]
+
+[[package]]
+name = "frozenlist"
+version = "1.4.0"
+description = "A list-like structure which implements collections.abc.MutableSequence"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "frozenlist-1.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:764226ceef3125e53ea2cb275000e309c0aa5464d43bd72abd661e27fffc26ab"},
+ {file = "frozenlist-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d6484756b12f40003c6128bfcc3fa9f0d49a687e171186c2d85ec82e3758c559"},
+ {file = "frozenlist-1.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9ac08e601308e41eb533f232dbf6b7e4cea762f9f84f6357136eed926c15d12c"},
+ {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d081f13b095d74b67d550de04df1c756831f3b83dc9881c38985834387487f1b"},
+ {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:71932b597f9895f011f47f17d6428252fc728ba2ae6024e13c3398a087c2cdea"},
+ {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:981b9ab5a0a3178ff413bca62526bb784249421c24ad7381e39d67981be2c326"},
+ {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e41f3de4df3e80de75845d3e743b3f1c4c8613c3997a912dbf0229fc61a8b963"},
+ {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6918d49b1f90821e93069682c06ffde41829c346c66b721e65a5c62b4bab0300"},
+ {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e5c8764c7829343d919cc2dfc587a8db01c4f70a4ebbc49abde5d4b158b007b"},
+ {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8d0edd6b1c7fb94922bf569c9b092ee187a83f03fb1a63076e7774b60f9481a8"},
+ {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e29cda763f752553fa14c68fb2195150bfab22b352572cb36c43c47bedba70eb"},
+ {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:0c7c1b47859ee2cac3846fde1c1dc0f15da6cec5a0e5c72d101e0f83dcb67ff9"},
+ {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:901289d524fdd571be1c7be054f48b1f88ce8dddcbdf1ec698b27d4b8b9e5d62"},
+ {file = "frozenlist-1.4.0-cp310-cp310-win32.whl", hash = "sha256:1a0848b52815006ea6596c395f87449f693dc419061cc21e970f139d466dc0a0"},
+ {file = "frozenlist-1.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:b206646d176a007466358aa21d85cd8600a415c67c9bd15403336c331a10d956"},
+ {file = "frozenlist-1.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:de343e75f40e972bae1ef6090267f8260c1446a1695e77096db6cfa25e759a95"},
+ {file = "frozenlist-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad2a9eb6d9839ae241701d0918f54c51365a51407fd80f6b8289e2dfca977cc3"},
+ {file = "frozenlist-1.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bd7bd3b3830247580de99c99ea2a01416dfc3c34471ca1298bccabf86d0ff4dc"},
+ {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdf1847068c362f16b353163391210269e4f0569a3c166bc6a9f74ccbfc7e839"},
+ {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38461d02d66de17455072c9ba981d35f1d2a73024bee7790ac2f9e361ef1cd0c"},
+ {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5a32087d720c608f42caed0ef36d2b3ea61a9d09ee59a5142d6070da9041b8f"},
+ {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd65632acaf0d47608190a71bfe46b209719bf2beb59507db08ccdbe712f969b"},
+ {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261b9f5d17cac914531331ff1b1d452125bf5daa05faf73b71d935485b0c510b"},
+ {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b89ac9768b82205936771f8d2eb3ce88503b1556324c9f903e7156669f521472"},
+ {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:008eb8b31b3ea6896da16c38c1b136cb9fec9e249e77f6211d479db79a4eaf01"},
+ {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e74b0506fa5aa5598ac6a975a12aa8928cbb58e1f5ac8360792ef15de1aa848f"},
+ {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:490132667476f6781b4c9458298b0c1cddf237488abd228b0b3650e5ecba7467"},
+ {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:76d4711f6f6d08551a7e9ef28c722f4a50dd0fc204c56b4bcd95c6cc05ce6fbb"},
+ {file = "frozenlist-1.4.0-cp311-cp311-win32.whl", hash = "sha256:a02eb8ab2b8f200179b5f62b59757685ae9987996ae549ccf30f983f40602431"},
+ {file = "frozenlist-1.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:515e1abc578dd3b275d6a5114030b1330ba044ffba03f94091842852f806f1c1"},
+ {file = "frozenlist-1.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f0ed05f5079c708fe74bf9027e95125334b6978bf07fd5ab923e9e55e5fbb9d3"},
+ {file = "frozenlist-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ca265542ca427bf97aed183c1676e2a9c66942e822b14dc6e5f42e038f92a503"},
+ {file = "frozenlist-1.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:491e014f5c43656da08958808588cc6c016847b4360e327a62cb308c791bd2d9"},
+ {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17ae5cd0f333f94f2e03aaf140bb762c64783935cc764ff9c82dff626089bebf"},
+ {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e78fb68cf9c1a6aa4a9a12e960a5c9dfbdb89b3695197aa7064705662515de2"},
+ {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5655a942f5f5d2c9ed93d72148226d75369b4f6952680211972a33e59b1dfdc"},
+ {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c11b0746f5d946fecf750428a95f3e9ebe792c1ee3b1e96eeba145dc631a9672"},
+ {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e66d2a64d44d50d2543405fb183a21f76b3b5fd16f130f5c99187c3fb4e64919"},
+ {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:88f7bc0fcca81f985f78dd0fa68d2c75abf8272b1f5c323ea4a01a4d7a614efc"},
+ {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5833593c25ac59ede40ed4de6d67eb42928cca97f26feea219f21d0ed0959b79"},
+ {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:fec520865f42e5c7f050c2a79038897b1c7d1595e907a9e08e3353293ffc948e"},
+ {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:b826d97e4276750beca7c8f0f1a4938892697a6bcd8ec8217b3312dad6982781"},
+ {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ceb6ec0a10c65540421e20ebd29083c50e6d1143278746a4ef6bcf6153171eb8"},
+ {file = "frozenlist-1.4.0-cp38-cp38-win32.whl", hash = "sha256:2b8bcf994563466db019fab287ff390fffbfdb4f905fc77bc1c1d604b1c689cc"},
+ {file = "frozenlist-1.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:a6c8097e01886188e5be3e6b14e94ab365f384736aa1fca6a0b9e35bd4a30bc7"},
+ {file = "frozenlist-1.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6c38721585f285203e4b4132a352eb3daa19121a035f3182e08e437cface44bf"},
+ {file = "frozenlist-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a0c6da9aee33ff0b1a451e867da0c1f47408112b3391dd43133838339e410963"},
+ {file = "frozenlist-1.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93ea75c050c5bb3d98016b4ba2497851eadf0ac154d88a67d7a6816206f6fa7f"},
+ {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f61e2dc5ad442c52b4887f1fdc112f97caeff4d9e6ebe78879364ac59f1663e1"},
+ {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa384489fefeb62321b238e64c07ef48398fe80f9e1e6afeff22e140e0850eef"},
+ {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10ff5faaa22786315ef57097a279b833ecab1a0bfb07d604c9cbb1c4cdc2ed87"},
+ {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:007df07a6e3eb3e33e9a1fe6a9db7af152bbd8a185f9aaa6ece10a3529e3e1c6"},
+ {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f4f399d28478d1f604c2ff9119907af9726aed73680e5ed1ca634d377abb087"},
+ {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5374b80521d3d3f2ec5572e05adc94601985cc526fb276d0c8574a6d749f1b3"},
+ {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ce31ae3e19f3c902de379cf1323d90c649425b86de7bbdf82871b8a2a0615f3d"},
+ {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7211ef110a9194b6042449431e08c4d80c0481e5891e58d429df5899690511c2"},
+ {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:556de4430ce324c836789fa4560ca62d1591d2538b8ceb0b4f68fb7b2384a27a"},
+ {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7645a8e814a3ee34a89c4a372011dcd817964ce8cb273c8ed6119d706e9613e3"},
+ {file = "frozenlist-1.4.0-cp39-cp39-win32.whl", hash = "sha256:19488c57c12d4e8095a922f328df3f179c820c212940a498623ed39160bc3c2f"},
+ {file = "frozenlist-1.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:6221d84d463fb110bdd7619b69cb43878a11d51cbb9394ae3105d082d5199167"},
+ {file = "frozenlist-1.4.0.tar.gz", hash = "sha256:09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251"},
+]
+
+[[package]]
+name = "ghp-import"
+version = "2.1.0"
+description = "Copy your docs directly to the gh-pages branch."
+category = "dev"
+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 = "greenlet"
+version = "2.0.2"
+description = "Lightweight in-process concurrent programming"
+category = "main"
+optional = false
+python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"
+files = [
+ {file = "greenlet-2.0.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:bdfea8c661e80d3c1c99ad7c3ff74e6e87184895bbaca6ee8cc61209f8b9b85d"},
+ {file = "greenlet-2.0.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9d14b83fab60d5e8abe587d51c75b252bcc21683f24699ada8fb275d7712f5a9"},
+ {file = "greenlet-2.0.2-cp27-cp27m-win32.whl", hash = "sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74"},
+ {file = "greenlet-2.0.2-cp27-cp27m-win_amd64.whl", hash = "sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343"},
+ {file = "greenlet-2.0.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae"},
+ {file = "greenlet-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d967650d3f56af314b72df7089d96cda1083a7fc2da05b375d2bc48c82ab3f3c"},
+ {file = "greenlet-2.0.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df"},
+ {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088"},
+ {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb"},
+ {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470"},
+ {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a51c9751078733d88e013587b108f1b7a1fb106d402fb390740f002b6f6551a"},
+ {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91"},
+ {file = "greenlet-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645"},
+ {file = "greenlet-2.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c"},
+ {file = "greenlet-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d4606a527e30548153be1a9f155f4e283d109ffba663a15856089fb55f933e47"},
+ {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca"},
+ {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0"},
+ {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2"},
+ {file = "greenlet-2.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19"},
+ {file = "greenlet-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5454276c07d27a740c5892f4907c86327b632127dd9abec42ee62e12427ff7e3"},
+ {file = "greenlet-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5"},
+ {file = "greenlet-2.0.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6"},
+ {file = "greenlet-2.0.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43"},
+ {file = "greenlet-2.0.2-cp35-cp35m-win32.whl", hash = "sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a"},
+ {file = "greenlet-2.0.2-cp35-cp35m-win_amd64.whl", hash = "sha256:4b58adb399c4d61d912c4c331984d60eb66565175cdf4a34792cd9600f21b394"},
+ {file = "greenlet-2.0.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:703f18f3fda276b9a916f0934d2fb6d989bf0b4fb5a64825260eb9bfd52d78f0"},
+ {file = "greenlet-2.0.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:32e5b64b148966d9cccc2c8d35a671409e45f195864560829f395a54226408d3"},
+ {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dd11f291565a81d71dab10b7033395b7a3a5456e637cf997a6f33ebdf06f8db"},
+ {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099"},
+ {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75"},
+ {file = "greenlet-2.0.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:3c9b12575734155d0c09d6c3e10dbd81665d5c18e1a7c6597df72fd05990c8cf"},
+ {file = "greenlet-2.0.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b9ec052b06a0524f0e35bd8790686a1da006bd911dd1ef7d50b77bfbad74e292"},
+ {file = "greenlet-2.0.2-cp36-cp36m-win32.whl", hash = "sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9"},
+ {file = "greenlet-2.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:9f35ec95538f50292f6d8f2c9c9f8a3c6540bbfec21c9e5b4b751e0a7c20864f"},
+ {file = "greenlet-2.0.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b"},
+ {file = "greenlet-2.0.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1"},
+ {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7"},
+ {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2780572ec463d44c1d3ae850239508dbeb9fed38e294c68d19a24d925d9223ca"},
+ {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:937e9020b514ceedb9c830c55d5c9872abc90f4b5862f89c0887033ae33c6f73"},
+ {file = "greenlet-2.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:36abbf031e1c0f79dd5d596bfaf8e921c41df2bdf54ee1eed921ce1f52999a86"},
+ {file = "greenlet-2.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33"},
+ {file = "greenlet-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7"},
+ {file = "greenlet-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3"},
+ {file = "greenlet-2.0.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30"},
+ {file = "greenlet-2.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1087300cf9700bbf455b1b97e24db18f2f77b55302a68272c56209d5587c12d1"},
+ {file = "greenlet-2.0.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b"},
+ {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526"},
+ {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b"},
+ {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acd2162a36d3de67ee896c43effcd5ee3de247eb00354db411feb025aa319857"},
+ {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a"},
+ {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a"},
+ {file = "greenlet-2.0.2-cp38-cp38-win32.whl", hash = "sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249"},
+ {file = "greenlet-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40"},
+ {file = "greenlet-2.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8512a0c38cfd4e66a858ddd1b17705587900dd760c6003998e9472b77b56d417"},
+ {file = "greenlet-2.0.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8"},
+ {file = "greenlet-2.0.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6"},
+ {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df"},
+ {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be4ed120b52ae4d974aa40215fcdfde9194d63541c7ded40ee12eb4dda57b76b"},
+ {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94c817e84245513926588caf1152e3b559ff794d505555211ca041f032abbb6b"},
+ {file = "greenlet-2.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8"},
+ {file = "greenlet-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9"},
+ {file = "greenlet-2.0.2-cp39-cp39-win32.whl", hash = "sha256:ea9872c80c132f4663822dd2a08d404073a5a9b5ba6155bea72fb2a79d1093b5"},
+ {file = "greenlet-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564"},
+ {file = "greenlet-2.0.2.tar.gz", hash = "sha256:e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0"},
+]
+
+[package.extras]
+docs = ["Sphinx", "docutils (<0.18)"]
+test = ["objgraph", "psutil"]
+
+[[package]]
+name = "griffe"
+version = "0.36.7"
+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."
+category = "dev"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "griffe-0.36.7-py3-none-any.whl", hash = "sha256:7a09f8e9b97c7ebe227f6529a298bf7e0e742a9837ee261cc8260d50b4aa039f"},
+ {file = "griffe-0.36.7.tar.gz", hash = "sha256:a6fe60b16720ca0cf63c9e667a4c05eea40dfe4abcf114741885f945b74c7071"},
+]
+
+[package.dependencies]
+colorama = ">=0.4"
+
[[package]]
name = "h11"
-version = "0.12.0"
+version = "0.14.0"
description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+category = "main"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
files = [
- {file = "h11-0.12.0-py3-none-any.whl", hash = "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6"},
- {file = "h11-0.12.0.tar.gz", hash = "sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042"},
+ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
+ {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
]
[[package]]
name = "httpcore"
-version = "0.14.7"
+version = "0.17.3"
description = "A minimal low-level HTTP client."
+category = "main"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
files = [
- {file = "httpcore-0.14.7-py3-none-any.whl", hash = "sha256:47d772f754359e56dd9d892d9593b6f9870a37aeb8ba51e9a88b09b3d68cfade"},
- {file = "httpcore-0.14.7.tar.gz", hash = "sha256:7503ec1c0f559066e7e39bc4003fd2ce023d01cf51793e3c173b864eb456ead1"},
+ {file = "httpcore-0.17.3-py3-none-any.whl", hash = "sha256:c2789b767ddddfa2a5782e3199b2b7f6894540b17b16ec26b2c4d8e103510b87"},
+ {file = "httpcore-0.17.3.tar.gz", hash = "sha256:a6f30213335e34c1ade7be6ec7c47f19f50c56db36abef1a9dfa3815b1cb3888"},
]
[package.dependencies]
-anyio = "==3.*"
+anyio = ">=3.0,<5.0"
certifi = "*"
-h11 = ">=0.11,<0.13"
-sniffio = "==1.*"
+h11 = ">=0.13,<0.15"
+sniffio = ">=1.0.0,<2.0.0"
[package.extras]
http2 = ["h2 (>=3,<5)"]
-socks = ["socksio (==1.*)"]
+socks = ["socksio (>=1.0.0,<2.0.0)"]
[[package]]
name = "httpx"
-version = "0.22.0"
+version = "0.24.1"
description = "The next generation HTTP client."
+category = "main"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
files = [
- {file = "httpx-0.22.0-py3-none-any.whl", hash = "sha256:e35e83d1d2b9b2a609ef367cc4c1e66fd80b750348b20cc9e19d1952fc2ca3f6"},
- {file = "httpx-0.22.0.tar.gz", hash = "sha256:d8e778f76d9bbd46af49e7f062467e3157a5a3d2ae4876a4bbfd8a51ed9c9cb4"},
+ {file = "httpx-0.24.1-py3-none-any.whl", hash = "sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd"},
+ {file = "httpx-0.24.1.tar.gz", hash = "sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd"},
]
[package.dependencies]
certifi = "*"
-charset-normalizer = "*"
-httpcore = ">=0.14.5,<0.15.0"
-rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]}
+httpcore = ">=0.15.0,<0.18.0"
+idna = "*"
sniffio = "*"
[package.extras]
brotli = ["brotli", "brotlicffi"]
-cli = ["click (==8.*)", "pygments (==2.*)", "rich (==10.*)"]
+cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<14)"]
http2 = ["h2 (>=3,<5)"]
-socks = ["socksio (==1.*)"]
+socks = ["socksio (>=1.0.0,<2.0.0)"]
[[package]]
name = "idna"
version = "3.4"
description = "Internationalized Domain Names in Applications (IDNA)"
+category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -321,40 +1141,72 @@ files = [
{file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
]
-[[package]]
-name = "imagesize"
-version = "1.4.1"
-description = "Getting image size from png/jpeg/jpeg2000/gif file"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-files = [
- {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"},
- {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"},
-]
-
[[package]]
name = "importlib-metadata"
-version = "6.0.0"
+version = "4.13.0"
description = "Read metadata from Python packages"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "importlib_metadata-6.0.0-py3-none-any.whl", hash = "sha256:7efb448ec9a5e313a57655d35aa54cd3e01b7e1fbcf72dce1bf06119420f5bad"},
- {file = "importlib_metadata-6.0.0.tar.gz", hash = "sha256:e354bedeb60efa6affdcc8ae121b73544a7aa74156d047311948f6d711cd378d"},
+ {file = "importlib_metadata-4.13.0-py3-none-any.whl", hash = "sha256:8a8a81bcf996e74fee46f0d16bd3eaa382a7eb20fd82445c3ad11f4090334116"},
+ {file = "importlib_metadata-4.13.0.tar.gz", hash = "sha256:dd0173e8f150d6815e098fd354f6414b0f079af4644ddfe90c71e2fc6174346d"},
]
[package.dependencies]
zipp = ">=0.5"
[package.extras]
-docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
+docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"]
perf = ["ipython"]
testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"]
+[[package]]
+name = "inflection"
+version = "0.5.1"
+description = "A port of Ruby on Rails inflector to Python"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2"},
+ {file = "inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417"},
+]
+
+[[package]]
+name = "iniconfig"
+version = "2.0.0"
+description = "brain-dead simple config-ini parsing"
+category = "main"
+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 = "inquirer"
+version = "3.1.3"
+description = "Collection of common interactive command line user interfaces, based on Inquirer.js"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "inquirer-3.1.3-py3-none-any.whl", hash = "sha256:a7441fd74d06fcac4385218a1f5e8703f7a113f7944e01af47b8c58e84f95ce5"},
+ {file = "inquirer-3.1.3.tar.gz", hash = "sha256:aac309406f5b49d4b8ab7c6872117f43bf082a552dc256aa16bc95e16bb58bec"},
+]
+
+[package.dependencies]
+blessed = ">=1.19.0"
+python-editor = ">=1.0.4"
+readchar = ">=3.0.6"
+
[[package]]
name = "isort"
version = "5.12.0"
description = "A Python utility / library to sort Python imports."
+category = "dev"
optional = false
python-versions = ">=3.8.0"
files = [
@@ -372,6 +1224,7 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"]
name = "jinja2"
version = "3.1.2"
description = "A very fast and expressive template engine."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -386,45 +1239,157 @@ MarkupSafe = ">=2.0"
i18n = ["Babel (>=2.7)"]
[[package]]
-name = "jobbergate-core"
-version = "4.0.0a1"
-description = "Jobbergate Core"
+name = "jinxed"
+version = "1.2.0"
+description = "Jinxed Terminal Library"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "jinxed-1.2.0-py2.py3-none-any.whl", hash = "sha256:cfc2b2e4e3b4326954d546ba6d6b9a7a796ddcb0aef8d03161d005177eb0d48b"},
+ {file = "jinxed-1.2.0.tar.gz", hash = "sha256:032acda92d5c57cd216033cbbd53de731e6ed50deb63eb4781336ca55f72cda5"},
+]
+
+[package.dependencies]
+ansicon = {version = "*", markers = "platform_system == \"Windows\""}
+
+[[package]]
+name = "jmespath"
+version = "1.0.1"
+description = "JSON Matching Expressions"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"},
+ {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"},
+]
+
+[[package]]
+name = "jobbergate-agent"
+version = "4.1.0a2"
+description = "Jobbergate Agent"
+category = "main"
optional = false
python-versions = "^3.8"
files = []
develop = true
[package.dependencies]
-httpx = "^0.22.0"
+apscheduler = "3.10.3"
+httpx = "0.24.1"
+jobbergate-core = {path = "../jobbergate-core", develop = true}
+loguru = "0.6.0"
+pendulum = "^2.1.2"
+py-buzz = "^4.0.0"
+pydantic = "1.10.12"
+pyjwt = "^2.8.0"
+python-dotenv = "^1.0.0"
+python-jose = "3.3.0"
+sentry-sdk = "^1.1.0"
+
+[package.source]
+type = "directory"
+url = "../jobbergate-agent"
+
+[[package]]
+name = "jobbergate-api"
+version = "4.1.0a2"
+description = "Jobbergate API"
+category = "main"
+optional = false
+python-versions = "^3.11"
+files = []
+develop = true
+
+[package.dependencies]
+aioboto3 = "^11.2"
+alembic = "^1.10.0"
+armasec = "^1.0"
+asyncpg = "^0.27.0"
+bidict = "^0.22.0"
+fastapi = "^0.99.0"
+fastapi-pagination = "^0.12.4"
+greenlet = "^2.0.1"
+httpx = "^0.24.1"
+inflection = "^0.5.1"
+Jinja2 = "^3.1.2"
loguru = "^0.6.0"
+nest-asyncio = "^1.5.7"
pendulum = "^2.1.2"
-py-buzz = "^3.1.0"
-pydantic = "^1.8.2"
+py-buzz = "^4.0.0"
+pydantic = {version = "^1.10.12", extras = ["email"]}
+python-dotenv = "^1.0.0"
+python-multipart = "^0.0.6"
+sendgrid = "^6.9.7"
+sentry-sdk = "^1.29.2"
+snick = "^1.3.0"
+sqlalchemy = {version = "^2.0.19", extras = ["mypy"]}
+uvicorn = "^0.23.0"
+yarl = "^1.7.2"
+
+[package.source]
+type = "directory"
+url = "../jobbergate-api"
+
+[[package]]
+name = "jobbergate-cli"
+version = "4.1.0a2"
+description = "Jobbergate CLI Client"
+category = "main"
+optional = false
+python-versions = "^3.8.1"
+files = []
+develop = true
+
+[package.dependencies]
+click = "^8.1.0"
+httpx = "^0.24.1"
+importlib-metadata = "^4.2"
+inquirer = "^3.1.0"
+loguru = "^0.6.0"
+pendulum = "^2.1.2"
+py-buzz = "^4.0.0"
+pydantic = "^1.10.12"
+pyperclip = "^1.8.2"
+python-dotenv = "^1.0.0"
python-jose = "^3.3.0"
+PyYAML = "6.*"
+rich = "^11.2.0"
+sentry-sdk = "^1.29.2"
+typer = "^0.9.0"
[package.source]
type = "directory"
-url = "../jobbergate-core"
+url = "../jobbergate-cli"
[[package]]
-name = "livereload"
-version = "2.6.3"
-description = "Python LiveReload is an awesome tool for web developers"
+name = "jobbergate-core"
+version = "4.1.0a2"
+description = "Jobbergate Core"
+category = "main"
optional = false
-python-versions = "*"
-files = [
- {file = "livereload-2.6.3-py2.py3-none-any.whl", hash = "sha256:ad4ac6f53b2d62bb6ce1a5e6e96f1f00976a32348afedcb4b6d68df2a1d346e4"},
- {file = "livereload-2.6.3.tar.gz", hash = "sha256:776f2f865e59fde56490a56bcc6773b6917366bce0c267c60ee8aaf1a0959869"},
-]
+python-versions = "^3.8"
+files = []
+develop = true
[package.dependencies]
-six = "*"
-tornado = {version = "*", markers = "python_version > \"2.7\""}
+httpx = "^0.24.1"
+loguru = "^0.6.0"
+pendulum = "^2.1.2"
+py-buzz = "^4.0.0"
+pydantic = "^1.8.2"
+python-jose = "^3.3.0"
+
+[package.source]
+type = "directory"
+url = "../jobbergate-core"
[[package]]
name = "loguru"
version = "0.6.0"
description = "Python logging made (stupidly) simple"
+category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -439,69 +1404,390 @@ win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""}
[package.extras]
dev = ["Sphinx (>=4.1.1)", "black (>=19.10b0)", "colorama (>=0.3.4)", "docutils (==0.16)", "flake8 (>=3.7.7)", "isort (>=5.1.1)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "tox (>=3.9.0)"]
+[[package]]
+name = "mako"
+version = "1.2.4"
+description = "A super-fast templating language that borrows the best ideas from the existing templating languages."
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Mako-1.2.4-py3-none-any.whl", hash = "sha256:c97c79c018b9165ac9922ae4f32da095ffd3c4e6872b45eded42926deea46818"},
+ {file = "Mako-1.2.4.tar.gz", hash = "sha256:d60a3903dc3bb01a18ad6a89cdbe2e4eadc69c0bc8ef1e3773ba53d44c3f7a34"},
+]
+
+[package.dependencies]
+MarkupSafe = ">=0.9.2"
+
+[package.extras]
+babel = ["Babel"]
+lingua = ["lingua"]
+testing = ["pytest"]
+
+[[package]]
+name = "markdown"
+version = "3.5"
+description = "Python implementation of John Gruber's Markdown."
+category = "dev"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "Markdown-3.5-py3-none-any.whl", hash = "sha256:4afb124395ce5fc34e6d9886dab977fd9ae987fc6e85689f08278cf0c69d4bf3"},
+ {file = "Markdown-3.5.tar.gz", hash = "sha256:a807eb2e4778d9156c8f07876c6e4d50b5494c5665c4834f67b06459dfd877b3"},
+]
+
+[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 = "2.1.2"
+version = "2.1.3"
description = "Safely add untrusted strings to HTML/XML markup."
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"},
+ {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"},
+]
+
+[[package]]
+name = "mergedeep"
+version = "1.3.4"
+description = "A deep merge function for 🐍."
+category = "dev"
+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 = "mkdocs"
+version = "1.5.3"
+description = "Project documentation with Markdown."
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "mkdocs-1.5.3-py3-none-any.whl", hash = "sha256:3b3a78e736b31158d64dbb2f8ba29bd46a379d0c6e324c2246c3bc3d2189cfc1"},
+ {file = "mkdocs-1.5.3.tar.gz", hash = "sha256:eb7c99214dcb945313ba30426c2451b735992c73c2e10838f76d09e39ff4d0e2"},
+]
+
+[package.dependencies]
+click = ">=7.0"
+colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""}
+ghp-import = ">=1.0"
+jinja2 = ">=2.11.1"
+markdown = ">=3.2.1"
+markupsafe = ">=2.0.1"
+mergedeep = ">=1.3.4"
+packaging = ">=20.5"
+pathspec = ">=0.11.1"
+platformdirs = ">=2.2.0"
+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.3)", "jinja2 (==2.11.1)", "markdown (==3.2.1)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "packaging (==20.5)", "pathspec (==0.11.1)", "platformdirs (==2.2.0)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "typing-extensions (==3.10)", "watchdog (==2.0)"]
+
+[[package]]
+name = "mkdocs-autorefs"
+version = "0.5.0"
+description = "Automatically link across pages in MkDocs."
+category = "dev"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "mkdocs_autorefs-0.5.0-py3-none-any.whl", hash = "sha256:7930fcb8ac1249f10e683967aeaddc0af49d90702af111a5e390e8b20b3d97ff"},
+ {file = "mkdocs_autorefs-0.5.0.tar.gz", hash = "sha256:9a5054a94c08d28855cfab967ada10ed5be76e2bfad642302a610b252c3274c0"},
+]
+
+[package.dependencies]
+Markdown = ">=3.3"
+mkdocs = ">=1.1"
+
+[[package]]
+name = "mkdocs-material"
+version = "9.4.6"
+description = "Documentation that simply works"
+category = "dev"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "mkdocs_material-9.4.6-py3-none-any.whl", hash = "sha256:78802035d5768a78139c84ad7dce0c6493e8f7dc4861727d36ed91d1520a54da"},
+ {file = "mkdocs_material-9.4.6.tar.gz", hash = "sha256:09665e60df7ee9e5ff3a54af173f6d45be718b1ee7dd962bcff3102b81fb0c14"},
+]
+
+[package.dependencies]
+babel = ">=2.10,<3.0"
+colorama = ">=0.4,<1.0"
+jinja2 = ">=3.0,<4.0"
+markdown = ">=3.2,<4.0"
+mkdocs = ">=1.5.3,<2.0"
+mkdocs-material-extensions = ">=1.2,<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,<2.0)"]
+imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=9.4,<10.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"
+description = "Extension pack for Python Markdown and MkDocs Material."
+category = "dev"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "mkdocs_material_extensions-1.3-py3-none-any.whl", hash = "sha256:0297cc48ba68a9fdd1ef3780a3b41b534b0d0df1d1181a44676fda5f464eeadc"},
+ {file = "mkdocs_material_extensions-1.3.tar.gz", hash = "sha256:f0446091503acb110a7cab9349cbc90eeac51b58d1caa92a704a81ca1e24ddbd"},
+]
+
+[[package]]
+name = "mkdocstrings"
+version = "0.23.0"
+description = "Automatic documentation from sources, for MkDocs."
+category = "dev"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "mkdocstrings-0.23.0-py3-none-any.whl", hash = "sha256:051fa4014dfcd9ed90254ae91de2dbb4f24e166347dae7be9a997fe16316c65e"},
+ {file = "mkdocstrings-0.23.0.tar.gz", hash = "sha256:d9c6a37ffbe7c14a7a54ef1258c70b8d394e6a33a1c80832bce40b9567138d1c"},
+]
+
+[package.dependencies]
+Jinja2 = ">=2.11.1"
+Markdown = ">=3.3"
+MarkupSafe = ">=1.1"
+mkdocs = ">=1.2"
+mkdocs-autorefs = ">=0.3.1"
+mkdocstrings-python = {version = ">=0.5.2", optional = true, markers = "extra == \"python\""}
+pymdown-extensions = ">=6.3"
+
+[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.7.3"
+description = "A Python handler for mkdocstrings."
+category = "dev"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "mkdocstrings_python-1.7.3-py3-none-any.whl", hash = "sha256:2439d6ad3e34f0bb4c643b845fb3c06ae9233499a1736f9fa273424b75cc5894"},
+ {file = "mkdocstrings_python-1.7.3.tar.gz", hash = "sha256:c20128fa96c24dbc6437b10dfedaf33b0415d4503e51ce9ce5e84b271278268e"},
+]
+
+[package.dependencies]
+griffe = ">=0.35"
+mkdocstrings = ">=0.20"
+
+[[package]]
+name = "multidict"
+version = "6.0.4"
+description = "multidict implementation"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"},
- {file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"},
+ {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"},
+ {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"},
+ {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"},
+ {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"},
+ {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"},
+ {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"},
+ {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"},
+ {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"},
+ {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"},
+ {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"},
+ {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"},
+ {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"},
+ {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"},
+ {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"},
+ {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"},
+ {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"},
+ {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"},
+ {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"},
+ {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"},
+ {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"},
+ {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"},
+ {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"},
+ {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"},
+ {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"},
+ {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"},
+ {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"},
+ {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"},
+ {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"},
+ {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"},
+ {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"},
+ {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"},
+ {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"},
+ {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"},
+ {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"},
+ {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"},
+ {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"},
+ {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"},
+ {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"},
+ {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"},
+ {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"},
+ {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"},
+ {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"},
+ {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"},
+ {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"},
+ {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"},
+ {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"},
+ {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"},
+ {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"},
+ {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"},
+ {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"},
+ {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"},
+ {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"},
+ {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"},
+ {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"},
+ {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"},
+ {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"},
+ {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"},
+ {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"},
+ {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"},
+ {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"},
+ {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"},
+ {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"},
+ {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"},
+ {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"},
+ {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"},
+ {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"},
+ {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"},
+ {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"},
+ {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"},
+ {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"},
+ {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"},
+ {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"},
+ {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"},
+ {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"},
+]
+
+[[package]]
+name = "mypy"
+version = "1.6.1"
+description = "Optional static typing for Python"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "mypy-1.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e5012e5cc2ac628177eaac0e83d622b2dd499e28253d4107a08ecc59ede3fc2c"},
+ {file = "mypy-1.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d8fbb68711905f8912e5af474ca8b78d077447d8f3918997fecbf26943ff3cbb"},
+ {file = "mypy-1.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21a1ad938fee7d2d96ca666c77b7c494c3c5bd88dff792220e1afbebb2925b5e"},
+ {file = "mypy-1.6.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b96ae2c1279d1065413965c607712006205a9ac541895004a1e0d4f281f2ff9f"},
+ {file = "mypy-1.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:40b1844d2e8b232ed92e50a4bd11c48d2daa351f9deee6c194b83bf03e418b0c"},
+ {file = "mypy-1.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:81af8adaa5e3099469e7623436881eff6b3b06db5ef75e6f5b6d4871263547e5"},
+ {file = "mypy-1.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8c223fa57cb154c7eab5156856c231c3f5eace1e0bed9b32a24696b7ba3c3245"},
+ {file = "mypy-1.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8032e00ce71c3ceb93eeba63963b864bf635a18f6c0c12da6c13c450eedb183"},
+ {file = "mypy-1.6.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4c46b51de523817a0045b150ed11b56f9fff55f12b9edd0f3ed35b15a2809de0"},
+ {file = "mypy-1.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:19f905bcfd9e167159b3d63ecd8cb5e696151c3e59a1742e79bc3bcb540c42c7"},
+ {file = "mypy-1.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:82e469518d3e9a321912955cc702d418773a2fd1e91c651280a1bda10622f02f"},
+ {file = "mypy-1.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d4473c22cc296425bbbce7e9429588e76e05bc7342da359d6520b6427bf76660"},
+ {file = "mypy-1.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59a0d7d24dfb26729e0a068639a6ce3500e31d6655df8557156c51c1cb874ce7"},
+ {file = "mypy-1.6.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cfd13d47b29ed3bbaafaff7d8b21e90d827631afda134836962011acb5904b71"},
+ {file = "mypy-1.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:eb4f18589d196a4cbe5290b435d135dee96567e07c2b2d43b5c4621b6501531a"},
+ {file = "mypy-1.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:41697773aa0bf53ff917aa077e2cde7aa50254f28750f9b88884acea38a16169"},
+ {file = "mypy-1.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7274b0c57737bd3476d2229c6389b2ec9eefeb090bbaf77777e9d6b1b5a9d143"},
+ {file = "mypy-1.6.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbaf4662e498c8c2e352da5f5bca5ab29d378895fa2d980630656178bd607c46"},
+ {file = "mypy-1.6.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bb8ccb4724f7d8601938571bf3f24da0da791fe2db7be3d9e79849cb64e0ae85"},
+ {file = "mypy-1.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:68351911e85145f582b5aa6cd9ad666c8958bcae897a1bfda8f4940472463c45"},
+ {file = "mypy-1.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:49ae115da099dcc0922a7a895c1eec82c1518109ea5c162ed50e3b3594c71208"},
+ {file = "mypy-1.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8b27958f8c76bed8edaa63da0739d76e4e9ad4ed325c814f9b3851425582a3cd"},
+ {file = "mypy-1.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:925cd6a3b7b55dfba252b7c4561892311c5358c6b5a601847015a1ad4eb7d332"},
+ {file = "mypy-1.6.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8f57e6b6927a49550da3d122f0cb983d400f843a8a82e65b3b380d3d7259468f"},
+ {file = "mypy-1.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:a43ef1c8ddfdb9575691720b6352761f3f53d85f1b57d7745701041053deff30"},
+ {file = "mypy-1.6.1-py3-none-any.whl", hash = "sha256:4cbe68ef919c28ea561165206a2dcb68591c50f3bcf777932323bc208d949cf1"},
+ {file = "mypy-1.6.1.tar.gz", hash = "sha256:4d01c00d09a0be62a4ca3f933e315455bde83f37f892ba4b08ce92f3cf44bcc1"},
]
+[package.dependencies]
+mypy-extensions = ">=1.0.0"
+typing-extensions = ">=4.1.0"
+
+[package.extras]
+dmypy = ["psutil (>=4.0)"]
+install-types = ["pip"]
+reports = ["lxml"]
+
[[package]]
name = "mypy-extensions"
version = "1.0.0"
description = "Type system extensions for programs checked with the mypy type checker."
+category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -509,32 +1795,58 @@ files = [
{file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
]
+[[package]]
+name = "nest-asyncio"
+version = "1.5.8"
+description = "Patch asyncio to allow nested event loops"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "nest_asyncio-1.5.8-py3-none-any.whl", hash = "sha256:accda7a339a70599cb08f9dd09a67e0c2ef8d8d6f4c07f96ab203f2ae254e48d"},
+ {file = "nest_asyncio-1.5.8.tar.gz", hash = "sha256:25aa2ca0d2a5b5531956b9e273b45cf664cae2b145101d73b86b199978d48fdb"},
+]
+
[[package]]
name = "packaging"
-version = "23.0"
+version = "23.2"
description = "Core utilities for Python packages"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"},
- {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"},
+ {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
+ {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
+]
+
+[[package]]
+name = "paginate"
+version = "0.5.6"
+description = "Divides large result sets into pages for easier browsing"
+category = "dev"
+optional = false
+python-versions = "*"
+files = [
+ {file = "paginate-0.5.6.tar.gz", hash = "sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d"},
]
[[package]]
name = "pathspec"
-version = "0.11.0"
+version = "0.11.2"
description = "Utility library for gitignore style pattern matching of file paths."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "pathspec-0.11.0-py3-none-any.whl", hash = "sha256:3a66eb970cbac598f9e5ccb5b2cf58930cd8e3ed86d393d541eaf2d8b1705229"},
- {file = "pathspec-0.11.0.tar.gz", hash = "sha256:64d338d4e0914e91c1792321e6907b5a593f1ab1851de7fc269557a21b30ebbc"},
+ {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"},
+ {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"},
]
[[package]]
name = "pendulum"
version = "2.1.2"
description = "Python datetimes made easy"
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
@@ -567,159 +1879,282 @@ pytzdata = ">=2020.1"
[[package]]
name = "platformdirs"
-version = "3.0.0"
+version = "3.11.0"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "platformdirs-3.11.0-py3-none-any.whl", hash = "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"},
+ {file = "platformdirs-3.11.0.tar.gz", hash = "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3"},
+]
+
+[package.extras]
+docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"]
+
+[[package]]
+name = "pluggy"
+version = "1.3.0"
+description = "plugin and hook calling mechanisms for python"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"},
+ {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"},
+]
+
+[package.extras]
+dev = ["pre-commit", "tox"]
+testing = ["pytest", "pytest-benchmark"]
+
+[[package]]
+name = "pprintpp"
+version = "0.4.0"
+description = "A drop-in replacement for pprint that's actually pretty"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pprintpp-0.4.0-py2.py3-none-any.whl", hash = "sha256:b6b4dcdd0c0c0d75e4d7b2f21a9e933e5b2ce62b26e1a54537f9651ae5a5c01d"},
+ {file = "pprintpp-0.4.0.tar.gz", hash = "sha256:ea826108e2c7f49dc6d66c752973c3fc9749142a798d6b254e1e301cfdbc6403"},
+]
+
+[[package]]
+name = "py-buzz"
+version = "4.1.0"
+description = "\"That's not flying, it's falling with style\": Exceptions with extras"
+category = "main"
+optional = false
+python-versions = ">=3.8,<4.0"
+files = [
+ {file = "py_buzz-4.1.0-py3-none-any.whl", hash = "sha256:77dc0dc9c9923b6f8079dc2e2c3b4fbebd2308acaca1500f8eda2711cd308f97"},
+ {file = "py_buzz-4.1.0.tar.gz", hash = "sha256:ac11dba4922b2af114126044597d2fcd15e8c6a74368bed91f3c6732c8f09812"},
+]
+
+[[package]]
+name = "pyasn1"
+version = "0.5.0"
+description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)"
+category = "main"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7"
+files = [
+ {file = "pyasn1-0.5.0-py2.py3-none-any.whl", hash = "sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57"},
+ {file = "pyasn1-0.5.0.tar.gz", hash = "sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde"},
+]
+
+[[package]]
+name = "pycparser"
+version = "2.21"
+description = "C parser in Python"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
+ {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
+]
+
+[[package]]
+name = "pydantic"
+version = "1.10.12"
+description = "Data validation and settings management using python type hints"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pydantic-1.10.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a1fcb59f2f355ec350073af41d927bf83a63b50e640f4dbaa01053a28b7a7718"},
+ {file = "pydantic-1.10.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b7ccf02d7eb340b216ec33e53a3a629856afe1c6e0ef91d84a4e6f2fb2ca70fe"},
+ {file = "pydantic-1.10.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fb2aa3ab3728d950bcc885a2e9eff6c8fc40bc0b7bb434e555c215491bcf48b"},
+ {file = "pydantic-1.10.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:771735dc43cf8383959dc9b90aa281f0b6092321ca98677c5fb6125a6f56d58d"},
+ {file = "pydantic-1.10.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ca48477862372ac3770969b9d75f1bf66131d386dba79506c46d75e6b48c1e09"},
+ {file = "pydantic-1.10.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a5e7add47a5b5a40c49b3036d464e3c7802f8ae0d1e66035ea16aa5b7a3923ed"},
+ {file = "pydantic-1.10.12-cp310-cp310-win_amd64.whl", hash = "sha256:e4129b528c6baa99a429f97ce733fff478ec955513630e61b49804b6cf9b224a"},
+ {file = "pydantic-1.10.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b0d191db0f92dfcb1dec210ca244fdae5cbe918c6050b342d619c09d31eea0cc"},
+ {file = "pydantic-1.10.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:795e34e6cc065f8f498c89b894a3c6da294a936ee71e644e4bd44de048af1405"},
+ {file = "pydantic-1.10.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69328e15cfda2c392da4e713443c7dbffa1505bc9d566e71e55abe14c97ddc62"},
+ {file = "pydantic-1.10.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2031de0967c279df0d8a1c72b4ffc411ecd06bac607a212892757db7462fc494"},
+ {file = "pydantic-1.10.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ba5b2e6fe6ca2b7e013398bc7d7b170e21cce322d266ffcd57cca313e54fb246"},
+ {file = "pydantic-1.10.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2a7bac939fa326db1ab741c9d7f44c565a1d1e80908b3797f7f81a4f86bc8d33"},
+ {file = "pydantic-1.10.12-cp311-cp311-win_amd64.whl", hash = "sha256:87afda5539d5140cb8ba9e8b8c8865cb5b1463924d38490d73d3ccfd80896b3f"},
+ {file = "pydantic-1.10.12-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:549a8e3d81df0a85226963611950b12d2d334f214436a19537b2efed61b7639a"},
+ {file = "pydantic-1.10.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:598da88dfa127b666852bef6d0d796573a8cf5009ffd62104094a4fe39599565"},
+ {file = "pydantic-1.10.12-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba5c4a8552bff16c61882db58544116d021d0b31ee7c66958d14cf386a5b5350"},
+ {file = "pydantic-1.10.12-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c79e6a11a07da7374f46970410b41d5e266f7f38f6a17a9c4823db80dadf4303"},
+ {file = "pydantic-1.10.12-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab26038b8375581dc832a63c948f261ae0aa21f1d34c1293469f135fa92972a5"},
+ {file = "pydantic-1.10.12-cp37-cp37m-win_amd64.whl", hash = "sha256:e0a16d274b588767602b7646fa05af2782576a6cf1022f4ba74cbb4db66f6ca8"},
+ {file = "pydantic-1.10.12-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6a9dfa722316f4acf4460afdf5d41d5246a80e249c7ff475c43a3a1e9d75cf62"},
+ {file = "pydantic-1.10.12-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a73f489aebd0c2121ed974054cb2759af8a9f747de120acd2c3394cf84176ccb"},
+ {file = "pydantic-1.10.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b30bcb8cbfccfcf02acb8f1a261143fab622831d9c0989707e0e659f77a18e0"},
+ {file = "pydantic-1.10.12-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fcfb5296d7877af406ba1547dfde9943b1256d8928732267e2653c26938cd9c"},
+ {file = "pydantic-1.10.12-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2f9a6fab5f82ada41d56b0602606a5506aab165ca54e52bc4545028382ef1c5d"},
+ {file = "pydantic-1.10.12-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dea7adcc33d5d105896401a1f37d56b47d443a2b2605ff8a969a0ed5543f7e33"},
+ {file = "pydantic-1.10.12-cp38-cp38-win_amd64.whl", hash = "sha256:1eb2085c13bce1612da8537b2d90f549c8cbb05c67e8f22854e201bde5d98a47"},
+ {file = "pydantic-1.10.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ef6c96b2baa2100ec91a4b428f80d8f28a3c9e53568219b6c298c1125572ebc6"},
+ {file = "pydantic-1.10.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c076be61cd0177a8433c0adcb03475baf4ee91edf5a4e550161ad57fc90f523"},
+ {file = "pydantic-1.10.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5a58feb9a39f481eda4d5ca220aa8b9d4f21a41274760b9bc66bfd72595b86"},
+ {file = "pydantic-1.10.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5f805d2d5d0a41633651a73fa4ecdd0b3d7a49de4ec3fadf062fe16501ddbf1"},
+ {file = "pydantic-1.10.12-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1289c180abd4bd4555bb927c42ee42abc3aee02b0fb2d1223fb7c6e5bef87dbe"},
+ {file = "pydantic-1.10.12-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5d1197e462e0364906cbc19681605cb7c036f2475c899b6f296104ad42b9f5fb"},
+ {file = "pydantic-1.10.12-cp39-cp39-win_amd64.whl", hash = "sha256:fdbdd1d630195689f325c9ef1a12900524dceb503b00a987663ff4f58669b93d"},
+ {file = "pydantic-1.10.12-py3-none-any.whl", hash = "sha256:b749a43aa51e32839c9d71dc67eb1e4221bb04af1033a32e3923d46f9effa942"},
+ {file = "pydantic-1.10.12.tar.gz", hash = "sha256:0fe8a415cea8f340e7a9af9c54fc71a649b43e8ca3cc732986116b3cb135d303"},
+]
+
+[package.dependencies]
+email-validator = {version = ">=1.0.3", optional = true, markers = "extra == \"email\""}
+typing-extensions = ">=4.2.0"
+
+[package.extras]
+dotenv = ["python-dotenv (>=0.10.4)"]
+email = ["email-validator (>=1.0.3)"]
+
+[[package]]
+name = "pygments"
+version = "2.16.1"
+description = "Pygments is a syntax highlighting package written in Python."
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "platformdirs-3.0.0-py3-none-any.whl", hash = "sha256:b1d5eb14f221506f50d6604a561f4c5786d9e80355219694a1b244bcd96f4567"},
- {file = "platformdirs-3.0.0.tar.gz", hash = "sha256:8a1228abb1ef82d788f74139988b137e78692984ec7b08eaa6c65f1723af28f9"},
+ {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"},
+ {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"},
]
[package.extras]
-docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"]
-test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"]
+plugins = ["importlib-metadata"]
[[package]]
-name = "pockets"
-version = "0.9.1"
-description = "A collection of helpful Python tools!"
+name = "pyjwt"
+version = "2.8.0"
+description = "JSON Web Token implementation in Python"
+category = "main"
optional = false
-python-versions = "*"
+python-versions = ">=3.7"
files = [
- {file = "pockets-0.9.1-py2.py3-none-any.whl", hash = "sha256:68597934193c08a08eb2bf6a1d85593f627c22f9b065cc727a4f03f669d96d86"},
- {file = "pockets-0.9.1.tar.gz", hash = "sha256:9320f1a3c6f7a9133fe3b571f283bcf3353cd70249025ae8d618e40e9f7e92b3"},
+ {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"},
+ {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"},
]
-[package.dependencies]
-six = ">=1.5.2"
+[package.extras]
+crypto = ["cryptography (>=3.4.0)"]
+dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"]
+docs = ["sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"]
+tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"]
[[package]]
-name = "py-buzz"
-version = "3.2.1"
-description = "\"That's not flying, it's falling with style\": Exceptions with extras"
+name = "pymdown-extensions"
+version = "10.3"
+description = "Extension pack for Python Markdown."
+category = "dev"
optional = false
-python-versions = ">=3.6.2,<4.0.0"
+python-versions = ">=3.8"
files = [
- {file = "py-buzz-3.2.1.tar.gz", hash = "sha256:f4fc6a119d9d74bc60822cbdac65876423cd56d9911833968db1c9ee8e2ed069"},
- {file = "py_buzz-3.2.1-py3-none-any.whl", hash = "sha256:2dfc7dc9c7e19d49e0e75def2efad84510fcbf06dad538c8960faa50d39d34bf"},
+ {file = "pymdown_extensions-10.3-py3-none-any.whl", hash = "sha256:77a82c621c58a83efc49a389159181d570e370fff9f810d3a4766a75fc678b66"},
+ {file = "pymdown_extensions-10.3.tar.gz", hash = "sha256:94a0d8a03246712b64698af223848fd80aaf1ae4c4be29c8c61939b0467b5722"},
]
+[package.dependencies]
+markdown = ">=3.2"
+pyyaml = "*"
+
+[package.extras]
+extra = ["pygments (>=2.12)"]
+
[[package]]
-name = "pyasn1"
-version = "0.4.8"
-description = "ASN.1 types and codecs"
+name = "pyperclip"
+version = "1.8.2"
+description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)"
+category = "main"
optional = false
python-versions = "*"
files = [
- {file = "pyasn1-0.4.8-py2.py3-none-any.whl", hash = "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d"},
- {file = "pyasn1-0.4.8.tar.gz", hash = "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"},
+ {file = "pyperclip-1.8.2.tar.gz", hash = "sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57"},
]
[[package]]
-name = "pydantic"
-version = "1.10.5"
-description = "Data validation and settings management using python type hints"
+name = "pytest"
+version = "7.4.2"
+description = "pytest: simple powerful testing with Python"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "pydantic-1.10.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5920824fe1e21cbb3e38cf0f3dd24857c8959801d1031ce1fac1d50857a03bfb"},
- {file = "pydantic-1.10.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3bb99cf9655b377db1a9e47fa4479e3330ea96f4123c6c8200e482704bf1eda2"},
- {file = "pydantic-1.10.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2185a3b3d98ab4506a3f6707569802d2d92c3a7ba3a9a35683a7709ea6c2aaa2"},
- {file = "pydantic-1.10.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f582cac9d11c227c652d3ce8ee223d94eb06f4228b52a8adaafa9fa62e73d5c9"},
- {file = "pydantic-1.10.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c9e5b778b6842f135902e2d82624008c6a79710207e28e86966cd136c621bfee"},
- {file = "pydantic-1.10.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:72ef3783be8cbdef6bca034606a5de3862be6b72415dc5cb1fb8ddbac110049a"},
- {file = "pydantic-1.10.5-cp310-cp310-win_amd64.whl", hash = "sha256:45edea10b75d3da43cfda12f3792833a3fa70b6eee4db1ed6aed528cef17c74e"},
- {file = "pydantic-1.10.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:63200cd8af1af2c07964546b7bc8f217e8bda9d0a2ef0ee0c797b36353914984"},
- {file = "pydantic-1.10.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:305d0376c516b0dfa1dbefeae8c21042b57b496892d721905a6ec6b79494a66d"},
- {file = "pydantic-1.10.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fd326aff5d6c36f05735c7c9b3d5b0e933b4ca52ad0b6e4b38038d82703d35b"},
- {file = "pydantic-1.10.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bb0452d7b8516178c969d305d9630a3c9b8cf16fcf4713261c9ebd465af0d73"},
- {file = "pydantic-1.10.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9a9d9155e2a9f38b2eb9374c88f02fd4d6851ae17b65ee786a87d032f87008f8"},
- {file = "pydantic-1.10.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f836444b4c5ece128b23ec36a446c9ab7f9b0f7981d0d27e13a7c366ee163f8a"},
- {file = "pydantic-1.10.5-cp311-cp311-win_amd64.whl", hash = "sha256:8481dca324e1c7b715ce091a698b181054d22072e848b6fc7895cd86f79b4449"},
- {file = "pydantic-1.10.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:87f831e81ea0589cd18257f84386bf30154c5f4bed373b7b75e5cb0b5d53ea87"},
- {file = "pydantic-1.10.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ce1612e98c6326f10888df951a26ec1a577d8df49ddcaea87773bfbe23ba5cc"},
- {file = "pydantic-1.10.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58e41dd1e977531ac6073b11baac8c013f3cd8706a01d3dc74e86955be8b2c0c"},
- {file = "pydantic-1.10.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6a4b0aab29061262065bbdede617ef99cc5914d1bf0ddc8bcd8e3d7928d85bd6"},
- {file = "pydantic-1.10.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:36e44a4de37b8aecffa81c081dbfe42c4d2bf9f6dff34d03dce157ec65eb0f15"},
- {file = "pydantic-1.10.5-cp37-cp37m-win_amd64.whl", hash = "sha256:261f357f0aecda005934e413dfd7aa4077004a174dafe414a8325e6098a8e419"},
- {file = "pydantic-1.10.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b429f7c457aebb7fbe7cd69c418d1cd7c6fdc4d3c8697f45af78b8d5a7955760"},
- {file = "pydantic-1.10.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:663d2dd78596c5fa3eb996bc3f34b8c2a592648ad10008f98d1348be7ae212fb"},
- {file = "pydantic-1.10.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51782fd81f09edcf265823c3bf43ff36d00db246eca39ee765ef58dc8421a642"},
- {file = "pydantic-1.10.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c428c0f64a86661fb4873495c4fac430ec7a7cef2b8c1c28f3d1a7277f9ea5ab"},
- {file = "pydantic-1.10.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:76c930ad0746c70f0368c4596020b736ab65b473c1f9b3872310a835d852eb19"},
- {file = "pydantic-1.10.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3257bd714de9db2102b742570a56bf7978e90441193acac109b1f500290f5718"},
- {file = "pydantic-1.10.5-cp38-cp38-win_amd64.whl", hash = "sha256:f5bee6c523d13944a1fdc6f0525bc86dbbd94372f17b83fa6331aabacc8fd08e"},
- {file = "pydantic-1.10.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:532e97c35719f137ee5405bd3eeddc5c06eb91a032bc755a44e34a712420daf3"},
- {file = "pydantic-1.10.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ca9075ab3de9e48b75fa8ccb897c34ccc1519177ad8841d99f7fd74cf43be5bf"},
- {file = "pydantic-1.10.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd46a0e6296346c477e59a954da57beaf9c538da37b9df482e50f836e4a7d4bb"},
- {file = "pydantic-1.10.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3353072625ea2a9a6c81ad01b91e5c07fa70deb06368c71307529abf70d23325"},
- {file = "pydantic-1.10.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3f9d9b2be177c3cb6027cd67fbf323586417868c06c3c85d0d101703136e6b31"},
- {file = "pydantic-1.10.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b473d00ccd5c2061fd896ac127b7755baad233f8d996ea288af14ae09f8e0d1e"},
- {file = "pydantic-1.10.5-cp39-cp39-win_amd64.whl", hash = "sha256:5f3bc8f103b56a8c88021d481410874b1f13edf6e838da607dcb57ecff9b4594"},
- {file = "pydantic-1.10.5-py3-none-any.whl", hash = "sha256:7c5b94d598c90f2f46b3a983ffb46ab806a67099d118ae0da7ef21a2a4033b28"},
- {file = "pydantic-1.10.5.tar.gz", hash = "sha256:9e337ac83686645a46db0e825acceea8e02fca4062483f40e9ae178e8bd1103a"},
+ {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"},
+ {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"},
]
[package.dependencies]
-typing-extensions = ">=4.2.0"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+iniconfig = "*"
+packaging = "*"
+pluggy = ">=0.12,<2.0"
[package.extras]
-dotenv = ["python-dotenv (>=0.10.4)"]
-email = ["email-validator (>=1.0.3)"]
+testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
[[package]]
-name = "pydata-sphinx-theme"
-version = "0.7.2"
-description = "Bootstrap-based Sphinx theme from the PyData community"
+name = "python-dateutil"
+version = "2.8.2"
+description = "Extensions to the standard Python datetime module"
+category = "main"
optional = false
-python-versions = ">=3.5"
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
files = [
- {file = "pydata-sphinx-theme-0.7.2.tar.gz", hash = "sha256:671df35fcdd290eafbd23d0595e6d359dbe90b2e64e6c3f4dc88276eed4a065e"},
- {file = "pydata_sphinx_theme-0.7.2-py3-none-any.whl", hash = "sha256:bc1abc45e103b254c6c7a8f2ddabbaf8aa1f0817d85cae65dd163dd554c52700"},
+ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
+ {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
]
[package.dependencies]
-beautifulsoup4 = "*"
-docutils = "!=0.17.0"
-sphinx = "*"
-
-[package.extras]
-coverage = ["beautifulsoup4", "codecov", "docutils (==0.16)", "jupyter-sphinx", "numpy", "numpydoc", "pandas", "plotly", "pytest", "pytest-cov", "pytest-regressions", "recommonmark", "sphinx", "sphinx-sitemap", "xarray"]
-test = ["beautifulsoup4", "docutils (==0.16)", "jupyter-sphinx", "numpy", "numpydoc", "pandas", "plotly", "pytest", "pytest-regressions", "recommonmark", "sphinx", "sphinx-sitemap", "xarray"]
+six = ">=1.5"
[[package]]
-name = "pygments"
-version = "2.15.0"
-description = "Pygments is a syntax highlighting package written in Python."
+name = "python-dotenv"
+version = "1.0.0"
+description = "Read key-value pairs from a .env file and set them as environment variables"
+category = "main"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "Pygments-2.15.0-py3-none-any.whl", hash = "sha256:77a3299119af881904cd5ecd1ac6a66214b6e9bed1f2db16993b54adede64094"},
- {file = "Pygments-2.15.0.tar.gz", hash = "sha256:f7e36cffc4c517fbc252861b9a6e4644ca0e5abadf9a113c72d1358ad09b9500"},
+ {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"},
+ {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"},
]
[package.extras]
-plugins = ["importlib-metadata"]
+cli = ["click (>=5.0)"]
[[package]]
-name = "python-dateutil"
-version = "2.8.2"
-description = "Extensions to the standard Python datetime module"
+name = "python-editor"
+version = "1.0.4"
+description = "Programmatically open an editor, capture the result."
+category = "main"
optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
+python-versions = "*"
files = [
- {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
- {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
+ {file = "python-editor-1.0.4.tar.gz", hash = "sha256:51fda6bcc5ddbbb7063b2af7509e43bd84bfc32a4ff71349ec7847713882327b"},
+ {file = "python_editor-1.0.4-py2-none-any.whl", hash = "sha256:5f98b069316ea1c2ed3f67e7f5df6c0d8f10b689964a4a811ff64f0106819ec8"},
+ {file = "python_editor-1.0.4-py3-none-any.whl", hash = "sha256:1bf6e860a8ad52a14c3ee1252d5dc25b2030618ed80c022598f00176adc8367d"},
]
-[package.dependencies]
-six = ">=1.5"
+[[package]]
+name = "python-http-client"
+version = "3.3.7"
+description = "HTTP REST client, simplified for Python"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "python_http_client-3.3.7-py3-none-any.whl", hash = "sha256:ad371d2bbedc6ea15c26179c6222a78bc9308d272435ddf1d5c84f068f249a36"},
+ {file = "python_http_client-3.3.7.tar.gz", hash = "sha256:bf841ee45262747e00dec7ee9971dfb8c7d83083f5713596488d67739170cea0"},
+]
[[package]]
name = "python-jose"
version = "3.3.0"
description = "JOSE implementation in Python"
+category = "main"
optional = false
python-versions = "*"
files = [
@@ -728,6 +2163,7 @@ files = [
]
[package.dependencies]
+cryptography = {version = ">=3.4.0", optional = true, markers = "extra == \"cryptography\""}
ecdsa = "!=0.15"
pyasn1 = "*"
rsa = "*"
@@ -737,21 +2173,38 @@ cryptography = ["cryptography (>=3.4.0)"]
pycrypto = ["pyasn1", "pycrypto (>=2.6.0,<2.7.0)"]
pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"]
+[[package]]
+name = "python-multipart"
+version = "0.0.6"
+description = "A streaming multipart parser for Python"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "python_multipart-0.0.6-py3-none-any.whl", hash = "sha256:ee698bab5ef148b0a760751c261902cd096e57e10558e11aca17646b74ee1c18"},
+ {file = "python_multipart-0.0.6.tar.gz", hash = "sha256:e9925a80bb668529f1b67c7fdb0a5dacdd7cbfc6fb0bff3ea443fe22bdd62132"},
+]
+
+[package.extras]
+dev = ["atomicwrites (==1.2.1)", "attrs (==19.2.0)", "coverage (==6.5.0)", "hatch", "invoke (==1.7.3)", "more-itertools (==4.3.0)", "pbr (==4.3.0)", "pluggy (==1.0.0)", "py (==1.11.0)", "pytest (==7.2.0)", "pytest-cov (==4.0.0)", "pytest-timeout (==2.1.0)", "pyyaml (==5.1)"]
+
[[package]]
name = "pytz"
-version = "2022.7.1"
+version = "2023.3.post1"
description = "World timezone definitions, modern and historical"
+category = "main"
optional = false
python-versions = "*"
files = [
- {file = "pytz-2022.7.1-py2.py3-none-any.whl", hash = "sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a"},
- {file = "pytz-2022.7.1.tar.gz", hash = "sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0"},
+ {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"},
+ {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"},
]
[[package]]
name = "pytzdata"
version = "2020.1"
description = "The Olson timezone database for Python."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@@ -761,57 +2214,197 @@ files = [
[[package]]
name = "pyyaml"
-version = "6.0"
+version = "6.0.1"
description = "YAML parser and emitter for Python"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"},
+ {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"},
+ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"},
+ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"},
+ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"},
+ {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"},
+ {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"},
+ {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"},
+ {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"},
+ {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"},
+ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"},
+ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"},
+ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"},
+ {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"},
+ {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"},
+ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"},
+ {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"},
+ {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"},
+ {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"},
+ {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"},
+ {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"},
+ {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"},
+ {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"},
+ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"},
+ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"},
+ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"},
+ {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"},
+ {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"},
+ {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"},
+ {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"},
+ {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"},
+ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"},
+ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"},
+ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"},
+ {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"},
+ {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"},
+ {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"},
+ {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"},
+]
+
+[[package]]
+name = "pyyaml-env-tag"
+version = "0.1"
+description = "A custom YAML tag for referencing environment variables in YAML files. "
+category = "dev"
optional = false
python-versions = ">=3.6"
files = [
- {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"},
- {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"},
- {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"},
- {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"},
- {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"},
- {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"},
- {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"},
- {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"},
- {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"},
- {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"},
- {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"},
- {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"},
- {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"},
- {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"},
- {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"},
- {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"},
- {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"},
- {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"},
- {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"},
- {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"},
- {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"},
- {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"},
- {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"},
- {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"},
- {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"},
- {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"},
- {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"},
- {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"},
- {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"},
- {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"},
- {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"},
- {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"},
- {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"},
- {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"},
- {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"},
- {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"},
- {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"},
- {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"},
- {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"},
- {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"},
+ {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 = "readchar"
+version = "4.0.5"
+description = "Library to easily read single chars and key strokes"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "readchar-4.0.5-py3-none-any.whl", hash = "sha256:76ec784a5dd2afac3b7da8003329834cdd9824294c260027f8c8d2e4d0a78f43"},
+ {file = "readchar-4.0.5.tar.gz", hash = "sha256:08a456c2d7c1888cde3f4688b542621b676eb38cd6cfed7eb6cb2e2905ddc826"},
+]
+
+[package.dependencies]
+setuptools = ">=41.0"
+
+[[package]]
+name = "regex"
+version = "2023.10.3"
+description = "Alternative regular expression module, to replace re."
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "regex-2023.10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4c34d4f73ea738223a094d8e0ffd6d2c1a1b4c175da34d6b0de3d8d69bee6bcc"},
+ {file = "regex-2023.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8f4e49fc3ce020f65411432183e6775f24e02dff617281094ba6ab079ef0915"},
+ {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cd1bccf99d3ef1ab6ba835308ad85be040e6a11b0977ef7ea8c8005f01a3c29"},
+ {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:81dce2ddc9f6e8f543d94b05d56e70d03a0774d32f6cca53e978dc01e4fc75b8"},
+ {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c6b4d23c04831e3ab61717a707a5d763b300213db49ca680edf8bf13ab5d91b"},
+ {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c15ad0aee158a15e17e0495e1e18741573d04eb6da06d8b84af726cfc1ed02ee"},
+ {file = "regex-2023.10.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6239d4e2e0b52c8bd38c51b760cd870069f0bdf99700a62cd509d7a031749a55"},
+ {file = "regex-2023.10.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4a8bf76e3182797c6b1afa5b822d1d5802ff30284abe4599e1247be4fd6b03be"},
+ {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9c727bbcf0065cbb20f39d2b4f932f8fa1631c3e01fcedc979bd4f51fe051c5"},
+ {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3ccf2716add72f80714b9a63899b67fa711b654be3fcdd34fa391d2d274ce767"},
+ {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:107ac60d1bfdc3edb53be75e2a52aff7481b92817cfdddd9b4519ccf0e54a6ff"},
+ {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:00ba3c9818e33f1fa974693fb55d24cdc8ebafcb2e4207680669d8f8d7cca79a"},
+ {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f0a47efb1dbef13af9c9a54a94a0b814902e547b7f21acb29434504d18f36e3a"},
+ {file = "regex-2023.10.3-cp310-cp310-win32.whl", hash = "sha256:36362386b813fa6c9146da6149a001b7bd063dabc4d49522a1f7aa65b725c7ec"},
+ {file = "regex-2023.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:c65a3b5330b54103e7d21cac3f6bf3900d46f6d50138d73343d9e5b2900b2353"},
+ {file = "regex-2023.10.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:90a79bce019c442604662d17bf69df99090e24cdc6ad95b18b6725c2988a490e"},
+ {file = "regex-2023.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c7964c2183c3e6cce3f497e3a9f49d182e969f2dc3aeeadfa18945ff7bdd7051"},
+ {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ef80829117a8061f974b2fda8ec799717242353bff55f8a29411794d635d964"},
+ {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5addc9d0209a9afca5fc070f93b726bf7003bd63a427f65ef797a931782e7edc"},
+ {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c148bec483cc4b421562b4bcedb8e28a3b84fcc8f0aa4418e10898f3c2c0eb9b"},
+ {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d1f21af4c1539051049796a0f50aa342f9a27cde57318f2fc41ed50b0dbc4ac"},
+ {file = "regex-2023.10.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b9ac09853b2a3e0d0082104036579809679e7715671cfbf89d83c1cb2a30f58"},
+ {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ebedc192abbc7fd13c5ee800e83a6df252bec691eb2c4bedc9f8b2e2903f5e2a"},
+ {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d8a993c0a0ffd5f2d3bda23d0cd75e7086736f8f8268de8a82fbc4bd0ac6791e"},
+ {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:be6b7b8d42d3090b6c80793524fa66c57ad7ee3fe9722b258aec6d0672543fd0"},
+ {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4023e2efc35a30e66e938de5aef42b520c20e7eda7bb5fb12c35e5d09a4c43f6"},
+ {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0d47840dc05e0ba04fe2e26f15126de7c755496d5a8aae4a08bda4dd8d646c54"},
+ {file = "regex-2023.10.3-cp311-cp311-win32.whl", hash = "sha256:9145f092b5d1977ec8c0ab46e7b3381b2fd069957b9862a43bd383e5c01d18c2"},
+ {file = "regex-2023.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:b6104f9a46bd8743e4f738afef69b153c4b8b592d35ae46db07fc28ae3d5fb7c"},
+ {file = "regex-2023.10.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bff507ae210371d4b1fe316d03433ac099f184d570a1a611e541923f78f05037"},
+ {file = "regex-2023.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be5e22bbb67924dea15039c3282fa4cc6cdfbe0cbbd1c0515f9223186fc2ec5f"},
+ {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a992f702c9be9c72fa46f01ca6e18d131906a7180950958f766c2aa294d4b41"},
+ {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7434a61b158be563c1362d9071358f8ab91b8d928728cd2882af060481244c9e"},
+ {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2169b2dcabf4e608416f7f9468737583ce5f0a6e8677c4efbf795ce81109d7c"},
+ {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9e908ef5889cda4de038892b9accc36d33d72fb3e12c747e2799a0e806ec841"},
+ {file = "regex-2023.10.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12bd4bc2c632742c7ce20db48e0d99afdc05e03f0b4c1af90542e05b809a03d9"},
+ {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bc72c231f5449d86d6c7d9cc7cd819b6eb30134bb770b8cfdc0765e48ef9c420"},
+ {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bce8814b076f0ce5766dc87d5a056b0e9437b8e0cd351b9a6c4e1134a7dfbda9"},
+ {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:ba7cd6dc4d585ea544c1412019921570ebd8a597fabf475acc4528210d7c4a6f"},
+ {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b0c7d2f698e83f15228ba41c135501cfe7d5740181d5903e250e47f617eb4292"},
+ {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5a8f91c64f390ecee09ff793319f30a0f32492e99f5dc1c72bc361f23ccd0a9a"},
+ {file = "regex-2023.10.3-cp312-cp312-win32.whl", hash = "sha256:ad08a69728ff3c79866d729b095872afe1e0557251da4abb2c5faff15a91d19a"},
+ {file = "regex-2023.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:39cdf8d141d6d44e8d5a12a8569d5a227f645c87df4f92179bd06e2e2705e76b"},
+ {file = "regex-2023.10.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4a3ee019a9befe84fa3e917a2dd378807e423d013377a884c1970a3c2792d293"},
+ {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76066d7ff61ba6bf3cb5efe2428fc82aac91802844c022d849a1f0f53820502d"},
+ {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe50b61bab1b1ec260fa7cd91106fa9fece57e6beba05630afe27c71259c59b"},
+ {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fd88f373cb71e6b59b7fa597e47e518282455c2734fd4306a05ca219a1991b0"},
+ {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3ab05a182c7937fb374f7e946f04fb23a0c0699c0450e9fb02ef567412d2fa3"},
+ {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dac37cf08fcf2094159922edc7a2784cfcc5c70f8354469f79ed085f0328ebdf"},
+ {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e54ddd0bb8fb626aa1f9ba7b36629564544954fff9669b15da3610c22b9a0991"},
+ {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3367007ad1951fde612bf65b0dffc8fd681a4ab98ac86957d16491400d661302"},
+ {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:16f8740eb6dbacc7113e3097b0a36065a02e37b47c936b551805d40340fb9971"},
+ {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:f4f2ca6df64cbdd27f27b34f35adb640b5d2d77264228554e68deda54456eb11"},
+ {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:39807cbcbe406efca2a233884e169d056c35aa7e9f343d4e78665246a332f597"},
+ {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7eece6fbd3eae4a92d7c748ae825cbc1ee41a89bb1c3db05b5578ed3cfcfd7cb"},
+ {file = "regex-2023.10.3-cp37-cp37m-win32.whl", hash = "sha256:ce615c92d90df8373d9e13acddd154152645c0dc060871abf6bd43809673d20a"},
+ {file = "regex-2023.10.3-cp37-cp37m-win_amd64.whl", hash = "sha256:0f649fa32fe734c4abdfd4edbb8381c74abf5f34bc0b3271ce687b23729299ed"},
+ {file = "regex-2023.10.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b98b7681a9437262947f41c7fac567c7e1f6eddd94b0483596d320092004533"},
+ {file = "regex-2023.10.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:91dc1d531f80c862441d7b66c4505cd6ea9d312f01fb2f4654f40c6fdf5cc37a"},
+ {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82fcc1f1cc3ff1ab8a57ba619b149b907072e750815c5ba63e7aa2e1163384a4"},
+ {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7979b834ec7a33aafae34a90aad9f914c41fd6eaa8474e66953f3f6f7cbd4368"},
+ {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef71561f82a89af6cfcbee47f0fabfdb6e63788a9258e913955d89fdd96902ab"},
+ {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd829712de97753367153ed84f2de752b86cd1f7a88b55a3a775eb52eafe8a94"},
+ {file = "regex-2023.10.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00e871d83a45eee2f8688d7e6849609c2ca2a04a6d48fba3dff4deef35d14f07"},
+ {file = "regex-2023.10.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:706e7b739fdd17cb89e1fbf712d9dc21311fc2333f6d435eac2d4ee81985098c"},
+ {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cc3f1c053b73f20c7ad88b0d1d23be7e7b3901229ce89f5000a8399746a6e039"},
+ {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6f85739e80d13644b981a88f529d79c5bdf646b460ba190bffcaf6d57b2a9863"},
+ {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:741ba2f511cc9626b7561a440f87d658aabb3d6b744a86a3c025f866b4d19e7f"},
+ {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e77c90ab5997e85901da85131fd36acd0ed2221368199b65f0d11bca44549711"},
+ {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:979c24cbefaf2420c4e377ecd1f165ea08cc3d1fbb44bdc51bccbbf7c66a2cb4"},
+ {file = "regex-2023.10.3-cp38-cp38-win32.whl", hash = "sha256:58837f9d221744d4c92d2cf7201c6acd19623b50c643b56992cbd2b745485d3d"},
+ {file = "regex-2023.10.3-cp38-cp38-win_amd64.whl", hash = "sha256:c55853684fe08d4897c37dfc5faeff70607a5f1806c8be148f1695be4a63414b"},
+ {file = "regex-2023.10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2c54e23836650bdf2c18222c87f6f840d4943944146ca479858404fedeb9f9af"},
+ {file = "regex-2023.10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:69c0771ca5653c7d4b65203cbfc5e66db9375f1078689459fe196fe08b7b4930"},
+ {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ac965a998e1388e6ff2e9781f499ad1eaa41e962a40d11c7823c9952c77123e"},
+ {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c0e8fae5b27caa34177bdfa5a960c46ff2f78ee2d45c6db15ae3f64ecadde14"},
+ {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c56c3d47da04f921b73ff9415fbaa939f684d47293f071aa9cbb13c94afc17d"},
+ {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ef1e014eed78ab650bef9a6a9cbe50b052c0aebe553fb2881e0453717573f52"},
+ {file = "regex-2023.10.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d29338556a59423d9ff7b6eb0cb89ead2b0875e08fe522f3e068b955c3e7b59b"},
+ {file = "regex-2023.10.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9c6d0ced3c06d0f183b73d3c5920727268d2201aa0fe6d55c60d68c792ff3588"},
+ {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:994645a46c6a740ee8ce8df7911d4aee458d9b1bc5639bc968226763d07f00fa"},
+ {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:66e2fe786ef28da2b28e222c89502b2af984858091675044d93cb50e6f46d7af"},
+ {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:11175910f62b2b8c055f2b089e0fedd694fe2be3941b3e2633653bc51064c528"},
+ {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:06e9abc0e4c9ab4779c74ad99c3fc10d3967d03114449acc2c2762ad4472b8ca"},
+ {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fb02e4257376ae25c6dd95a5aec377f9b18c09be6ebdefa7ad209b9137b73d48"},
+ {file = "regex-2023.10.3-cp39-cp39-win32.whl", hash = "sha256:3b2c3502603fab52d7619b882c25a6850b766ebd1b18de3df23b2f939360e1bd"},
+ {file = "regex-2023.10.3-cp39-cp39-win_amd64.whl", hash = "sha256:adbccd17dcaff65704c856bd29951c58a1bd4b2b0f8ad6b826dbd543fe740988"},
+ {file = "regex-2023.10.3.tar.gz", hash = "sha256:3fef4f844d2290ee0ba57addcec17eec9e3df73f10a2748485dfd6a3a188cc0f"},
]
[[package]]
name = "requests"
version = "2.31.0"
description = "Python HTTP for Humans."
+category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -830,26 +2423,45 @@ socks = ["PySocks (>=1.5.6,!=1.5.7)"]
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
[[package]]
-name = "rfc3986"
-version = "1.5.0"
-description = "Validating URI References per RFC 3986"
+name = "respx"
+version = "0.20.2"
+description = "A utility for mocking out the Python HTTPX and HTTP Core libraries."
+category = "main"
optional = false
-python-versions = "*"
+python-versions = ">=3.7"
+files = [
+ {file = "respx-0.20.2-py2.py3-none-any.whl", hash = "sha256:ab8e1cf6da28a5b2dd883ea617f8130f77f676736e6e9e4a25817ad116a172c9"},
+ {file = "respx-0.20.2.tar.gz", hash = "sha256:07cf4108b1c88b82010f67d3c831dae33a375c7b436e54d87737c7f9f99be643"},
+]
+
+[package.dependencies]
+httpx = ">=0.21.0"
+
+[[package]]
+name = "rich"
+version = "11.2.0"
+description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
+category = "main"
+optional = false
+python-versions = ">=3.6.2,<4.0.0"
files = [
- {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"},
- {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"},
+ {file = "rich-11.2.0-py3-none-any.whl", hash = "sha256:d5f49ad91fb343efcae45a2b2df04a9755e863e50413623ab8c9e74f05aee52b"},
+ {file = "rich-11.2.0.tar.gz", hash = "sha256:1a6266a5738115017bb64a66c59c717e7aa047b3ae49a011ede4abdeffc6536e"},
]
[package.dependencies]
-idna = {version = "*", optional = true, markers = "extra == \"idna2008\""}
+colorama = ">=0.4.0,<0.5.0"
+commonmark = ">=0.9.0,<0.10.0"
+pygments = ">=2.6.0,<3.0.0"
[package.extras]
-idna2008 = ["idna"]
+jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"]
[[package]]
name = "rsa"
version = "4.9"
description = "Pure-Python RSA implementation"
+category = "main"
optional = false
python-versions = ">=3.6,<4"
files = [
@@ -861,321 +2473,351 @@ files = [
pyasn1 = ">=0.1.3"
[[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 = "sniffio"
-version = "1.3.0"
-description = "Sniff out which async library your code is running under"
+name = "s3transfer"
+version = "0.6.2"
+description = "An Amazon S3 Transfer Manager"
+category = "main"
optional = false
-python-versions = ">=3.7"
+python-versions = ">= 3.7"
files = [
- {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
- {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
+ {file = "s3transfer-0.6.2-py3-none-any.whl", hash = "sha256:b014be3a8a2aab98cfe1abc7229cc5a9a0cf05eb9c1f2b86b230fd8df3f78084"},
+ {file = "s3transfer-0.6.2.tar.gz", hash = "sha256:cab66d3380cca3e70939ef2255d01cd8aece6a4907a9528740f668c4b0611861"},
]
-[[package]]
-name = "snowballstemmer"
-version = "2.2.0"
-description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms."
-optional = false
-python-versions = "*"
-files = [
- {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"},
- {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"},
-]
+[package.dependencies]
+botocore = ">=1.12.36,<2.0a.0"
-[[package]]
-name = "soupsieve"
-version = "2.4"
-description = "A modern CSS selector implementation for Beautiful Soup."
-optional = false
-python-versions = ">=3.7"
-files = [
- {file = "soupsieve-2.4-py3-none-any.whl", hash = "sha256:49e5368c2cda80ee7e84da9dbe3e110b70a4575f196efb74e51b94549d921955"},
- {file = "soupsieve-2.4.tar.gz", hash = "sha256:e28dba9ca6c7c00173e34e4ba57448f0688bb681b7c5e8bf4971daafc093d69a"},
-]
+[package.extras]
+crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"]
[[package]]
-name = "sphinx"
-version = "4.5.0"
-description = "Python documentation generator"
+name = "sendgrid"
+version = "6.10.0"
+description = "Twilio SendGrid library for Python"
+category = "main"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
- {file = "Sphinx-4.5.0-py3-none-any.whl", hash = "sha256:ebf612653238bcc8f4359627a9b7ce44ede6fdd75d9d30f68255c7383d3a6226"},
- {file = "Sphinx-4.5.0.tar.gz", hash = "sha256:7bf8ca9637a4ee15af412d1a1d9689fec70523a68ca9bb9127c2f3eeb344e2e6"},
+ {file = "sendgrid-6.10.0-py3-none-any.whl", hash = "sha256:522b30fc98306496208c5d8bdd5642cd6a2fd65cad487475f57f9098ce880604"},
+ {file = "sendgrid-6.10.0.tar.gz", hash = "sha256:9b15050c6f8826ee576f76a786efb15d956639f485478cbddd79ed69e8350ab8"},
]
[package.dependencies]
-alabaster = ">=0.7,<0.8"
-babel = ">=1.3"
-colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""}
-docutils = ">=0.14,<0.18"
-imagesize = "*"
-importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""}
-Jinja2 = ">=2.3"
-packaging = "*"
-Pygments = ">=2.0"
-requests = ">=2.5.0"
-snowballstemmer = ">=1.1"
-sphinxcontrib-applehelp = "*"
-sphinxcontrib-devhelp = "*"
-sphinxcontrib-htmlhelp = ">=2.0.0"
-sphinxcontrib-jsmath = "*"
-sphinxcontrib-qthelp = "*"
-sphinxcontrib-serializinghtml = ">=1.1.5"
-
-[package.extras]
-docs = ["sphinxcontrib-websupport"]
-lint = ["docutils-stubs", "flake8 (>=3.5.0)", "isort", "mypy (>=0.931)", "types-requests", "types-typed-ast"]
-test = ["cython", "html5lib", "pytest", "pytest-cov", "typed-ast"]
+python-http-client = ">=3.2.1"
+starkbank-ecdsa = ">=2.0.1"
[[package]]
-name = "sphinx-autobuild"
-version = "2021.3.14"
-description = "Rebuild Sphinx documentation on changes, with live-reload in the browser."
+name = "sentry-sdk"
+version = "1.32.0"
+description = "Python client for Sentry (https://sentry.io)"
+category = "main"
optional = false
-python-versions = ">=3.6"
+python-versions = "*"
files = [
- {file = "sphinx-autobuild-2021.3.14.tar.gz", hash = "sha256:de1ca3b66e271d2b5b5140c35034c89e47f263f2cd5db302c9217065f7443f05"},
- {file = "sphinx_autobuild-2021.3.14-py3-none-any.whl", hash = "sha256:8fe8cbfdb75db04475232f05187c776f46f6e9e04cacf1e49ce81bdac649ccac"},
+ {file = "sentry-sdk-1.32.0.tar.gz", hash = "sha256:935e8fbd7787a3702457393b74b13d89a5afb67185bc0af85c00cb27cbd42e7c"},
+ {file = "sentry_sdk-1.32.0-py2.py3-none-any.whl", hash = "sha256:eeb0b3550536f3bbc05bb1c7e0feb3a78d74acb43b607159a606ed2ec0a33a4d"},
]
[package.dependencies]
-colorama = "*"
-livereload = "*"
-sphinx = "*"
+certifi = "*"
+urllib3 = {version = ">=1.26.11", markers = "python_version >= \"3.6\""}
[package.extras]
-test = ["pytest", "pytest-cov"]
-
-[[package]]
-name = "sphinx-book-theme"
-version = "0.1.10"
-description = "A clean book theme for scientific explanations and documentation with Sphinx"
+aiohttp = ["aiohttp (>=3.5)"]
+arq = ["arq (>=0.23)"]
+asyncpg = ["asyncpg (>=0.23)"]
+beam = ["apache-beam (>=2.12)"]
+bottle = ["bottle (>=0.12.13)"]
+celery = ["celery (>=3)"]
+chalice = ["chalice (>=1.16.0)"]
+clickhouse-driver = ["clickhouse-driver (>=0.2.0)"]
+django = ["django (>=1.8)"]
+falcon = ["falcon (>=1.4)"]
+fastapi = ["fastapi (>=0.79.0)"]
+flask = ["blinker (>=1.1)", "flask (>=0.11)", "markupsafe"]
+grpcio = ["grpcio (>=1.21.1)"]
+httpx = ["httpx (>=0.16.0)"]
+huey = ["huey (>=2)"]
+loguru = ["loguru (>=0.5)"]
+opentelemetry = ["opentelemetry-distro (>=0.35b0)"]
+opentelemetry-experimental = ["opentelemetry-distro (>=0.40b0,<1.0)", "opentelemetry-instrumentation-aiohttp-client (>=0.40b0,<1.0)", "opentelemetry-instrumentation-django (>=0.40b0,<1.0)", "opentelemetry-instrumentation-fastapi (>=0.40b0,<1.0)", "opentelemetry-instrumentation-flask (>=0.40b0,<1.0)", "opentelemetry-instrumentation-requests (>=0.40b0,<1.0)", "opentelemetry-instrumentation-sqlite3 (>=0.40b0,<1.0)", "opentelemetry-instrumentation-urllib (>=0.40b0,<1.0)"]
+pure-eval = ["asttokens", "executing", "pure-eval"]
+pymongo = ["pymongo (>=3.1)"]
+pyspark = ["pyspark (>=2.4.4)"]
+quart = ["blinker (>=1.1)", "quart (>=0.16.1)"]
+rq = ["rq (>=0.6)"]
+sanic = ["sanic (>=0.8)"]
+sqlalchemy = ["sqlalchemy (>=1.2)"]
+starlette = ["starlette (>=0.19.1)"]
+starlite = ["starlite (>=1.48)"]
+tornado = ["tornado (>=5)"]
+
+[[package]]
+name = "setuptools"
+version = "68.2.2"
+description = "Easily download, build, install, upgrade, and uninstall Python packages"
+category = "main"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
files = [
- {file = "sphinx-book-theme-0.1.10.tar.gz", hash = "sha256:c74d7deb36e6fea4bcb3a979d162d9fd80e93b7ea4da78ebf8286da4b898582a"},
- {file = "sphinx_book_theme-0.1.10-py3-none-any.whl", hash = "sha256:1722b60c8ac87aa53758f4403912972cb28d0c253196446339859124e92f686f"},
+ {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"},
+ {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"},
]
-[package.dependencies]
-beautifulsoup4 = ">=4.6.1,<5"
-docutils = ">=0.15,<0.17"
-pydata-sphinx-theme = ">=0.7.2,<0.8.0"
-pyyaml = "*"
-sphinx = ">=3,<5"
-
[package.extras]
-code-style = ["pre-commit (>=2.7.0,<2.8.0)"]
-live-dev = ["sphinx-autobuild", "web-compile (>=0.2.1,<0.3.0)"]
-sphinx = ["ablog (>=0.10.13,<0.11.0)", "folium", "ipywidgets", "matplotlib", "myst-nb (>=0.13,<1.0)", "nbclient", "numpy", "pandas", "plotly", "sphinx (>=4.0,<5.0)", "sphinx-copybutton", "sphinx-design", "sphinx-thebe", "sphinx-togglebutton (>=0.2.1)", "sphinxcontrib-bibtex (>=2.2,<3.0)", "sphinxext-opengraph"]
-testing = ["coverage", "myst-nb (>=0.13,<1.0)", "pytest (>=6.0.1,<6.1.0)", "pytest-cov", "pytest-regressions (>=2.0.1,<2.1.0)", "sphinx-thebe"]
+docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
+testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
+testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
[[package]]
-name = "sphinx-copybutton"
-version = "0.5.1"
-description = "Add a copy button to each of your code cells."
+name = "six"
+version = "1.16.0"
+description = "Python 2 and 3 compatibility utilities"
+category = "main"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
- {file = "sphinx-copybutton-0.5.1.tar.gz", hash = "sha256:366251e28a6f6041514bfb5439425210418d6c750e98d3a695b73e56866a677a"},
- {file = "sphinx_copybutton-0.5.1-py3-none-any.whl", hash = "sha256:0842851b5955087a7ec7fc870b622cb168618ad408dee42692e9a5c97d071da8"},
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
]
-[package.dependencies]
-sphinx = ">=1.8"
-
-[package.extras]
-code-style = ["pre-commit (==2.12.1)"]
-rtd = ["ipython", "myst-nb", "sphinx", "sphinx-book-theme", "sphinx-examples"]
-
[[package]]
-name = "sphinxcontrib-applehelp"
-version = "1.0.4"
-description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books"
+name = "snick"
+version = "1.3.0"
+description = ""
+category = "main"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.6.2,<4.0.0"
files = [
- {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"},
- {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"},
+ {file = "snick-1.3.0-py3-none-any.whl", hash = "sha256:2b15bddc68b71e3bd396d8be38dff40130d0a7c79eddf3ea0ec7485befb0de08"},
+ {file = "snick-1.3.0.tar.gz", hash = "sha256:f2aadf7e3135878ca592f1f70e9ecfa6f8d7f590751500ac152614bff262e109"},
]
-[package.extras]
-lint = ["docutils-stubs", "flake8", "mypy"]
-test = ["pytest"]
+[package.dependencies]
+pprintpp = ">=0.4.0,<0.5.0"
[[package]]
-name = "sphinxcontrib-devhelp"
-version = "1.0.2"
-description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document."
+name = "sniffio"
+version = "1.3.0"
+description = "Sniff out which async library your code is running under"
+category = "main"
optional = false
-python-versions = ">=3.5"
+python-versions = ">=3.7"
files = [
- {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"},
- {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"},
+ {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
+ {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
]
-[package.extras]
-lint = ["docutils-stubs", "flake8", "mypy"]
-test = ["pytest"]
-
[[package]]
-name = "sphinxcontrib-htmlhelp"
-version = "2.0.1"
-description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files"
+name = "soupsieve"
+version = "2.5"
+description = "A modern CSS selector implementation for Beautiful Soup."
+category = "dev"
optional = false
python-versions = ">=3.8"
files = [
- {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"},
- {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"},
+ {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"},
+ {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"},
]
-[package.extras]
-lint = ["docutils-stubs", "flake8", "mypy"]
-test = ["html5lib", "pytest"]
-
[[package]]
-name = "sphinxcontrib-httpdomain"
-version = "1.8.1"
-description = "Sphinx domain for documenting HTTP APIs"
+name = "sqlalchemy"
+version = "2.0.22"
+description = "Database Abstraction Library"
+category = "main"
optional = false
-python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"
+python-versions = ">=3.7"
files = [
- {file = "sphinxcontrib-httpdomain-1.8.1.tar.gz", hash = "sha256:6c2dfe6ca282d75f66df333869bb0ce7331c01b475db6809ff9d107b7cdfe04b"},
- {file = "sphinxcontrib_httpdomain-1.8.1-py2.py3-none-any.whl", hash = "sha256:21eefe1270e4d9de8d717cc89ee92cc4871b8736774393bafc5e38a6bb77b1d5"},
+ {file = "SQLAlchemy-2.0.22-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f146c61ae128ab43ea3a0955de1af7e1633942c2b2b4985ac51cc292daf33222"},
+ {file = "SQLAlchemy-2.0.22-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:875de9414393e778b655a3d97d60465eb3fae7c919e88b70cc10b40b9f56042d"},
+ {file = "SQLAlchemy-2.0.22-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13790cb42f917c45c9c850b39b9941539ca8ee7917dacf099cc0b569f3d40da7"},
+ {file = "SQLAlchemy-2.0.22-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e04ab55cf49daf1aeb8c622c54d23fa4bec91cb051a43cc24351ba97e1dd09f5"},
+ {file = "SQLAlchemy-2.0.22-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a42c9fa3abcda0dcfad053e49c4f752eef71ecd8c155221e18b99d4224621176"},
+ {file = "SQLAlchemy-2.0.22-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:14cd3bcbb853379fef2cd01e7c64a5d6f1d005406d877ed9509afb7a05ff40a5"},
+ {file = "SQLAlchemy-2.0.22-cp310-cp310-win32.whl", hash = "sha256:d143c5a9dada696bcfdb96ba2de4a47d5a89168e71d05a076e88a01386872f97"},
+ {file = "SQLAlchemy-2.0.22-cp310-cp310-win_amd64.whl", hash = "sha256:ccd87c25e4c8559e1b918d46b4fa90b37f459c9b4566f1dfbce0eb8122571547"},
+ {file = "SQLAlchemy-2.0.22-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4f6ff392b27a743c1ad346d215655503cec64405d3b694228b3454878bf21590"},
+ {file = "SQLAlchemy-2.0.22-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f776c2c30f0e5f4db45c3ee11a5f2a8d9de68e81eb73ec4237de1e32e04ae81c"},
+ {file = "SQLAlchemy-2.0.22-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8f1792d20d2f4e875ce7a113f43c3561ad12b34ff796b84002a256f37ce9437"},
+ {file = "SQLAlchemy-2.0.22-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80eeb5189d7d4b1af519fc3f148fe7521b9dfce8f4d6a0820e8f5769b005051"},
+ {file = "SQLAlchemy-2.0.22-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:69fd9e41cf9368afa034e1c81f3570afb96f30fcd2eb1ef29cb4d9371c6eece2"},
+ {file = "SQLAlchemy-2.0.22-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:54bcceaf4eebef07dadfde424f5c26b491e4a64e61761dea9459103ecd6ccc95"},
+ {file = "SQLAlchemy-2.0.22-cp311-cp311-win32.whl", hash = "sha256:7ee7ccf47aa503033b6afd57efbac6b9e05180f492aeed9fcf70752556f95624"},
+ {file = "SQLAlchemy-2.0.22-cp311-cp311-win_amd64.whl", hash = "sha256:b560f075c151900587ade06706b0c51d04b3277c111151997ea0813455378ae0"},
+ {file = "SQLAlchemy-2.0.22-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:2c9bac865ee06d27a1533471405ad240a6f5d83195eca481f9fc4a71d8b87df8"},
+ {file = "SQLAlchemy-2.0.22-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:625b72d77ac8ac23da3b1622e2da88c4aedaee14df47c8432bf8f6495e655de2"},
+ {file = "SQLAlchemy-2.0.22-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b39a6e21110204a8c08d40ff56a73ba542ec60bab701c36ce721e7990df49fb9"},
+ {file = "SQLAlchemy-2.0.22-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53a766cb0b468223cafdf63e2d37f14a4757476157927b09300c8c5832d88560"},
+ {file = "SQLAlchemy-2.0.22-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0e1ce8ebd2e040357dde01a3fb7d30d9b5736b3e54a94002641dfd0aa12ae6ce"},
+ {file = "SQLAlchemy-2.0.22-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:505f503763a767556fa4deae5194b2be056b64ecca72ac65224381a0acab7ebe"},
+ {file = "SQLAlchemy-2.0.22-cp312-cp312-win32.whl", hash = "sha256:154a32f3c7b00de3d090bc60ec8006a78149e221f1182e3edcf0376016be9396"},
+ {file = "SQLAlchemy-2.0.22-cp312-cp312-win_amd64.whl", hash = "sha256:129415f89744b05741c6f0b04a84525f37fbabe5dc3774f7edf100e7458c48cd"},
+ {file = "SQLAlchemy-2.0.22-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3940677d341f2b685a999bffe7078697b5848a40b5f6952794ffcf3af150c301"},
+ {file = "SQLAlchemy-2.0.22-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55914d45a631b81a8a2cb1a54f03eea265cf1783241ac55396ec6d735be14883"},
+ {file = "SQLAlchemy-2.0.22-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2096d6b018d242a2bcc9e451618166f860bb0304f590d205173d317b69986c95"},
+ {file = "SQLAlchemy-2.0.22-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:19c6986cf2fb4bc8e0e846f97f4135a8e753b57d2aaaa87c50f9acbe606bd1db"},
+ {file = "SQLAlchemy-2.0.22-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6ac28bd6888fe3c81fbe97584eb0b96804bd7032d6100b9701255d9441373ec1"},
+ {file = "SQLAlchemy-2.0.22-cp37-cp37m-win32.whl", hash = "sha256:cb9a758ad973e795267da334a92dd82bb7555cb36a0960dcabcf724d26299db8"},
+ {file = "SQLAlchemy-2.0.22-cp37-cp37m-win_amd64.whl", hash = "sha256:40b1206a0d923e73aa54f0a6bd61419a96b914f1cd19900b6c8226899d9742ad"},
+ {file = "SQLAlchemy-2.0.22-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3aa1472bf44f61dd27987cd051f1c893b7d3b17238bff8c23fceaef4f1133868"},
+ {file = "SQLAlchemy-2.0.22-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:56a7e2bb639df9263bf6418231bc2a92a773f57886d371ddb7a869a24919face"},
+ {file = "SQLAlchemy-2.0.22-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ccca778c0737a773a1ad86b68bda52a71ad5950b25e120b6eb1330f0df54c3d0"},
+ {file = "SQLAlchemy-2.0.22-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c6c3e9350f9fb16de5b5e5fbf17b578811a52d71bb784cc5ff71acb7de2a7f9"},
+ {file = "SQLAlchemy-2.0.22-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:564e9f9e4e6466273dbfab0e0a2e5fe819eec480c57b53a2cdee8e4fdae3ad5f"},
+ {file = "SQLAlchemy-2.0.22-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:af66001d7b76a3fab0d5e4c1ec9339ac45748bc4a399cbc2baa48c1980d3c1f4"},
+ {file = "SQLAlchemy-2.0.22-cp38-cp38-win32.whl", hash = "sha256:9e55dff5ec115316dd7a083cdc1a52de63693695aecf72bc53a8e1468ce429e5"},
+ {file = "SQLAlchemy-2.0.22-cp38-cp38-win_amd64.whl", hash = "sha256:4e869a8ff7ee7a833b74868a0887e8462445ec462432d8cbeff5e85f475186da"},
+ {file = "SQLAlchemy-2.0.22-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9886a72c8e6371280cb247c5d32c9c8fa141dc560124348762db8a8b236f8692"},
+ {file = "SQLAlchemy-2.0.22-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a571bc8ac092a3175a1d994794a8e7a1f2f651e7c744de24a19b4f740fe95034"},
+ {file = "SQLAlchemy-2.0.22-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8db5ba8b7da759b727faebc4289a9e6a51edadc7fc32207a30f7c6203a181592"},
+ {file = "SQLAlchemy-2.0.22-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b0b3f2686c3f162123adba3cb8b626ed7e9b8433ab528e36ed270b4f70d1cdb"},
+ {file = "SQLAlchemy-2.0.22-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0c1fea8c0abcb070ffe15311853abfda4e55bf7dc1d4889497b3403629f3bf00"},
+ {file = "SQLAlchemy-2.0.22-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4bb062784f37b2d75fd9b074c8ec360ad5df71f933f927e9e95c50eb8e05323c"},
+ {file = "SQLAlchemy-2.0.22-cp39-cp39-win32.whl", hash = "sha256:58a3aba1bfb32ae7af68da3f277ed91d9f57620cf7ce651db96636790a78b736"},
+ {file = "SQLAlchemy-2.0.22-cp39-cp39-win_amd64.whl", hash = "sha256:92e512a6af769e4725fa5b25981ba790335d42c5977e94ded07db7d641490a85"},
+ {file = "SQLAlchemy-2.0.22-py3-none-any.whl", hash = "sha256:3076740335e4aaadd7deb3fe6dcb96b3015f1613bd190a4e1634e1b99b02ec86"},
+ {file = "SQLAlchemy-2.0.22.tar.gz", hash = "sha256:5434cc601aa17570d79e5377f5fd45ff92f9379e2abed0be5e8c2fba8d353d2b"},
]
[package.dependencies]
-six = "*"
-Sphinx = ">=1.6"
-
-[[package]]
-name = "sphinxcontrib-jsmath"
-version = "1.0.1"
-description = "A sphinx extension which renders display math in HTML via JavaScript"
-optional = false
-python-versions = ">=3.5"
-files = [
- {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"},
- {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"},
-]
+greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""}
+mypy = {version = ">=0.910", optional = true, markers = "extra == \"mypy\""}
+typing-extensions = ">=4.2.0"
[package.extras]
-test = ["flake8", "mypy", "pytest"]
-
-[[package]]
-name = "sphinxcontrib-napoleon"
-version = "0.7"
-description = "Sphinx \"napoleon\" extension."
+aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"]
+aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"]
+asyncio = ["greenlet (!=0.4.17)"]
+asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
+mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"]
+mssql = ["pyodbc"]
+mssql-pymssql = ["pymssql"]
+mssql-pyodbc = ["pyodbc"]
+mypy = ["mypy (>=0.910)"]
+mysql = ["mysqlclient (>=1.4.0)"]
+mysql-connector = ["mysql-connector-python"]
+oracle = ["cx-oracle (>=7)"]
+oracle-oracledb = ["oracledb (>=1.0.1)"]
+postgresql = ["psycopg2 (>=2.7)"]
+postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"]
+postgresql-pg8000 = ["pg8000 (>=1.29.1)"]
+postgresql-psycopg = ["psycopg (>=3.0.7)"]
+postgresql-psycopg2binary = ["psycopg2-binary"]
+postgresql-psycopg2cffi = ["psycopg2cffi"]
+postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"]
+pymysql = ["pymysql"]
+sqlcipher = ["sqlcipher3-binary"]
+
+[[package]]
+name = "starkbank-ecdsa"
+version = "2.2.0"
+description = "A lightweight and fast pure python ECDSA library"
+category = "main"
optional = false
python-versions = "*"
files = [
- {file = "sphinxcontrib-napoleon-0.7.tar.gz", hash = "sha256:407382beed396e9f2d7f3043fad6afda95719204a1e1a231ac865f40abcbfcf8"},
- {file = "sphinxcontrib_napoleon-0.7-py2.py3-none-any.whl", hash = "sha256:711e41a3974bdf110a484aec4c1a556799eb0b3f3b897521a018ad7e2db13fef"},
+ {file = "starkbank-ecdsa-2.2.0.tar.gz", hash = "sha256:9399c3371b899d4a235b68a1ed7919d202fbf024bd2c863ae8ebdad343c2a63a"},
]
-[package.dependencies]
-pockets = ">=0.3"
-six = ">=1.5.2"
-
[[package]]
-name = "sphinxcontrib-qthelp"
-version = "1.0.3"
-description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document."
+name = "starlette"
+version = "0.27.0"
+description = "The little ASGI library that shines."
+category = "main"
optional = false
-python-versions = ">=3.5"
+python-versions = ">=3.7"
files = [
- {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"},
- {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"},
+ {file = "starlette-0.27.0-py3-none-any.whl", hash = "sha256:918416370e846586541235ccd38a474c08b80443ed31c578a418e2209b3eef91"},
+ {file = "starlette-0.27.0.tar.gz", hash = "sha256:6a6b0d042acb8d469a01eba54e9cda6cbd24ac602c4cd016723117d6a7e73b75"},
]
+[package.dependencies]
+anyio = ">=3.4.0,<5"
+
[package.extras]
-lint = ["docutils-stubs", "flake8", "mypy"]
-test = ["pytest"]
+full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyaml"]
[[package]]
-name = "sphinxcontrib-serializinghtml"
-version = "1.1.5"
-description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)."
+name = "tomli"
+version = "1.2.3"
+description = "A lil' TOML parser"
+category = "dev"
optional = false
-python-versions = ">=3.5"
+python-versions = ">=3.6"
files = [
- {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"},
- {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"},
+ {file = "tomli-1.2.3-py3-none-any.whl", hash = "sha256:e3069e4be3ead9668e21cb9b074cd948f7b3113fd9c8bba083f48247aab8b11c"},
+ {file = "tomli-1.2.3.tar.gz", hash = "sha256:05b6166bff487dc068d322585c7ea4ef78deed501cc124060e0f238e89a9231f"},
]
-[package.extras]
-lint = ["docutils-stubs", "flake8", "mypy"]
-test = ["pytest"]
-
[[package]]
-name = "toml"
-version = "0.10.2"
-description = "Python Library for Tom's Obvious, Minimal Language"
+name = "typer"
+version = "0.9.0"
+description = "Typer, build great CLIs. Easy to code. Based on Python type hints."
+category = "main"
optional = false
-python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
+python-versions = ">=3.6"
files = [
- {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
- {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
+ {file = "typer-0.9.0-py3-none-any.whl", hash = "sha256:5d96d986a21493606a358cae4461bd8cdf83cbf33a5aa950ae629ca3b51467ee"},
+ {file = "typer-0.9.0.tar.gz", hash = "sha256:50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2"},
]
+[package.dependencies]
+click = ">=7.1.1,<9.0.0"
+typing-extensions = ">=3.7.4.3"
+
+[package.extras]
+all = ["colorama (>=0.4.3,<0.5.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"]
+dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2.17.0,<3.0.0)"]
+doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"]
+test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"]
+
[[package]]
-name = "tomli"
-version = "1.2.3"
-description = "A lil' TOML parser"
+name = "typing-extensions"
+version = "4.8.0"
+description = "Backported and Experimental Type Hints for Python 3.8+"
+category = "main"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
files = [
- {file = "tomli-1.2.3-py3-none-any.whl", hash = "sha256:e3069e4be3ead9668e21cb9b074cd948f7b3113fd9c8bba083f48247aab8b11c"},
- {file = "tomli-1.2.3.tar.gz", hash = "sha256:05b6166bff487dc068d322585c7ea4ef78deed501cc124060e0f238e89a9231f"},
+ {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"},
+ {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"},
]
[[package]]
-name = "tornado"
-version = "6.3.3"
-description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
+name = "tzdata"
+version = "2023.3"
+description = "Provider of IANA time zone data"
+category = "main"
optional = false
-python-versions = ">= 3.8"
+python-versions = ">=2"
files = [
- {file = "tornado-6.3.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:502fba735c84450974fec147340016ad928d29f1e91f49be168c0a4c18181e1d"},
- {file = "tornado-6.3.3-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:805d507b1f588320c26f7f097108eb4023bbaa984d63176d1652e184ba24270a"},
- {file = "tornado-6.3.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bd19ca6c16882e4d37368e0152f99c099bad93e0950ce55e71daed74045908f"},
- {file = "tornado-6.3.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ac51f42808cca9b3613f51ffe2a965c8525cb1b00b7b2d56828b8045354f76a"},
- {file = "tornado-6.3.3-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71a8db65160a3c55d61839b7302a9a400074c9c753040455494e2af74e2501f2"},
- {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ceb917a50cd35882b57600709dd5421a418c29ddc852da8bcdab1f0db33406b0"},
- {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:7d01abc57ea0dbb51ddfed477dfe22719d376119844e33c661d873bf9c0e4a16"},
- {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:9dc4444c0defcd3929d5c1eb5706cbe1b116e762ff3e0deca8b715d14bf6ec17"},
- {file = "tornado-6.3.3-cp38-abi3-win32.whl", hash = "sha256:65ceca9500383fbdf33a98c0087cb975b2ef3bfb874cb35b8de8740cf7f41bd3"},
- {file = "tornado-6.3.3-cp38-abi3-win_amd64.whl", hash = "sha256:22d3c2fa10b5793da13c807e6fc38ff49a4f6e1e3868b0a6f4164768bb8e20f5"},
- {file = "tornado-6.3.3.tar.gz", hash = "sha256:e7d8db41c0181c80d76c982aacc442c0783a2c54d6400fe028954201a2e032fe"},
+ {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"},
+ {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"},
]
[[package]]
-name = "typing-extensions"
-version = "4.5.0"
-description = "Backported and Experimental Type Hints for Python 3.7+"
+name = "tzlocal"
+version = "5.1"
+description = "tzinfo object for the local timezone"
+category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"},
- {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"},
+ {file = "tzlocal-5.1-py3-none-any.whl", hash = "sha256:2938498395d5f6a898ab8009555cb37a4d360913ad375d4747ef16826b03ef23"},
+ {file = "tzlocal-5.1.tar.gz", hash = "sha256:a5ccb2365b295ed964e0a98ad076fe10c495591e75505d34f154d60a7f1ed722"},
]
+[package.dependencies]
+tzdata = {version = "*", markers = "platform_system == \"Windows\""}
+
+[package.extras]
+devenv = ["black", "check-manifest", "flake8", "pyroma", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"]
+
[[package]]
name = "urllib3"
version = "1.26.18"
description = "HTTP library with thread-safe connection pooling, file post, and more."
+category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
files = [
@@ -1188,10 +2830,82 @@ brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotl
secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"]
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
+[[package]]
+name = "uvicorn"
+version = "0.23.2"
+description = "The lightning-fast ASGI server."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "uvicorn-0.23.2-py3-none-any.whl", hash = "sha256:1f9be6558f01239d4fdf22ef8126c39cb1ad0addf76c40e760549d2c2f43ab53"},
+ {file = "uvicorn-0.23.2.tar.gz", hash = "sha256:4d3cc12d7727ba72b64d12d3cc7743124074c0a69f7b201512fc50c3e3f1569a"},
+]
+
+[package.dependencies]
+click = ">=7.0"
+h11 = ">=0.8"
+
+[package.extras]
+standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
+
+[[package]]
+name = "watchdog"
+version = "3.0.0"
+description = "Filesystem events monitoring"
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41"},
+ {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397"},
+ {file = "watchdog-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96"},
+ {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae"},
+ {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9"},
+ {file = "watchdog-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7"},
+ {file = "watchdog-3.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674"},
+ {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f"},
+ {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc"},
+ {file = "watchdog-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3"},
+ {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3"},
+ {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0"},
+ {file = "watchdog-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8"},
+ {file = "watchdog-3.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100"},
+ {file = "watchdog-3.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346"},
+ {file = "watchdog-3.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64"},
+ {file = "watchdog-3.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a"},
+ {file = "watchdog-3.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44"},
+ {file = "watchdog-3.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a"},
+ {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709"},
+ {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83"},
+ {file = "watchdog-3.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d"},
+ {file = "watchdog-3.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33"},
+ {file = "watchdog-3.0.0-py3-none-win32.whl", hash = "sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f"},
+ {file = "watchdog-3.0.0-py3-none-win_amd64.whl", hash = "sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c"},
+ {file = "watchdog-3.0.0-py3-none-win_ia64.whl", hash = "sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759"},
+ {file = "watchdog-3.0.0.tar.gz", hash = "sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9"},
+]
+
+[package.extras]
+watchmedo = ["PyYAML (>=3.10)"]
+
+[[package]]
+name = "wcwidth"
+version = "0.2.8"
+description = "Measures the displayed width of unicode strings in a terminal"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "wcwidth-0.2.8-py2.py3-none-any.whl", hash = "sha256:77f719e01648ed600dfa5402c347481c0992263b81a027344f3e1ba25493a704"},
+ {file = "wcwidth-0.2.8.tar.gz", hash = "sha256:8705c569999ffbb4f6a87c6d1b80f324bd6db952f5eb0b95bc07517f4c1813d4"},
+]
+
[[package]]
name = "win32-setctime"
version = "1.1.0"
description = "A small Python utility to set file creation time on Windows"
+category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -1202,22 +2916,196 @@ files = [
[package.extras]
dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"]
+[[package]]
+name = "wrapt"
+version = "1.15.0"
+description = "Module for decorators, wrappers and monkey patching."
+category = "main"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+files = [
+ {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"},
+ {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"},
+ {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"},
+ {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"},
+ {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"},
+ {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"},
+ {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"},
+ {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"},
+ {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"},
+ {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"},
+ {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"},
+ {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"},
+ {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"},
+ {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"},
+ {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"},
+ {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"},
+ {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"},
+ {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"},
+ {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"},
+ {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"},
+ {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"},
+ {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"},
+ {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"},
+ {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"},
+ {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"},
+ {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"},
+ {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"},
+ {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"},
+ {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"},
+ {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"},
+ {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"},
+ {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"},
+ {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"},
+ {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"},
+ {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"},
+ {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"},
+ {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"},
+ {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"},
+ {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"},
+ {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"},
+ {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"},
+ {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"},
+ {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"},
+ {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"},
+ {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"},
+ {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"},
+ {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"},
+ {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"},
+ {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"},
+ {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"},
+ {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"},
+ {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"},
+ {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"},
+ {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"},
+ {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"},
+ {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"},
+ {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"},
+ {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"},
+ {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"},
+ {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"},
+ {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"},
+ {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"},
+ {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"},
+ {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"},
+ {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"},
+ {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"},
+ {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"},
+ {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"},
+ {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"},
+ {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"},
+ {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"},
+ {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"},
+ {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"},
+ {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"},
+ {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"},
+]
+
+[[package]]
+name = "yarl"
+version = "1.9.2"
+description = "Yet another URL library"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "yarl-1.9.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82"},
+ {file = "yarl-1.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8"},
+ {file = "yarl-1.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9"},
+ {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560"},
+ {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac"},
+ {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea"},
+ {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608"},
+ {file = "yarl-1.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5"},
+ {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0"},
+ {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4"},
+ {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095"},
+ {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3"},
+ {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528"},
+ {file = "yarl-1.9.2-cp310-cp310-win32.whl", hash = "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3"},
+ {file = "yarl-1.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde"},
+ {file = "yarl-1.9.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6"},
+ {file = "yarl-1.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb"},
+ {file = "yarl-1.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0"},
+ {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2"},
+ {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191"},
+ {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d"},
+ {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7"},
+ {file = "yarl-1.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6"},
+ {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8"},
+ {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9"},
+ {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be"},
+ {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7"},
+ {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a"},
+ {file = "yarl-1.9.2-cp311-cp311-win32.whl", hash = "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8"},
+ {file = "yarl-1.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051"},
+ {file = "yarl-1.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74"},
+ {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367"},
+ {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef"},
+ {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3"},
+ {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938"},
+ {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc"},
+ {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33"},
+ {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45"},
+ {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185"},
+ {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04"},
+ {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582"},
+ {file = "yarl-1.9.2-cp37-cp37m-win32.whl", hash = "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b"},
+ {file = "yarl-1.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368"},
+ {file = "yarl-1.9.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac"},
+ {file = "yarl-1.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4"},
+ {file = "yarl-1.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574"},
+ {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb"},
+ {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59"},
+ {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e"},
+ {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417"},
+ {file = "yarl-1.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78"},
+ {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333"},
+ {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c"},
+ {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5"},
+ {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc"},
+ {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b"},
+ {file = "yarl-1.9.2-cp38-cp38-win32.whl", hash = "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7"},
+ {file = "yarl-1.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72"},
+ {file = "yarl-1.9.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9"},
+ {file = "yarl-1.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8"},
+ {file = "yarl-1.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7"},
+ {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716"},
+ {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a"},
+ {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3"},
+ {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955"},
+ {file = "yarl-1.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1"},
+ {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4"},
+ {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6"},
+ {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf"},
+ {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3"},
+ {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80"},
+ {file = "yarl-1.9.2-cp39-cp39-win32.whl", hash = "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623"},
+ {file = "yarl-1.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18"},
+ {file = "yarl-1.9.2.tar.gz", hash = "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571"},
+]
+
+[package.dependencies]
+idna = ">=2.0"
+multidict = ">=4.0"
+
[[package]]
name = "zipp"
-version = "3.15.0"
+version = "3.17.0"
description = "Backport of pathlib-compatible object wrapper for zip files"
+category = "main"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"},
- {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"},
+ {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"},
+ {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"},
]
[package.extras]
-docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
-testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
+docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"]
+testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"]
[metadata]
lock-version = "2.0"
-python-versions = "^3.8"
-content-hash = "dafa0a0293526aa5cc33c8125b078dda2ba60a024ce38be605cb60da0b0a2767"
+python-versions = "^3.11"
+content-hash = "314f13fb81d9c15d9b8a583dd7df9181d7902494a80984dfb07fa7ff2d5006be"
diff --git a/jobbergate-docs/pyproject.toml b/jobbergate-docs/pyproject.toml
index 6b3067bc..32eebb37 100644
--- a/jobbergate-docs/pyproject.toml
+++ b/jobbergate-docs/pyproject.toml
@@ -8,16 +8,16 @@ repository = "https://github.com/omnivector-solutions/jobbergate"
[tool.poetry.dependencies]
-python = "^3.8"
-sphinxcontrib-httpdomain = "^1.8.0"
-sphinx-book-theme = "^0.1.6"
-toml = "^0.10.2"
+python = "^3.11"
+mkdocs-material = "^9.4.2"
+mkdocstrings = {extras = ["python"], version = "^0.23.0"}
+pygments = "^2.16.1"
jobbergate-core = {path = "../jobbergate-core", develop = true }
-sphinxcontrib-napoleon = "^0.7"
-sphinx-copybutton = "^0.5"
+jobbergate-api = {path = "../jobbergate-api", develop = true }
+jobbergate-cli = {path = "../jobbergate-cli", develop = true }
+jobbergate-agent = {path = "../jobbergate-agent", develop = true }
-[tool.poetry.dev-dependencies]
-sphinx-autobuild = "^2021.3.14"
+[tool.poetry.group.dev.dependencies]
black = "^21.9b0"
isort = "^5.9.3"
diff --git a/jobbergate-docs/src/apps/index.rst b/jobbergate-docs/src/apps/index.rst
deleted file mode 100644
index a60e04e5..00000000
--- a/jobbergate-docs/src/apps/index.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-=================
- Jobbergate Apps
-=================
-
-Jobbergate is comprised of 3 separate python applications that work in concert. These
-applications allow Job Scripts to be created and submitted to a `Slurm`_ cluster without
-the Jobbergate user having to inteact directly with Slurm or remotely access the cluster
-by command line at all.
-
-An overview for each and a usage document are included in the pages listed below.
-
-
-Table of Contents
------------------
-
-.. toctree::
- :maxdepth: 2
-
- Jobbergate CLI
- Jobbergate API
- Jobbergate Agent
-
-
-.. _`slurm`: https://slurm.schedmd.com/documentation.html
diff --git a/jobbergate-docs/src/apps/jobbergate_agent/index.rst b/jobbergate-docs/src/apps/jobbergate_agent/index.rst
deleted file mode 100644
index 5f576e18..00000000
--- a/jobbergate-docs/src/apps/jobbergate_agent/index.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-==================
- Jobbergate Agent
-==================
-
-This section describes the Jobbergate Agent
-
-
-Table of Contents
------------------
-
-.. toctree::
- :maxdepth: 2
-
- Overview
- Usage
diff --git a/jobbergate-docs/src/apps/jobbergate_agent/overview.rst b/jobbergate-docs/src/apps/jobbergate_agent/overview.rst
deleted file mode 100644
index 42c28d65..00000000
--- a/jobbergate-docs/src/apps/jobbergate_agent/overview.rst
+++ /dev/null
@@ -1,35 +0,0 @@
-===========================
- Jobbergate Agent Overview
-===========================
-
-The `Jobbergate Agent `_
-is a daemon app that is installed on the Slurm cluster.
-
-It performs two primary functions:
-
-* Submitting newly created Job Submissions to the Slurm cluster
-* Updating the status on Job Submissions as they are processed
-
-Submitting Jobs
----------------
-
-To find which Job Submissions need to be passed on to the Slurm cluster, The Jobbergate Agent
-watches the Job Submissions resource for entries with a ``CREATED`` status. Job Submissions in
-this status have been created by the API but have not yet been submitted to Slurm.
-
-When submitting a job to Slurm, the Jobbergate Agent must first pull all the files for the job
-from the Job Script entry from which the Job Submission was created. Once all the files have
-been dowloaded, the job is submitted by a POST call to the Slurm Rest API with the Job Script
-files and paramters.
-
-Updating Job Status
--------------------
-
-Once submitted, the Jobbergate Agent updates the status of the Job Submission to ``SUBMITTED``.
-If there is an error during the submission process, the Agent will set the Job Submission
-status to ``REJECTED``.
-
-Finally, when the Slurm cluster is finished running the job, the Agent will update the status
-to ``COMPLETE`` or ``FAILED`` to indicate that work for that Job Submission is finished.
-cluster, and then submits them through Slurm. It also updates the status for jobs that are
-complete or have failed.
diff --git a/jobbergate-docs/src/apps/jobbergate_agent/usage.rst b/jobbergate-docs/src/apps/jobbergate_agent/usage.rst
deleted file mode 100644
index cf8419bb..00000000
--- a/jobbergate-docs/src/apps/jobbergate_agent/usage.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-========================
- Using Jobbergate Agent
-========================
-
-The Jobbergate Agent is not interactive at all, and is intended to be launched and left in
-place.
-
-The Agent provides rich logging that may be monitored to understand its current state.
diff --git a/jobbergate-docs/src/apps/jobbergate_api/index.rst b/jobbergate-docs/src/apps/jobbergate_api/index.rst
deleted file mode 100644
index de505389..00000000
--- a/jobbergate-docs/src/apps/jobbergate_api/index.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-================
- Jobbergate API
-================
-
-This section describes the Jobbergate API
-
-
-Table of Contents
------------------
-
-.. toctree::
- :maxdepth: 2
-
- Overview
- Usage
diff --git a/jobbergate-docs/src/apps/jobbergate_api/overview.rst b/jobbergate-docs/src/apps/jobbergate_api/overview.rst
deleted file mode 100644
index 67594a22..00000000
--- a/jobbergate-docs/src/apps/jobbergate_api/overview.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-=========================
- Jobbergate API Overview
-=========================
-
-The `Jobbergate API`_ is a RESTful API that serves as the back-end for the system. It serves data for the Jobbergate CLI
-and any other interfaces and automations that need to connect with Jobbergate resources.
-
-There jobbergate-api offers interactive documentation via `swagger`_.
-
-The API's endpoints are secured and require valid JWTs issued by the OIDC provider the
-API is configured with.
-
-.. TODO::
-
- reference the documentation for setting up OIDC
-
-
-.. _`Jobbergate API`: https://github.com/omnivector-solutions/jobbergate/jobbergate-api
-.. _`swagger`: https://armada-k8s.staging.omnivector.solutions/jobbergate/docs>
diff --git a/jobbergate-docs/src/apps/jobbergate_api/usage.rst b/jobbergate-docs/src/apps/jobbergate_api/usage.rst
deleted file mode 100644
index 67ad97a6..00000000
--- a/jobbergate-docs/src/apps/jobbergate_api/usage.rst
+++ /dev/null
@@ -1,123 +0,0 @@
-======================
- Using Jobbergate API
-======================
-
-The Jobbergate API is intended to be consumed by automated processes or other applications. These include
-the Jobbergate CLI and Jobbergate Agent, but it may serve any number of other applications.
-
-The Jobbergate API is a standard RESTful API that uses HTTP for communication.
-
-
-Getting an Auth Token
----------------------
-
-Before the Jobbergate API can be consumed, you must first secure an access token that authenticates the requests
-and grants authorization based on your user's permissions.
-
-Jobbergate API's auth is provided by a connected OIDC service. You may make calls directly to this service from your
-app to secure an auth token, but the easiest way to procure a token is through the Jobbergate CLI. See the
-"Logging In" section on the `CLI usage`_ page
-
-
-Querying the API
-----------------
-
-Once you have an auth token, you can interact with any of the Jobbergate API endpoints. To see a complete list of the
-endpoints and information about the request and response schemas, you can visit the `swagger`_ page.
-
-For requests made through a command-line tool or API testing tool like `Postman`_, you must include the auth token in
-the ``Authorization`` header of requests with a prefix like ``Bearer token-text-here``.
-
-
-Query Examples
---------------
-
-For these examples:
-
-* Auth token value will be "XXXXXXXX"
-* Jobbergate API base URL is "http://jobbergate.local:8000/jobbergate"
-* Goal is to fetch the list of all available Job Scripts
-
-
-`curl`_
-.......
-
-From a linux terminal, we can use the `curl`_ command to make a request to an API quite easily:
-
-.. code-block:: console
-
- curl --header "Authorization: Bearer XXXXXXXX" http://jobbergate.local/jobbergate/job-scripts
-
- {"results":[{"id":1,"created_at":"2022-09-09T21:34:16.889289","updated_at":"2022-09-09T21:34:16.889289","job_script_name":"test script","job_script_description":null,"job_script_owner_email":"local-user@jobbergate.local","application_id":1}],"pagination":{"total":1,"start":null,"limit":null}}
-
-To see the result more clearly, you can use a tool like ``jq`` to format the JSON response::
-
- {
- "results": [
- {
- "id": 1,
- "created_at": "2022-09-09T21:34:16.889289",
- "updated_at": "2022-09-09T21:34:16.889289",
- "job_script_name": "test script",
- "job_script_description": null,
- "job_script_owner_email": "local-user@jobbergate.local",
- "application_id": 1
- }
- ],
- "pagination": {
- "total": 1,
- "start": null,
- "limit": null
- }
- }
-
-
-Python and httpx
-----------------
-
-In python, we can use the `httpx`_ package to easily send requests to and process responses from an API:
-
-.. code-block:: python
-
- import json
- import httpx
-
-
- token = "XXXXXXXX"
-
- resp = httpx.get(
- "http://localhost:8000/jobbergate/job-scripts",
- headers=dict(Authorization=f"Bearer {token}"),
- )
-
- print(json.dumps(resp.json(), indent=2))
-
-The script will print out results like this::
-
- {
- "results": [
- {
- "id": 1,
- "created_at": "2022-09-09T21:34:16.889289",
- "updated_at": "2022-09-09T21:34:16.889289",
- "job_script_name": "foo",
- "job_script_description": null,
- "job_script_owner_email": "local-user@jobbergate.local",
- "application_id": 1
- }
- ],
- "pagination": {
- "total": 1,
- "start": null,
- "limit": null
- }
- }
-
-
-
-
-.. _`CLI usage`: ../jobbergate_cli/usage.rst
-.. _`swagger`: https://armada-k8s.staging.omnivector.solutions/jobbergate/docs>
-.. _`postman`: https://www.postman.com/
-.. _`curl`: https://man7.org/linux/man-pages/man1/curl.1.html
-.. _`httpx`: https://www.python-httpx.org/
diff --git a/jobbergate-docs/src/apps/jobbergate_cli/index.rst b/jobbergate-docs/src/apps/jobbergate_cli/index.rst
deleted file mode 100644
index 72c0f947..00000000
--- a/jobbergate-docs/src/apps/jobbergate_cli/index.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-================
- Jobbergate CLI
-================
-
-This section describes the Jobbergate CLI
-
-
-Table of Contents
------------------
-
-.. toctree::
- :maxdepth: 2
-
- Overview
- Usage
-
diff --git a/jobbergate-docs/src/apps/jobbergate_cli/overview.rst b/jobbergate-docs/src/apps/jobbergate_cli/overview.rst
deleted file mode 100644
index 874c4fa0..00000000
--- a/jobbergate-docs/src/apps/jobbergate_cli/overview.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-================
- Jobbergate CLI
-================
-
-The primary purpose of the `Jobbergate CLI`_ is to provide interactive access to the Jobbergate API's features via a
-command-line interface.
-
-There are two primary modes used:
-
-* Creating resources
-* Viewing resources
-
-For creating resources, the CLI provides ``create`` subcommands for each resource that allow the user to create new
-instances. The Application resource is created by uploading files along with some metadata about the application. The
-Job Script resources are created in the CLI by rendering templates in the Application resource into new Job Script
-instances. The Job Submission resources are created by submitting a Job Script to a connected Slurm Cluster.
-
-For viewing resoruces, the CLI provides ``list`` and ``get-one`` subcommands for each resource. These commands allow
-the user to view varying levels of details about the instances that exist in the database.
-
-The Jobbergate CLI can also be used to sign in to the Jobbergate API and to retrieve the auth token that is used to
-identify the current user. This token can then be used for accessing the Jobbergate API through other means.
-
-
-.. _`Jobbergate CLI`: https://github.com/omnivector-solutions/jobbergate/jobbergate-cli
diff --git a/jobbergate-docs/src/apps/jobbergate_cli/usage.rst b/jobbergate-docs/src/apps/jobbergate_cli/usage.rst
deleted file mode 100644
index d337dde1..00000000
--- a/jobbergate-docs/src/apps/jobbergate_cli/usage.rst
+++ /dev/null
@@ -1,177 +0,0 @@
-======================
- Using Jobbergate CLI
-======================
-
-The commands available in ``jobbergate-cli`` revolve around the three core resources of
-the system:
-
-* Applications
-* Job Scripts
-* Job Submissions
-
-.. Note::
-
- The commands shown here are for the most recent version of Jobbergate. In order to
- use the Jobbergate CLI in "legacy" mode, you need to set the
- ``JOBBERGATE_COMPATIBILITY_MODE`` environment variable to 1. Then, check the usage
- using the ``--help`` for details about the subcommands.
-
-
-Checking Usage
-==============
-
-The usage of the ``jobbergate-cli`` can be checked at any time using the ``--help``
-flag. In addition to usage information for the top-level command, ``jobbergate-cli``
-also provides ``--help`` usage for each subcommand.
-
-To see the top-level usage, run the following command:
-
-.. code-block:: console
-
- jobbergate --help
- Usage: jobbergate [OPTIONS] COMMAND [ARGS]...
-
- Welcome to the Jobbergate CLI!
-
- More information can be shown for each command listed below by running it
- with the --help option.
-
- Options:
- --verbose / --no-verbose Enable verbose logging to the terminal
- [default: no-verbose]
- --full / --no-full Print all fields from CRUD commands
- [default: no-full]
- --raw / --no-raw Print output from CRUD commands as raw json
- [default: no-raw]
- --version / --no-version Print the version of jobbergate-cli and exit
- [default: no-version]
- --install-completion [bash|zsh|fish|powershell|pwsh]
- Install completion for the specified shell.
- --show-completion [bash|zsh|fish|powershell|pwsh]
- Show completion for the specified shell, to
- copy it or customize the installation.
- --help Show this message and exit.
-
- Commands:
- applications Commands to interact with applications
- job-scripts Commands to interact with job scripts
- job-submissions Commands to interact with job submissions
- login Log in to the jobbergate-cli by storing the supplied...
- logout Logs out of the jobbergate-cli.
- show-token Show the token for the logged in user.
-
-
-Logging In
-==========
-
-In order to interact with any Jobbergate resources, you first need to log in as a
-Jobbergate user.
-
-First, invoke the ``login`` subcommand. You will then be prompted with a browser link to
-open in order to login. Open the link in the browser and complete the login process.
-When you have finished, the CLI will report that you have successfully logged in:
-
-.. code-block:: console
-
- jobbergate login
-
- ╭────────────────────────────────────────────────────────────────── Waiting for login ───────────────────────────────────────────────────────────────────╮
- │ │
- │ To complete login, please open the following link in a browser: │
- │ │
- │ http://keycloak.local:8080/realms/jobbergate-local/device?user_code=BMVJ-NLZS │
- │ │
- │ Waiting up to 5.0 minutes for you to complete the process... │
- │ │
- ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
-
- Waiting for web login... ━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3% 0:04:50
-
- ╭────────────────────────────────────────────────────────────────────── Logged in! ──────────────────────────────────────────────────────────────────────╮
- │ │
- │ User was logged in with email 'local-user@jobbergate.local' │
- │ │
- ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
-
-
-It is often useful to see the auth token granted upon login. To do this, you can execute
-the ``show-token`` command. When running with ``docker-compose`` or over an ssh connection
-where clipboard is not shared, you will need to pass the ``--plain`` option to remove
-formatting characters and then copy the token to your clipboard manually. The command
-looks like this:
-
-.. code-block:: console
-
- jobbergate show-token --plain
- eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJFVU1BNnBYY0V2VC10U09sSTlrQ3J1ZHktbmtoTzI0VkQyVG92aHp1N2NnIn0.eyJleHAiOjE2NjI3NTc4NjQsImlhdCI6MTY2Mjc1NzU2NCwiYXV0aF90aW1lIjoxNjYyNzU3NTYzLCJqdGkiOiI2YjY3NWNjYS04NGVkLTRiZjYtOTFkNC00ZjlkOTZhNjE4MGYiLCJpc3MiOiJodHRwOi8va2V5Y2xvYWsubG9jYWw6ODA4MC9yZWFsbXMvam9iYmVyZ2F0ZS1sb2NhbCIsImF1ZCI6WyJodHRwczovL2xvY2FsLm9tbml2ZWN0b3Iuc29sdXRpb25zIiwiYWNjb3VudCJdLCJzdWIiOiJiNTgxNjViMC1mNDQyLTRmZDEtYWY0NS05MTZlYzJiYTNhOWEiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJjbGkiLCJzZXNzaW9uX3N0YXRlIjoiMmFjY2Q1M2EtZTY0Yy00ZGI0LWI0MTEtYWE2ZTc3YTY2N2RmIiwiYWNyIjoiMSIsInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJvZmZsaW5lX2FjY2VzcyIsInVtYV9hdXRob3JpemF0aW9uIiwiZGVmYXVsdC1yb2xlcy1qb2JiZXJnYXRlLWxvY2FsIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsiY2xpIjp7InJvbGVzIjpbImpvYmJlcmdhdGU6am9iLXNjcmlwdHM6dmlldyIsImpvYmJlcmdhdGU6am9iLXNjcmlwdHM6ZWRpdCIsImpvYmJlcmdhdGU6YXBwbGljYXRpb25zOmVkaXQiLCJqb2JiZXJnYXRlOmFwcGxpY2F0aW9uczp2aWV3Iiwiam9iYmVyZ2F0ZTpqb2Itc3VibWlzc2lvbnM6dmlldyIsImpvYmJlcmdhdGU6am9iLXN1Ym1pc3Npb25zOmVkaXQiXX0sImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoicHJvZmlsZSBlbWFpbCIsInNpZCI6IjJhY2NkNTNhLWU2NGMtNGRiNC1iNDExLWFhNmU3N2E2NjdkZiIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwicGVybWlzc2lvbnMiOlsiam9iYmVyZ2F0ZTpqb2Itc2NyaXB0czp2aWV3Iiwiam9iYmVyZ2F0ZTpqb2Itc2NyaXB0czplZGl0Iiwiam9iYmVyZ2F0ZTphcHBsaWNhdGlvbnM6ZWRpdCIsImpvYmJlcmdhdGU6YXBwbGljYXRpb25zOnZpZXciLCJqb2JiZXJnYXRlOmpvYi1zdWJtaXNzaW9uczp2aWV3Iiwiam9iYmVyZ2F0ZTpqb2Itc3VibWlzc2lvbnM6ZWRpdCJdLCJuYW1lIjoiTG9jYWwgVXNlciIsInByZWZlcnJlZF91c2VybmFtZSI6ImxvY2FsLXVzZXIiLCJnaXZlbl9uYW1lIjoiTG9jYWwiLCJmYW1pbHlfbmFtZSI6IlVzZXIiLCJlbWFpbCI6ImxvY2FsLXVzZXJAam9iYmVyZ2F0ZS5sb2NhbCJ9.cNfsslV0rXFcurpndR-kXKtnERn3sfehWPFLNDNFT4s24ifRf1uWlZYGMiwMGj7YkuLv46BDrBHTBMb64Lldsb37-Se1W5ZHeGNRckgkVbVbEaCHmB7hBTf5EJB78JciYqKaoZhRJpENWAwQpvZpjZ5WTedscJPvTcbIegD2e4MCSoG7qya2tnB9yn08QC6vG-aO9qkFzHr7BNVViLvFBzrBO5oc2KGlP8BnTUxzr5O6ork8IYr-PTKQd_zGdNgZiXQuB10LPYUYaCnji6biaMSApp2Dukrc1FQPlpiQ_Zbku00tJ0tQDtdVQHxEsjncXuXNI_oRTDSVXyuxnwxEmQ
-
-
-
-Application Commands
-====================
-
-You may interact with Jobbergate Application resources using the ``applications``
-subommand.
-
-The following sub-commands are available for ``applications``:
-
-* create
-* delete
-* get-one
-* list
-* update
-
-Details for each subcommand can be viewed by passing the ``--help`` flag to any of them.
-
-Example: Creating an Application:
-
-.. code-block:: console
-
- jobbergate applications create --name test-application --application-path /path/to/application
-
-
-JobScript Commands
-==================
-
-You may interact with Jobbergate Job Script resources using the ``job-scripts``
-subcommand.
-
-The following sub-commands are available for ``job-scripts``:
-
-* create
-* delete
-* get-one
-* list
-* update
-
-Details for each subcommand can be viewed by passing the ``--help`` flag to any of them.
-
-Example: Rendering an Application into a new Job Script:
-
-.. code-block:: console
-
- jobbergate job-sripts create --application-id=1 --name test-job-script
-
-
-JobSubmission Commands
-======================
-
-You may interact with Jobbergate Job Submission resources using the ``job-submissions``
-subcommand.
-
-The following sub-commands are available for ``job-submissions``:
-
-* create
-* delete
-* get-one
-* list
-
-Details for each subcommand can be viewed by passing the ``--help`` flag to any of them.
-
-Example: Submitting a Job Script as a new Job Submission:
-
-.. code-block:: console
-
- jobbergate job-sripts create --job-script-id=1 --name test-job-submission --cluster-name test-cluster
-
-.. _examples: https://github.com/omnivector-solutions/jobbergate/tree/main/examples
diff --git a/jobbergate-docs/src/attribution.rst b/jobbergate-docs/src/attribution.rst
deleted file mode 100644
index 00c72430..00000000
--- a/jobbergate-docs/src/attribution.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-=============
- Attribution
-=============
-
-This project began as a rewrite of the original `Jobbergate project `_ authored by
-Jimmy Hedman. The original provided the inspiration for an interactive tool used to gather template variable values to
-render jinja2 templates into Slurm job scripts. Building upon Jimmy's great idea, Jobbergate has grown into an entire
-system for managing and submitting reusable Slurm jobs, but the core idea of reusing templates combined with user input
-for the template values has remained the core of the project throughout its evolution.
diff --git a/jobbergate-docs/src/conf.py b/jobbergate-docs/src/conf.py
deleted file mode 100644
index cc0b1f73..00000000
--- a/jobbergate-docs/src/conf.py
+++ /dev/null
@@ -1,58 +0,0 @@
-import datetime
-import pathlib
-import re
-
-import toml
-
-# Configuration file for the Sphinx documentation builder.
-
-# -- Project information -----------------------------------------------------
-
-docs_root = pathlib.Path(__file__).parent
-project_root = docs_root.parent
-project_metadata = toml.load(project_root / "pyproject.toml")["tool"]["poetry"]
-
-_ptrn = r"(.*)<.*>"
-_repl = r"\1"
-author = ", ".join([re.sub(_ptrn, _repl, a) for a in project_metadata["authors"]])
-project = project_metadata["name"]
-copyright = project_metadata.get("copyright", str(datetime.datetime.now().year))
-repo_url = project = project_metadata["repository"]
-version = project_metadata["version"]
-release = project_metadata["version"]
-
-
-# -- General configuration ---------------------------------------------------
-
-master_doc = "index"
-templates_path = ["_templates"]
-smartquotes = False
-pygments_style = "rainbow_dash"
-exclude_patterns = []
-extensions = [
- "sphinx_copybutton",
- "sphinx.ext.autodoc",
- "sphinx.ext.autosectionlabel",
- "sphinx.ext.githubpages",
- "sphinx.ext.intersphinx",
- "sphinx.ext.napoleon",
- "sphinxcontrib.httpdomain",
-]
-
-intersphinx_mapping = {
- "python": ("https://docs.python.org/3", None,),
-}
-
-# -- Options for HTML output -------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages. See the documentation for
-# a list of builtin themes.
-#
-html_theme = "sphinx_book_theme"
-html_theme_options = {
- "repository_url": repo_url,
- "use_repository_button": True,
- "use_issues_button": True,
-}
-html_logo = "images/logo.png"
-html_title = project_metadata["description"]
diff --git a/jobbergate-docs/src/contact.rst b/jobbergate-docs/src/contact.rst
deleted file mode 100644
index c4f4e74a..00000000
--- a/jobbergate-docs/src/contact.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-=============
- Contact Us
-=============
-
-Omnivector started with the simple idea that a solution always follows a need. Taking this approach, Omnivector has built relationships with the world's largest engineering teams, developing solutions that accelerate the advancement of technology.
-
-Get in touch:
-
-* info@omnivector.solutions
-
-Development team:
-
-* tucker@omnivector.solutions
-* matheus@omnivector.solutions
-* felipe@omnivector.solutions
\ No newline at end of file
diff --git a/jobbergate-docs/src/core.rst b/jobbergate-docs/src/core.rst
deleted file mode 100644
index 7526670e..00000000
--- a/jobbergate-docs/src/core.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-=================
- Jobbergate Core
-=================
-
-This is a new sub-project on the Jobbergate system that contains the key components and logic to be shared among all others sub-projects (CLI, API, and Agent), and that can be exposed to the end-users to leverage their custom workflows.
-
-Authentication
---------------
-
-.. automodule:: jobbergate_core.auth.handler
- :members:
- :show-inheritance:
-
-Tokens
-^^^^^^
-
-.. automodule:: jobbergate_core.auth.token
- :members:
- :show-inheritance:
-
-Exceptions
-^^^^^^^^^^
-
-.. automodule:: jobbergate_core.auth.exceptions
- :members:
- :show-inheritance:
\ No newline at end of file
diff --git a/jobbergate-docs/src/developer_guide/ci.rst b/jobbergate-docs/src/developer_guide/ci.rst
deleted file mode 100644
index 2073f31e..00000000
--- a/jobbergate-docs/src/developer_guide/ci.rst
+++ /dev/null
@@ -1,73 +0,0 @@
-========================
- Continuous Integration
-========================
-
-Jobbergate uses `GitHub actions `_ as continuous integration tools. They are described in detail on this page.
-
-Quality Assurance
------------------
-
-A dedicated GitHub action is included at Jobbergate's repository
-(`test_on_push.yaml `_)
-to run the quality assurance tools for all sub-projects at once.
-They include unit tests, code coverage, linters, code formatters, and static type checkers.
-Each is detailed in the section :any:`Quality Assurance Tools`.
-This action is triggered whenever a new commit is pushed to the ``main`` branch or to a pull request.
-
-Publish on PyPI
----------------
-
-The major components of Jobbergate are published on PyPI, the Python Package Index.
-They are available at:
-
-* `jobbergate-api `_
-* `jobbergate-cli `_
-
-The steps to publish them to PyPI are automatized by three GitHub actions,
-that are better described bellow.
-
-Prepare for release
-^^^^^^^^^^^^^^^^^^^
-
-This action
-(`prepare_release.yaml `_)
-is triggered on a workflow dispatch event and demands some interactions
-to ensure code quality. It takes as arguments:
-
-* The base branch from which the action will run. Notice that the use of the ``main``
- branch is highly recommended in order to keep a linear commit history between releases and pre-releases.
-* The bump version rule to be applied, based on
- `Poetry version `_.
- The following options are presented in a drop-down menu:
- ``patch``, ``minor``, ``major``, ``prepatch``, ``preminor``, ``premajor``, ``prerelease``.
-
-Once activated, this action:
-
-* Uses Poetry to bump the version number of all the Jobbergate packages.
-* Checks if the new version number is synchronized between them, and fails if they are not.
-* Creates a new entry on each changelog file with the new version number and the current date,
- including all unreleased features and bug fixes.
-* Creates a new branch named ``release/``.
-* Opens a draft pull request titled ``Release ``.
-
-In this way, all the changes above can be reviewed before the release is published,
-and all quality assurance tests are executed for the pull request.
-
-The remaining steps of the workflow are chained automatically once the PR is
-accepted and merged into main.
-
-Create a new tag
-^^^^^^^^^^^^^^^^
-
-When a release PR is merged into the ``main`` branch, this action
-(`tag_on_merged_pull_request.yaml `_)
-is triggered. It creates and pushes a new tag to the repository, based on the new version number.
-
-Publish on Tag
-^^^^^^^^^^^^^^
-
-This action
-(`publish_on_tag.yaml `_)
-is finally triggered when a new version tag is pushed to the repository.
-It first double checks if the tag matches the version number of each Jobbergate component, and then
-it builds and publishes the packages on PyPI.
\ No newline at end of file
diff --git a/jobbergate-docs/src/developer_guide/dev_tools.rst b/jobbergate-docs/src/developer_guide/dev_tools.rst
deleted file mode 100644
index 5b2ea07b..00000000
--- a/jobbergate-docs/src/developer_guide/dev_tools.rst
+++ /dev/null
@@ -1,310 +0,0 @@
-===============
- API Dev Tools
-===============
-
-The Jobbergate API application ships with a few developer helper tools that add some
-convenient ways to set up or interact with the API
-
-Invoking ``dev-tools``
-----------------------
-
-The ``dev-tools`` are invoked as scripts in the Jobbergate API environment created and
-maintained by Poetry.
-
-To invoke the dev tools, you must execute the commands from the home directory for the
-``jobbergate-api``. Then, run the ``dev-tools`` script with Poetry:
-
-.. code-block:: console
-
- poetry run dev-tools --help
-
- Usage: dev-tools [OPTIONS] COMMAND [ARGS]...
-
- Options:
- --install-completion [bash|zsh|fish|powershell|pwsh]
- Install completion for the specified shell.
- --show-completion [bash|zsh|fish|powershell|pwsh]
- Show completion for the specified shell, to
- copy it or customize the installation.
- --help Show this message and exit.
-
- Commands:
- db
- dev-server Start a development server locally.
- show-env Print out the current environment settings.
-
-
-The ``db`` subcommand
----------------------
-
-There are a few convenience methods in the ``dev-tools`` for interacting with the
-Jobbergate API's postgres database. These tools are found in the ``db`` subcommand:
-
-.. code-block:: console
-
- poetry run dev-tools db --help
-
-
-The ``start`` subcommand
-........................
-
-This command is used to start up a database in docker that is configured using the
-values found in the execution environment for Jobbergate.
-
-To start a development database, invoke this command:
-
-.. code-block:: console
-
- poetry run dev-tools db start
-
-Note that the values for the database name, host, port, and password will all be
-gathered from the environment. The sript shold produce some logging output that will
-indicate the status of the db::
-
- 2022-09-07 15:44:56.634 | DEBUG | dev_tools.db:start:57 - Starting dev-jobbergate-postgres with:
- {
- "image": "postgres:14.1",
- "env": {
- "POSTGRES_PASSWORD": "compose-db-pswd",
- "POSTGRES_DB": "compose-db-name",
- "POSTGRES_USER": "compose-db-user"
- },
- "ports": {
- "5432/tcp": 5432
- }
- }
- 2022-09-07 15:44:56.634 | DEBUG | docker_gadgets.gadgets:start_service:19 - Starting service 'dev-jobbergate-postgres'
- 2022-09-07 15:44:56.642 | DEBUG | docker_gadgets.gadgets:start_service:26 - Retrieving external image for dev-jobbergate-postgres using postgres:14.1
- 2022-09-07 15:44:56.649 | DEBUG | docker_gadgets.helpers:get_image_external:43 - Pulling postgres:14.1 image (tag='14.1')
- 2022-09-07 15:45:03.190 | DEBUG | docker_gadgets.helpers:cleanup_container:13 - Checking for existing container: dev-jobbergate-postgres
- 2022-09-07 15:45:03.195 | DEBUG | docker_gadgets.helpers:cleanup_container:24 - No existing container found: dev-jobbergate-postgres
- 2022-09-07 15:45:03.196 | DEBUG | docker_gadgets.gadgets:start_service:31 - Checking if needed ports {'5432/tcp': 5432} are available
- 2022-09-07 15:45:03.217 | DEBUG | docker_gadgets.gadgets:start_service:34 - Starting container: dev-jobbergate-postgres
- 2022-09-07 15:45:03.647 | DEBUG | docker_gadgets.gadgets:start_service:48 - Started container: dev-jobbergate-postgres ()
-
-In this example, the container name is ``dev-jobbergate-postgres`` and it is running in
-the docker container referenced by ``e686e97595`` with the port 5432 mapped from
-the host machine to the container.
-
-This command is also very convenient for starting up a database for unit testing. To do
-so, you need only pass the ``--test`` flag.
-
-The ``start-all`` subcommand
-............................
-
-This command is just a convenient way of spinning up both a development database and a
-test database in one command. It is equivalent to running the following two commands in
-succession:
-
-.. code-block:: console
-
- poetry run dev-tools db start
-
-
-.. code-block:: console
-
- poetry run dev-tools db start --test
-
-
-The ``login`` subcommand
-........................
-
-This command allows you to log in to the database that your Jobbergate API execution
-environment is configured to connect with. Whether the database is hosted locally in
-docker or on a remote postrges server, this command will let you log into any database
-that your Jobbergate API can connect with.
-
-To log in to the database, execute this command:
-
-.. code-block:: console
-
- poetry run dev-tools db login
-
-
-The command will show some debug output including the URL of the database to which it is
-connecting and will then show a REPL connection to the database::
-
- $ poetry run dev-tools db login
- 2022-09-07 15:52:02.089 | DEBUG | dev_tools.db:login:26 - Logging into database: postgresql://compose-db-user:compose-db-pswd@localhost:5432/compose-db-name
- Server: PostgreSQL 14.1 (Debian 14.1-1.pgdg110+1)
- Version: 3.4.1
- Home: http://pgcli.com
- compose-db-name>
-
-
-The ``migrate`` subcommand
-..........................
-
-
-This command uses `alembic`_ to generate a migration script to bring the current
-database (described by the environment) up to date with the `SQLAlchemy`_ models
-specified in the Jobbergate API source code.
-
-To invoke the migration script generation, execute:
-
-.. code-block:: console
-
- poetry run dev-tools db migrate --message="An example migration"
-
-
-Some logging infow will be produced, including the location of the new migration script::
-
- 2022-09-07 15:58:09.725 | DEBUG | dev_tools.db:migrate:79 - Creating migration with message: An example migration
- INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
- INFO [alembic.runtime.migration] Will assume transactional DDL.
- INFO [alembic.ddl.postgresql] Detected sequence named 'applications_id_seq' as owned by integer column 'applications(id)', assuming SERIAL and omitting
- INFO [alembic.ddl.postgresql] Detected sequence named 'job_scripts_id_seq' as owned by integer column 'job_scripts(id)', assuming SERIAL and omitting
- INFO [alembic.ddl.postgresql] Detected sequence named 'job_submissions_id_seq' as owned by integer column 'job_submissions(id)', assuming SERIAL and omitting
- Generating /home/dusktreader/git-repos/omnivector/jobbergate/jobbergate-api/alembic/versions/20220907_155809--c275de463a90_an_example_migration.py ... done
- Running post write hook "black" ...
- reformatted /home/dusktreader/git-repos/omnivector/jobbergate/jobbergate-api/alembic/versions/20220907_155809--c275de463a90_an_example_migration.py
-
- All done! ✨ 🍰 ✨
- 1 file reformatted.
- done
- Running post write hook "isort" ...
- Fixing /home/dusktreader/git-repos/omnivector/jobbergate/jobbergate-api/alembic/versions/20220907_155809--c275de463a90_an_example_migration.py
- done
-
-The generated migration should *always* be reviewed before it is committed to the
-repository.
-
-It is also possible to produce a blank migration if you need to execute some raw SQL or
-write an Alembic script by hand. Just pass the ``--blank`` parameter on the command
-line:
-
-.. code-block:: console
-
- poetry run dev-tools db migrate --blank --message="A blank migration"
-
-The ``upgrade`` subcommand
-..........................
-
-This subcommand is used to apply a database migration to the database that the
-Jobbergate API is configured to connect with.
-
-By default, it will apply all the migrations that have not yet been applied to the
-database.
-
-To apply the migrations, execute the command:
-
-.. code-block:: console
-
- poetry run dev-tools db upgrade
-
-
-It will produce some logging output that shows what migrations were applied::
-
- 2022-09-07 16:05:46.315 | DEBUG | dev_tools.db:upgrade:89 - Upgrading database...
- INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
- INFO [alembic.runtime.migration] Will assume transactional DDL.
- INFO [alembic.runtime.migration] Running upgrade d22da0741b7f -> c275de463a90, An example migration
-
-
-If you wish to only upgrade the database *to* a speicifc migration, you can pass that
-migration's id to the ``--target`` param.
-
-
-The ``show-env`` subcommand
----------------------------
-
-This command will show how the Jobbergate API is configured through its environment
-settings. To see the environment, execute this command:
-
-.. code-block:: console
-
- poetry run dev-tools show-env
- Jobbergate settings:
- DEPLOY_ENV: LOCAL
- LOG_LEVEL: DEBUG
- DATABASE_HOST: localhost
- DATABASE_USER: compose-db-user
- DATABASE_PSWD: compose-db-pswd
- DATABASE_NAME: compose-db-name
- DATABASE_PORT: 5432
- TEST_DATABASE_HOST: localhost
- TEST_DATABASE_USER: test-user
- TEST_DATABASE_PSWD: test-pswd
- TEST_DATABASE_NAME: test-db
- TEST_DATABASE_PORT: 5433
- S3_BUCKET_NAME: jobbergate-k8s-staging
- S3_ENDPOINT_URL: None
- ARMASEC_DOMAIN: localhost:9080/realms/master/protocol/openid-connect
- ARMASEC_USE_HTTPS: True
- ARMASEC_AUDIENCE: https://local.omnivector.solutions
- ARMASEC_DEBUG: True
- ARMASEC_ADMIN_DOMAIN: None
- ARMASEC_ADMIN_AUDIENCE: None
- ARMASEC_ADMIN_MATCH_KEY: None
- ARMASEC_ADMIN_MATCH_VALUE: None
- IDENTITY_CLAIMS_KEY: https://omnivector.solutions
- SENTRY_DSN: None
- SENTRY_SAMPLE_RATE: 1.0
- MAX_UPLOAD_FILE_SIZE: 104857600
- SENDGRID_FROM_EMAIL: None
- SENDGRID_API_KEY: None
-
-The command can also produce the output as JSON if needed:
-
-.. code-block:: console
-
- poetry run dev-tools show-env --json
- {"DEPLOY_ENV": "LOCAL", "LOG_LEVEL": "DEBUG", "DATABASE_HOST": "localhost", "DATABASE_USER": "compose-db-user", "DATABASE_PSWD": "compose-db-pswd", "DATABASE_NAME": "compose-db-name", "DATABASE_PORT": 5432, "TEST_DATABASE_HOST": "localhost", "TEST_DATABASE_USER": "test-user", "TEST_DATABASE_PSWD": "test-pswd", "TEST_DATABASE_NAME": "test-db", "TEST_DATABASE_PORT": 5433, "S3_BUCKET_NAME": "jobbergate-k8s-staging", "S3_ENDPOINT_URL": null, "ARMASEC_DOMAIN": "localhost:9080/realms/master/protocol/openid-connect", "ARMASEC_USE_HTTPS": true, "ARMASEC_AUDIENCE": "https://local.omnivector.solutions", "ARMASEC_DEBUG": true, "ARMASEC_ADMIN_DOMAIN": null, "ARMASEC_ADMIN_AUDIENCE": null, "ARMASEC_ADMIN_MATCH_KEY": null, "ARMASEC_ADMIN_MATCH_VALUE": null, "IDENTITY_CLAIMS_KEY": "https://omnivector.solutions", "SENTRY_DSN": null, "SENTRY_SAMPLE_RATE": 1.0, "MAX_UPLOAD_FILE_SIZE": 104857600, "SENDGRID_FROM_EMAIL": null, "SENDGRID_API_KEY": null}
-
-
-The ``dev-server`` subcommand
------------------------------
-
-This command starts up a local development server for the Jobbergate API. It will
-be created using the configuration set up in the environment settings.
-
-To start the server, run:
-
-.. code-block:: console
-
- poetry run dev-tools dev-server
- 2022-09-07 16:15:05.830 | INFO | dev_tools.dev_server:dev_server:50 - Waiting for the database
- 2022-09-07 16:15:05.830 | DEBUG | dev_tools.dev_server:_wait_for_db:23 - database url is: postgresql://compose-db-user:compose-db-pswd@localhost:5432/compose-db-name
- 2022-09-07 16:15:05.830 | DEBUG | dev_tools.dev_server:_wait_for_db:26 - Checking health of database at postgresql://compose-db-user:compose-db-pswd@localhost:5432/compose-db-name: Attempt #0
- INFO: Will watch for changes in these directories: ['/home/dusktreader/git-repos/omnivector/jobbergate/jobbergate-api']
- INFO: Uvicorn running on http://0.0.0.0:5000 (Press CTRL+C to quit)
- INFO: Started reloader process [27314] using statreload
- 2022-09-07 16:15:06.555 | INFO | jobbergate_api.main::39 - Skipping Sentry
- INFO: Started server process [27319]
- INFO: Waiting for application startup.
- 2022-09-07 16:15:06.587 | INFO | jobbergate_api.main:init_logger:71 - Logging configured 📝 Level: DEBUG
- 2022-09-07 16:15:06.587 | DEBUG | jobbergate_api.main:init_database:79 - Initializing database
- INFO: Application startup complete.
-
-
-There are additional options that can control some of the details of the settings of the
-dev server. These can be examined with the ``--help`` flag:
-
-.. code-block:: console
-
- $ poetry run dev-tools dev-server --help
- Usage: dev-tools dev-server [OPTIONS]
-
- Start a development server locally.
-
- Options:
- --db-wait-count INTEGER How many times to attempt a check [default: 3]
- --db-wait-interval FLOAT Seconds to wait between checks [default: 5.0]
- --port INTEGER The port where the server should listen [default:
- 5000]
- --log-level TEXT The level to log uvicorn output [default: DEBUG]
- --help Show this message and exit.
-
-
-Note the ``--db-wait-*`` flags. These are used to make the dev server wait for the
-dev database to become available. These are mostly useful in the context of
-``docker-compose``.
-
-It should also be noted that a development uvicorn server will automatically reload the
-app if the source files of the app change. This is very helpful for debugging behavior
-in the app without having to manually stop and start the app after every source code
-modification.
-
-
-.. _alembic: https://alembic.sqlalchemy.org/en/latest/
-.. _sqlalchemy: https://www.sqlalchemy.org/
diff --git a/jobbergate-docs/src/developer_guide/execution_environment.rst b/jobbergate-docs/src/developer_guide/execution_environment.rst
deleted file mode 100644
index e69de29b..00000000
diff --git a/jobbergate-docs/src/developer_guide/index.rst b/jobbergate-docs/src/developer_guide/index.rst
deleted file mode 100644
index 9f212787..00000000
--- a/jobbergate-docs/src/developer_guide/index.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-=================
- Developer Guide
-=================
-
-This section explains how to work on the Jobbergate project itself.
-
-
-Table of Contents
------------------
-
-.. toctree::
- :maxdepth: 2
-
- jobergate.py
- jobergate.yaml
- Developer Tools
- Quality Assurance Tools
- Integration Testing
- Continuous Integration
- S3 File Storage
- Setting up Keycloak
diff --git a/jobbergate-docs/src/developer_guide/integration_testing.rst b/jobbergate-docs/src/developer_guide/integration_testing.rst
deleted file mode 100644
index da821846..00000000
--- a/jobbergate-docs/src/developer_guide/integration_testing.rst
+++ /dev/null
@@ -1,431 +0,0 @@
-=====================
- Integration Testing
-=====================
-
-When you integration testi Jobbergate, it is essential that you test the full cycle of
-the platfrom from Application creation to remote Job Submission through the Cluster
-Agent.
-
-For most changes, it is adequate for you to use the ``docker-compose`` configuration
-found in the `Jobbergate Composed `_
-subproject. Start with the guide on that subproject's README. Take note of how to
-exeucte the Jobbergate CLI commands as they will be used extensively in the intergration
-testing. You may use the automatically created user for testing
-(username: "local-user", password: "local").
-
-The integration testing should cover the following work-flows:
-
-* Logging in through the CLI
-* Creating an Application
-* Querying a single Application
-* Updating an Application
-* Rendering a Job Script from an Application
-* Updating a Job Script
-* Submitting a Job Script
-* Verifying a Job Submission
-* Deleting the Job Submission, Job Script, and Application
-* Logging out through the CLI
-
-
-Setup
------
-
-First, start up the Jobbergate system in docker-compose. Navigate to the
-``jobbergate-composed`` subproject and run the following command:
-
-.. code-block:: console
-
- docker-compose up --build
-
-Once all the services are started, jump into the prepared ``jobbergate-cli`` container
-to execute CLI commands. To do so, open a new terminal in the ``jobbergate-composed``
-subproject and run the following command:
-
-.. code-block:: console
-
- docker-compose run jobbergate-cli bash
-
-Now you may start executing commands with the Jobbergate CLI.
-
-To assist with some of the commands below, create a ``NAME`` environment variable that
-can you may use to help identify resource that you create during the process. You should
-set the value based on the current date so that the associated resources are easy to
-identify. Run the following command to set it:
-
-.. code-block:: console
-
- export NAME="test--$(whoami)--$(date -I)"
-
-You have now created a test name like "test--tbeck--2022-09-02".
-
-
-Logging in through the CLI
---------------------------
-
-The first work-flow you will test covers the auth mechanics of both the CLI and the API.
-
-Run the following command in the CLI:
-
-.. code-block:: console
-
- jobbergate login
-
-Next, open the link that is printed out and log in as ``local-user`` (password "local").
-If asked, grant all of the permissions.
-
-Verify that the CLI reports that the user has been successfully logged in.
-
-At this point, verify that the token that has been retrieved for the user is correct.
-
-Run the following command in the CLI:
-
-.. code-block:: console
-
- jobbergate show-token --plain
-
-Copy the text of the token that is printed to the screen, navigate to
-`jwt.io `_, and paste the token into the "Encoded" box. Then, check the
-"Payload" output and verify that it contains:
-
-* "view" and "edit" ``permissions`` for applications, job-scripts, and job-submissions
-* ``email`` equalling "local-user@jobberate.local"
-* ``aud`` includes "https://local.omnivector.solutions"
-* ``azp`` equals "jobbergate-cli"
-
-
-Creating an Application
------------------------
-
-Next, test the command to create an Application through the CLI, and verify that the
-resource is created in the database. Als, verify that the files are successfully
-uploaded to the file store.
-
-For integration testing, use the built-in
-`example application `_.
-This example application has 3 simple template variables, and, when submitted, the
-rendered Job Script simply prints the values of those variables.
-
-Run the following command in the CLI:
-
-.. code-block:: console
-
- jobbergate applications create --name=$NAME --identifier=$NAME --application-path=/example
-
-
-Verify that output shows that a single application was inserted and that the files were
-uploaded::
-
- Created Application
- ┏━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
- ┃ Key ┃ Value ┃
- ┡━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
- │ id │ 1 │
- │ application_name │ test--tbeck--2022-09-02 │
- │ application_identifier │ test--tbeck--2022-09-02 │
- │ application_description │ │
- │ application_owner_email │ local-user@jobbergate.local │
- │ application_uploaded │ True │
- └─────────────────────────┴─────────────────────────────┘
-
-
-Querying a single Application
------------------------------
-
-Next, verify that we can look up a single pplication by both its ``id`` and it's
-``identifier``. Also include the ``--full`` argument to the base ``jobbergate`` command
-so that the output will show all the fields in the database including the source file,
-the config, and the timestamps.
-
-First, fetch the Application by ``id`` using the following command in the CLI:
-
-.. code-block:: console
-
- jobbergate --full applications get-one --id=1
-
-The output should look something like this::
-
- ┏━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
- ┃ Key ┃ Value ┃
- ┡━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
- │ id │ 1 │
- │ application_name │ test--tbeck--2022-09-02 │
- │ application_identifier │ test--tbeck--2022-09-02 │
- │ application_description │ │
- │ application_owner_email │ local-user@jobbergate.local │
- │ application_uploaded │ True │
- │ created_at │ 2022-09-02 21:54:47.809237 │
- │ updated_at │ 2022-09-02 22:05:27.580963 │
- │ application_config │ jobbergate_config: │
- │ │ default_template: dummy-script.py.j2 │
- │ │ output_directory: . │
- │ │ application_config: │
- │ │ foo: FOO │
- │ │ bar: BAR │
- │ │ baz: BAZ │
- │ │ │
- │ application_source_file │ from jobbergate_cli.subapps.applications.application_base import JobbergateApplicationBase │
- │ │ from jobbergate_cli.subapps.applications.questions import Text │
- │ │ │
- │ │ │
- │ │ class JobbergateApplication(JobbergateApplicationBase): │
- │ │ │
- │ │ def mainflow(self, data=None): │
- │ │ if data is None: │
- │ │ data=dict() │
- │ │ data["nextworkflow"] = "subflow" │
- │ │ return [Text("foo", message="gimme the foo!"), Text("bar", message="gimme the bar!")] │
- │ │ │
- │ │ def subflow(self, data=None): │
- │ │ if data is None: │
- │ │ data=dict() │
- │ │ return [Text("baz", message="gimme the baz!", default="zab")] │
- │ │ │
- └─────────────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────┘
-
-Verify that the ``id``, ``name``, ``identifier``, and timestamps match the Applicaiton
-that was created.
-
-Next, fetch the same application by ``identifier`` and verify that it is the same
-Application:
-
-.. code-block:: console
-
- jobbergate --full applications get-one --identifier=test--tbeck--2022-09-02
-
-
-Updating an Application
------------------------
-
-Next, verify that you can update the application through the CLI.
-
-Run this command to verify that we can change the name:
-
-.. code-block:: console
-
- jobbergate applications update --id=1 --application-desc="Here is a test description"
-
-Verify that you can see the new description in the application when you fetch it via the
-``get-one`` subcommand. Also, check the output with the ``--full`` parameter to make
-sure that the ``updated_at`` field is different and later than the ``created_at`` field.
-
-
-Rendering a Job Script from an Application
-------------------------------------------
-
-Now that an application has been uploaded uploaded, use it to render a new Job Script.
-
-There are a few differnt options to test here to make sure they are working correctly:
-
-* Basic, interactive render
-* Render in "fast mode" with a ``--param-file``
-* Render with additional SBATCH params
-
-
-Basic, interactive render
-.........................
-
-First, render an Applicaiton to a Job Script by executing the interactive code that
-gathers the values for template variables from the user.
-
-To start the renderin process, execute:
-
-.. code-block:: console
-
- jobbergate job-scripts create --name=$NAME --application-id=1
-
-Verify that you are shown 3 prompts to supply values for the template variables. Fill
-these in with any values you like. Notice that the third question has a default response
-supplied already. Accept this value or replace it with your preferred value::
-
- [?] gimme the foo!: FOO
- [?] gimme the bar!: BAR
- [?] gimme the foo!: BAZ
-
-
-After completing the questions, verify that the CLI reports that the new Job Script was
-created using the supplied values. Decline to submit the job immediately::
-
- Created Job Script
- ┏━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
- ┃ Key ┃ Value ┃
- ┡━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
- │ id │ 1 │
- │ application_id │ 1 │
- │ job_script_name │ test--tbeck--2022-09-02 │
- │ job_script_description │ None │
- │ job_script_files │ {'main_file_path': PosixPath('dummy-script.py'), 'files': {PosixPath('dummy-script.py'): '#!/bin/python3\n\n#SBATCH -J │
- │ │ dummy_job\n#SBATCH -t 60\n\nprint("I am a very, very dumb job │
- │ │ script")\nprint("foo=FOO")\nprint("bar=BAR")\nprint("baz=BAZ")'}} │
- │ job_script_owner_email │ local-user@jobbergate.local │
- └────────────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
-
- Would you like to submit this job immediately? [y/N]:
-
-Notice here that the values in the ``job_script_files`` have been filled in with the
-answers you provided in the question answering segment.
-
-
-Rener in "fast mode" with a ``--param-file``
-............................................
-
-Next, verify that a Job Script can be rendered while skipping the interactive question
-answering segment by pre-supplying the application with the values to use for rendering.
-Since only the third question has a default, supply at least the other two questions
-with a param using the ``--param-file`` parameter.
-
-First, create a file to hold the params (hit ``ctrl-d`` to finish and write the file):
-
-.. code-block:: console
-
- cat > params.yaml
- foo: FOO
- bar: BAR
-
-Now, render the Application using this file. Include the ``--no-submit`` flag because
-the Job Script shouldn't be submitted immediately. Verify only the rendering process for
-the new Job Script:
-
-.. code-block:: console
-
- jobbergate job-scripts create --name=$NAME --application-id=1 --fast --param-file=params.json --no-submit
-
- Default values
- used
- ┏━━━━━┳━━━━━━━┓
- ┃ Key ┃ Value ┃
- ┡━━━━━╇━━━━━━━┩
- │ baz │ zab │
- └─────┴───────┘
-
-
- Created Job Script
- ┏━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
- ┃ Key ┃ Value ┃
- ┡━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
- │ id │ 2 │
- │ application_id │ 1 │
- │ job_script_name │ test--tbeck--2022-09-02 │
- │ job_script_description │ None │
- │ job_script_files │ {'main_file_path': PosixPath('dummy-script.py'), 'files': {PosixPath('dummy-script.py'): '#!/bin/python3\n\n#SBATCH -J │
- │ │ dummy_job\n#SBATCH -t 60\n\nprint("I am a very, very dumb job │
- │ │ script")\nprint("foo=FOO")\nprint("bar=BAR")\nprint("baz=zab")'}} │
- │ job_script_owner_email │ local-user@jobbergate.local │
- └────────────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
-
-
-
-Render with additional SBATCH params
-....................................
-
-Finally, test that additional ``SBATCH`` params can be inserted at render time. The code
-will insert these additional paramters into the rendered ``job_script_files``.
-
-Run the following command to check for this. Note that multiple sbatch params must each
-be passed to a separate argument:
-
-.. code-block:: console
-
- jobbergate job-scripts create --name=$NAME --application-id=1 --fast --param-file=params.json --no-submit --sbatch-params="--cluster=fake" --sbatch-params="--partition=dummy"
-
- Default values
- used
- ┏━━━━━┳━━━━━━━┓
- ┃ Key ┃ Value ┃
- ┡━━━━━╇━━━━━━━┩
- │ baz │ zab │
- └─────┴───────┘
-
-
- Created Job Script
- ┏━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
- ┃ Key ┃ Value ┃
- ┡━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
- │ id │ 1 │
- │ application_id │ 1 │
- │ job_script_name │ test--tbeck--2022-09-02 │
- │ job_script_description │ None │
- │ job_script_files │ {'main_file_path': PosixPath('dummy-script.py'), 'files': {PosixPath('dummy-script.py'): '#!/bin/python3\n\n#SBATCH -J │
- │ │ dummy_job\n#SBATCH --cluster=fake\n#SBATCH --partition=dummy\n#SBATCH -t 60\n\nprint("I am a very, very dumb job │
- │ │ script")\nprint("foo=FOO")\nprint("bar=BAR")\nprint("baz=zab")'}} │
- │ job_script_owner_email │ local-user@jobbergate.local │
- └────────────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
-
-Verify that the params have been injected into the ``job_script_files`` at the
-appropriate location.
-
-
-
-Updating a Job Script
----------------------
-
-Next, verify that an existing Job Script can be updated.
-
-Run this command to verify that you can change the description:
-
-.. code-block:: console
-
- jobbergate job-scripts update --id=1 --description="Here is a test description"
-
-Verify that you can see the new description in the Job Script when you fetch it via the
-``get-one`` subcommand. Also, check the output with the ``--full`` parameter to make
-sure that the ``updated_at`` field is different and later than the ``created_at`` field.
-
-
-Submitting a Job Script
------------------------
-
-Next, test the process of submitting a Job Script to a slurm cluster for execution.
-Note that the ``docker-compose.yaml`` used for testing sets up a volume-mounted
-directory named ``slurm-exec-dir``. Target this directory as the
-``--execution-directory`` option so that the output file can be checked post execution.
-
-Verify that jobs are being submitted correctly with the following steps:
-
-* Submit the job through the CLI
-* Verify that the agent submitted the job
-* Verify that the agent updates the Job Submission status
-* Verify the output from the job
-
-Submit the job through the CLI
-..............................
-
-Submit the Job Script using the CLI by running the following command:
-
-.. code-block:: console
-
- jobbergate job-submissions create --name=$NAME --job-script-id=1 --cluster-name=local-slurm --execution-directory=/slurm-exec-dir
-
-Verify that the output shows that the Job Submission has been created for the target
-Job Script::
-
-
- Created Job Submission
- ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
- ┃ Key ┃ Value ┃
- ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
- │ id │ 1 │
- │ job_script_id │ 1 │
- │ client_id │ local-slurm │
- │ slurm_job_id │ None │
- │ execution_directory │ /slurm-exec-dir │
- │ job_submission_name │ test--tbeck--2022-09-02 │
- │ job_submission_description │ None │
- │ job_submission_owner_email │ local-user@jobbergate.local │
- │ status │ CREATED │
- └────────────────────────────┴─────────────────────────────┘
-
-
-Verify that the agent submitted the job
-.......................................
-
-To verify that the agent submitted the job correctly, review the log output from the
-agent.
-
-The agent performs X operations in the process of performing Jobbergate tasks on the
-cluster::
-
-* Fetch pending jobs from the API
-* Submit pending jobs to Slurm
-* Mark jobs as submitted
-* Mark jobs as completed or failed
-
diff --git a/jobbergate-docs/src/developer_guide/jobbergate_py.rst b/jobbergate-docs/src/developer_guide/jobbergate_py.rst
deleted file mode 100644
index 7a3bd497..00000000
--- a/jobbergate-docs/src/developer_guide/jobbergate_py.rst
+++ /dev/null
@@ -1,102 +0,0 @@
-===============
- jobbergate.py
-===============
-
-The ``jobbergate.py`` is a python script that is used within an interactive framework
-that gathers the values for template variables that will be needed when Job Scripts are
-rendered from Applications.
-
-Throughout the documentation, this file is referred to as the "Application Source."
-
-The entire purpose of the Application Source is to construct a workflow of questions
-organized in a series of that can be changed dynamically according to the answers
-provided by the user.
-
-
-The JobbergateApplication class
--------------------------------
-
-Each Application Source script must define exactly one class named
-``JobbergateApplication``.
-
-This class should be a regular python class that inherits from the
-``JobbergateApplicationBase``. This base class is imported from
-`the application_base module`_.
-
-The ``JobbergateApplication`` implementation may be a simple or complex as needed by
-the user. However, it must define a ``mainflow()`` method which is the first of the
-workflow methods that the Application processes.
-
-
-The workflow methods
---------------------
-
-The ``mainflow()`` method is essentially the entry point for the Application Source.
-It must return a list of questions that should be asked to the user in order. These
-questions will be used to gather the template variable values.
-
-The ``mainflow()`` method must take a dictionary named ``data`` as a keyword argument.
-This kwarg should default to ``None``, and it should be set to an empty dict if the
-default is not overridden.
-
-Each workflow can also specify the net workflow method to call after its questions have
-been asked and answered. In this way, the workflows can be organized in a dynamic series
-where the path is dictated by the user responses.
-
-The workflow methods specify the next flow in the sequence by setting an item keyed by
-"nextworkflow" in the ``data`` dictionary. The value of this item is the name of the
-next workflow method to call.
-
-Each workflow method can examine the results from previous workflows by referencing the
-``data`` dict. All of the key/value pairs in the dictionary (besides "nextworkflow")
-represent answers to previous questions.
-
-
-The Questions
--------------
-
-The Application source is built around a question asking framework that defines
-different sorts of questions that can be asked of the user.
-
-The question types are defined by classes that derive from a base ``QuestionBase``
-class. The question types include::
-
-* Text: gather a simple string response from the user
-* Integer: gather a simple int response from the user
-* List: prompt the user to select one item from a list
-* Directory: prompt the user for a directory path
-* File: prompt the user for a file path
-* Checkbox: prompt the user to select as many items from a list as they want
-* Confirm: prompt the user to offer a boolean response
-* BooleanList: prompt a series of boolean resonses
-* Const: set the variable to the default value without even asking the user
-
-.. note::
-
- The BooleanList question has some very complex logic. The source code should be
- examined to understand what this does in detail.
-
-All of the implementation of the quetion classes (including the base class) can be found
-in `the questions module`_ of the Jobbergate source code.
-
-
-Other class attributes
-----------------------
-
-Each Application Source also has access to some attributes set up by the
-``JobbergateApplicationBase``.
-
-The ``jobbergate_config`` attribute will contain any of the properties that are set in
-the ``jobbergate_config`` section of the Application Config (``jobbergate.yaml``).
-These values can include anything set up by the user at application creation time.
-
-The ``application_config`` attribute contains all of the properties that are set in the
-``application_config`` section of the Application config (``jobbergate.yaml``). This
-section may be empty. If it is, the ``application_config`` atrribute will be an empty
-dictionary. This dictionary should only be populated by the template variables that
-the Application Source seeks to collect from the user. The values for each item are the
-default values for that template variable.
-
-
-.. _the application_base module: https://github.com/omnivector-solutions/jobbergate/blob/main/jobbergate-cli/jobbergate_cli/subapps/applications/applications_base.py>
-.. _the questions module: https://github.com/omnivector-solutions/jobbergate/blob/main/jobbergate-cli/jobbergate_cli/subapps/applications/questions.py>
diff --git a/jobbergate-docs/src/developer_guide/jobbergate_yaml.rst b/jobbergate-docs/src/developer_guide/jobbergate_yaml.rst
deleted file mode 100644
index a1604aa4..00000000
--- a/jobbergate-docs/src/developer_guide/jobbergate_yaml.rst
+++ /dev/null
@@ -1,114 +0,0 @@
-===============
-jobbergate.yaml
-===============
-
-The ``jobbergate.yaml`` is used to define configuration settings for a Jobbergate
-Application and to define the template variables (and their defaults). The
-YAML contains two sections; ``jobbergate_config`` and ``application_config``.
-
-The Schema and examples are provided below.
-
-
-Schema
-------
-
-.. code:: yaml
-
- application_config: dict (optional)
-
- jobbergate_config:
- default_template: string (required)
- supporting_files: list (optional)
- template_files: list (optional)
-
-
-application_config
-..................
-
-This section defines the template variables that will be used to render the template(s)
-into a Job Script. The template variables are the subjects of the interactive questions
-that the applicaiton source code presents to users.
-
-Jobbergate applications that inherit from ``JobbergateApplicationBase`` can access
-``application_config`` via the ``application_config`` attribute of the class instance.
-
-As an example, you may want to enforce that a computation only ever runs on a set of
-well-defined partitions. To accomplish this using Jobbergate you can enforce that
-Job Scripts are only be created for the well-defined partitions by defining the
-partition name(s) as part of the ``application_config``. You can then access those
-values in the ``JobbergateApplication`` instance when gathering template variable values
-that are used to render job-scripts.
-
-The ``application_config`` seciton would appear as:
-
-
-.. code:: yaml
-
- # jobbergate.yaml
- application_config:
- partitions:
- - compute1
- - compute2
-
-
-And the Application source code might look like:
-
-.. code:: python
-
- # jobbergate.py
-
- from jobbergate_cli.application_base import JobbergateApplicationBase
- from jobbergate_cli import appform
-
-
- class JobbergateApplication(JobbergateApplicationBase):
- def mainflow(self, data):
- questions = []
-
- questions.append(appform.List(
- variablename="partition",
- message="Choose slurm partition:",
- choices=self.application_config['partitions'],
- ))
- return questions
-
-
-jobbergate_config
-.................
-
-``jobbergate_config`` is used internally by Jobbergate and is a required configuration
-of every jobbergate application. It can contain many different settings that may also
-be used by the Application source code. However, it has a fixed schema that includes
-``supporting_files``, ``default_template``, and ``template_files``.
-
-
-template_files
-``````````````
-
-This is a list of the Job Script templates that are included in this Application. While
-a single Application may include many templates, a Job Script is rendered only from one.
-These files must all be `Jinja2 `_
-templates.
-
-
-default_template
-````````````````
-
-This is just a reference to one of the enties in the ``template_files``. It describes
-the template that will be rendered by default. However, if a different file is selected
-during the Applications execution, this value (after execution) will be changed to the
-Job Script template that will be rendered instad. It must match one of the entries in
-``template_files`` exactly.
-
-
-supporting_files
-````````````````
-
-This is a mapping of extra files that need to be included next to the Job Script when it
-is submitted to the Slurm Cluster. Each entry contains the name of the file as it should
-appear on the cluster as the key and the name of the file as it appears in the
-application directory as the value.
-
-Each of these files may also be a Jinja2 template that is rendrered by the values for
-the template variables that are gathered during Application execution. These are not
-Job Scripts themselves (usually!). This entry is not required.
diff --git a/jobbergate-docs/src/developer_guide/keycloak_setup.rst b/jobbergate-docs/src/developer_guide/keycloak_setup.rst
deleted file mode 100644
index 46c8a962..00000000
--- a/jobbergate-docs/src/developer_guide/keycloak_setup.rst
+++ /dev/null
@@ -1,221 +0,0 @@
-====================================
- Setting up Keycloak for Jobbergate
-====================================
-
-Though Jobbergate should be compatible with any OIDC provider (through the `Armasec package
-`_), the recommended provider is Keycloak.
-
-This document describes the procedure for setting up an already deployed Keycloak instance to work with Jobbergate.
-
-The version of Keycloak used for this guide is `19.0.2`.
-
-The examples provided here describe how to set it up for a local deployment (for example, one deployed with Docker).
-However, the instructions should be easily extensible for any deployment that relies on
-a single-node Keycloak cluster.
-
-
-Create a new Realm
-------------------
-
-It is possible to configure an existing realm for Jobbergate, however, it may be most convenient to start with a new
-realm set aside for your Jobbergate deployment.
-
-After logging in to the keycloak frontend, click the `Add realm` button under the `Selet realm` drop-down on the left.
-
-For locally deployed Jobbergate, set `Name` to "jobbergate-local".
-
-The realm will require a `Frontend URL`. It is not convenient to use "localhost" for this URL because the redirect
-requires a valid domain. The `.local` special domain is perfect for this, because it cannot be used as a reserved name
-on any DNS. The full `Frontend URL` value should be "http://keycloak.local:8080".
-
-Leave all the rest of the realm settings as defaults.
-
-
-Hostfile Note
-.............
-
-To allow the `Frontend URL` to work, you need to add the `keycloak.local` domain to your hostfile.
-
-For Linux and OSX, this file is located at ``/etc/hosts``.
-For Windows, it is found at ``c:\windows\system32\drivers\etc\hosts``
-
-(You will need to be admin/sudo to edit this file)
-
-Once you have located the file, add this line to it and save::
-
- 127.0.0.1 keycloak.local
-
-
-Create a new Client for the CLI
--------------------------------
-
-Next, there needs to be a client set aside for the Jobbergate CLI to use to log in and sign JWT for auth.
-
-Click the `Clients` section on the left navigation bar, and then click the `Create` button on the right.
-
-For the `Client Protocol` setting, choose the `openid-connect` protocol. The `Client ID` setting is only important for
-finding it later; "jobbergate-cli" is a convenient `Client ID`.
-
-To allow the CLI to use this client for login, you must enable `OAuth 2.0 Device Authorization Grant`.
-
-For a local deployment just add "*" under `Valid Redirect URIs`.
-
-
-Add Roles
-.........
-
-Next, we need to add the needed roles for Jobbergate endpoints. These represent the fine-grained permissions that
-are checked for each request to make sure that the user has permission to fulfill the request.
-
-Click the `Roles` tab at the top, and then click on `Add Role` on the right.
-
-Add the following roles:
-
-+---------------------------------+-------------------------------------------+
-| Name | Description |
-+=================================+===========================================+
-| jobbergate:job-templates:edit | Allow to view job templates |
-+---------------------------------+-------------------------------------------+
-| jobbergate:job-templates:view | Allow to view job templates |
-+---------------------------------+-------------------------------------------+
-| jobbergate:job-scripts:edit | Allow to edit job scripts |
-+---------------------------------+-------------------------------------------+
-| jobbergate:job-scripts:view | Allow to view job scripts |
-+---------------------------------+-------------------------------------------+
-| jobbergate:job-submissions:edit | Allow to edit job submissions |
-+---------------------------------+-------------------------------------------+
-| jobbergate:job-submissions:view | Allow to view job submissions |
-+---------------------------------+-------------------------------------------+
-
-
-Add Mappers
-...........
-
-Jobbergate requires two claims that are not available by default. We will add them to the JWTs with Mappers.
-
-Click the `Mappers` tab at the top, and then click the `Create` button to add a new Mapper.
-
-Audience
-********
-
-First, we need to add an "audience" mapper. Select "audience" for the `Name` field. Next, select "Audience" for the
-`Mapper Type`. The `Included Custom Audience` value may be whatever you like. The local deploy, by default, uses
-"https://apis.omnivector.solutions". Make sure to enable the `Add to ID token` setting.
-
-Permissions
-***********
-
-Next, add a "permissions" mapper. The `Armasec` package expects to find a "permissions" claims under a claim at the root
-of the JWT payload. Enter "Permissions" under the `Name` field. Next, select "User Client Role" as the `Mapper Type`.
-Select "jobbergatel-cli" for the `Client ID`. The `Token Claim Name` *must* have the value "permissions". The
-`Claim JSON Type` field must be "String".
-
-
-Create a new Client for the Agent
----------------------------------
-
-The Jobbergate Agent will also need a client.
-
-Again, click the `Clients` section on the left navigation bar, and then click the `Create` button on the right.
-
-For the `Client Protocol` setting, choose the `openid-connect` protocol. The `Client ID` setting will be used to match
-jobs created for the agent to submit to Slurm, so use the cluster name for this setting. For a local deployment, the
-`Client ID` should be "local-slurm".
-
-On the `Settings` tab, set `Access Type` to `confidential` and enter "*" for the `Valid Redirect URIs`. Scroll down and
-click on the `Save` button.
-
-Add Roles
-.........
-
-Click on the `Roles` tab, and click the `Add Role` button. Add all the following roles as above:
-
-+---------------------------------+-------------------------------------------+
-| Name | Description |
-+=================================+===========================================+
-| jobbergate:job-templates:edit | Allow to view Jobbergate applications |
-+---------------------------------+-------------------------------------------+
-| jobbergate:job-templates:view | Allow to view applications |
-+---------------------------------+-------------------------------------------+
-| jobbergate:job-scripts:edit | Allow to edit job scripts |
-+---------------------------------+-------------------------------------------+
-| jobbergate:job-scripts:view | Allow to view job scripts |
-+---------------------------------+-------------------------------------------+
-| jobbergate:job-submissions:edit | Allow to edit job submissions |
-+---------------------------------+-------------------------------------------+
-| jobbergate:job-submissions:view | Allow to view job submissions |
-+---------------------------------+-------------------------------------------+
-
-
-Add Mappers
-...........
-
-Like the CLI client, the Agent's client also requires the "Audience" and "Permissions" mappers.
-
-Click the `Mappers` tab at the top, and then click the `Create` button to add a new Mapper.
-
-
-Audience
-********
-
-First, we need to add an "audience" mapper. Select "audience" for the `Name` field. Next, select "Audience" for the
-`Mapper Type`. The `Included Custom Audience` value may be whatever you like. The local deploy, by default, uses
-"https://apis.omnivector.solutions". Make sure to enable the `Add to ID token` setting.
-
-
-Permissions
-***********
-
-Next, add a "permissions" mapper. The `Armasec` package expects to find a "permissions" claims under a claim at the root
-of the JWT payload. Enter "Permissions" under the `Name` field. Next, select "User Client Role" as the `Mapper Type`.
-Select "jobbergatel-cli" for the `Client ID`. The `Token Claim Name` *must* have the value "permissions". The
-`Claim JSON Type` field must be "String".
-
-
-Add Service Account Roles
-.........................
-
-To add the correct roles to the tokens issued for the Agent's client, we need to add some "Service Account Roles".
-
-Click the `Service Account Roles` tab. Then, from the `Client Roles` drop-down, select the `local-slurm` client. Select
-all of the Jobbergate roles created above and then click the `Add selected` button.
-
-
-Create User(s)
---------------
-
-You will need to create some users that can use Jobbergate. These users will be able to sign-in through the Jobbergate
-CLI. Each user must have a unique email address. Other than that, no special settings are needed.
-
-To add a user, click `Users` on the left nav bar. Next, click the `Add user` button on the right.
-
-Use the following settings, and then click the `Save` button.
-
-+-------------+-----------------------------+
-| Username | local-user |
-+-------------+-----------------------------+
-| Email | local-user@jobbergate.local |
-+-------------+-----------------------------+
-| First Name | Local |
-+-------------+-----------------------------+
-| Last Name | User |
-+-------------+-----------------------------+
-
-After you have created the user, edit it by clicking on it in the list. You may need to click on the `View all users`
-button to see it.
-
-Click the `Credentials` tab at the top. Enter "local" for the `Password` and `Password Confirmation` field. Turn the
-`Temporary` setting to `OFF`, and click `Reset Password`. Click the `Set password` verification button.
-
-Next, click the `Role Mappings` tab at the top. Select the `jobbergate-local` entry in the `Client Roles` drop-down.
-Select all of the roles for jobbergate added above and click `Add selected` to add them to the user.
-
-
-Conclusion
-----------
-
-Your Keycloak instance is now prepared for use by Jobbergate! For additional information on configuring Keycloak and
-Armasec, consult documentation at:
-
-* https://www.keycloak.org/documentation
-* https://omnivector-solutions.github.io/armasec/
diff --git a/jobbergate-docs/src/developer_guide/qa_tools.rst b/jobbergate-docs/src/developer_guide/qa_tools.rst
deleted file mode 100644
index f111e94b..00000000
--- a/jobbergate-docs/src/developer_guide/qa_tools.rst
+++ /dev/null
@@ -1,199 +0,0 @@
-=========================
- Quality Assurance Tools
-=========================
-
-Jobbergate makes use of quality control tools in all three of its major components (API,
-CLI, and Agent). The tools are invoked in the same way in each of the subprojects, and
-may be invoked *en masse* from the root Jobbergate directory.
-
-
-Running Unit Tests
-------------------
-
-The main subprojects each make use of `pytest`_ to apply unit testing. The unit tests
-for each subproject are contained in a subdirectory named ``tests/``.
-
-To invoke all of the unit tests for a subproject, you may use ``make``:
-
-.. code-block:: console
-
- make test
-
-
-The test suite will then begin running. For the API, this process takes a few minutes.
-The others only take a few seconds. The status of the tests will be logged to the
-console as well as a coverage report for the unit tests::
-
- ================================================================== test session starts ===================================================================
- platform linux -- Python 3.8.12, pytest-6.2.5, py-1.11.0, pluggy-1.0.0
- Using --random-order-bucket=module
- Using --random-order-seed=650699
-
- rootdir: /home/dusktreader/git-repos/omnivector/jobbergate/jobbergate-api, configfile: pyproject.toml, testpaths: jobbergate_api/tests
- plugins: asyncio-0.12.0, random-order-1.0.4, respx-0.17.1, env-0.6.2, armasec-0.11.0, freezegun-0.4.2, cov-2.12.1, anyio-3.5.0
- collecting ... 2022-09-07 16:31:37.548 | INFO | jobbergate_api.main::39 - Skipping Sentry
- collected 158 items
-
- tests/apps/job_scripts/test_routers.py ........................ [ 15%]
- tests/apps/applications/test_schemas.py .... [ 17%]
- tests/test_file_validation.py ........... [ 24%]
- tests/test_email_notification.py ....... [ 29%]
- tests/apps/applications/test_application_files.py ......... [ 34%]
- tests/apps/job_submissions/test_routers.py ................................. [ 55%]
- tests/apps/job_scripts/test_job_script_files.py ......... [ 61%]
- tests/apps/test_main.py . [ 62%]
- tests/test_meta_mapper.py ... [ 63%]
- tests/test_s3_manager.py ... [ 65%]
- tests/test_config.py ................ [ 75%]
- tests/test_pagination.py ........ [ 81%]
- tests/test_storage.py .. [ 82%]
- tests/test_security.py ... [ 84%]
- tests/apps/applications/test_routers.py ......................... [100%]
-
- ==================================================================== warnings summary ====================================================================
- tests/conftest.py:53
- /home/dusktreader/git-repos/omnivector/jobbergate/jobbergate-api/tests/conftest.py:53: PytestUnknownMarkWarning: Unknown pytest.mark.enforce_empty_database - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.html
- @pytest.mark.enforce_empty_database()
-
- tests/apps/job_scripts/test_routers.py: 37 warnings
- tests/apps/job_submissions/test_routers.py: 40 warnings
- tests/test_pagination.py: 10 warnings
- tests/apps/applications/test_routers.py: 42 warnings
- /home/dusktreader/.cache/pypoetry/virtualenvs/jobbergate-api-zc2JKxO9-py3.8/lib/python3.8/site-packages/databases/backends/postgres.py:114: DeprecationWarning: The `Row.keys()` method is deprecated to mimic SQLAlchemy behaviour, use `Row._mapping.keys()` instead.
- warnings.warn(
-
- -- Docs: https://docs.pytest.org/en/stable/warnings.html
-
- ---------- coverage: platform linux, python 3.8.12-final-0 -----------
- Name Stmts Miss Cover Missing
- ------------------------------------------------------------------------------------------------
- jobbergate_api/__init__.py 0 0 100%
- jobbergate_api/apps/__init__.py 0 0 100%
- jobbergate_api/apps/applications/__init__.py 0 0 100%
- jobbergate_api/apps/applications/application_files.py 77 0 100%
- jobbergate_api/apps/applications/models.py 7 0 100%
- jobbergate_api/apps/applications/routers.py 136 14 90% 64-66, 129-131, 136-137, 210-212, 331-332, 341
- jobbergate_api/apps/applications/schemas.py 66 0 100%
- jobbergate_api/apps/job_scripts/__init__.py 0 0 100%
- jobbergate_api/apps/job_scripts/job_script_files.py 121 4 97% 67, 80-81, 270
- jobbergate_api/apps/job_scripts/models.py 7 0 100%
- jobbergate_api/apps/job_scripts/routers.py 132 11 92% 98-100, 108-109, 235-237, 267-269, 301
- jobbergate_api/apps/job_scripts/schemas.py 38 0 100%
- jobbergate_api/apps/job_submissions/__init__.py 0 0 100%
- jobbergate_api/apps/job_submissions/constants.py 11 0 100%
- jobbergate_api/apps/job_submissions/models.py 8 0 100%
- jobbergate_api/apps/job_submissions/routers.py 186 12 94% 101-103, 260-262, 382, 395-400, 406, 449
- jobbergate_api/apps/job_submissions/schemas.py 51 0 100%
- jobbergate_api/apps/permissions.py 8 0 100%
- jobbergate_api/config.py 58 1 98% 102
- jobbergate_api/email_notification.py 28 0 100%
- jobbergate_api/file_validation.py 102 6 94% 36-56, 111, 175
- jobbergate_api/main.py 47 4 91% 31-37, 94
- jobbergate_api/meta_mapper.py 24 1 96% 104
- jobbergate_api/metadata.py 2 0 100%
- jobbergate_api/pagination.py 31 0 100%
- jobbergate_api/s3_manager.py 14 0 100%
- jobbergate_api/security.py 22 0 100%
- jobbergate_api/storage.py 52 1 98% 128
- tests/__init__.py 0 0 100%
- tests/apps/__init__.py 0 0 100%
- tests/apps/applications/__init__.py 0 0 100%
- tests/apps/applications/test_application_files.py 104 0 100%
- tests/apps/applications/test_routers.py 368 0 100%
- tests/apps/applications/test_schemas.py 14 0 100%
- tests/apps/conftest.py 41 0 100%
- tests/apps/job_scripts/__init__.py 0 0 100%
- tests/apps/job_scripts/conftest.py 10 2 80% 32, 49
- tests/apps/job_scripts/test_job_script_files.py 102 0 100%
- tests/apps/job_scripts/test_routers.py 373 3 99% 48-64, 72
- tests/apps/job_submissions/__init__.py 0 0 100%
- tests/apps/job_submissions/test_routers.py 483 0 100%
- tests/apps/test_main.py 7 0 100%
- tests/conftest.py 114 1 99% 127
- tests/test_config.py 33 0 100%
- tests/test_email_notification.py 44 0 100%
- tests/test_file_validation.py 17 0 100%
- tests/test_meta_mapper.py 27 0 100%
- tests/test_pagination.py 55 0 100%
- tests/test_s3_manager.py 17 0 100%
- tests/test_security.py 39 0 100%
- tests/test_storage.py 7 0 100%
- ------------------------------------------------------------------------------------------------
- TOTAL 3083 60 98%
-
- Required test coverage of 95.0% reached. Total coverage: 98.05%
- =========================================================== 158 passed, 130 warnings in 52.46s ===========================================================
-
-
-Note that for the API, there must be a test database already running for it to connect
-with.
-
-
-Running Linters
----------------
-
-The main subprojects each use a group of linting tools to make sure that the code
-follows some standards. These linters will report any lines or segements of the code
-that do not meet the project's standards.
-
-To invoke all of the linters for a subproject, you may use ``make``:
-
-.. code-block:: console
-
- make lint
-
-
-If any issues are reported, fix the reported error and try running it again. The linters
-will only succeed if all of the issues are fixed.
-
-
-Running Formatters
-------------------
-
-For most of the linting issues, the code can be auto-corrected using the configured
-code formatters.
-
-Currently, the subprojects use the following formatters::
-
-* `black`_
-* `isort`_
-
-To apply the formatters, you may use ``make``:
-
-.. code-block:: console
-
- make format
-
-
-The formatters will report any files that were changed in their reports.
-
-
-Running Static Code Checkers
-----------------------------
-
-The Jobbergate subprojects include type-hints that must be checked using the `mypy`_
-static code checker. It may invoked using ``make``:
-
-.. code-block:: console
-
- make mypy
-
-If any issues are located, they will be reported. Each type issue must be fixed before
-the static type checker passes.
-
-
-Running All Quality Checks
---------------------------
-
-Finally, all of the quality checks can be run using ``make``:
-
-.. code-block:: console
-
- make qa
-
-
-.. _pytest: https://docs.pytest.org/en/7.1.x/
-.. _black: https://black.readthedocs.io/en/stable/
-.. _isort: https://github.com/PyCQA/isort
-.. _mypy: http://www.mypy-lang.org/
-
diff --git a/jobbergate-docs/src/developer_guide/s3_file_storage.rst b/jobbergate-docs/src/developer_guide/s3_file_storage.rst
deleted file mode 100644
index 31a2d257..00000000
--- a/jobbergate-docs/src/developer_guide/s3_file_storage.rst
+++ /dev/null
@@ -1,57 +0,0 @@
-=================
- S3 File Storage
-=================
-
-Besides the information kept in the database, application and job-scripts files are
-stored in an S3 Bucket.
-
-The bucket is named according to the ``S3_BUCKET_NAME`` environment variable used by
-the Jobbergate API.
-
-Within the the bucket, there should be two top-level folders, and the structure should
-appear similar to:
-
-.. code-block::
-
-
- ├── applications
- │ ├── 1
- │ │ ├── jobbergate.yaml
- │ │ ├── jobbergate.py
- │ │ ├── template1.py.j2
- │ │ └── template2.py.j2
- │ └── 2
- │ ├── jobbergate.yaml
- │ ├── jobbergate.py
- │ └── template.py.j2
- └── job-scripts
- ├── 11
- │ └── jobbergate.txt
- └── 12
- └── jobbergate.txt
-
-
-applications
-------------
-
-This 'folder' will contain all the files uploaded for Applications. Each entry in this
-folder will be named with a single integer that corresponds to the ``id`` for the
-Application's entry in the database.
-
-Within each one of the individual application folders, there will be the following:
-
-* jobbergate.py (the application source code)
-* jobbergate.yaml (the application config),
-* At least one template file with any file name and a ``.j2`` or ``jinja2`` extension.
-
-
-job-scripts
------------
-
-This 'folder' will contain all the files uploaded for Job Scripts. Each entry in this
-folder will be named with a single integer that corresponds to the ``id`` for the
-Job Script's entry in the database.
-
-Within each one of the individual application folders, there will be one text file
-named ``jobergate.txt``. This will contain the rendered Job Script that will be
-submitted to Slurm when a Job Submission is created.
diff --git a/jobbergate-docs/src/images/logo.png b/jobbergate-docs/src/images/logo.png
deleted file mode 100644
index 64092ad1..00000000
Binary files a/jobbergate-docs/src/images/logo.png and /dev/null differ
diff --git a/jobbergate-docs/src/images/logo.svg b/jobbergate-docs/src/images/logo.svg
deleted file mode 100644
index 353bcc6c..00000000
Binary files a/jobbergate-docs/src/images/logo.svg and /dev/null differ
diff --git a/jobbergate-docs/src/index.rst b/jobbergate-docs/src/index.rst
deleted file mode 100644
index e241a3b8..00000000
--- a/jobbergate-docs/src/index.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-================================
- Jobbergate Documentation Pages
-================================
-
-This documentation explains the purpose, installation, and usage of the
-Jobbergate system.
-
-Jobbergate is a job templating and submission system that integrates with Slurm to
-enable the re-use and remote submission of job scripts to a Slurm cluster.
-
-The best way to understand Jobbergate is to look at it in terms of the three Resources
-that it uses and the three Apps that interact with them.
-
-There is also a Devloper Guide provided for details about interacting with Jobbergate,
-testing the platform, and adding more functionaly to it.
-
-
-Table of Contents
------------------
-
-.. toctree::
- :maxdepth: 2
-
- Apps
- Resources
- Tutorial
- Developer Guide
- Jobbergate-Core
- Attribution
- Contact Us
diff --git a/jobbergate-docs/src/overview.rst b/jobbergate-docs/src/overview.rst
deleted file mode 100644
index 426c5dd7..00000000
--- a/jobbergate-docs/src/overview.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-============
- Jobbergate
-============
-
-
-Resources
-=========
-
-
-
-Apps
-====
-
-
-
-Jobbergate API
---------------
-
-.. _`resources`_: resources
-.. _`apps`_: apps
diff --git a/jobbergate-docs/src/resources/index.rst b/jobbergate-docs/src/resources/index.rst
deleted file mode 100644
index aa40721b..00000000
--- a/jobbergate-docs/src/resources/index.rst
+++ /dev/null
@@ -1,42 +0,0 @@
-======================
- Jobbergate Resources
-======================
-
-Jobbergate has three main resources (represented as database tables) that it uses to
-manage job templating and submission. These are stored as tables in a postgres database
-and are accessed through separate endpoints in the API and with separate subcommands in
-the CLI.
-
-
-Applications
-------------
-
-The Application resource is the combination of a Job Script template with a framework
-for interactively gathering the template variable values from the user.
-
-Applications are used to produce Job Scripts that may be submitted. An Application
-folder contains:
-
-* jobbergate.py: Source code for describing how to gather template variable value
-* jobbergate.yaml: Configuration and default variable values
-* templates: One or more `Jinja 2`_ templates that will be rendered with the supplied config
-
-
-Job Scripts
------------
-
-This is the main resource. It provides the source code for the actual job that will run
-on the Slurm clusters. Job Scripts are rendered from Applications; A single application
-to generate many Job Scripts that vary by the parameters passed at creation time.
-
-
-Job Submissions
----------------
-
-Job Submissions stimply track the status and metadata for a Job Script that has been
-submitted by Jobbergate to a Slurm cluster. It carries identification information that
-tie it to both the Job Script in the Jobbergate data store and to the Job objects that
-Slurm uses.
-
-
-.. _`Jinja 2`_: https://palletsprojects.com/p/jinja/
diff --git a/jobbergate-docs/src/tutorial.rst b/jobbergate-docs/src/tutorial.rst
deleted file mode 100644
index 77fade2e..00000000
--- a/jobbergate-docs/src/tutorial.rst
+++ /dev/null
@@ -1,565 +0,0 @@
-==========
- Tutorial
-==========
-
-This guide will walk you through using Jobbergate to submit a simulation job to a Slurm cluster. During this guide, you
-will:
-
-* Log in to the Jobbergate system
-* Upload an Application to Jobbergate
-* Render a Job Script from the Application template
-* Submit a Job Script to the cluster
-* Check the results and statuses of submitted jobs
-* Delete the resources
-* Log out of the Jobbergate system
-
-
-Setup
------
-
-Follow these few steps to set up your computer to run this tutorial locally. You will need administrator privileges
-on your machine to do so.
-
-docker-compose
-..............
-
-For this tutorial, we will be using an instance of Jobbergate that is deployed locally using docker-compose. If you
-do not have it already, follow `this guide `_ to install docker-compose before
-you begin the tutorial.
-
-
-hostfile
-........
-
-You will also need to have this line added to your computer's hostfile::
-
- 127.0.0.1 keycloak.local
-
-For Linux and OSX, this file is located at ``/etc/hosts``. You will need to use sudo to update this file.
-
-For Windows, it is found at ``c:\windows\system32\drivers\etc\hosts``. You will need to use administrator rights to
-update this file.
-
-
-Clone Jobbergate with git
-.........................
-
-You will also need to clone the Jobbergate source code to your machine. Use this command to clone the repo from GitHub:
-
-.. code-block:: console
-
- git clone git@github.com:omnivector-solutions/jobbergate.git
-
-
-Then, change to the directory ``jobbergate-composed`` directory where Jobbergate was cloned:
-
-.. code-block:: console
-
- cd jobbergate/jobbergate-composed
-
-
-Start the Jobbergate Services
-.............................
-
-Next, you will need to spin up the Jobbergate services. We will do this with docker-compose using the following command:
-
-.. code-block:: console
-
- docker-compose up --build
-
-
-This will take a little time to spin up all the services. To check if everything is operating as expected, you may
-use this command:
-
-.. code-block:: console
-
- docker-compose ps
-
-If everything is operating as it should, you will see output that looks like this::
-
- NAME COMMAND SERVICE STATUS PORTS
- c1 "/usr/local/bin/slur…" c1 running 6818/tcp
- c2 "/usr/local/bin/slur…" c2 running 6818/tcp
- jobbergate-composed-cluster-agent-1 "/agent/entrypoint.sh" cluster-agent running
- jobbergate-composed-db-1 "docker-entrypoint.s…" db running 0.0.0.0:5432->5432/tcp
- jobbergate-composed-jobbergate-api-1 "/bin/sh -c /app/dev…" jobbergate-api running (healthy) 0.0.0.0:8000->80/tcp
- jobbergate-composed-jobbergate-cli-1 "python3" jobbergate-cli exited (0)
- jobbergate-composed-keycloak.local-1 "/opt/keycloak/bin/k…" keycloak.local running 0.0.0.0:8080->8080/tcp, 8443/tcp
- jobbergate-composed-minio-1 "/usr/bin/docker-ent…" minio running 0.0.0.0:9000-9001->9000-9001/tcp
- jobbergate-composed-minio-create-bucket-1 "/create-bucket.sh" minio-create-bucket exited (1)
- mysql "docker-entrypoint.s…" mysql running 3306/tcp, 33060/tcp
- slurmctld "/usr/local/bin/slur…" slurmctld running 6817/tcp
- slurmdbd "/usr/local/bin/slur…" slurmdbd running 6819/tcp
- slurmrestd "/usr/local/bin/slur…" slurmrestd running 0.0.0.0:6820->6820/tcpOnce everything is
-
-The ``STATUS`` for each service should be "running" except for the ``minio-create-bucket`` and ``jobbergate-cli``
-containers which should be "exited"
-
-Now, you can connect to the ``jobbergate-cli`` container to begin issuing commands:
-
-.. code-block:: console
-
- docker-compose run jobbergate-cli bash
-
-You should now see a new command prompt line that looks something like this::
-
- root@e226a9a401d1:/app#
-
-Test that you are able to issue Jobbergate commands by listing the avaiable commands like so:
-
-.. code-block:: console
-
- jobbergate --help
-
-This should show a usage description of the app and the avaialble sub-commands
-
-
-Log in to Jobbergate
---------------------
-
-Before you can interact with Jobbergate data, you will need to log into the system. In the tutorial used in this
-example, only a single user exists. This guide will exclusively use this user, however, you can create more by logging
-into the Keycloak server (Described in the Appendix).
-
-Logging in through the Jobbergate CLI is done via the command:
-
-.. code-block:: console
-
- jobbergate login
-
- ╭─────────────────────────────────────────────── Waiting for login ─────────────────────────────────────────────────╮
- │ │
- │ To complete login, please open the following link in a browser: │
- │ │
- │ http://keycloak.local:8080/realms/jobbergate-local/device?user_code=CZAU-TZAH │
- │ │
- │ Waiting up to 5.0 minutes for you to complete the process... │
- │ │
- ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
-
- Waiting for web login... ━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3% 0:04:50
-
-Open the URL shown in a browser and log in as "local-user"::
-
- username: "local-user"
- password: "local"
-
-When prompted, grant all the requested access privileges to the CLI. Once you have finished, the CLI will show that you
-have successfully logged in:
-
-.. code-block:: console
-
- ╭────────────────────────────────────────────────── Logged in! ─────────────────────────────────────────────────────╮
- │ │
- │ User was logged in with email 'local-user@jobbergate.local' │
- │ │
- ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
-
-You are now logged in through the CLI. Your auth token will be cached automatically for you, so you should not need to
-log in again for some time. However, your session will expire. If your token is no longer valid, the CLI will notify
-you. At that point, you should go through the login process again.
-
-
-Upload an Application to Jobbergate
------------------------------------
-
-The first step in running a simulation job through Jobbergate is to create an Application for it. An application is a
-reusable template that describes both the Job Script template as well as the template variables whose values must be
-supplied to create a submittable Job Script.
-
-For this example, we will use the `motorbike-application
-`_ that is included with
-the Jobbergate git repository. For the purposes of the tutorial, the application files have already been placed into
-the `jobbergate-cli` container where we are running the tutorial. To see the files that the application is composed of,
-you can inspect the `/motorbike-example` folder in the running `jobbergate-cli` container.
-
-Creating the applicaiton requires only a name and a path to the Application files. We will also give it a unique
-`identifier` which will make it easer to locate later.
-
-Issue the following Jobbergate command:
-
-.. code-block:: console
-
- jobbergate applications create --name=tutorial --identifier=tutorial --application-path=/motorbike-example
-
- Created Application
- ┏━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
- ┃ Key ┃ Value ┃
- ┡━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
- │ id │ 1 │
- │ application_name │ tutorial │
- │ application_identifier │ tutorial │
- │ application_description │ │
- │ application_owner_email │ local-user@jobbergate.local │
- │ application_uploaded │ True │
- └─────────────────────────┴─────────────────────────────┘
-
-As you can see, the Application was successfully created and the Application files were uploaded as well. Now, this
-Application can be used any number of times to produce Job Scripts from its template.
-
-
-Render a Job Script from the Application template
--------------------------------------------------
-
-The primary purpose of the Application is to produce Job Scripts with different values substituted in for the template
-variables. Thus, rendering a Job Script from an Application is fundamental to the Jobbergate workflow.
-
-We will run the Motorbike Application to demonstate the proces.
-
-Begin by creating a Job Sript from an Application using the follow command:
-
-.. code-block:: console
-
- jobbergate job-scripts create --name=tutorial --application-id=1
-
- jobbergate job-scripts create --name=tutorial --application-id=1
- [?] Choose a partition: compute
- [?] Choose number of nodes for job: 2
- [?] Choose number of tasks per node for job: 6
-
- Created Job Script
- ┏━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
- ┃ Key ┃ Value ┃
- ┡━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
- │ id │ 1 │
- │ application_id │ 1 │
- │ job_script_name │ tutorial │
- │ job_script_description │ None │
- │ job_script_owner_email │ local-user@jobbergate.local │
- └────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────┘
-
-You will be prompted to enter values for:
-
-* The name of the partion
-* The number of compute nodes to use for the job
-* The number of tasks to use for each job on the node the job
-
-For the tutorial, you should just use the defaults.
-
-The command will render the templates into a Job Script that can be submitted to a Slurm cluster.
-
-To view the rendered files, you can use the ``show-files`` subcommand:
-
-.. code-block:: console
-
- jobbegate job-scripts show-files --id=1
-
- ╭────────────────────────────────────────────── job-script-template.py ─────────────────────────────────────────────╮
- │ │
- │ #!/bin/bash │
- │ #SBATCH --partition compute │
- │ #SBATCH --nodes=2 │
- │ #SBATCH --ntasks=6 │
- │ #SBATCH -J motorbike │
- │ #SBATCH --output=/nfs/R-%x.%j.out │
- │ #SBATCH --error=/nfs/R-%x.%j.err │
- │ #SBATCH -t 1:00:00 │
- │ │
- │ # clone OpenFOAM-10 if it is not available yet │
- │ OPENFOAM_DIR=/nfs/OpenFOAM-10 │
- │ if [[ ! -d $OPENFOAM_DIR ]] │
- │ then │
- │ echo "Cloning OpenFOAM-10" │
- │ cd /nfs │
- │ git clone https://github.com/OpenFOAM/OpenFOAM-10.git │
- │ else │
- │ echo "Skipping clone process...we already have the OpenFOAM-10 source code" │
- │ fi │
- │ │
- │ # create a working folder inside the shared directory │
- │ WORK_DIR=/nfs/$SLURM_JOB_NAME-Job-$SLURM_JOB_ID │
- │ mkdir -p $WORK_DIR │
- │ cd $WORK_DIR │
- │ │
- │ # path to the openfoam singularity image │
- │ export SINGULARITY_IMAGE=/nfs/openfoam10.sif │
- │ │
- │ # download the openfoam v10 singularity image if it is not available yet │
- │ if [[ ! -f $SINGULARITY_IMAGE ]] │
- │ then │
- │ echo "Fetching the singularity image for OpenFOAM-10" │
- │ curl -o $SINGULARITY_IMAGE --location "https://omnivector-public-assets.s3.us-west-2.amazonaws.com/singul...│
- │ else │
- │ echo "Skipping the image fetch process...we already have the singularity image" │
- │ fi │
- │ │
- │ │
- │ # copy motorBike folder │
- │ cp -r $OPENFOAM_DIR/tutorials/incompressible/simpleFoam/motorBike . │
- │ │
- │ # enter motorBike folder │
- │ cd motorBike │
- │ │
- │ # clear any previous execution │
- │ singularity exec --bind $PWD:$HOME $SINGULARITY_IMAGE ./Allclean │
- │ │
- │ # copy motorBike geometry obj │
- │ cp $OPENFOAM_DIR/tutorials/resources/geometry/motorBike.obj.gz constant/geometry/ │
- │ │
- │ # define surface features inside the block mesh │
- │ singularity exec --bind $PWD:$HOME $SINGULARITY_IMAGE surfaceFeatures │
- │ │
- │ # generate the first mesh │
- │ # mesh the environment (block around the model) │
- │ singularity exec --bind $PWD:$HOME $SINGULARITY_IMAGE blockMesh │
- │ │
- │ # decomposition of mesh and initial field data │
- │ # according to the parameters in decomposeParDict located in the system │
- │ # create 6 domains by default │
- │ singularity exec --bind $PWD:$HOME $SINGULARITY_IMAGE decomposePar -copyZero │
- │ │
- │ # mesh the motorcicle │
- │ # overwrite the new mesh files that are generated │
- │ srun singularity exec --bind $PWD:$HOME $SINGULARITY_IMAGE snappyHexMesh -overwrite -parallel │
- │ │
- │ # write field and boundary condition info for each patch │
- │ srun singularity exec --bind $PWD:$HOME $SINGULARITY_IMAGE patchSummary -parallel │
- │ │
- │ # potential flow solver │
- │ # solves the velocity potential to calculate the volumetric face-flux field │
- │ srun singularity exec --bind $PWD:$HOME $SINGULARITY_IMAGE potentialFoam -parallel │
- │ │
- │ # steady-state solver for incompressible turbutent flows │
- │ srun singularity exec --bind $PWD:$HOME $SINGULARITY_IMAGE simpleFoam -parallel │
- │ │
- │ # after a case has been run in parallel │
- │ # it can be reconstructed for post-processing │
- │ singularity exec --bind $PWD:$HOME $SINGULARITY_IMAGE reconstructParMesh -constant │
- │ singularity exec --bind $PWD:$HOME $SINGULARITY_IMAGE reconstructPar -latestTime │
- │ │
- ╰────────────────────────────────────── This is the main job script file ───────────────────────────────────────────╯
-
-Notice that the values that we supplied for the questions asked by the applicaiton have been rendered into the resulting
-Job Script::
-
- #SBATCH --partition compute
- #SBATCH --nodes=2
- #SBATCH --ntasks=6
-
-
-Submit a Job Script to the cluster
-----------------------------------
-
-Now that we have produced a Job Script from the source Applicaiton, we can now submit this to the Slurm cluster. In this
-tutorial, we have one attached cluster named ``local-slurm``. We will use this name when we are submitting the Job
-Script to make sure it runs on the correct cluster.
-
-Create the Job Submission from the Job Script with the following command:
-
-.. code-block:: console
-
- jobbergate job-submissions create --name=tutorial --job-script-id=1 --cluster-name=local-slurm
-
- Created Job Submission
- ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
- ┃ Key ┃ Value ┃
- ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
- │ id │ 1 │
- │ job_script_id │ 1 │
- │ client_id │ local-slurm │
- │ slurm_job_id │ None │
- │ execution_directory │ None │
- │ job_submission_name │ tutorial │
- │ job_submission_description │ None │
- │ job_submission_owner_email │ local-user@jobbergate.local │
- │ status │ CREATED │
- └────────────────────────────┴─────────────────────────────┘
-
-The Job Submission was successfully created! However, it has not submitted to the cluster yet. This will happen when the
-Jobbergate Agent that is running remotely in the cluster pulls all "CREATED" Job Submissions down from the API and
-submits them to Slurm one by one.
-
-
-Check the results and statuses of submitted jobs
-------------------------------------------------
-
-We can look up the status of a Job Submission using the following command:
-
-.. code-block:: console
-
- jobbergate job-submissions get-one --id=1
-
- Job Submission
- ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
- ┃ Key ┃ Value ┃
- ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
- │ id │ 1 │
- │ job_script_id │ 1 │
- │ client_id │ local-slurm │
- │ slurm_job_id │ 1 │
- │ execution_directory │ None │
- │ job_submission_name │ tutorial │
- │ job_submission_description │ None │
- │ job_submission_owner_email │ local-user@jobbergate.local │
- │ status │ SUBMITTED │
- └────────────────────────────┴─────────────────────────────┘
-
-Notice that the status of the Job Submission has now changed to "SUBMITTED". This means that the Jobbergate Agent has
-pulled the Job Script down and submitted it to the cluster named ``local-slurm``. The status will remain the same until
-the Job Script finishes executing. The Jobbergate Agent will watch for the job to finish in Slurm, and will update the
-status of the Job Submission to "COMPLETE".
-
-In this tutorial, we have locally mounted a "fake" NFS folder to contain the output from the job running in slurm. You
-can watch the output as Slurm processes the job by tailing the terminal output file that Slurm produces and displaying
-30 lines at a time (this output is truncated to 30 lines):
-
-.. code-block:: console
-
- tail -n 30 /nfs/R-motorbike.1.out
-
- Cloning OpenFOAM-10
- Cloning into 'OpenFOAM-10'...
- Fetching the singularity image for OpenFOAM-10
- Cleaning /home/local-user case
- /*---------------------------------------------------------------------------*\
- ========= |
- \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
- \\ / O peration | Website: https://openfoam.org
- \\ / A nd | Version: 10
- \\/ M anipulation |
- \*---------------------------------------------------------------------------*/
- Build : 10
- Exec : /opt/OpenFOAM/OpenFOAM-10/platforms/linux64GccDPInt32Opt/bin/surfaceFeatures
- Date : Sep 29 2022
- Time : 19:40:12
- Host : "c1"
- PID : 329
- I/O : uncollated
- Case : /home/local-user
- nProcs : 1
- sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
- fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 10)
- allowSystemOperations : Allowing user-supplied system call operations
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- Create time
-
- Reading "surfaceFeaturesDict"
-
-
-This command will continue to collect output until you quit with ``Ctrl-C``. It will take some time to even begin seeing
-output here as the job downloads OpenFOAM resources to run the job. Subsequent runs will take advantage of local caching
-and complete *much* more quickly. So, please be patient!
-
-
-.. code-block:: console
-
- jobbergate job-submissions get-one --id=1
-
- Job Submission
- ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
- ┃ Key ┃ Value ┃
- ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
- │ id │ 1 │
- │ job_script_id │ 1 │
- │ client_id │ local-slurm │
- │ slurm_job_id │ 1 │
- │ execution_directory │ None │
- │ job_submission_name │ tutorial │
- │ job_submission_description │ None │
- │ job_submission_owner_email │ local-user@jobbergate.local │
- │ status │ COMPLETED │
- └────────────────────────────┴─────────────────────────────┘
-
-Don't worry if the Job Submission seems to be stuck and does not change for a while. If it fails, the status
-of the Job Submission will change to "FAILED". If you don't see this, the Job Submission is still being processed.
-
-In this tutorial, the results from the Job Submission are available in the ``/nfs`` directory. All of the processing
-files can be found there:
-
-.. code-block:: console
-
- ls /nfs/motorbike-Job-1/motorbike/
-
- 0 500 Allclean Allrun constant postProcessing processor0 processor1 processor2 processor3 processor4 processor5 system
-
-
-Delete the resources
---------------------
-
-Sometimes it is useful to remove resources that have been created in Jobbergate.
-
-When deleting the resources, you must delete in reverse order of creation::
-
- Job Submission -> Job Script -> Application
-
-Start by deleting the Job Submission:
-
-.. code-block:: console
-
- jobbergate job-submissions delete --id=1
-
- ╭──────────────────────────────────────── Job submission delete succeeded ──────────────────────────────────────────╮
- │ │
- │ The job submission was successfully deleted. │
- │ │
- ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
-
-Then delete the Job Script:
-
-.. code-block:: console
-
- jobbergate job-scripts delete --id=1
-
- ╭──────────────────────────────────────── Job script delete succeeded ──────────────────────────────────────────────╮
- │ │
- │ The job script was successfully deleted. │
- │ │
- ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
-
-Then finally delete the Application:
-
-.. code-block:: console
-
- jobbergate applications delete --id=1
-
- ╭───────────────────────────────────────── Application delete succeeded ────────────────────────────────────────────╮
- │ │
- │ The application was successfully deleted. │
- │ │
- ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
-
-If you attempt to delete a resource before any that were created _from_ it, you will see an error like this:
-
-.. code-block:: console
-
- jobbergate applications delete --id=1
-
- ╭─────────────────────────────────────────────── REQUEST FAILED ────────────────────────────────────────────────────╮
- │ Request to delete application was not accepted by the API: │
- │ There are job_scripts that reference id 1. │
- ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
-
-
-Log out of the Jobbergate system
---------------------------------
-
-You have completed the tutorial. Try logging out of Jobbergate now:
-
-.. code-block:: console
-
- jobbergate logout
-
- ╭──────────────────────────────────────────────── Logged out ───────────────────────────────────────────────────────╮
- │ │
- │ User was logged out. │
- │ │
- ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
-
-This will clear any cached tokens, and any subsequent Jobbergate commands will require you to log in again
-
-
-Appendix
---------
-
-Keycloak UI
-...........
-
-You can connect to the Keycloak UI to create additional realms, clients, and users. However, the use of Keycloak is a
-rather large topic that goes outside the scope of this Tutorial.
-
-To get started, you can connect to the Keycloak UI through a browser if the server is running as a part of the
-docker-compose cluster using `this local URL `_. To log in as administrator use these credentials::
-
- username: admin
- password: admin
diff --git a/jobbergate-slurp/README.rst b/jobbergate-slurp/README.md
similarity index 84%
rename from jobbergate-slurp/README.rst
rename to jobbergate-slurp/README.md
index b8387ae0..97a1b46f 100644
--- a/jobbergate-slurp/README.rst
+++ b/jobbergate-slurp/README.md
@@ -1,6 +1,4 @@
-==================
- Jobbergate Slurp
-==================
+# Jobbergate Slurp
Jobbergate Slurp is a utility tool that provides support for migrating from legacy
versions of Jobbergate to the latest version.
@@ -13,11 +11,11 @@ It's not recommended that anyone but SMEs for Jobbergate use Slurp, as it is a v
specifically tailored app for legacy deployments (that all use very old versions).
-License
--------
-* `MIT `_
+## License
+* [MIT](LICENSE)
+
+
+## Copyright
-Copyright
----------
* Copyright (c) 2021 OmniVector Solutions
diff --git a/jobbergate-test/README.md b/jobbergate-test/README.md
new file mode 100644
index 00000000..b52df480
--- /dev/null
+++ b/jobbergate-test/README.md
@@ -0,0 +1 @@
+# Jobbergate Test
diff --git a/jobbergate-test/README.rst b/jobbergate-test/README.rst
deleted file mode 100644
index ea2c68f6..00000000
--- a/jobbergate-test/README.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-=================
- Jobbergate Test
-=================
\ No newline at end of file
diff --git a/release-scripts/prepare-release.sh b/release-scripts/prepare-release.sh
index b9879953..cd31f35b 100755
--- a/release-scripts/prepare-release.sh
+++ b/release-scripts/prepare-release.sh
@@ -27,8 +27,6 @@ version_target=$(poetry version --short)
echo "Building release $version_target"
echo "Updating CHANGELOG"
-version_line="$version_target -- $(date '+%Y-%m-%d')"
-replacement='Unreleased\n$1\n\n'
-replacement+="$version_line\n"
-replacement+="$(printf %${#version_line}s | tr ' ' '-')"
-perl -0777 -p -i -e "s/Unreleased\s*(-+)/$replacement/gs" CHANGELOG.rst
+version_line="## $version_target -- $(date '+%Y-%m-%d')"
+replacement="## Unreleased\n\n\n$version_line\n"
+perl -0777 -p -i -e "s/## Unreleased\s*/$replacement/gs" CHANGELOG.md