From d0019a69661204f2a5425e0ea8c8096b2c0ded9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Andres=20Ram=C3=ADrez?= Date: Thu, 24 Oct 2024 14:04:41 -0300 Subject: [PATCH] Chore(api-client): update to new API structure (#58) * chore(api-client): update to new API structure * chore(api-client): readme updates * chore(api-aclient): improved test login conf * chore(api-client): more test fixes --- .vscode/settings.json | 5 +- README.md | 215 +- conftest.py | 15 +- poetry.lock | 4251 +++++++++++++---- pyproject.toml | 37 +- teselagen/api/build_client.py | 2 +- teselagen/api/client.py | 31 +- teselagen/api/design_client.py | 26 +- teselagen/api/discover_client.py | 59 +- teselagen/api/test_client.py | 191 +- teselagen/api/tests/test_build_client.py | 2 +- teselagen/api/tests/test_client.py | 61 +- teselagen/api/tests/test_design_client.py | 10 +- teselagen/api/tests/test_discover_client.py | 6 +- teselagen/api/tests/test_multiomics.py | 45 +- teselagen/api/tests/test_test_client.py | 200 +- .../examples/{pytested => }/CRISPR-Tool.ipynb | 35 +- .../pytested/Closing-the-DBTL-Cycle.ipynb | 198 +- .../pytested/Hello-World-TEST-module.ipynb | 493 +- .../pytested/Hello_World_BUILD_module.ipynb | 203 +- .../pytested/Hello_World_DESIGN_module.ipynb | 384 +- teselagen/utils/configuration_helper.py | 8 +- teselagen/utils/utils.py | 30 +- 23 files changed, 4272 insertions(+), 2235 deletions(-) rename teselagen/examples/{pytested => }/CRISPR-Tool.ipynb (97%) diff --git a/.vscode/settings.json b/.vscode/settings.json index c6d6513..78f6633 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,9 +7,8 @@ "debug.terminal.clearBeforeReusing": true, "editor.bracketPairColorization.enabled": true, "editor.codeActionsOnSave": { - "source.sortImports": true, - "source.organizeImports": true, - // "source.fixAll.shellcheck": true, + "source.sortImports": "explicit", + "source.organizeImports": "explicit" }, // "editor.hover.delay": 300, // "editor.quickSuggestionsDelay": 10, diff --git a/README.md b/README.md index 20d1360..5e484e8 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,10 @@ To install it locally with pip: pip3 install teselagen ``` -## Use and login +## Use and login Import the `teselagen` library: + ```python from teselagen.api import TeselaGenClient ``` @@ -27,7 +28,7 @@ Create an instance of the client: client = TeselaGenClient(host_url="https://.teselagen.com/") ``` -Then, login by using your user email and One Time Password (OTP). You can get one from `Settings`-> `API Password` +Then, login by using your user email and One Time Password (OTP). You can get one from `Settings`-> `API Password` within the application. Alternatively ,you can use your application password. ```python @@ -50,28 +51,14 @@ to run them: 1. Open any notebook in the `examples` folder with Jupyter Notebook -## Use the provided environment - -You can use the provided docker environment that contains a ready to use installation of all required packages to run -the notebooks. Here are the instructions according to your OS - -### Linux/MacOS - -1. After clone/download, run the build script with `bash build.sh` +## Development -1. Run the container with `bash run.sh` +### Poetry virtual environment -1. Open your browser and set the address: `http://localhost:8888`. From there you can explore all example notebooks +For development you can just use the virtual environment created by poetry. To install the project within a virtual +environment, use at the project's root folder: -## Development (Linux/MacOS) - -### Docker environment - -1. Build the docker environment with command `bash build.sh` - -1. Run the container as a developer with the command `bash run_dev.sh`. - With this command the `teselagen` library will be installed in - [editable](https://pip.pypa.io/en/stable/reference/pip_install/#editable-installs) mode. +`poetry install` ### Dependencies @@ -95,47 +82,48 @@ It is the equivalent to make an install after deleting the `lock` file. 1. Add your credentials - To run the tests, you must create a `.credentials` file containing the test _username_ and _password_, in the - _root_ folder. + To run the tests, you must create a `.credentials` file containing the test _username_ and _password_, in the + _root_ folder. - The content of `.credentials` file should look similar to the following: + The content of `.credentials` file should look similar to the following: - ```JSON - { - "username" : "ReplaceWithYourUsername", - "password" : "ReplaceWithYourPassword" - } - ```` + ```JSON + { + "username" : "ReplaceWithYourUsername", + "password" : "ReplaceWithYourPassword" + } + ``` - - **NOTE**: It should be a valid `JSON` file. `JSON with Comments` (`JSONC` ) format is not supported. + - **NOTE 1**: It should be a valid `JSON` file. `JSON with Comments` (`JSONC` ) format is not supported. + - **NOTE 2**: You may also add a `host` field. It's value will be used as default host name. - ```diff - - DO NOT COMMIT THIS FILE : .credentials - ``` + ```diff + - DO NOT COMMIT THIS FILE : .credentials + ``` 1. Modify configuration - You may modify some test configuration parameters by creating a `.test_configuration` file. - This is a `JSON` formatted file, where you can edit the server name used for tests. - This file must be stored next to `.credentials` file. Here is an example + You may modify some test configuration parameters by creating a `.test_configuration` file. + This is a `JSON` formatted file, where you can edit the server name used for tests. + This file must be stored next to `.credentials` file. Here is an example - ```JSON - { - "host_url" : "https://platform.teselagen.com" - } - ``` + ```JSON + { + "host_url" : "https://platform.teselagen.com" + } + ``` - - **NOTE**: It should be a valid `JSON` file. `JSON with Comments` (`JSONC` ) format is not supported. + - **NOTE**: It should be a valid `JSON` file. `JSON with Comments` (`JSONC` ) format is not supported. 1. Run the tests - ```bash - cd /home && python3 setup.py test - ``` + ```bash + cd /home && python3 setup.py test + ``` - You may use the docker environment for testing. For that, first build the environment with `bash build.sh`. - Then just run the container with `bash run_dev.sh`. - Once inside (`docker exec -ti tgclient bash`), go to `home/` and you are ready to run the test command shown above. + You may use the docker environment for testing. For that, first build the environment with `bash build.sh`. + Then just run the container with `bash run_dev.sh`. + Once inside (`docker exec -ti tgclient bash`), go to `home/` and you are ready to run the test command shown above. ### Publishing @@ -191,132 +179,3 @@ Or, as follows: ``` --- - - diff --git a/conftest.py b/conftest.py index 253e89e..ecb39a0 100644 --- a/conftest.py +++ b/conftest.py @@ -12,7 +12,7 @@ import pytest from teselagen.api.client import TeselaGenClient -from teselagen.utils import get_test_configuration_path +from teselagen.utils import get_test_configuration_path, get_default_host_name from teselagen.utils import load_from_json TEST_API_TOKEN_EXPIRATION_TIME = '30m' @@ -70,14 +70,14 @@ def get_test_configuration() -> dict[str, str]: ```json { "host_url": "http://host.docker.internal:3000", - "api_token_name": "x-tg-cli-token" + "api_token_name": "x-tg-api-token" } ``` ```json { "host_url": "http://platform.teselagen.com", - "api_token_name": "x-tg-cli-token" + "api_token_name": "x-tg-api-token" } ``` @@ -88,8 +88,8 @@ def get_test_configuration() -> dict[str, str]: ``` """ DEFAULT_CONFIGURATION: dict[str, str] = { - 'host_url': 'http://host.docker.internal:3000', - 'api_token_name': 'x-tg-cli-token', + 'host_url': get_default_host_name(), + 'api_token_name': 'x-tg-api-token', } DEFAULT_CONFIGURATION['host_url'] = DEFAULT_CONFIGURATION['host_url'].strip('/') @@ -103,8 +103,8 @@ def get_test_configuration() -> dict[str, str]: assert isinstance(file_conf, dict), 'Configuration file should be a JSON file.' # Check keys are ok - assert all( - key in configuration for key in file_conf), f'One or more of these keys are wrong: {file_conf.keys()}' + for key in file_conf: + assert key in configuration, f'The key {key} should not be in the test configuration file.' # Update values configuration.update(file_conf) @@ -218,6 +218,7 @@ def clean_test_module_used_for_testing() -> None: expiration_time=TEST_API_TOKEN_EXPIRATION_TIME) LAB_NAME: str = 'The Test Lab' # noqa: N806 + client.select_laboratory(lab_name=LAB_NAME) # FILES diff --git a/poetry.lock b/poetry.lock index 92ca930..5f846d7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,78 +1,139 @@ +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. + [[package]] name = "anyio" -version = "3.6.1" +version = "4.6.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" -category = "main" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.9" +files = [ + {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, + {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, +] [package.dependencies] +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] -doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] -test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] -trio = ["trio (>=0.16)"] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] [[package]] name = "appnope" -version = "0.1.3" +version = "0.1.4" description = "Disable App Nap on macOS >= 10.9" -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" +files = [ + {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, + {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, +] [[package]] name = "argon2-cffi" -version = "21.3.0" -description = "The secure Argon2 password hashing algorithm." -category = "main" +version = "23.1.0" +description = "Argon2 for Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, + {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, +] [package.dependencies] argon2-cffi-bindings = "*" [package.extras] -dev = ["pre-commit", "cogapp", "tomli", "coverage[toml] (>=5.0.2)", "hypothesis", "pytest", "sphinx", "sphinx-notfound-page", "furo"] -docs = ["sphinx", "sphinx-notfound-page", "furo"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"] +dev = ["argon2-cffi[tests,typing]", "tox (>4)"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"] +tests = ["hypothesis", "pytest"] +typing = ["mypy"] [[package]] name = "argon2-cffi-bindings" version = "21.2.0" description = "Low-level CFFI bindings for Argon2" -category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, + {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, +] [package.dependencies] cffi = ">=1.0.1" [package.extras] -dev = ["pytest", "cogapp", "pre-commit", "wheel"] +dev = ["cogapp", "pre-commit", "pytest", "wheel"] tests = ["pytest"] +[[package]] +name = "arrow" +version = "1.3.0" +description = "Better dates & times for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, + {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, +] + +[package.dependencies] +python-dateutil = ">=2.7.0" +types-python-dateutil = ">=2.8.10" + +[package.extras] +doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] +test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] + [[package]] name = "astor" version = "0.8.1" description = "Read/rewrite/write Python ASTs" -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +files = [ + {file = "astor-0.8.1-py2.py3-none-any.whl", hash = "sha256:070a54e890cefb5b3739d19f30f5a5ec840ffc9c50ffa7d23cc9fc1a38ebbfc5"}, + {file = "astor-0.8.1.tar.gz", hash = "sha256:6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e"}, +] [[package]] name = "astroid" -version = "2.12.5" +version = "2.15.8" description = "An abstract syntax tree for Python with inference support." -category = "dev" optional = false python-versions = ">=3.7.2" +files = [ + {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, + {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, +] [package.dependencies] lazy-object-proxy = ">=1.4.0" -typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""} +typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} wrapt = [ {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, @@ -80,227 +141,631 @@ wrapt = [ [[package]] name = "asttokens" -version = "2.0.8" +version = "2.4.1" description = "Annotate AST trees with source code positions" -category = "main" optional = false python-versions = "*" +files = [ + {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, + {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, +] [package.dependencies] -six = "*" +six = ">=1.12.0" [package.extras] -test = ["astroid (<=2.5.3)", "pytest"] +astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] +test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] + +[[package]] +name = "async-lru" +version = "2.0.4" +description = "Simple LRU cache for asyncio" +optional = false +python-versions = ">=3.8" +files = [ + {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, + {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} [[package]] name = "atomicwrites" version = "1.4.1" description = "Atomic file writes." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, +] [[package]] name = "attrs" -version = "20.3.0" +version = "22.2.0" description = "Classes Without Boilerplate" -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +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] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"] -docs = ["furo", "sphinx", "zope.interface"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] +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]"] [[package]] name = "autoflake" -version = "1.5.2" +version = "1.7.8" description = "Removes unused imports and unused variables" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "autoflake-1.7.8-py3-none-any.whl", hash = "sha256:46373ef69b6714f5064c923bb28bd797c4f8a9497f557d87fc36665c6d956b39"}, + {file = "autoflake-1.7.8.tar.gz", hash = "sha256:e7e46372dee46fa1c97acf310d99d922b63d369718a270809d7c278d34a194cf"}, +] [package.dependencies] -pyflakes = ">=1.1.0" -toml = ">=0.10.2" +pyflakes = ">=1.1.0,<3" +tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} [[package]] name = "autopep8" version = "1.6.0" description = "A tool that automatically formats Python code to conform to the PEP 8 style guide" -category = "dev" optional = false python-versions = "*" +files = [ + {file = "autopep8-1.6.0-py2.py3-none-any.whl", hash = "sha256:ed77137193bbac52d029a52c59bec1b0629b5a186c495f1eb21b126ac466083f"}, + {file = "autopep8-1.6.0.tar.gz", hash = "sha256:44f0932855039d2c15c4510d6df665e4730f2b8582704fa48f9c55bd3e17d979"}, +] [package.dependencies] pycodestyle = ">=2.8.0" toml = "*" [[package]] -name = "backcall" -version = "0.2.0" -description = "Specifications for callback functions passed in to an API" -category = "main" +name = "babel" +version = "2.16.0" +description = "Internationalization utilities" optional = false -python-versions = "*" +python-versions = ">=3.8" +files = [ + {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, + {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, +] + +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] [[package]] name = "bandit" -version = "1.7.4" +version = "1.7.10" description = "Security oriented static analyser for python code." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "bandit-1.7.10-py3-none-any.whl", hash = "sha256:665721d7bebbb4485a339c55161ac0eedde27d51e638000d91c8c2d68343ad02"}, + {file = "bandit-1.7.10.tar.gz", hash = "sha256:59ed5caf5d92b6ada4bf65bc6437feea4a9da1093384445fed4d472acc6cff7b"}, +] [package.dependencies] colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""} -GitPython = ">=1.0.1" PyYAML = ">=5.3.1" +rich = "*" stevedore = ">=1.20.0" [package.extras] -test = ["coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "toml", "beautifulsoup4 (>=4.8.0)", "pylint (==1.9.4)"] -toml = ["toml"] -yaml = ["pyyaml"] +baseline = ["GitPython (>=3.1.30)"] +sarif = ["jschema-to-python (>=1.2.3)", "sarif-om (>=1.0.4)"] +test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)"] +toml = ["tomli (>=1.1.0)"] +yaml = ["PyYAML"] [[package]] name = "beautifulsoup4" -version = "4.11.1" +version = "4.12.3" description = "Screen-scraping library" -category = "main" optional = false python-versions = ">=3.6.0" +files = [ + {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, + {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, +] [package.dependencies] soupsieve = ">1.2" [package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] [[package]] name = "biopython" -version = "1.79" +version = "1.84" description = "Freely available tools for computational molecular biology." -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.9" +files = [ + {file = "biopython-1.84-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3c8beded38884abae4c74cb6ce54142da670273fd0b2919bd0f84f6e34d3056b"}, + {file = "biopython-1.84-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b51ef31bfb79872a182a85b4113625e1b553c024bb1586c72ac98b479f8d8fe4"}, + {file = "biopython-1.84-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca8d6a88b9a9718074b3f5b450f9ea5adf7112a7dbaed55d82d5b623f5859a01"}, + {file = "biopython-1.84-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dc2e77490725060330003f73b6b7d5172f8bc160f180de5877a2e899ad999d4"}, + {file = "biopython-1.84-cp310-cp310-win32.whl", hash = "sha256:4f39b38e7625c33384954130d90f19984e91cb5af64e2fb128603359f86884ad"}, + {file = "biopython-1.84-cp310-cp310-win_amd64.whl", hash = "sha256:9e3f7476fd81f31e048965d7be2826f018686e870d96870f440b609002953954"}, + {file = "biopython-1.84-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2d4ed30aebd96b4aadeb1f04adce92795c696f5bd56d1fd45517b89059918dd4"}, + {file = "biopython-1.84-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c792508988fc3ccf18eaae2a826c9cd97f1c27fb55bb87bdce6a101fee9f5a0c"}, + {file = "biopython-1.84-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:507ac3956f3107e77fee362ecb048dafb5f97cbcf110012d091418430c3227c7"}, + {file = "biopython-1.84-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:894ee7533cca7f5f9769e2595fbe7b0dba5018f39a2170753d101a13e7585ff4"}, + {file = "biopython-1.84-cp311-cp311-win32.whl", hash = "sha256:7f4c746825721ec367c2f2d6a8cda3bc6495a1e084e5b2fbab26e9467706603f"}, + {file = "biopython-1.84-cp311-cp311-win_amd64.whl", hash = "sha256:2cb8e839ab472244b6082635ad1df67c94c05df0bd02a023103ed00ea66c4d20"}, + {file = "biopython-1.84-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ba58a6d76288333c5f178a426116953fa68204bd0cfc401694087dd4f96d0059"}, + {file = "biopython-1.84-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee3566f6dc3acf20e238540daf896f0af20cff531521bf41fdf5143f73e209ae"}, + {file = "biopython-1.84-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ef3967f5a88b5bb6344bef75ae83386de53fed3966d5c8c334ad885f8db08a"}, + {file = "biopython-1.84-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61765b71f84814a1eeb55ab222f43330aa7ad3e55ab91e8b444706149c67a281"}, + {file = "biopython-1.84-cp312-cp312-win32.whl", hash = "sha256:52b6098f47d6b90fc8a5e8579b81ee50047e9108f0976e69c891ae0c4817e42d"}, + {file = "biopython-1.84-cp312-cp312-win_amd64.whl", hash = "sha256:ecff2fcf5da29b600474c0bfcdbbac0f98b25e22fe60a853d0ee798c00f7396c"}, + {file = "biopython-1.84-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f4c1c9ad7da9eaf8d8f4515bf931a7f6548a468e7ef29b8429e31aaff2d95f4c"}, + {file = "biopython-1.84-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9fbd4b67d3e71b0d716a1712ab8b4e57981c6549ba17ce5626ffa8976d170da7"}, + {file = "biopython-1.84-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c425a39871f652598f502671aa5f6b5125475a91333a368a47f9c611ca96db1"}, + {file = "biopython-1.84-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b69d59f9a762c5bb5f77ed03f197dad05ebd702c34d2cae7be98f1f30e04089"}, + {file = "biopython-1.84-cp39-cp39-win32.whl", hash = "sha256:25f4ef193a307e403eb532e8f060b818e2d75f65803a2b0f4e645b0cae131b4e"}, + {file = "biopython-1.84-cp39-cp39-win_amd64.whl", hash = "sha256:b64575363bb2344073c949fd69a0bf3ea015b447aa1494e4813376855b479118"}, + {file = "biopython-1.84.tar.gz", hash = "sha256:60fbe6f996e8a6866a42698c17e552127d99a9aab3259d6249fbaabd0e0cc7b4"}, +] [package.dependencies] numpy = "*" [[package]] name = "bleach" -version = "5.0.1" +version = "6.1.0" description = "An easy safelist-based HTML-sanitizing tool." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, + {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, +] [package.dependencies] six = ">=1.9.0" webencodings = "*" [package.extras] -css = ["tinycss2 (>=1.1.0,<1.2)"] -dev = ["build (==0.8.0)", "flake8 (==4.0.1)", "hashin (==0.17.0)", "pip-tools (==6.6.2)", "pytest (==7.1.2)", "Sphinx (==4.3.2)", "tox (==3.25.0)", "twine (==4.0.1)", "wheel (==0.37.1)", "black (==22.3.0)", "mypy (==0.961)"] +css = ["tinycss2 (>=1.1.0,<1.3)"] [[package]] name = "certifi" -version = "2022.6.15" +version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, +] [[package]] name = "cffi" -version = "1.15.1" +version = "1.17.1" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.8" +files = [ + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, +] [package.dependencies] pycparser = "*" [[package]] name = "cfgv" -version = "3.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.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 = "2.1.1" +version = "3.4.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false -python-versions = ">=3.6.0" - -[package.extras] -unicode_backport = ["unicodedata2"] +python-versions = ">=3.7.0" +files = [ + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, + {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, + {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, +] [[package]] name = "cleanpy" version = "0.3.1" description = "cleanpy is a CLI tool to remove caches and temporary files that related to Python." -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "cleanpy-0.3.1-py3-none-any.whl", hash = "sha256:85be2d7d140185d7b3ef01515dd319f2352e83e787a62834d78fc1f33e0e593b"}, + {file = "cleanpy-0.3.1.tar.gz", hash = "sha256:a27328025fb248d2fb31581814b3352bc7c98160d03259209d2990064143d583"}, +] [package.extras] -test = ["subprocrunner", "pytest"] +test = ["pytest", "subprocrunner"] [[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.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "cohesion" -version = "1.0.0" +version = "1.1.0" description = "A tool for measuring Python class cohesion." -category = "dev" optional = false python-versions = "*" +files = [ + {file = "cohesion-1.1.0-py2.py3-none-any.whl", hash = "sha256:2ab1534d936428c61385e973c30cbd0381796401ad1083a5bf08562a9de9fee6"}, +] [[package]] name = "colorama" -version = "0.4.5" +version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] [[package]] -name = "commonmark" -version = "0.9.1" -description = "Python parser for the CommonMark Markdown spec" -category = "dev" +name = "comm" +version = "0.2.2" +description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." optional = false -python-versions = "*" +python-versions = ">=3.8" +files = [ + {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, + {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, +] + +[package.dependencies] +traitlets = ">=4" [package.extras] -test = ["hypothesis (==3.55.3)", "flake8 (==3.7.8)"] +test = ["pytest"] + +[[package]] +name = "contourpy" +version = "1.3.0" +description = "Python library for calculating contours of 2D quadrilateral grids" +optional = false +python-versions = ">=3.9" +files = [ + {file = "contourpy-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:880ea32e5c774634f9fcd46504bf9f080a41ad855f4fef54f5380f5133d343c7"}, + {file = "contourpy-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:76c905ef940a4474a6289c71d53122a4f77766eef23c03cd57016ce19d0f7b42"}, + {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92f8557cbb07415a4d6fa191f20fd9d2d9eb9c0b61d1b2f52a8926e43c6e9af7"}, + {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36f965570cff02b874773c49bfe85562b47030805d7d8360748f3eca570f4cab"}, + {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cacd81e2d4b6f89c9f8a5b69b86490152ff39afc58a95af002a398273e5ce589"}, + {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69375194457ad0fad3a839b9e29aa0b0ed53bb54db1bfb6c3ae43d111c31ce41"}, + {file = "contourpy-1.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a52040312b1a858b5e31ef28c2e865376a386c60c0e248370bbea2d3f3b760d"}, + {file = "contourpy-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3faeb2998e4fcb256542e8a926d08da08977f7f5e62cf733f3c211c2a5586223"}, + {file = "contourpy-1.3.0-cp310-cp310-win32.whl", hash = "sha256:36e0cff201bcb17a0a8ecc7f454fe078437fa6bda730e695a92f2d9932bd507f"}, + {file = "contourpy-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:87ddffef1dbe5e669b5c2440b643d3fdd8622a348fe1983fad7a0f0ccb1cd67b"}, + {file = "contourpy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fa4c02abe6c446ba70d96ece336e621efa4aecae43eaa9b030ae5fb92b309ad"}, + {file = "contourpy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:834e0cfe17ba12f79963861e0f908556b2cedd52e1f75e6578801febcc6a9f49"}, + {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbc4c3217eee163fa3984fd1567632b48d6dfd29216da3ded3d7b844a8014a66"}, + {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4865cd1d419e0c7a7bf6de1777b185eebdc51470800a9f42b9e9decf17762081"}, + {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:303c252947ab4b14c08afeb52375b26781ccd6a5ccd81abcdfc1fafd14cf93c1"}, + {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637f674226be46f6ba372fd29d9523dd977a291f66ab2a74fbeb5530bb3f445d"}, + {file = "contourpy-1.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:76a896b2f195b57db25d6b44e7e03f221d32fe318d03ede41f8b4d9ba1bff53c"}, + {file = "contourpy-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e1fd23e9d01591bab45546c089ae89d926917a66dceb3abcf01f6105d927e2cb"}, + {file = "contourpy-1.3.0-cp311-cp311-win32.whl", hash = "sha256:d402880b84df3bec6eab53cd0cf802cae6a2ef9537e70cf75e91618a3801c20c"}, + {file = "contourpy-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:6cb6cc968059db9c62cb35fbf70248f40994dfcd7aa10444bbf8b3faeb7c2d67"}, + {file = "contourpy-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:570ef7cf892f0afbe5b2ee410c507ce12e15a5fa91017a0009f79f7d93a1268f"}, + {file = "contourpy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:da84c537cb8b97d153e9fb208c221c45605f73147bd4cadd23bdae915042aad6"}, + {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0be4d8425bfa755e0fd76ee1e019636ccc7c29f77a7c86b4328a9eb6a26d0639"}, + {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c0da700bf58f6e0b65312d0a5e695179a71d0163957fa381bb3c1f72972537c"}, + {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb8b141bb00fa977d9122636b16aa67d37fd40a3d8b52dd837e536d64b9a4d06"}, + {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3634b5385c6716c258d0419c46d05c8aa7dc8cb70326c9a4fb66b69ad2b52e09"}, + {file = "contourpy-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0dce35502151b6bd35027ac39ba6e5a44be13a68f55735c3612c568cac3805fd"}, + {file = "contourpy-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aea348f053c645100612b333adc5983d87be69acdc6d77d3169c090d3b01dc35"}, + {file = "contourpy-1.3.0-cp312-cp312-win32.whl", hash = "sha256:90f73a5116ad1ba7174341ef3ea5c3150ddf20b024b98fb0c3b29034752c8aeb"}, + {file = "contourpy-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:b11b39aea6be6764f84360fce6c82211a9db32a7c7de8fa6dd5397cf1d079c3b"}, + {file = "contourpy-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3e1c7fa44aaae40a2247e2e8e0627f4bea3dd257014764aa644f319a5f8600e3"}, + {file = "contourpy-1.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:364174c2a76057feef647c802652f00953b575723062560498dc7930fc9b1cb7"}, + {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32b238b3b3b649e09ce9aaf51f0c261d38644bdfa35cbaf7b263457850957a84"}, + {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d51fca85f9f7ad0b65b4b9fe800406d0d77017d7270d31ec3fb1cc07358fdea0"}, + {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:732896af21716b29ab3e988d4ce14bc5133733b85956316fb0c56355f398099b"}, + {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d73f659398a0904e125280836ae6f88ba9b178b2fed6884f3b1f95b989d2c8da"}, + {file = "contourpy-1.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c6c7c2408b7048082932cf4e641fa3b8ca848259212f51c8c59c45aa7ac18f14"}, + {file = "contourpy-1.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f317576606de89da6b7e0861cf6061f6146ead3528acabff9236458a6ba467f8"}, + {file = "contourpy-1.3.0-cp313-cp313-win32.whl", hash = "sha256:31cd3a85dbdf1fc002280c65caa7e2b5f65e4a973fcdf70dd2fdcb9868069294"}, + {file = "contourpy-1.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:4553c421929ec95fb07b3aaca0fae668b2eb5a5203d1217ca7c34c063c53d087"}, + {file = "contourpy-1.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:345af746d7766821d05d72cb8f3845dfd08dd137101a2cb9b24de277d716def8"}, + {file = "contourpy-1.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3bb3808858a9dc68f6f03d319acd5f1b8a337e6cdda197f02f4b8ff67ad2057b"}, + {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:420d39daa61aab1221567b42eecb01112908b2cab7f1b4106a52caaec8d36973"}, + {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d63ee447261e963af02642ffcb864e5a2ee4cbfd78080657a9880b8b1868e18"}, + {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:167d6c890815e1dac9536dca00828b445d5d0df4d6a8c6adb4a7ec3166812fa8"}, + {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:710a26b3dc80c0e4febf04555de66f5fd17e9cf7170a7b08000601a10570bda6"}, + {file = "contourpy-1.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:75ee7cb1a14c617f34a51d11fa7524173e56551646828353c4af859c56b766e2"}, + {file = "contourpy-1.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:33c92cdae89ec5135d036e7218e69b0bb2851206077251f04a6c4e0e21f03927"}, + {file = "contourpy-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a11077e395f67ffc2c44ec2418cfebed032cd6da3022a94fc227b6faf8e2acb8"}, + {file = "contourpy-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e8134301d7e204c88ed7ab50028ba06c683000040ede1d617298611f9dc6240c"}, + {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e12968fdfd5bb45ffdf6192a590bd8ddd3ba9e58360b29683c6bb71a7b41edca"}, + {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fd2a0fc506eccaaa7595b7e1418951f213cf8255be2600f1ea1b61e46a60c55f"}, + {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4cfb5c62ce023dfc410d6059c936dcf96442ba40814aefbfa575425a3a7f19dc"}, + {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68a32389b06b82c2fdd68276148d7b9275b5f5cf13e5417e4252f6d1a34f72a2"}, + {file = "contourpy-1.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:94e848a6b83da10898cbf1311a815f770acc9b6a3f2d646f330d57eb4e87592e"}, + {file = "contourpy-1.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d78ab28a03c854a873787a0a42254a0ccb3cb133c672f645c9f9c8f3ae9d0800"}, + {file = "contourpy-1.3.0-cp39-cp39-win32.whl", hash = "sha256:81cb5ed4952aae6014bc9d0421dec7c5835c9c8c31cdf51910b708f548cf58e5"}, + {file = "contourpy-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:14e262f67bd7e6eb6880bc564dcda30b15e351a594657e55b7eec94b6ef72843"}, + {file = "contourpy-1.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fe41b41505a5a33aeaed2a613dccaeaa74e0e3ead6dd6fd3a118fb471644fd6c"}, + {file = "contourpy-1.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca7e17a65f72a5133bdbec9ecf22401c62bcf4821361ef7811faee695799779"}, + {file = "contourpy-1.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ec4dc6bf570f5b22ed0d7efba0dfa9c5b9e0431aeea7581aa217542d9e809a4"}, + {file = "contourpy-1.3.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:00ccd0dbaad6d804ab259820fa7cb0b8036bda0686ef844d24125d8287178ce0"}, + {file = "contourpy-1.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca947601224119117f7c19c9cdf6b3ab54c5726ef1d906aa4a69dfb6dd58102"}, + {file = "contourpy-1.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c6ec93afeb848a0845a18989da3beca3eec2c0f852322efe21af1931147d12cb"}, + {file = "contourpy-1.3.0.tar.gz", hash = "sha256:7ffa0db17717a8ffb127efd0c95a4362d996b892c2904db72428d5b52e1938a4"}, +] + +[package.dependencies] +numpy = ">=1.23" + +[package.extras] +bokeh = ["bokeh", "selenium"] +docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"] +mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.11.1)", "types-Pillow"] +test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] +test-no-images = ["pytest", "pytest-cov", "pytest-rerunfailures", "pytest-xdist", "wurlitzer"] [[package]] name = "coverage" -version = "6.4.4" +version = "6.5.0" description = "Code coverage measurement for Python" -category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "coverage-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53"}, + {file = "coverage-6.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a"}, + {file = "coverage-6.5.0-cp310-cp310-win32.whl", hash = "sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32"}, + {file = "coverage-6.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e"}, + {file = "coverage-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b"}, + {file = "coverage-6.5.0-cp311-cp311-win32.whl", hash = "sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578"}, + {file = "coverage-6.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b"}, + {file = "coverage-6.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4433b90fae13f86fafff0b326453dd42fc9a639a0d9e4eec4d366436d1a41b6d"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4f05d88d9a80ad3cac6244d36dd89a3c00abc16371769f1340101d3cb899fc3"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94e2565443291bd778421856bc975d351738963071e9b8839ca1fc08b42d4bef"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:027018943386e7b942fa832372ebc120155fd970837489896099f5cfa2890f79"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:255758a1e3b61db372ec2736c8e2a1fdfaf563977eedbdf131de003ca5779b7d"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:851cf4ff24062c6aec510a454b2584f6e998cada52d4cb58c5e233d07172e50c"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:12adf310e4aafddc58afdb04d686795f33f4d7a6fa67a7a9d4ce7d6ae24d949f"}, + {file = "coverage-6.5.0-cp37-cp37m-win32.whl", hash = "sha256:b5604380f3415ba69de87a289a2b56687faa4fe04dbee0754bfcae433489316b"}, + {file = "coverage-6.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4a8dbc1f0fbb2ae3de73eb0bdbb914180c7abfbf258e90b311dcd4f585d44bd2"}, + {file = "coverage-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d900bb429fdfd7f511f868cedd03a6bbb142f3f9118c09b99ef8dc9bf9643c3c"}, + {file = "coverage-6.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2198ea6fc548de52adc826f62cb18554caedfb1d26548c1b7c88d8f7faa8f6ba"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c4459b3de97b75e3bd6b7d4b7f0db13f17f504f3d13e2a7c623786289dd670e"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20c8ac5386253717e5ccc827caad43ed66fea0efe255727b1053a8154d952398"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b07130585d54fe8dff3d97b93b0e20290de974dc8177c320aeaf23459219c0b"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dbdb91cd8c048c2b09eb17713b0c12a54fbd587d79adcebad543bc0cd9a3410b"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:de3001a203182842a4630e7b8d1a2c7c07ec1b45d3084a83d5d227a3806f530f"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e07f4a4a9b41583d6eabec04f8b68076ab3cd44c20bd29332c6572dda36f372e"}, + {file = "coverage-6.5.0-cp38-cp38-win32.whl", hash = "sha256:6d4817234349a80dbf03640cec6109cd90cba068330703fa65ddf56b60223a6d"}, + {file = "coverage-6.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ccf362abd726b0410bf8911c31fbf97f09f8f1061f8c1cf03dfc4b6372848f6"}, + {file = "coverage-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:633713d70ad6bfc49b34ead4060531658dc6dfc9b3eb7d8a716d5873377ab745"}, + {file = "coverage-6.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:95203854f974e07af96358c0b261f1048d8e1083f2de9b1c565e1be4a3a48cfc"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9023e237f4c02ff739581ef35969c3739445fb059b060ca51771e69101efffe"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:265de0fa6778d07de30bcf4d9dc471c3dc4314a23a3c6603d356a3c9abc2dfcf"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f830ed581b45b82451a40faabb89c84e1a998124ee4212d440e9c6cf70083e5"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b6be138d61e458e18d8e6ddcddd36dd96215edfe5f1168de0b1b32635839b62"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42eafe6778551cf006a7c43153af1211c3aaab658d4d66fa5fcc021613d02518"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:723e8130d4ecc8f56e9a611e73b31219595baa3bb252d539206f7bbbab6ffc1f"}, + {file = "coverage-6.5.0-cp39-cp39-win32.whl", hash = "sha256:d9ecf0829c6a62b9b573c7bb6d4dcd6ba8b6f80be9ba4fc7ed50bf4ac9aecd72"}, + {file = "coverage-6.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc2af30ed0d5ae0b1abdb4ebdce598eafd5b35397d4d75deb341a614d333d987"}, + {file = "coverage-6.5.0-pp36.pp37.pp38-none-any.whl", hash = "sha256:1431986dac3923c5945271f169f59c45b8802a114c8f548d611f2015133df77a"}, + {file = "coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84"}, +] [package.dependencies] tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} @@ -310,62 +775,112 @@ toml = ["tomli"] [[package]] name = "cycler" -version = "0.11.0" +version = "0.12.1" description = "Composable style cycles" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30"}, + {file = "cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"}, +] + +[package.extras] +docs = ["ipython", "matplotlib", "numpydoc", "sphinx"] +tests = ["pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "debugpy" -version = "1.6.3" +version = "1.8.7" description = "An implementation of the Debug Adapter Protocol for Python" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "debugpy-1.8.7-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:95fe04a573b8b22896c404365e03f4eda0ce0ba135b7667a1e57bd079793b96b"}, + {file = "debugpy-1.8.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:628a11f4b295ffb4141d8242a9bb52b77ad4a63a2ad19217a93be0f77f2c28c9"}, + {file = "debugpy-1.8.7-cp310-cp310-win32.whl", hash = "sha256:85ce9c1d0eebf622f86cc68618ad64bf66c4fc3197d88f74bb695a416837dd55"}, + {file = "debugpy-1.8.7-cp310-cp310-win_amd64.whl", hash = "sha256:29e1571c276d643757ea126d014abda081eb5ea4c851628b33de0c2b6245b037"}, + {file = "debugpy-1.8.7-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:caf528ff9e7308b74a1749c183d6808ffbedbb9fb6af78b033c28974d9b8831f"}, + {file = "debugpy-1.8.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cba1d078cf2e1e0b8402e6bda528bf8fda7ccd158c3dba6c012b7897747c41a0"}, + {file = "debugpy-1.8.7-cp311-cp311-win32.whl", hash = "sha256:171899588bcd412151e593bd40d9907133a7622cd6ecdbdb75f89d1551df13c2"}, + {file = "debugpy-1.8.7-cp311-cp311-win_amd64.whl", hash = "sha256:6e1c4ffb0c79f66e89dfd97944f335880f0d50ad29525dc792785384923e2211"}, + {file = "debugpy-1.8.7-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:4d27d842311353ede0ad572600c62e4bcd74f458ee01ab0dd3a1a4457e7e3706"}, + {file = "debugpy-1.8.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:703c1fd62ae0356e194f3e7b7a92acd931f71fe81c4b3be2c17a7b8a4b546ec2"}, + {file = "debugpy-1.8.7-cp312-cp312-win32.whl", hash = "sha256:2f729228430ef191c1e4df72a75ac94e9bf77413ce5f3f900018712c9da0aaca"}, + {file = "debugpy-1.8.7-cp312-cp312-win_amd64.whl", hash = "sha256:45c30aaefb3e1975e8a0258f5bbd26cd40cde9bfe71e9e5a7ac82e79bad64e39"}, + {file = "debugpy-1.8.7-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:d050a1ec7e925f514f0f6594a1e522580317da31fbda1af71d1530d6ea1f2b40"}, + {file = "debugpy-1.8.7-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2f4349a28e3228a42958f8ddaa6333d6f8282d5edaea456070e48609c5983b7"}, + {file = "debugpy-1.8.7-cp313-cp313-win32.whl", hash = "sha256:11ad72eb9ddb436afb8337891a986302e14944f0f755fd94e90d0d71e9100bba"}, + {file = "debugpy-1.8.7-cp313-cp313-win_amd64.whl", hash = "sha256:2efb84d6789352d7950b03d7f866e6d180284bc02c7e12cb37b489b7083d81aa"}, + {file = "debugpy-1.8.7-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:4b908291a1d051ef3331484de8e959ef3e66f12b5e610c203b5b75d2725613a7"}, + {file = "debugpy-1.8.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da8df5b89a41f1fd31503b179d0a84a5fdb752dddd5b5388dbd1ae23cda31ce9"}, + {file = "debugpy-1.8.7-cp38-cp38-win32.whl", hash = "sha256:b12515e04720e9e5c2216cc7086d0edadf25d7ab7e3564ec8b4521cf111b4f8c"}, + {file = "debugpy-1.8.7-cp38-cp38-win_amd64.whl", hash = "sha256:93176e7672551cb5281577cdb62c63aadc87ec036f0c6a486f0ded337c504596"}, + {file = "debugpy-1.8.7-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:90d93e4f2db442f8222dec5ec55ccfc8005821028982f1968ebf551d32b28907"}, + {file = "debugpy-1.8.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6db2a370e2700557a976eaadb16243ec9c91bd46f1b3bb15376d7aaa7632c81"}, + {file = "debugpy-1.8.7-cp39-cp39-win32.whl", hash = "sha256:a6cf2510740e0c0b4a40330640e4b454f928c7b99b0c9dbf48b11efba08a8cda"}, + {file = "debugpy-1.8.7-cp39-cp39-win_amd64.whl", hash = "sha256:6a9d9d6d31846d8e34f52987ee0f1a904c7baa4912bf4843ab39dadf9b8f3e0d"}, + {file = "debugpy-1.8.7-py2.py3-none-any.whl", hash = "sha256:57b00de1c8d2c84a61b90880f7e5b6deaf4c312ecbde3a0e8912f2a56c4ac9ae"}, + {file = "debugpy-1.8.7.zip", hash = "sha256:18b8f731ed3e2e1df8e9cdaa23fb1fc9c24e570cd0081625308ec51c82efe42e"}, +] [[package]] name = "decorator" version = "5.1.1" description = "Decorators for Humans" -category = "main" optional = false python-versions = ">=3.5" +files = [ + {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, + {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, +] [[package]] name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] [[package]] name = "dill" -version = "0.3.5.1" -description = "serialize all of python" -category = "dev" +version = "0.3.9" +description = "serialize all of Python" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +python-versions = ">=3.8" +files = [ + {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"}, + {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"}, +] [package.extras] graph = ["objgraph (>=1.7.2)"] +profile = ["gprof2dot (>=2022.7.29)"] [[package]] name = "distlib" -version = "0.3.6" +version = "0.3.9" description = "Distribution utilities" -category = "dev" optional = false python-versions = "*" +files = [ + {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, + {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, +] [[package]] name = "dna-features-viewer" -version = "3.1.1" +version = "3.1.3" description = "Plot features from DNA sequences (e.g. Genbank) with Python" -category = "main" optional = false python-versions = "*" +files = [ + {file = "dna_features_viewer-3.1.3-py3-none-any.whl", hash = "sha256:b9d20233951f677e47bc1ec1e2ffeb9a937b9a015c610c5305215787f169f10b"}, + {file = "dna_features_viewer-3.1.3.tar.gz", hash = "sha256:7af179ab1b3c0dedd09e9e667cbd0fb804721ecbfc0cb4d0dda8a165437b3919"}, +] [package.dependencies] Biopython = "*" @@ -374,100 +889,148 @@ packaging = "*" [[package]] name = "docformatter" -version = "1.5.0" +version = "1.7.5" description = "Formats docstrings to follow PEP 257" -category = "dev" optional = false -python-versions = ">=3.6,<4.0" +python-versions = ">=3.7,<4.0" +files = [ + {file = "docformatter-1.7.5-py3-none-any.whl", hash = "sha256:a24f5545ed1f30af00d106f5d85dc2fce4959295687c24c8f39f5263afaf9186"}, + {file = "docformatter-1.7.5.tar.gz", hash = "sha256:ffed3da0daffa2e77f80ccba4f0e50bfa2755e1c10e130102571c890a61b246e"}, +] [package.dependencies] -tomli = {version = ">=2.0.0,<3.0.0", markers = "python_version >= \"3.7\""} +charset_normalizer = ">=3.0.0,<4.0.0" untokenize = ">=0.1.1,<0.2.0" [package.extras] -tomli = ["tomli (<2.0.0)"] +tomli = ["tomli (>=2.0.0,<3.0.0)"] [[package]] name = "entrypoints" version = "0.4" description = "Discover and load entry points from installed packages." -category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"}, + {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"}, +] [[package]] name = "eradicate" -version = "2.1.0" +version = "2.3.0" description = "Removes commented-out code." -category = "dev" optional = false python-versions = "*" +files = [ + {file = "eradicate-2.3.0-py3-none-any.whl", hash = "sha256:2b29b3dd27171f209e4ddd8204b70c02f0682ae95eecb353f10e8d72b149c63e"}, + {file = "eradicate-2.3.0.tar.gz", hash = "sha256:06df115be3b87d0fc1c483db22a2ebb12bcf40585722810d809cc770f5031c37"}, +] [[package]] name = "et-xmlfile" version = "1.1.0" description = "An implementation of lxml.xmlfile for the standard library" -category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"}, + {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"}, +] + +[[package]] +name = "exceptiongroup" +version = "1.2.2" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, +] + +[package.extras] +test = ["pytest (>=6)"] [[package]] name = "execnet" -version = "1.9.0" +version = "2.1.1" description = "execnet: rapid multi-Python deployment" -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.8" +files = [ + {file = "execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc"}, + {file = "execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3"}, +] [package.extras] -testing = ["pre-commit"] +testing = ["hatch", "pre-commit", "pytest", "tox"] [[package]] name = "executing" -version = "1.0.0" +version = "2.1.0" description = "Get the currently executing AST node of a frame, and other information" -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.8" +files = [ + {file = "executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf"}, + {file = "executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab"}, +] + +[package.extras] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] [[package]] name = "fastaparser" -version = "1.1" +version = "1.1.1" description = "A Python FASTA file Parser and Writer." -category = "main" optional = false python-versions = "*" +files = [ + {file = "fastaparser-1.1.1-py3-none-any.whl", hash = "sha256:c929f712bd4ea3e6f3569761c6c4fbe798e9a1c4b04d322deb05c8922e731cd4"}, + {file = "fastaparser-1.1.1.tar.gz", hash = "sha256:55adcc43285cac07a39844de2bbc5a0b9a40eb35fa99a44b62abe19917cd778e"}, +] [[package]] name = "fastjsonschema" -version = "2.16.1" +version = "2.20.0" description = "Fastest Python implementation of JSON schema" -category = "main" optional = false python-versions = "*" +files = [ + {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, + {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"}, +] [package.extras] -devel = ["colorama", "jsonschema", "json-spec", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] +devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] [[package]] name = "filelock" -version = "3.8.0" +version = "3.16.1" description = "A platform independent file lock." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, + {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, +] [package.extras] -docs = ["furo (>=2022.6.21)", "sphinx (>=5.1.1)", "sphinx-autodoc-typehints (>=1.19.1)"] -testing = ["covdefaults (>=2.2)", "coverage (>=6.4.2)", "pytest (>=7.1.2)", "pytest-cov (>=3)", "pytest-timeout (>=2.1)"] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] +typing = ["typing-extensions (>=4.12.2)"] [[package]] name = "fixit" version = "0.1.4" description = "A lint framework that writes better Python code for you." -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "fixit-0.1.4-py3-none-any.whl", hash = "sha256:4d4db17b91e562637f78ffcb017e82b02b299863addf9907b57f05fafd45f8c4"}, + {file = "fixit-0.1.4.tar.gz", hash = "sha256:450281387eebb36fdc6027cdbd14d48a4d4b84134034bd0e50415aaeff272ced"}, +] [package.dependencies] flake8 = ">=3.8.1" @@ -477,15 +1040,18 @@ libcst = ">=0.3.18" pyyaml = ">=5.2" [package.extras] -dev = ["diff-cover (>=3.0.1)", "tox (>=3.14.5)", "prompt-toolkit (>=2.0.9)", "sphinx-rtd-theme (>=0.5.0)", "pyre-check (==0.0.41)", "nbsphinx (>=0.7.1)", "jupyter (>=1.0.0)", "isort (>=4.3.20)", "coverage (>=4.5.4)", "codecov (>=2.0.15)", "black (>=19.10b0)"] +dev = ["black (>=19.10b0)", "codecov (>=2.0.15)", "coverage (>=4.5.4)", "diff-cover (>=3.0.1)", "isort (>=4.3.20)", "jupyter (>=1.0.0)", "nbsphinx (>=0.7.1)", "prompt-toolkit (>=2.0.9)", "pyre-check (==0.0.41)", "sphinx-rtd-theme (>=0.5.0)", "tox (>=3.14.5)"] [[package]] name = "flake8" version = "4.0.1" description = "the modular source code checker: pep8 pyflakes and co" -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"}, + {file = "flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"}, +] [package.dependencies] mccabe = ">=0.6.0,<0.7.0" @@ -496,9 +1062,11 @@ pyflakes = ">=2.4.0,<2.5.0" name = "flake8-bandit" version = "2.1.2" description = "Automated security testing with bandit and flake8." -category = "dev" optional = false python-versions = "*" +files = [ + {file = "flake8_bandit-2.1.2.tar.gz", hash = "sha256:687fc8da2e4a239b206af2e54a90093572a60d0954f3054e23690739b0b0de3b"}, +] [package.dependencies] bandit = "*" @@ -510,9 +1078,12 @@ pycodestyle = "*" name = "flake8-broken-line" version = "0.4.0" description = "Flake8 plugin to forbid backslashes for line breaks" -category = "dev" optional = false python-versions = ">=3.6,<4.0" +files = [ + {file = "flake8-broken-line-0.4.0.tar.gz", hash = "sha256:771aab5aa0997666796fed249d0e48e6c01cdfeca8c95521eea28a38b7ced4c7"}, + {file = "flake8_broken_line-0.4.0-py3-none-any.whl", hash = "sha256:e9c522856862239a2c7ef2c1de0276fa598572aa864bd4e9c7efc2a827538515"}, +] [package.dependencies] flake8 = ">=3.5,<5" @@ -521,9 +1092,12 @@ flake8 = ">=3.5,<5" name = "flake8-bugbear" version = "21.11.29" description = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle." -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "flake8-bugbear-21.11.29.tar.gz", hash = "sha256:8b04cb2fafc6a78e1a9d873bd3988e4282f7959bb6b0d7c1ae648ec09b937a7b"}, + {file = "flake8_bugbear-21.11.29-py36.py37.py38-none-any.whl", hash = "sha256:179e41ddae5de5e3c20d1f61736feeb234e70958fbb56ab3c28a67739c8e9a82"}, +] [package.dependencies] attrs = ">=19.2.0" @@ -536,39 +1110,54 @@ dev = ["coverage", "hypothesis", "hypothesmith (>=0.2)", "pre-commit"] name = "flake8-commas" version = "2.1.0" description = "Flake8 lint for trailing commas." -category = "dev" optional = false python-versions = "*" +files = [ + {file = "flake8-commas-2.1.0.tar.gz", hash = "sha256:940441ab8ee544df564ae3b3f49f20462d75d5c7cac2463e0b27436e2050f263"}, + {file = "flake8_commas-2.1.0-py2.py3-none-any.whl", hash = "sha256:ebb96c31e01d0ef1d0685a21f3f0e2f8153a0381430e748bf0bbbb5d5b453d54"}, +] [package.dependencies] flake8 = ">=2" [[package]] name = "flake8-comprehensions" -version = "3.10.0" +version = "3.15.0" description = "A flake8 plugin to help you write better list/set/dict comprehensions." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "flake8_comprehensions-3.15.0-py3-none-any.whl", hash = "sha256:b7e027bbb52be2ceb779ee12484cdeef52b0ad3c1fcb8846292bdb86d3034681"}, + {file = "flake8_comprehensions-3.15.0.tar.gz", hash = "sha256:923c22603e0310376a6b55b03efebdc09753c69f2d977755cba8bb73458a5d4d"}, +] [package.dependencies] -flake8 = ">=3.0,<3.2.0 || >3.2.0" +flake8 = ">=3,<3.2 || >3.2" [[package]] name = "flake8-copyright" -version = "0.2.3" +version = "0.2.4" description = "Adds copyright checks to flake8" -category = "dev" optional = false python-versions = "*" +files = [ + {file = "flake8-copyright-0.2.4.tar.gz", hash = "sha256:b78491fcf575266d7e78dcfa899c876edd1c29929d247de3408bf4e3f971bf1c"}, + {file = "flake8_copyright-0.2.4-py3-none-any.whl", hash = "sha256:5d33d900c4183bb6748692407867229d1e5b84016a100e8899a7f58dcf52223f"}, +] + +[package.dependencies] +setuptools = "*" [[package]] name = "flake8-debugger" version = "4.1.2" description = "ipdb/pdb statement checker plugin for flake8" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "flake8-debugger-4.1.2.tar.gz", hash = "sha256:52b002560941e36d9bf806fca2523dc7fb8560a295d5f1a6e15ac2ded7a73840"}, + {file = "flake8_debugger-4.1.2-py3-none-any.whl", hash = "sha256:0a5e55aeddcc81da631ad9c8c366e7318998f83ff00985a49e6b3ecf61e571bf"}, +] [package.dependencies] flake8 = ">=3.0" @@ -576,11 +1165,14 @@ pycodestyle = "*" [[package]] name = "flake8-docstrings" -version = "1.6.0" +version = "1.7.0" description = "Extension for flake8 which uses pydocstyle to check docstrings" -category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.7" +files = [ + {file = "flake8_docstrings-1.7.0-py2.py3-none-any.whl", hash = "sha256:51f2344026da083fc084166a9353f5082b01f72901df422f74b4d953ae88ac75"}, + {file = "flake8_docstrings-1.7.0.tar.gz", hash = "sha256:4c8cc748dc16e6869728699e5d0d685da9a10b0ea718e090b1ba088e67a941af"}, +] [package.dependencies] flake8 = ">=3" @@ -588,11 +1180,14 @@ pydocstyle = ">=2.1" [[package]] name = "flake8-eradicate" -version = "1.3.0" +version = "1.4.0" description = "Flake8 plugin to find commented out code" -category = "dev" optional = false -python-versions = ">=3.6,<4.0" +python-versions = ">=3.7,<4.0" +files = [ + {file = "flake8-eradicate-1.4.0.tar.gz", hash = "sha256:3088cfd6717d1c9c6c3ac45ef2e5f5b6c7267f7504d5a74b781500e95cb9c7e1"}, + {file = "flake8_eradicate-1.4.0-py3-none-any.whl", hash = "sha256:e3bbd0871be358e908053c1ab728903c114f062ba596b4d40c852fd18f473d56"}, +] [package.dependencies] attrs = "*" @@ -601,61 +1196,77 @@ flake8 = ">=3.5,<6" [[package]] name = "flake8-executable" -version = "2.1.1" +version = "2.1.3" description = "A Flake8 plugin for checking executable permissions and shebangs." -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "flake8-executable-2.1.3.tar.gz", hash = "sha256:619fe023e00c3d8e5113521d7200e1ebb04587c12d157f9a2fb167feb8cae66b"}, + {file = "flake8_executable-2.1.3-py3-none-any.whl", hash = "sha256:f0a66c97c3b99ce63bc1f01ce602d6bd048e4fc5dc0d7a13be2bfa3deb023a34"}, +] [package.dependencies] flake8 = ">=3.0.0" [[package]] name = "flake8-implicit-str-concat" -version = "0.2.0" +version = "0.4.0" description = "Flake8 plugin to encourage correct string literal concatenation." -category = "dev" optional = false -python-versions = "~=3.6" +python-versions = "~=3.7" +files = [ + {file = "flake8_implicit_str_concat-0.4.0-py3-none-any.whl", hash = "sha256:b91805a3e0ff30ae2890830548478af25c79a4a579ec402a6ba3538043dff60c"}, + {file = "flake8_implicit_str_concat-0.4.0.tar.gz", hash = "sha256:b6acf233afee943dc1802ef4bc242a19f0419fac9943739e235d3f2aaf616361"}, +] [package.dependencies] -attrs = ">=19.3,<21" -more-itertools = ">=8.0.2,<9" +more-itertools = {version = ">=8.0.2", markers = "python_version <= \"3.9\""} [[package]] name = "flake8-logging-format" version = "0.6.0" description = "Flake8 extension to validate (lack of) logging format strings" -category = "dev" optional = false python-versions = "*" +files = [ + {file = "flake8-logging-format-0.6.0.tar.gz", hash = "sha256:ca5f2b7fc31c3474a0aa77d227e022890f641a025f0ba664418797d979a779f8"}, +] [[package]] name = "flake8-no-pep420" -version = "2.3.0" +version = "2.7.0" description = "A flake8 plugin to ban PEP-420 implicit namespace packages." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "flake8_no_pep420-2.7.0-py3-none-any.whl", hash = "sha256:018bbe0fba039444689d02a0857310b62b90ff9bf737aff27e0b847ec7eb9ba3"}, + {file = "flake8_no_pep420-2.7.0.tar.gz", hash = "sha256:a1b6db4de355b87f8189714e68785a7c6a2d61d94f3e937b6cee336953f7d703"}, +] [package.dependencies] flake8 = ">=3.0,<3.2.0 || >3.2.0" [[package]] name = "flake8-plugin-utils" -version = "1.3.2" +version = "1.3.3" description = "The package provides base classes and utils for flake8 plugin writing" -category = "dev" optional = false python-versions = ">=3.6,<4.0" +files = [ + {file = "flake8-plugin-utils-1.3.3.tar.gz", hash = "sha256:39f6f338d038b301c6fd344b06f2e81e382b68fa03c0560dff0d9b1791a11a2c"}, + {file = "flake8_plugin_utils-1.3.3-py3-none-any.whl", hash = "sha256:e4848c57d9d50f19100c2d75fa794b72df068666a9041b4b0409be923356a3ed"}, +] [[package]] name = "flake8-polyfill" version = "1.0.2" description = "Polyfill package for Flake8 plugins" -category = "dev" optional = false python-versions = "*" +files = [ + {file = "flake8-polyfill-1.0.2.tar.gz", hash = "sha256:e44b087597f6da52ec6393a709e7108b2905317d0c0b744cdca6208e670d8eda"}, + {file = "flake8_polyfill-1.0.2-py2.py3-none-any.whl", hash = "sha256:12be6a34ee3ab795b19ca73505e7b55826d5f6ad7230d31b18e106400169b9e9"}, +] [package.dependencies] flake8 = "*" @@ -664,9 +1275,12 @@ flake8 = "*" name = "flake8-print" version = "4.0.1" description = "print statement checker plugin for flake8" -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "flake8-print-4.0.1.tar.gz", hash = "sha256:12b3c3bf65329d8ca9acde949fb3b932ec113e9e5ffa6cb7cd55a7dbcd67dae1"}, + {file = "flake8_print-4.0.1-py3-none-any.whl", hash = "sha256:e246bcd5b07d5259af460b7eff148052c49114640380d7f22340f30920fabf02"}, +] [package.dependencies] flake8 = ">=3.0" @@ -675,33 +1289,42 @@ six = "*" [[package]] name = "flake8-pytest-style" -version = "1.6.0" +version = "1.7.2" description = "A flake8 plugin checking common style issues or inconsistencies with pytest-based tests." -category = "dev" optional = false -python-versions = ">=3.6.2,<4.0.0" +python-versions = ">=3.7.2,<4.0.0" +files = [ + {file = "flake8_pytest_style-1.7.2-py3-none-any.whl", hash = "sha256:f5d2aa3219163a052dd92226589d45fab8ea027a3269922f0c4029f548ea5cd1"}, + {file = "flake8_pytest_style-1.7.2.tar.gz", hash = "sha256:b924197c99b951315949920b0e5547f34900b1844348432e67a44ab191582109"}, +] [package.dependencies] flake8-plugin-utils = ">=1.3.2,<2.0.0" [[package]] name = "flake8-quotes" -version = "3.3.1" +version = "3.4.0" description = "Flake8 lint for quotes." -category = "dev" optional = false python-versions = "*" +files = [ + {file = "flake8-quotes-3.4.0.tar.gz", hash = "sha256:aad8492fb710a2d3eabe68c5f86a1428de650c8484127e14c43d0504ba30276c"}, +] [package.dependencies] flake8 = "*" +setuptools = "*" [[package]] name = "flake8-simplify" version = "0.14.6" description = "flake8 plugin which checks for code that can be simplified" -category = "dev" optional = false python-versions = ">=3.6.1" +files = [ + {file = "flake8_simplify-0.14.6-py3-none-any.whl", hash = "sha256:8831fb8ff46dee1018d0b4c29f043a010cffafce7309fca536fde8461b98b6f6"}, + {file = "flake8_simplify-0.14.6.tar.gz", hash = "sha256:c4008db8016707684a1f0502ee69f3c2da37687d3cf7031cc1f326bf5986bf47"}, +] [package.dependencies] astor = ">=0.1" @@ -711,9 +1334,12 @@ flake8 = ">=3.7" name = "flake8-type-checking" version = "1.5.0" description = "A flake8 plugin for managing type-checking imports & forward references" -category = "dev" optional = false python-versions = ">=3.8,<4.0" +files = [ + {file = "flake8-type-checking-1.5.0.tar.gz", hash = "sha256:d01234fc2d3ffc9661dd797fb1bed19e2d92a1fb4041a4e8dc0200ea14f357c0"}, + {file = "flake8_type_checking-1.5.0-py3-none-any.whl", hash = "sha256:b9873f011e18e20dee60e2b633f2c675f2aa1318499e5294b46c860fc75bdcd6"}, +] [package.dependencies] flake8 = "*" @@ -722,9 +1348,12 @@ flake8 = "*" name = "flake8-typing-imports" version = "1.12.0" description = "flake8 plugin which checks that typing imports are properly guarded" -category = "dev" optional = false python-versions = ">=3.6.1" +files = [ + {file = "flake8_typing_imports-1.12.0-py2.py3-none-any.whl", hash = "sha256:4a072a5f5975caedfbd364fb54755983cae812e2b2f0125f3a71237868971a25"}, + {file = "flake8_typing_imports-1.12.0.tar.gz", hash = "sha256:d9482d7a3dd3d777915c7f8907a166b405aaf8314ecceb1be2b642e9375d87ed"}, +] [package.dependencies] flake8 = ">=3.8" @@ -733,228 +1362,437 @@ flake8 = ">=3.8" name = "flake8-use-pathlib" version = "0.2.1" description = "A plugin for flake8 finding use of functions that can be replaced by pathlib module." -category = "dev" optional = false python-versions = ">=3.6,<4.0" +files = [ + {file = "flake8-use-pathlib-0.2.1.tar.gz", hash = "sha256:844023d3e1ed55dc183bfd5421c4887f1d8242a85f183d6b4849567da6f9ee5e"}, + {file = "flake8_use_pathlib-0.2.1-py3-none-any.whl", hash = "sha256:5d6ecccead68deef2b7a056553fc4fea513666dc0ae61cc9378615ea1ee301e3"}, +] [package.dependencies] flake8 = ">=3.6,<5" [[package]] name = "fonttools" -version = "4.37.1" +version = "4.54.1" description = "Tools to manipulate font files" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "fonttools-4.54.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ed7ee041ff7b34cc62f07545e55e1468808691dddfd315d51dd82a6b37ddef2"}, + {file = "fonttools-4.54.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41bb0b250c8132b2fcac148e2e9198e62ff06f3cc472065dff839327945c5882"}, + {file = "fonttools-4.54.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7965af9b67dd546e52afcf2e38641b5be956d68c425bef2158e95af11d229f10"}, + {file = "fonttools-4.54.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:278913a168f90d53378c20c23b80f4e599dca62fbffae4cc620c8eed476b723e"}, + {file = "fonttools-4.54.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0e88e3018ac809b9662615072dcd6b84dca4c2d991c6d66e1970a112503bba7e"}, + {file = "fonttools-4.54.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4aa4817f0031206e637d1e685251ac61be64d1adef111060df84fdcbc6ab6c44"}, + {file = "fonttools-4.54.1-cp310-cp310-win32.whl", hash = "sha256:7e3b7d44e18c085fd8c16dcc6f1ad6c61b71ff463636fcb13df7b1b818bd0c02"}, + {file = "fonttools-4.54.1-cp310-cp310-win_amd64.whl", hash = "sha256:dd9cc95b8d6e27d01e1e1f1fae8559ef3c02c76317da650a19047f249acd519d"}, + {file = "fonttools-4.54.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5419771b64248484299fa77689d4f3aeed643ea6630b2ea750eeab219588ba20"}, + {file = "fonttools-4.54.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:301540e89cf4ce89d462eb23a89464fef50915255ece765d10eee8b2bf9d75b2"}, + {file = "fonttools-4.54.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ae5091547e74e7efecc3cbf8e75200bc92daaeb88e5433c5e3e95ea8ce5aa7"}, + {file = "fonttools-4.54.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82834962b3d7c5ca98cb56001c33cf20eb110ecf442725dc5fdf36d16ed1ab07"}, + {file = "fonttools-4.54.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d26732ae002cc3d2ecab04897bb02ae3f11f06dd7575d1df46acd2f7c012a8d8"}, + {file = "fonttools-4.54.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:58974b4987b2a71ee08ade1e7f47f410c367cdfc5a94fabd599c88165f56213a"}, + {file = "fonttools-4.54.1-cp311-cp311-win32.whl", hash = "sha256:ab774fa225238986218a463f3fe151e04d8c25d7de09df7f0f5fce27b1243dbc"}, + {file = "fonttools-4.54.1-cp311-cp311-win_amd64.whl", hash = "sha256:07e005dc454eee1cc60105d6a29593459a06321c21897f769a281ff2d08939f6"}, + {file = "fonttools-4.54.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:54471032f7cb5fca694b5f1a0aaeba4af6e10ae989df408e0216f7fd6cdc405d"}, + {file = "fonttools-4.54.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fa92cb248e573daab8d032919623cc309c005086d743afb014c836636166f08"}, + {file = "fonttools-4.54.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a911591200114969befa7f2cb74ac148bce5a91df5645443371aba6d222e263"}, + {file = "fonttools-4.54.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93d458c8a6a354dc8b48fc78d66d2a8a90b941f7fec30e94c7ad9982b1fa6bab"}, + {file = "fonttools-4.54.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5eb2474a7c5be8a5331146758debb2669bf5635c021aee00fd7c353558fc659d"}, + {file = "fonttools-4.54.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9c563351ddc230725c4bdf7d9e1e92cbe6ae8553942bd1fb2b2ff0884e8b714"}, + {file = "fonttools-4.54.1-cp312-cp312-win32.whl", hash = "sha256:fdb062893fd6d47b527d39346e0c5578b7957dcea6d6a3b6794569370013d9ac"}, + {file = "fonttools-4.54.1-cp312-cp312-win_amd64.whl", hash = "sha256:e4564cf40cebcb53f3dc825e85910bf54835e8a8b6880d59e5159f0f325e637e"}, + {file = "fonttools-4.54.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6e37561751b017cf5c40fce0d90fd9e8274716de327ec4ffb0df957160be3bff"}, + {file = "fonttools-4.54.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:357cacb988a18aace66e5e55fe1247f2ee706e01debc4b1a20d77400354cddeb"}, + {file = "fonttools-4.54.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e953cc0bddc2beaf3a3c3b5dd9ab7554677da72dfaf46951e193c9653e515a"}, + {file = "fonttools-4.54.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:58d29b9a294573d8319f16f2f79e42428ba9b6480442fa1836e4eb89c4d9d61c"}, + {file = "fonttools-4.54.1-cp313-cp313-win32.whl", hash = "sha256:9ef1b167e22709b46bf8168368b7b5d3efeaaa746c6d39661c1b4405b6352e58"}, + {file = "fonttools-4.54.1-cp313-cp313-win_amd64.whl", hash = "sha256:262705b1663f18c04250bd1242b0515d3bbae177bee7752be67c979b7d47f43d"}, + {file = "fonttools-4.54.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ed2f80ca07025551636c555dec2b755dd005e2ea8fbeb99fc5cdff319b70b23b"}, + {file = "fonttools-4.54.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9dc080e5a1c3b2656caff2ac2633d009b3a9ff7b5e93d0452f40cd76d3da3b3c"}, + {file = "fonttools-4.54.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d152d1be65652fc65e695e5619e0aa0982295a95a9b29b52b85775243c06556"}, + {file = "fonttools-4.54.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8583e563df41fdecef31b793b4dd3af8a9caa03397be648945ad32717a92885b"}, + {file = "fonttools-4.54.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:0d1d353ef198c422515a3e974a1e8d5b304cd54a4c2eebcae708e37cd9eeffb1"}, + {file = "fonttools-4.54.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:fda582236fee135d4daeca056c8c88ec5f6f6d88a004a79b84a02547c8f57386"}, + {file = "fonttools-4.54.1-cp38-cp38-win32.whl", hash = "sha256:e7d82b9e56716ed32574ee106cabca80992e6bbdcf25a88d97d21f73a0aae664"}, + {file = "fonttools-4.54.1-cp38-cp38-win_amd64.whl", hash = "sha256:ada215fd079e23e060157aab12eba0d66704316547f334eee9ff26f8c0d7b8ab"}, + {file = "fonttools-4.54.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f5b8a096e649768c2f4233f947cf9737f8dbf8728b90e2771e2497c6e3d21d13"}, + {file = "fonttools-4.54.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4e10d2e0a12e18f4e2dd031e1bf7c3d7017be5c8dbe524d07706179f355c5dac"}, + {file = "fonttools-4.54.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31c32d7d4b0958600eac75eaf524b7b7cb68d3a8c196635252b7a2c30d80e986"}, + {file = "fonttools-4.54.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c39287f5c8f4a0c5a55daf9eaf9ccd223ea59eed3f6d467133cc727d7b943a55"}, + {file = "fonttools-4.54.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a7a310c6e0471602fe3bf8efaf193d396ea561486aeaa7adc1f132e02d30c4b9"}, + {file = "fonttools-4.54.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d3b659d1029946f4ff9b6183984578041b520ce0f8fb7078bb37ec7445806b33"}, + {file = "fonttools-4.54.1-cp39-cp39-win32.whl", hash = "sha256:e96bc94c8cda58f577277d4a71f51c8e2129b8b36fd05adece6320dd3d57de8a"}, + {file = "fonttools-4.54.1-cp39-cp39-win_amd64.whl", hash = "sha256:e8a4b261c1ef91e7188a30571be6ad98d1c6d9fa2427244c545e2fa0a2494dd7"}, + {file = "fonttools-4.54.1-py3-none-any.whl", hash = "sha256:37cddd62d83dc4f72f7c3f3c2bcf2697e89a30efb152079896544a93907733bd"}, + {file = "fonttools-4.54.1.tar.gz", hash = "sha256:957f669d4922f92c171ba01bef7f29410668db09f6c02111e22b2bce446f3285"}, +] [package.extras] -all = ["fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "zopfli (>=0.1.4)", "lz4 (>=1.7.4.2)", "matplotlib", "sympy", "skia-pathops (>=0.5.0)", "uharfbuzz (>=0.23.0)", "brotlicffi (>=0.8.0)", "scipy", "brotli (>=1.0.1)", "munkres", "unicodedata2 (>=14.0.0)", "xattr"] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] graphite = ["lz4 (>=1.7.4.2)"] -interpolatable = ["scipy", "munkres"] -lxml = ["lxml (>=4.0,<5)"] +interpolatable = ["munkres", "pycairo", "scipy"] +lxml = ["lxml (>=4.0)"] pathops = ["skia-pathops (>=0.5.0)"] plot = ["matplotlib"] repacker = ["uharfbuzz (>=0.23.0)"] symfont = ["sympy"] type1 = ["xattr"] ufo = ["fs (>=2.2.0,<3)"] -unicode = ["unicodedata2 (>=14.0.0)"] -woff = ["zopfli (>=0.1.4)", "brotlicffi (>=0.8.0)", "brotli (>=1.0.1)"] +unicode = ["unicodedata2 (>=15.1.0)"] +woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] + +[[package]] +name = "fqdn" +version = "1.5.1" +description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" +optional = false +python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" +files = [ + {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, + {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, +] [[package]] name = "future" -version = "0.18.2" +version = "1.0.0" description = "Clean single-source support for Python 3 and 2" -category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "future-1.0.0-py3-none-any.whl", hash = "sha256:929292d34f5872e70396626ef385ec22355a1fae8ad29e1a734c3e43f9fbc216"}, + {file = "future-1.0.0.tar.gz", hash = "sha256:bd2968309307861edae1458a4f8a4f3598c03be43b97521076aebf5d94c07b05"}, +] [[package]] name = "gitdb" -version = "4.0.9" +version = "4.0.11" description = "Git Object Database" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"}, + {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"}, +] [package.dependencies] smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.27" -description = "GitPython is a python library used to interact with Git repositories" -category = "main" +version = "3.1.43" +description = "GitPython is a Python library used to interact with Git repositories" optional = false python-versions = ">=3.7" +files = [ + {file = "GitPython-3.1.43-py3-none-any.whl", hash = "sha256:eec7ec56b92aad751f9912a73404bc02ba212a23adb2c7098ee668417051a1ff"}, + {file = "GitPython-3.1.43.tar.gz", hash = "sha256:35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c"}, +] [package.dependencies] gitdb = ">=4.0.1,<5" +[package.extras] +doc = ["sphinx (==4.3.2)", "sphinx-autodoc-typehints", "sphinx-rtd-theme", "sphinxcontrib-applehelp (>=1.0.2,<=1.0.4)", "sphinxcontrib-devhelp (==1.0.2)", "sphinxcontrib-htmlhelp (>=2.0.0,<=2.0.1)", "sphinxcontrib-qthelp (==1.0.3)", "sphinxcontrib-serializinghtml (==1.1.5)"] +test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar", "typing-extensions"] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {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 = "1.0.6" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.13,<0.15" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httpx" +version = "0.27.2" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, + {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + [[package]] name = "identify" -version = "2.5.3" +version = "2.6.1" description = "File identification library for Python" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "identify-2.6.1-py2.py3-none-any.whl", hash = "sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0"}, + {file = "identify-2.6.1.tar.gz", hash = "sha256:91478c5fb7c3aac5ff7bf9b4344f803843dc586832d5f110d672b19aa1984c98"}, +] [package.extras] license = ["ukkonen"] [[package]] name = "idna" -version = "3.3" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "importlib-metadata" +version = "6.11.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-6.11.0-py3-none-any.whl", hash = "sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b"}, + {file = "importlib_metadata-6.11.0.tar.gz", hash = "sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443"}, +] + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] [[package]] name = "importlib-resources" -version = "5.9.0" +version = "6.4.5" description = "Read resources from Python packages" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717"}, + {file = "importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065"}, +] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["jaraco.test (>=5.4)", "pytest (>=6,!=8.1.*)", "zipp (>=3.17)"] +type = ["pytest-mypy"] [[package]] name = "iniconfig" -version = "1.1.1" -description = "iniconfig: brain-dead simple config-ini parsing" -category = "main" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" optional = false -python-versions = "*" +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 = "ipykernel" -version = "6.15.2" +version = "6.29.5" description = "IPython Kernel for Jupyter" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, + {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, +] [package.dependencies] appnope = {version = "*", markers = "platform_system == \"Darwin\""} -debugpy = ">=1.0" +comm = ">=0.1.1" +debugpy = ">=1.6.5" ipython = ">=7.23.1" jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" matplotlib-inline = ">=0.1" nest-asyncio = "*" packaging = "*" psutil = "*" -pyzmq = ">=17" +pyzmq = ">=24" tornado = ">=6.1" -traitlets = ">=5.1.0" +traitlets = ">=5.4.0" [package.extras] -test = ["flaky", "ipyparallel", "pre-commit", "pytest-cov", "pytest-timeout", "pytest (>=6.0)"] +cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] +pyqt5 = ["pyqt5"] +pyside6 = ["pyside6"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] [[package]] name = "ipython" -version = "8.4.0" +version = "8.18.1" description = "IPython: Productive Interactive Computing" -category = "main" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +files = [ + {file = "ipython-8.18.1-py3-none-any.whl", hash = "sha256:e8267419d72d81955ec1177f8a29aaa90ac80ad647499201119e2f05e99aa397"}, + {file = "ipython-8.18.1.tar.gz", hash = "sha256:ca6f079bb33457c66e233e4580ebfc4128855b4cf6370dddd73842a9563e8a27"}, +] [package.dependencies] -appnope = {version = "*", markers = "sys_platform == \"darwin\""} -backcall = "*" colorama = {version = "*", markers = "sys_platform == \"win32\""} decorator = "*" +exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} -pickleshare = "*" -prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0" +prompt-toolkit = ">=3.0.41,<3.1.0" pygments = ">=2.4.0" stack-data = "*" traitlets = ">=5" +typing-extensions = {version = "*", markers = "python_version < \"3.10\""} [package.extras] -all = ["black", "Sphinx (>=1.3)", "ipykernel", "nbconvert", "nbformat", "ipywidgets", "notebook", "ipyparallel", "qtconsole", "pytest (<7.1)", "pytest-asyncio", "testpath", "curio", "matplotlib (!=3.2.0)", "numpy (>=1.19)", "pandas", "trio"] +all = ["black", "curio", "docrepr", "exceptiongroup", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] black = ["black"] -doc = ["Sphinx (>=1.3)"] +doc = ["docrepr", "exceptiongroup", "ipykernel", "matplotlib", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] kernel = ["ipykernel"] nbconvert = ["nbconvert"] nbformat = ["nbformat"] notebook = ["ipywidgets", "notebook"] parallel = ["ipyparallel"] qtconsole = ["qtconsole"] -test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] -test_extra = ["pytest (<7.1)", "pytest-asyncio", "testpath", "curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.19)", "pandas", "trio"] +test = ["pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath"] +test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath", "trio"] [[package]] name = "ipython-genutils" version = "0.2.0" description = "Vestigial utilities from IPython" -category = "main" optional = false python-versions = "*" +files = [ + {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, + {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, +] [[package]] name = "ipywidgets" -version = "8.0.1" +version = "8.1.5" description = "Jupyter interactive widgets" -category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "ipywidgets-8.1.5-py3-none-any.whl", hash = "sha256:3290f526f87ae6e77655555baba4f36681c555b8bdbbff430b70e52c34c86245"}, + {file = "ipywidgets-8.1.5.tar.gz", hash = "sha256:870e43b1a35656a80c18c9503bbf2d16802db1cb487eec6fab27d683381dde17"}, +] [package.dependencies] -ipykernel = ">=4.5.1" +comm = ">=0.1.3" ipython = ">=6.1.0" -jupyterlab-widgets = ">=3.0,<4.0" +jupyterlab-widgets = ">=3.0.12,<3.1.0" traitlets = ">=4.3.1" -widgetsnbextension = ">=4.0,<5.0" +widgetsnbextension = ">=4.0.12,<4.1.0" [package.extras] -test = ["jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] +test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] [[package]] -name = "isort" -version = "5.10.1" -description = "A Python utility / library to sort Python imports." -category = "dev" +name = "isoduration" +version = "20.11.0" +description = "Operations with ISO 8601 durations" optional = false -python-versions = ">=3.6.1,<4.0" - +python-versions = ">=3.7" +files = [ + {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, + {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, +] + +[package.dependencies] +arrow = ">=0.15.0" + +[[package]] +name = "isort" +version = "5.13.2" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, +] + [package.extras] -pipfile_deprecated_finder = ["pipreqs", "requirementslib"] -requirements_deprecated_finder = ["pipreqs", "pip-api"] -colors = ["colorama (>=0.4.3,<0.5.0)"] -plugins = ["setuptools"] +colors = ["colorama (>=0.4.6)"] [[package]] name = "jedi" -version = "0.18.1" +version = "0.19.1" description = "An autocompletion tool for Python that can be used for text editors." -category = "main" optional = false python-versions = ">=3.6" +files = [ + {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] -parso = ">=0.8.0,<0.9.0" +parso = ">=0.8.3,<0.9.0" [package.extras] -qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] -testing = ["Django (<3.1)", "colorama", "docopt", "pytest (<7.0.0)"] +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", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] [[package]] name = "jinja2" -version = "3.1.2" +version = "3.1.4" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, +] [package.dependencies] MarkupSafe = ">=2.0" @@ -962,327 +1800,984 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] +[[package]] +name = "json5" +version = "0.9.25" +description = "A Python implementation of the JSON5 data format." +optional = false +python-versions = ">=3.8" +files = [ + {file = "json5-0.9.25-py3-none-any.whl", hash = "sha256:34ed7d834b1341a86987ed52f3f76cd8ee184394906b6e22a1e0deb9ab294e8f"}, + {file = "json5-0.9.25.tar.gz", hash = "sha256:548e41b9be043f9426776f05df8635a00fe06104ea51ed24b67f908856e151ae"}, +] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +description = "Identify specific nodes in a JSON document (RFC 6901)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, + {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, +] + [[package]] name = "jsonschema" -version = "4.15.0" +version = "4.23.0" description = "An implementation of JSON Schema validation for Python" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, + {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, +] [package.dependencies] -attrs = ">=17.4.0" -pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" +attrs = ">=22.2.0" +fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} +jsonschema-specifications = ">=2023.03.6" +referencing = ">=0.28.4" +rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} +rpds-py = ">=0.7.1" +uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +webcolors = {version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\""} [package.extras] format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=24.6.0)"] + +[[package]] +name = "jsonschema-specifications" +version = "2024.10.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +optional = false +python-versions = ">=3.9" +files = [ + {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, + {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, +] + +[package.dependencies] +referencing = ">=0.31.0" [[package]] name = "jupyter" -version = "1.0.0" +version = "1.1.1" description = "Jupyter metapackage. Install all the Jupyter components in one go." -category = "main" -optional = true +optional = false python-versions = "*" +files = [ + {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"}, + {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"}, +] [package.dependencies] ipykernel = "*" ipywidgets = "*" jupyter-console = "*" +jupyterlab = "*" nbconvert = "*" notebook = "*" -qtconsole = "*" [[package]] name = "jupyter-client" -version = "6.1.12" +version = "8.6.3" description = "Jupyter protocol implementation and client libraries" -category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" +files = [ + {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, + {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, +] [package.dependencies] -jupyter-core = ">=4.6.0" -python-dateutil = ">=2.1" -pyzmq = ">=13" -tornado = ">=4.1" -traitlets = "*" +importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +python-dateutil = ">=2.8.2" +pyzmq = ">=23.0" +tornado = ">=6.2" +traitlets = ">=5.3" [package.extras] -doc = ["sphinx (>=1.3.6)", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] -test = ["async-generator", "ipykernel", "ipython", "mock", "pytest-asyncio", "pytest-timeout", "pytest", "jedi (<0.18)"] +docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] [[package]] name = "jupyter-console" -version = "6.4.2" +version = "6.6.3" description = "Jupyter terminal console" -category = "main" -optional = true -python-versions = ">=3.6" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, + {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, +] [package.dependencies] -ipykernel = "*" +ipykernel = ">=6.14" ipython = "*" -jupyter-client = "*" -prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0" +jupyter-client = ">=7.0.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +prompt-toolkit = ">=3.0.30" pygments = "*" +pyzmq = ">=17" +traitlets = ">=5.4" [package.extras] -test = ["pexpect"] +test = ["flaky", "pexpect", "pytest"] [[package]] name = "jupyter-contrib-core" -version = "0.4.0" +version = "0.4.2" description = "Common utilities for jupyter-contrib projects." -category = "main" -optional = true +optional = false python-versions = "*" +files = [ + {file = "jupyter_contrib_core-0.4.2.tar.gz", hash = "sha256:1887212f3ca9d4487d624c0705c20dfdf03d5a0b9ea2557d3aaeeb4c38bdcabb"}, +] [package.dependencies] -jupyter-core = "*" +jupyter_core = "*" notebook = ">=4.0" +setuptools = "*" tornado = "*" traitlets = "*" [package.extras] -testing_utils = ["mock", "nose"] +testing-utils = ["mock", "nose"] [[package]] name = "jupyter-contrib-nbextensions" -version = "0.5.1" +version = "0.7.0" description = "A collection of Jupyter nbextensions." -category = "main" -optional = true +optional = false python-versions = "*" +files = [ + {file = "jupyter_contrib_nbextensions-0.7.0.tar.gz", hash = "sha256:06e33f005885eb92f89cbe82711e921278201298d08ab0d886d1ba09e8c3e9ca"}, +] [package.dependencies] -ipython-genutils = "*" -jupyter-contrib-core = ">=0.3.3" -jupyter-core = "*" -jupyter-highlight-selected-word = ">=0.1.1" -jupyter-latex-envs = ">=1.3.8" -jupyter-nbextensions-configurator = ">=0.4.0" +ipython_genutils = "*" +jupyter_contrib_core = ">=0.3.3" +jupyter_core = "*" +jupyter_highlight_selected_word = ">=0.1.1" +jupyter_nbextensions_configurator = ">=0.4.0" lxml = "*" -nbconvert = ">=4.2" -notebook = ">=4.0" -pyyaml = "*" +nbconvert = ">=6.0" +notebook = ">=6.0" tornado = "*" traitlets = ">=4.1" [package.extras] -test = ["mock", "requests", "pip", "nose", "nbformat"] +test = ["mock", "nbformat", "nose", "pip", "requests"] [[package]] name = "jupyter-core" -version = "4.11.1" +version = "5.7.2" description = "Jupyter core package. A base package on which Jupyter projects rely." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, + {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, +] [package.dependencies] -pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} -traitlets = "*" +platformdirs = ">=2.5" +pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} +traitlets = ">=5.3" [package.extras] -test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "jupyter-events" +version = "0.10.0" +description = "Jupyter Event System library" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960"}, + {file = "jupyter_events-0.10.0.tar.gz", hash = "sha256:670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22"}, +] + +[package.dependencies] +jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} +python-json-logger = ">=2.0.4" +pyyaml = ">=5.3" +referencing = "*" +rfc3339-validator = "*" +rfc3986-validator = ">=0.1.1" +traitlets = ">=5.3" + +[package.extras] +cli = ["click", "rich"] +docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"] +test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] [[package]] name = "jupyter-highlight-selected-word" version = "0.2.0" description = "Jupyter notebook extension that enables highlighting every instance of the current word in the notebook." -category = "main" -optional = true +optional = false python-versions = "*" +files = [ + {file = "jupyter_highlight_selected_word-0.2.0-py2.py3-none-any.whl", hash = "sha256:9545dfa9cb057eebe3a5795604dcd3a5294ea18637e553f61a0b67c1b5903c58"}, + {file = "jupyter_highlight_selected_word-0.2.0.tar.gz", hash = "sha256:9fa740424859a807950ca08d2bfd28a35154cd32dd6d50ac4e0950022adc0e7b"}, +] [[package]] -name = "jupyter-latex-envs" -version = "1.4.6" -description = "Jupyter notebook extension which supports (some) LaTeX environments within markdown cells. Also provides support for labels and crossreferences, document wide numbering, bibliography, and more..." -category = "main" -optional = true -python-versions = "*" +name = "jupyter-lsp" +version = "2.2.5" +description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, + {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, +] [package.dependencies] -ipython = "*" -jupyter_core = "*" -nbconvert = "*" -notebook = ">=4.0" -traitlets = ">=4.1" +importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} +jupyter-server = ">=1.1.2" [[package]] name = "jupyter-nbextensions-configurator" -version = "0.5.0" +version = "0.6.4" description = "jupyter serverextension providing configuration interfaces for nbextensions." -category = "main" -optional = true +optional = false python-versions = "*" +files = [ + {file = "jupyter_nbextensions_configurator-0.6.4-py2.py3-none-any.whl", hash = "sha256:fe7a7b0805b5926449692fb077e0e659bab8b27563bc68cba26854532fdf99c7"}, +] [package.dependencies] jupyter-contrib-core = ">=0.3.3" jupyter-core = "*" +jupyter-server = "*" notebook = ">=6.0" pyyaml = "*" tornado = "*" traitlets = "*" [package.extras] -test = ["mock", "selenium", "requests", "nose", "jupyter-contrib-core"] +test = ["jupyter-contrib-core[testing-utils]", "mock", "nose", "requests", "selenium"] [[package]] name = "jupyter-server" -version = "1.18.1" +version = "2.14.2" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "jupyter_server-2.14.2-py3-none-any.whl", hash = "sha256:47ff506127c2f7851a17bf4713434208fc490955d0e8632e95014a9a9afbeefd"}, + {file = "jupyter_server-2.14.2.tar.gz", hash = "sha256:66095021aa9638ced276c248b1d81862e4c50f292d575920bbe960de1c56b12b"}, +] [package.dependencies] -anyio = ">=3.1.0,<4" -argon2-cffi = "*" -jinja2 = "*" -jupyter-client = ">=6.1.12" -jupyter-core = ">=4.7.0" +anyio = ">=3.1.0" +argon2-cffi = ">=21.1" +jinja2 = ">=3.0.3" +jupyter-client = ">=7.4.4" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +jupyter-events = ">=0.9.0" +jupyter-server-terminals = ">=0.4.4" nbconvert = ">=6.4.4" -nbformat = ">=5.2.0" -packaging = "*" -prometheus-client = "*" -pywinpty = {version = "*", markers = "os_name == \"nt\""} -pyzmq = ">=17" -Send2Trash = "*" +nbformat = ">=5.3.0" +overrides = ">=5.0" +packaging = ">=22.0" +prometheus-client = ">=0.9" +pywinpty = {version = ">=2.0.1", markers = "os_name == \"nt\""} +pyzmq = ">=24" +send2trash = ">=1.8.2" terminado = ">=0.8.3" -tornado = ">=6.1.0" -traitlets = ">=5.1" -websocket-client = "*" +tornado = ">=6.2.0" +traitlets = ">=5.6.0" +websocket-client = ">=1.7" [package.extras] -test = ["coverage", "ipykernel", "pre-commit", "pytest-console-scripts", "pytest-cov", "pytest-mock", "pytest-timeout", "pytest-tornasync", "pytest (>=6.0)", "requests"] +docs = ["ipykernel", "jinja2", "jupyter-client", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] +test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.7)", "pytest-timeout", "requests"] [[package]] name = "jupyter-server-mathjax" version = "0.2.6" description = "MathJax resources as a Jupyter Server Extension." -category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "jupyter_server_mathjax-0.2.6-py3-none-any.whl", hash = "sha256:416389dde2010df46d5fbbb7adb087a5607111070af65a1445391040f2babb5e"}, + {file = "jupyter_server_mathjax-0.2.6.tar.gz", hash = "sha256:bb1e6b6dc0686c1fe386a22b5886163db548893a99c2810c36399e9c4ca23943"}, +] [package.dependencies] jupyter-server = ">=1.1" [package.extras] -test = ["pytest", "jupyter-server"] +test = ["jupyter-server[test]", "pytest"] + +[[package]] +name = "jupyter-server-terminals" +version = "0.5.3" +description = "A Jupyter Server Extension Providing Terminals." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, + {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, +] + +[package.dependencies] +pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""} +terminado = ">=0.8.3" + +[package.extras] +docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] +test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] + +[[package]] +name = "jupyterlab" +version = "4.2.5" +description = "JupyterLab computational environment" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyterlab-4.2.5-py3-none-any.whl", hash = "sha256:73b6e0775d41a9fee7ee756c80f58a6bed4040869ccc21411dc559818874d321"}, + {file = "jupyterlab-4.2.5.tar.gz", hash = "sha256:ae7f3a1b8cb88b4f55009ce79fa7c06f99d70cd63601ee4aa91815d054f46f75"}, +] + +[package.dependencies] +async-lru = ">=1.0.0" +httpx = ">=0.25.0" +importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} +ipykernel = ">=6.5.0" +jinja2 = ">=3.0.3" +jupyter-core = "*" +jupyter-lsp = ">=2.0.0" +jupyter-server = ">=2.4.0,<3" +jupyterlab-server = ">=2.27.1,<3" +notebook-shim = ">=0.2" +packaging = "*" +setuptools = ">=40.1.0" +tomli = {version = ">=1.2.2", markers = "python_version < \"3.11\""} +tornado = ">=6.2.0" +traitlets = "*" + +[package.extras] +dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.3.5)"] +docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"] +docs-screenshots = ["altair (==5.3.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.2)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.1.post2)", "matplotlib (==3.8.3)", "nbconvert (>=7.0.0)", "pandas (==2.2.1)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"] +test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] +upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] [[package]] name = "jupyterlab-pygments" -version = "0.2.2" +version = "0.3.0" description = "Pygments theme using JupyterLab CSS variables" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, + {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, +] + +[[package]] +name = "jupyterlab-server" +version = "2.27.3" +description = "A set of server components for JupyterLab and JupyterLab like applications." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, + {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, +] + +[package.dependencies] +babel = ">=2.10" +importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} +jinja2 = ">=3.0.3" +json5 = ">=0.9.0" +jsonschema = ">=4.18.0" +jupyter-server = ">=1.21,<3" +packaging = ">=21.3" +requests = ">=2.31" + +[package.extras] +docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"] +openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"] +test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0,<8)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] [[package]] name = "jupyterlab-widgets" -version = "3.0.2" +version = "3.0.13" description = "Jupyter interactive widgets for JupyterLab" -category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "jupyterlab_widgets-3.0.13-py3-none-any.whl", hash = "sha256:e3cda2c233ce144192f1e29914ad522b2f4c40e77214b0cc97377ca3d323db54"}, + {file = "jupyterlab_widgets-3.0.13.tar.gz", hash = "sha256:a2966d385328c1942b683a8cd96b89b8dd82c8b8f81dda902bb2bc06d46f5bed"}, +] [[package]] name = "kiwisolver" -version = "1.4.4" +version = "1.4.7" description = "A fast implementation of the Cassowary constraint solver" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "kiwisolver-1.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8a9c83f75223d5e48b0bc9cb1bf2776cf01563e00ade8775ffe13b0b6e1af3a6"}, + {file = "kiwisolver-1.4.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:58370b1ffbd35407444d57057b57da5d6549d2d854fa30249771775c63b5fe17"}, + {file = "kiwisolver-1.4.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aa0abdf853e09aff551db11fce173e2177d00786c688203f52c87ad7fcd91ef9"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8d53103597a252fb3ab8b5845af04c7a26d5e7ea8122303dd7a021176a87e8b9"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:88f17c5ffa8e9462fb79f62746428dd57b46eb931698e42e990ad63103f35e6c"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a9ca9c710d598fd75ee5de59d5bda2684d9db36a9f50b6125eaea3969c2599"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f4d742cb7af1c28303a51b7a27aaee540e71bb8e24f68c736f6f2ffc82f2bf05"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e28c7fea2196bf4c2f8d46a0415c77a1c480cc0724722f23d7410ffe9842c407"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e968b84db54f9d42046cf154e02911e39c0435c9801681e3fc9ce8a3c4130278"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0c18ec74c0472de033e1bebb2911c3c310eef5649133dd0bedf2a169a1b269e5"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8f0ea6da6d393d8b2e187e6a5e3fb81f5862010a40c3945e2c6d12ae45cfb2ad"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:f106407dda69ae456dd1227966bf445b157ccc80ba0dff3802bb63f30b74e895"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84ec80df401cfee1457063732d90022f93951944b5b58975d34ab56bb150dfb3"}, + {file = "kiwisolver-1.4.7-cp310-cp310-win32.whl", hash = "sha256:71bb308552200fb2c195e35ef05de12f0c878c07fc91c270eb3d6e41698c3bcc"}, + {file = "kiwisolver-1.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:44756f9fd339de0fb6ee4f8c1696cfd19b2422e0d70b4cefc1cc7f1f64045a8c"}, + {file = "kiwisolver-1.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:78a42513018c41c2ffd262eb676442315cbfe3c44eed82385c2ed043bc63210a"}, + {file = "kiwisolver-1.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d2b0e12a42fb4e72d509fc994713d099cbb15ebf1103545e8a45f14da2dfca54"}, + {file = "kiwisolver-1.4.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a8781ac3edc42ea4b90bc23e7d37b665d89423818e26eb6df90698aa2287c95"}, + {file = "kiwisolver-1.4.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:46707a10836894b559e04b0fd143e343945c97fd170d69a2d26d640b4e297935"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef97b8df011141c9b0f6caf23b29379f87dd13183c978a30a3c546d2c47314cb"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab58c12a2cd0fc769089e6d38466c46d7f76aced0a1f54c77652446733d2d02"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:803b8e1459341c1bb56d1c5c010406d5edec8a0713a0945851290a7930679b51"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9a9e8a507420fe35992ee9ecb302dab68550dedc0da9e2880dd88071c5fb052"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18077b53dc3bb490e330669a99920c5e6a496889ae8c63b58fbc57c3d7f33a18"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6af936f79086a89b3680a280c47ea90b4df7047b5bdf3aa5c524bbedddb9e545"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3abc5b19d24af4b77d1598a585b8a719beb8569a71568b66f4ebe1fb0449460b"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:933d4de052939d90afbe6e9d5273ae05fb836cc86c15b686edd4b3560cc0ee36"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:65e720d2ab2b53f1f72fb5da5fb477455905ce2c88aaa671ff0a447c2c80e8e3"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3bf1ed55088f214ba6427484c59553123fdd9b218a42bbc8c6496d6754b1e523"}, + {file = "kiwisolver-1.4.7-cp311-cp311-win32.whl", hash = "sha256:4c00336b9dd5ad96d0a558fd18a8b6f711b7449acce4c157e7343ba92dd0cf3d"}, + {file = "kiwisolver-1.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:929e294c1ac1e9f615c62a4e4313ca1823ba37326c164ec720a803287c4c499b"}, + {file = "kiwisolver-1.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:e33e8fbd440c917106b237ef1a2f1449dfbb9b6f6e1ce17c94cd6a1e0d438376"}, + {file = "kiwisolver-1.4.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5360cc32706dab3931f738d3079652d20982511f7c0ac5711483e6eab08efff2"}, + {file = "kiwisolver-1.4.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:942216596dc64ddb25adb215c3c783215b23626f8d84e8eff8d6d45c3f29f75a"}, + {file = "kiwisolver-1.4.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:48b571ecd8bae15702e4f22d3ff6a0f13e54d3d00cd25216d5e7f658242065ee"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad42ba922c67c5f219097b28fae965e10045ddf145d2928bfac2eb2e17673640"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:612a10bdae23404a72941a0fc8fa2660c6ea1217c4ce0dbcab8a8f6543ea9e7f"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e838bba3a3bac0fe06d849d29772eb1afb9745a59710762e4ba3f4cb8424483"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:22f499f6157236c19f4bbbd472fa55b063db77a16cd74d49afe28992dff8c258"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693902d433cf585133699972b6d7c42a8b9f8f826ebcaf0132ff55200afc599e"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4e77f2126c3e0b0d055f44513ed349038ac180371ed9b52fe96a32aa071a5107"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:657a05857bda581c3656bfc3b20e353c232e9193eb167766ad2dc58b56504948"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4bfa75a048c056a411f9705856abfc872558e33c055d80af6a380e3658766038"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:34ea1de54beef1c104422d210c47c7d2a4999bdecf42c7b5718fbe59a4cac383"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:90da3b5f694b85231cf93586dad5e90e2d71b9428f9aad96952c99055582f520"}, + {file = "kiwisolver-1.4.7-cp312-cp312-win32.whl", hash = "sha256:18e0cca3e008e17fe9b164b55735a325140a5a35faad8de92dd80265cd5eb80b"}, + {file = "kiwisolver-1.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:58cb20602b18f86f83a5c87d3ee1c766a79c0d452f8def86d925e6c60fbf7bfb"}, + {file = "kiwisolver-1.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:f5a8b53bdc0b3961f8b6125e198617c40aeed638b387913bf1ce78afb1b0be2a"}, + {file = "kiwisolver-1.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2e6039dcbe79a8e0f044f1c39db1986a1b8071051efba3ee4d74f5b365f5226e"}, + {file = "kiwisolver-1.4.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a1ecf0ac1c518487d9d23b1cd7139a6a65bc460cd101ab01f1be82ecf09794b6"}, + {file = "kiwisolver-1.4.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7ab9ccab2b5bd5702ab0803676a580fffa2aa178c2badc5557a84cc943fcf750"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f816dd2277f8d63d79f9c8473a79fe54047bc0467754962840782c575522224d"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf8bcc23ceb5a1b624572a1623b9f79d2c3b337c8c455405ef231933a10da379"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dea0bf229319828467d7fca8c7c189780aa9ff679c94539eed7532ebe33ed37c"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c06a4c7cf15ec739ce0e5971b26c93638730090add60e183530d70848ebdd34"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913983ad2deb14e66d83c28b632fd35ba2b825031f2fa4ca29675e665dfecbe1"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5337ec7809bcd0f424c6b705ecf97941c46279cf5ed92311782c7c9c2026f07f"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4c26ed10c4f6fa6ddb329a5120ba3b6db349ca192ae211e882970bfc9d91420b"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c619b101e6de2222c1fcb0531e1b17bbffbe54294bfba43ea0d411d428618c27"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:073a36c8273647592ea332e816e75ef8da5c303236ec0167196793eb1e34657a"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3ce6b2b0231bda412463e152fc18335ba32faf4e8c23a754ad50ffa70e4091ee"}, + {file = "kiwisolver-1.4.7-cp313-cp313-win32.whl", hash = "sha256:f4c9aee212bc89d4e13f58be11a56cc8036cabad119259d12ace14b34476fd07"}, + {file = "kiwisolver-1.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:8a3ec5aa8e38fc4c8af308917ce12c536f1c88452ce554027e55b22cbbfbff76"}, + {file = "kiwisolver-1.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:76c8094ac20ec259471ac53e774623eb62e6e1f56cd8690c67ce6ce4fcb05650"}, + {file = "kiwisolver-1.4.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5d5abf8f8ec1f4e22882273c423e16cae834c36856cac348cfbfa68e01c40f3a"}, + {file = "kiwisolver-1.4.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:aeb3531b196ef6f11776c21674dba836aeea9d5bd1cf630f869e3d90b16cfade"}, + {file = "kiwisolver-1.4.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7d755065e4e866a8086c9bdada157133ff466476a2ad7861828e17b6026e22c"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08471d4d86cbaec61f86b217dd938a83d85e03785f51121e791a6e6689a3be95"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7bbfcb7165ce3d54a3dfbe731e470f65739c4c1f85bb1018ee912bae139e263b"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d34eb8494bea691a1a450141ebb5385e4b69d38bb8403b5146ad279f4b30fa3"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9242795d174daa40105c1d86aba618e8eab7bf96ba8c3ee614da8302a9f95503"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a0f64a48bb81af7450e641e3fe0b0394d7381e342805479178b3d335d60ca7cf"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8e045731a5416357638d1700927529e2b8ab304811671f665b225f8bf8d8f933"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4322872d5772cae7369f8351da1edf255a604ea7087fe295411397d0cfd9655e"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:e1631290ee9271dffe3062d2634c3ecac02c83890ada077d225e081aca8aab89"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:edcfc407e4eb17e037bca59be0e85a2031a2ac87e4fed26d3e9df88b4165f92d"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:4d05d81ecb47d11e7f8932bd8b61b720bf0b41199358f3f5e36d38e28f0532c5"}, + {file = "kiwisolver-1.4.7-cp38-cp38-win32.whl", hash = "sha256:b38ac83d5f04b15e515fd86f312479d950d05ce2368d5413d46c088dda7de90a"}, + {file = "kiwisolver-1.4.7-cp38-cp38-win_amd64.whl", hash = "sha256:d83db7cde68459fc803052a55ace60bea2bae361fc3b7a6d5da07e11954e4b09"}, + {file = "kiwisolver-1.4.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f9362ecfca44c863569d3d3c033dbe8ba452ff8eed6f6b5806382741a1334bd"}, + {file = "kiwisolver-1.4.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e8df2eb9b2bac43ef8b082e06f750350fbbaf2887534a5be97f6cf07b19d9583"}, + {file = "kiwisolver-1.4.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f32d6edbc638cde7652bd690c3e728b25332acbadd7cad670cc4a02558d9c417"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e2e6c39bd7b9372b0be21456caab138e8e69cc0fc1190a9dfa92bd45a1e6e904"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dda56c24d869b1193fcc763f1284b9126550eaf84b88bbc7256e15028f19188a"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79849239c39b5e1fd906556c474d9b0439ea6792b637511f3fe3a41158d89ca8"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e3bc157fed2a4c02ec468de4ecd12a6e22818d4f09cde2c31ee3226ffbefab2"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3da53da805b71e41053dc670f9a820d1157aae77b6b944e08024d17bcd51ef88"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8705f17dfeb43139a692298cb6637ee2e59c0194538153e83e9ee0c75c2eddde"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:82a5c2f4b87c26bb1a0ef3d16b5c4753434633b83d365cc0ddf2770c93829e3c"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce8be0466f4c0d585cdb6c1e2ed07232221df101a4c6f28821d2aa754ca2d9e2"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:409afdfe1e2e90e6ee7fc896f3df9a7fec8e793e58bfa0d052c8a82f99c37abb"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5b9c3f4ee0b9a439d2415012bd1b1cc2df59e4d6a9939f4d669241d30b414327"}, + {file = "kiwisolver-1.4.7-cp39-cp39-win32.whl", hash = "sha256:a79ae34384df2b615eefca647a2873842ac3b596418032bef9a7283675962644"}, + {file = "kiwisolver-1.4.7-cp39-cp39-win_amd64.whl", hash = "sha256:cf0438b42121a66a3a667de17e779330fc0f20b0d97d59d2f2121e182b0505e4"}, + {file = "kiwisolver-1.4.7-cp39-cp39-win_arm64.whl", hash = "sha256:764202cc7e70f767dab49e8df52c7455e8de0df5d858fa801a11aa0d882ccf3f"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:94252291e3fe68001b1dd747b4c0b3be12582839b95ad4d1b641924d68fd4643"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5b7dfa3b546da08a9f622bb6becdb14b3e24aaa30adba66749d38f3cc7ea9706"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd3de6481f4ed8b734da5df134cd5a6a64fe32124fe83dde1e5b5f29fe30b1e6"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a91b5f9f1205845d488c928e8570dcb62b893372f63b8b6e98b863ebd2368ff2"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fa14dbd66b8b8f470d5fc79c089a66185619d31645f9b0773b88b19f7223c4"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:eb542fe7933aa09d8d8f9d9097ef37532a7df6497819d16efe4359890a2f417a"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bfa1acfa0c54932d5607e19a2c24646fb4c1ae2694437789129cf099789a3b00"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:eee3ea935c3d227d49b4eb85660ff631556841f6e567f0f7bda972df6c2c9935"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f3160309af4396e0ed04db259c3ccbfdc3621b5559b5453075e5de555e1f3a1b"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a17f6a29cf8935e587cc8a4dbfc8368c55edc645283db0ce9801016f83526c2d"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10849fb2c1ecbfae45a693c070e0320a91b35dd4bcf58172c023b994283a124d"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:ac542bf38a8a4be2dc6b15248d36315ccc65f0743f7b1a76688ffb6b5129a5c2"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8b01aac285f91ca889c800042c35ad3b239e704b150cfd3382adfc9dcc780e39"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:48be928f59a1f5c8207154f935334d374e79f2b5d212826307d072595ad76a2e"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f37cfe618a117e50d8c240555331160d73d0411422b59b5ee217843d7b693608"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:599b5c873c63a1f6ed7eead644a8a380cfbdf5db91dcb6f85707aaab213b1674"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:801fa7802e5cfabe3ab0c81a34c323a319b097dfb5004be950482d882f3d7225"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0c6c43471bc764fad4bc99c5c2d6d16a676b1abf844ca7c8702bdae92df01ee0"}, + {file = "kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60"}, +] [[package]] name = "lazy-object-proxy" -version = "1.7.1" +version = "1.10.0" description = "A fast and thorough lazy object proxy." -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"}, + {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"}, +] [[package]] name = "libcst" -version = "0.4.7" -description = "A concrete syntax tree with AST-like properties for Python 3.5, 3.6, 3.7, 3.8, 3.9, and 3.10 programs." -category = "dev" -optional = false -python-versions = ">=3.7" +version = "1.5.0" +description = "A concrete syntax tree with AST-like properties for Python 3.0 through 3.13 programs." +optional = false +python-versions = ">=3.9" +files = [ + {file = "libcst-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:23d0e07fd3ed11480f8993a1e99d58a45f914a711b14f858b8db08ae861a8a34"}, + {file = "libcst-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d92c5ae2e2dc9356ad7e3d05077d9b7e5065423e45788fd86729c88729e45c6e"}, + {file = "libcst-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96adc45e96476350df6b8a5ddbb1e1d6a83a7eb3f13087e52eb7cd2f9b65bcc7"}, + {file = "libcst-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5978fd60c66794bb60d037b2e6427ea52d032636e84afce32b0f04e1cf500a"}, + {file = "libcst-1.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6502aeb11412afc759036160c686be1107eb5a4466db56b207c786b9b4da7c4"}, + {file = "libcst-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:9cccfc0a78e110c0d0a9d2c6fdeb29feb5274c9157508a8baef7edf352420f6d"}, + {file = "libcst-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:585b3aa705b3767d717d2100935d8ef557275ecdd3fac81c3e28db0959efb0ea"}, + {file = "libcst-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8935dd3393e30c2f97344866a4cb14efe560200e232166a8db1de7865c2ef8b2"}, + {file = "libcst-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc80ea16c7d44e38f193e4d4ef7ff1e0ba72d8e60e8b61ac6f4c87f070a118bd"}, + {file = "libcst-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02be4aab728261bb76d16e77c9a457884cebb60d09c8edee844de43b0e08aff7"}, + {file = "libcst-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8fcd78be4d9ce3c36d0c5d0bdd384e0c7d5f72970a9e4ebd56070141972b4ad"}, + {file = "libcst-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:52b6aadfe54e3ae52c3b815eaaa17ba4da9ff010d5e8adf6a70697872886dd10"}, + {file = "libcst-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:83bc5fbe34d33597af1d5ea113dcb9b5dd5afe5a5f4316bac4293464d5e3971a"}, + {file = "libcst-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5f10124bf99a0b075eae136ef0ce06204e5f6b8da4596a9c4853a0663e80ddf3"}, + {file = "libcst-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48e581af6127c5af4c9f483e5986d94f0c6b2366967ee134f0a8eba0aa4c8c12"}, + {file = "libcst-1.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dba93cca0a5c6d771ed444c44d21ce8ea9b277af7036cea3743677aba9fbbb8"}, + {file = "libcst-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80b5c4d87721a7bab265c202575809b810815ab81d5e2e7a5d4417a087975840"}, + {file = "libcst-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:b48bf71d52c1e891a0948465a94d9817b5fc1ec1a09603566af90585f3b11948"}, + {file = "libcst-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:88520b6dea59eaea0cae80f77c0a632604a82c5b2d23dedb4b5b34035cbf1615"}, + {file = "libcst-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:208ea92d80b2eeed8cbc879d5f39f241582a5d56b916b1b65ed2be2f878a2425"}, + {file = "libcst-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4592872aaf5b7fa5c2727a7d73c0985261f1b3fe7eff51f4fd5b8174f30b4e2"}, + {file = "libcst-1.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2788b2b5838b78fe15df8e9fa6b6903195ea49b2d2ba43e8f423f6c90e4b69f"}, + {file = "libcst-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5b5bcd3a9ba92840f27ad34eaa038acbee195ec337da39536c0a2efbbf28efd"}, + {file = "libcst-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:4d6acb0bdee1e55b44c6215c59755ec4693ac01e74bb1fde04c37358b378835d"}, + {file = "libcst-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6453b5a8755a6eee3ad67ee246f13a8eac9827d2cfc8e4a269e8bf0393db74bc"}, + {file = "libcst-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:40748361f4ea66ab6cdd82f8501c82c29808317ac7a3bd132074efd5fd9bfae2"}, + {file = "libcst-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f71aed85932c2ea92058fd9bbd99a6478bd69eada041c3726b4f4c9af1f564e"}, + {file = "libcst-1.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b60b09abcc2848ab52d479c3a9b71b606d91a941e3779616efd083bb87dbe8ad"}, + {file = "libcst-1.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fb324ed20f3a725d152df5dba8d80f7e126d9c93cced581bf118a5fc18c1065"}, + {file = "libcst-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:99e7c52150a135d66716b03e00c7b1859a44336dc2a2bf8f9acc164494308531"}, + {file = "libcst-1.5.0.tar.gz", hash = "sha256:8478abf21ae3861a073e898d80b822bd56e578886331b33129ba77fec05b8c24"}, +] [package.dependencies] pyyaml = ">=5.2" -typing-extensions = ">=3.7.4.2" -typing-inspect = ">=0.4.0" [package.extras] -dev = ["black (==22.3.0)", "coverage (>=4.5.4)", "fixit (==0.1.1)", "flake8 (>=3.7.8)", "hypothesis (>=4.36.0)", "hypothesmith (>=0.0.4)", "jupyter (>=1.0.0)", "maturin (>=0.8.3,<0.9)", "nbsphinx (>=0.4.2)", "prompt-toolkit (>=2.0.9)", "setuptools-scm (>=6.0.1)", "sphinx-rtd-theme (>=0.4.3)", "ufmt (==1.3)", "usort (==1.0.0rc1)", "setuptools-rust (>=0.12.1)", "slotscheck (>=0.7.1)", "jinja2 (==3.0.3)", "pyre-check (==0.9.9)"] +dev = ["Sphinx (>=5.1.1)", "black (==24.8.0)", "build (>=0.10.0)", "coverage[toml] (>=4.5.4)", "fixit (==2.1.0)", "flake8 (==7.1.1)", "hypothesis (>=4.36.0)", "hypothesmith (>=0.0.4)", "jinja2 (==3.1.4)", "jupyter (>=1.0.0)", "maturin (>=1.7.0,<1.8)", "nbsphinx (>=0.4.2)", "prompt-toolkit (>=2.0.9)", "pyre-check (==0.9.18)", "setuptools-rust (>=1.5.2)", "setuptools-scm (>=6.0.1)", "slotscheck (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "ufmt (==2.7.3)", "usort (==1.0.8.post1)"] [[package]] name = "lxml" -version = "4.9.1" +version = "5.3.0" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" +python-versions = ">=3.6" +files = [ + {file = "lxml-5.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:dd36439be765e2dde7660212b5275641edbc813e7b24668831a5c8ac91180656"}, + {file = "lxml-5.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ae5fe5c4b525aa82b8076c1a59d642c17b6e8739ecf852522c6321852178119d"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:501d0d7e26b4d261fca8132854d845e4988097611ba2531408ec91cf3fd9d20a"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb66442c2546446944437df74379e9cf9e9db353e61301d1a0e26482f43f0dd8"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e41506fec7a7f9405b14aa2d5c8abbb4dbbd09d88f9496958b6d00cb4d45330"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f7d4a670107d75dfe5ad080bed6c341d18c4442f9378c9f58e5851e86eb79965"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41ce1f1e2c7755abfc7e759dc34d7d05fd221723ff822947132dc934d122fe22"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:44264ecae91b30e5633013fb66f6ddd05c006d3e0e884f75ce0b4755b3e3847b"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:3c174dc350d3ec52deb77f2faf05c439331d6ed5e702fc247ccb4e6b62d884b7"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:2dfab5fa6a28a0b60a20638dc48e6343c02ea9933e3279ccb132f555a62323d8"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b1c8c20847b9f34e98080da785bb2336ea982e7f913eed5809e5a3c872900f32"}, + {file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2c86bf781b12ba417f64f3422cfc302523ac9cd1d8ae8c0f92a1c66e56ef2e86"}, + {file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c162b216070f280fa7da844531169be0baf9ccb17263cf5a8bf876fcd3117fa5"}, + {file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:36aef61a1678cb778097b4a6eeae96a69875d51d1e8f4d4b491ab3cfb54b5a03"}, + {file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f65e5120863c2b266dbcc927b306c5b78e502c71edf3295dfcb9501ec96e5fc7"}, + {file = "lxml-5.3.0-cp310-cp310-win32.whl", hash = "sha256:ef0c1fe22171dd7c7c27147f2e9c3e86f8bdf473fed75f16b0c2e84a5030ce80"}, + {file = "lxml-5.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:052d99051e77a4f3e8482c65014cf6372e61b0a6f4fe9edb98503bb5364cfee3"}, + {file = "lxml-5.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:74bcb423462233bc5d6066e4e98b0264e7c1bed7541fff2f4e34fe6b21563c8b"}, + {file = "lxml-5.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a3d819eb6f9b8677f57f9664265d0a10dd6551d227afb4af2b9cd7bdc2ccbf18"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b8f5db71b28b8c404956ddf79575ea77aa8b1538e8b2ef9ec877945b3f46442"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3406b63232fc7e9b8783ab0b765d7c59e7c59ff96759d8ef9632fca27c7ee4"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ecdd78ab768f844c7a1d4a03595038c166b609f6395e25af9b0f3f26ae1230f"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:168f2dfcfdedf611eb285efac1516c8454c8c99caf271dccda8943576b67552e"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa617107a410245b8660028a7483b68e7914304a6d4882b5ff3d2d3eb5948d8c"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:69959bd3167b993e6e710b99051265654133a98f20cec1d9b493b931942e9c16"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:bd96517ef76c8654446fc3db9242d019a1bb5fe8b751ba414765d59f99210b79"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:ab6dd83b970dc97c2d10bc71aa925b84788c7c05de30241b9e96f9b6d9ea3080"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:eec1bb8cdbba2925bedc887bc0609a80e599c75b12d87ae42ac23fd199445654"}, + {file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6a7095eeec6f89111d03dabfe5883a1fd54da319c94e0fb104ee8f23616b572d"}, + {file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6f651ebd0b21ec65dfca93aa629610a0dbc13dbc13554f19b0113da2e61a4763"}, + {file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f422a209d2455c56849442ae42f25dbaaba1c6c3f501d58761c619c7836642ec"}, + {file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:62f7fdb0d1ed2065451f086519865b4c90aa19aed51081979ecd05a21eb4d1be"}, + {file = "lxml-5.3.0-cp311-cp311-win32.whl", hash = "sha256:c6379f35350b655fd817cd0d6cbeef7f265f3ae5fedb1caae2eb442bbeae9ab9"}, + {file = "lxml-5.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c52100e2c2dbb0649b90467935c4b0de5528833c76a35ea1a2691ec9f1ee7a1"}, + {file = "lxml-5.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e99f5507401436fdcc85036a2e7dc2e28d962550afe1cbfc07c40e454256a859"}, + {file = "lxml-5.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:384aacddf2e5813a36495233b64cb96b1949da72bef933918ba5c84e06af8f0e"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:874a216bf6afaf97c263b56371434e47e2c652d215788396f60477540298218f"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65ab5685d56914b9a2a34d67dd5488b83213d680b0c5d10b47f81da5a16b0b0e"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aac0bbd3e8dd2d9c45ceb82249e8bdd3ac99131a32b4d35c8af3cc9db1657179"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b369d3db3c22ed14c75ccd5af429086f166a19627e84a8fdade3f8f31426e52a"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c24037349665434f375645fa9d1f5304800cec574d0310f618490c871fd902b3"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:62d172f358f33a26d6b41b28c170c63886742f5b6772a42b59b4f0fa10526cb1"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:c1f794c02903c2824fccce5b20c339a1a14b114e83b306ff11b597c5f71a1c8d"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:5d6a6972b93c426ace71e0be9a6f4b2cfae9b1baed2eed2006076a746692288c"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:3879cc6ce938ff4eb4900d901ed63555c778731a96365e53fadb36437a131a99"}, + {file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:74068c601baff6ff021c70f0935b0c7bc528baa8ea210c202e03757c68c5a4ff"}, + {file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ecd4ad8453ac17bc7ba3868371bffb46f628161ad0eefbd0a855d2c8c32dd81a"}, + {file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7e2f58095acc211eb9d8b5771bf04df9ff37d6b87618d1cbf85f92399c98dae8"}, + {file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e63601ad5cd8f860aa99d109889b5ac34de571c7ee902d6812d5d9ddcc77fa7d"}, + {file = "lxml-5.3.0-cp312-cp312-win32.whl", hash = "sha256:17e8d968d04a37c50ad9c456a286b525d78c4a1c15dd53aa46c1d8e06bf6fa30"}, + {file = "lxml-5.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:c1a69e58a6bb2de65902051d57fde951febad631a20a64572677a1052690482f"}, + {file = "lxml-5.3.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c72e9563347c7395910de6a3100a4840a75a6f60e05af5e58566868d5eb2d6a"}, + {file = "lxml-5.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e92ce66cd919d18d14b3856906a61d3f6b6a8500e0794142338da644260595cd"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d04f064bebdfef9240478f7a779e8c5dc32b8b7b0b2fc6a62e39b928d428e51"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c2fb570d7823c2bbaf8b419ba6e5662137f8166e364a8b2b91051a1fb40ab8b"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c120f43553ec759f8de1fee2f4794452b0946773299d44c36bfe18e83caf002"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:562e7494778a69086f0312ec9689f6b6ac1c6b65670ed7d0267e49f57ffa08c4"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:423b121f7e6fa514ba0c7918e56955a1d4470ed35faa03e3d9f0e3baa4c7e492"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:c00f323cc00576df6165cc9d21a4c21285fa6b9989c5c39830c3903dc4303ef3"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_ppc64le.whl", hash = "sha256:1fdc9fae8dd4c763e8a31e7630afef517eab9f5d5d31a278df087f307bf601f4"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_s390x.whl", hash = "sha256:658f2aa69d31e09699705949b5fc4719cbecbd4a97f9656a232e7d6c7be1a367"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1473427aff3d66a3fa2199004c3e601e6c4500ab86696edffdbc84954c72d832"}, + {file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a87de7dd873bf9a792bf1e58b1c3887b9264036629a5bf2d2e6579fe8e73edff"}, + {file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0d7b36afa46c97875303a94e8f3ad932bf78bace9e18e603f2085b652422edcd"}, + {file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:cf120cce539453ae086eacc0130a324e7026113510efa83ab42ef3fcfccac7fb"}, + {file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:df5c7333167b9674aa8ae1d4008fa4bc17a313cc490b2cca27838bbdcc6bb15b"}, + {file = "lxml-5.3.0-cp313-cp313-win32.whl", hash = "sha256:c802e1c2ed9f0c06a65bc4ed0189d000ada8049312cfeab6ca635e39c9608957"}, + {file = "lxml-5.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:406246b96d552e0503e17a1006fd27edac678b3fcc9f1be71a2f94b4ff61528d"}, + {file = "lxml-5.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:8f0de2d390af441fe8b2c12626d103540b5d850d585b18fcada58d972b74a74e"}, + {file = "lxml-5.3.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1afe0a8c353746e610bd9031a630a95bcfb1a720684c3f2b36c4710a0a96528f"}, + {file = "lxml-5.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56b9861a71575f5795bde89256e7467ece3d339c9b43141dbdd54544566b3b94"}, + {file = "lxml-5.3.0-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:9fb81d2824dff4f2e297a276297e9031f46d2682cafc484f49de182aa5e5df99"}, + {file = "lxml-5.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2c226a06ecb8cdef28845ae976da407917542c5e6e75dcac7cc33eb04aaeb237"}, + {file = "lxml-5.3.0-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:7d3d1ca42870cdb6d0d29939630dbe48fa511c203724820fc0fd507b2fb46577"}, + {file = "lxml-5.3.0-cp36-cp36m-win32.whl", hash = "sha256:094cb601ba9f55296774c2d57ad68730daa0b13dc260e1f941b4d13678239e70"}, + {file = "lxml-5.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:eafa2c8658f4e560b098fe9fc54539f86528651f61849b22111a9b107d18910c"}, + {file = "lxml-5.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cb83f8a875b3d9b458cada4f880fa498646874ba4011dc974e071a0a84a1b033"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25f1b69d41656b05885aa185f5fdf822cb01a586d1b32739633679699f220391"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23e0553b8055600b3bf4a00b255ec5c92e1e4aebf8c2c09334f8368e8bd174d6"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ada35dd21dc6c039259596b358caab6b13f4db4d4a7f8665764d616daf9cc1d"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:81b4e48da4c69313192d8c8d4311e5d818b8be1afe68ee20f6385d0e96fc9512"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:2bc9fd5ca4729af796f9f59cd8ff160fe06a474da40aca03fcc79655ddee1a8b"}, + {file = "lxml-5.3.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07da23d7ee08577760f0a71d67a861019103e4812c87e2fab26b039054594cc5"}, + {file = "lxml-5.3.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:ea2e2f6f801696ad7de8aec061044d6c8c0dd4037608c7cab38a9a4d316bfb11"}, + {file = "lxml-5.3.0-cp37-cp37m-win32.whl", hash = "sha256:5c54afdcbb0182d06836cc3d1be921e540be3ebdf8b8a51ee3ef987537455f84"}, + {file = "lxml-5.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:f2901429da1e645ce548bf9171784c0f74f0718c3f6150ce166be39e4dd66c3e"}, + {file = "lxml-5.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c56a1d43b2f9ee4786e4658c7903f05da35b923fb53c11025712562d5cc02753"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ee8c39582d2652dcd516d1b879451500f8db3fe3607ce45d7c5957ab2596040"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fdf3a3059611f7585a78ee10399a15566356116a4288380921a4b598d807a22"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:146173654d79eb1fc97498b4280c1d3e1e5d58c398fa530905c9ea50ea849b22"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:0a7056921edbdd7560746f4221dca89bb7a3fe457d3d74267995253f46343f15"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:9e4b47ac0f5e749cfc618efdf4726269441014ae1d5583e047b452a32e221920"}, + {file = "lxml-5.3.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f914c03e6a31deb632e2daa881fe198461f4d06e57ac3d0e05bbcab8eae01945"}, + {file = "lxml-5.3.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:213261f168c5e1d9b7535a67e68b1f59f92398dd17a56d934550837143f79c42"}, + {file = "lxml-5.3.0-cp38-cp38-win32.whl", hash = "sha256:218c1b2e17a710e363855594230f44060e2025b05c80d1f0661258142b2add2e"}, + {file = "lxml-5.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:315f9542011b2c4e1d280e4a20ddcca1761993dda3afc7a73b01235f8641e903"}, + {file = "lxml-5.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1ffc23010330c2ab67fac02781df60998ca8fe759e8efde6f8b756a20599c5de"}, + {file = "lxml-5.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2b3778cb38212f52fac9fe913017deea2fdf4eb1a4f8e4cfc6b009a13a6d3fcc"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b0c7a688944891086ba192e21c5229dea54382f4836a209ff8d0a660fac06be"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:747a3d3e98e24597981ca0be0fd922aebd471fa99d0043a3842d00cdcad7ad6a"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86a6b24b19eaebc448dc56b87c4865527855145d851f9fc3891673ff97950540"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b11a5d918a6216e521c715b02749240fb07ae5a1fefd4b7bf12f833bc8b4fe70"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68b87753c784d6acb8a25b05cb526c3406913c9d988d51f80adecc2b0775d6aa"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:109fa6fede314cc50eed29e6e56c540075e63d922455346f11e4d7a036d2b8cf"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_ppc64le.whl", hash = "sha256:02ced472497b8362c8e902ade23e3300479f4f43e45f4105c85ef43b8db85229"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_s390x.whl", hash = "sha256:6b038cc86b285e4f9fea2ba5ee76e89f21ed1ea898e287dc277a25884f3a7dfe"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:7437237c6a66b7ca341e868cda48be24b8701862757426852c9b3186de1da8a2"}, + {file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7f41026c1d64043a36fda21d64c5026762d53a77043e73e94b71f0521939cc71"}, + {file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:482c2f67761868f0108b1743098640fbb2a28a8e15bf3f47ada9fa59d9fe08c3"}, + {file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:1483fd3358963cc5c1c9b122c80606a3a79ee0875bcac0204149fa09d6ff2727"}, + {file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2dec2d1130a9cda5b904696cec33b2cfb451304ba9081eeda7f90f724097300a"}, + {file = "lxml-5.3.0-cp39-cp39-win32.whl", hash = "sha256:a0eabd0a81625049c5df745209dc7fcef6e2aea7793e5f003ba363610aa0a3ff"}, + {file = "lxml-5.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:89e043f1d9d341c52bf2af6d02e6adde62e0a46e6755d5eb60dc6e4f0b8aeca2"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7b1cd427cb0d5f7393c31b7496419da594fe600e6fdc4b105a54f82405e6626c"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51806cfe0279e06ed8500ce19479d757db42a30fd509940b1701be9c86a5ff9a"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee70d08fd60c9565ba8190f41a46a54096afa0eeb8f76bd66f2c25d3b1b83005"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8dc2c0395bea8254d8daebc76dcf8eb3a95ec2a46fa6fae5eaccee366bfe02ce"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6ba0d3dcac281aad8a0e5b14c7ed6f9fa89c8612b47939fc94f80b16e2e9bc83"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6e91cf736959057f7aac7adfc83481e03615a8e8dd5758aa1d95ea69e8931dba"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:94d6c3782907b5e40e21cadf94b13b0842ac421192f26b84c45f13f3c9d5dc27"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c300306673aa0f3ed5ed9372b21867690a17dba38c68c44b287437c362ce486b"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d9b952e07aed35fe2e1a7ad26e929595412db48535921c5013edc8aa4a35ce"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:01220dca0d066d1349bd6a1726856a78f7929f3878f7e2ee83c296c69495309e"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:2d9b8d9177afaef80c53c0a9e30fa252ff3036fb1c6494d427c066a4ce6a282f"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:20094fc3f21ea0a8669dc4c61ed7fa8263bd37d97d93b90f28fc613371e7a875"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ace2c2326a319a0bb8a8b0e5b570c764962e95818de9f259ce814ee666603f19"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92e67a0be1639c251d21e35fe74df6bcc40cba445c2cda7c4a967656733249e2"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd5350b55f9fecddc51385463a4f67a5da829bc741e38cf689f38ec9023f54ab"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c1fefd7e3d00921c44dc9ca80a775af49698bbfd92ea84498e56acffd4c5469"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:71a8dd38fbd2f2319136d4ae855a7078c69c9a38ae06e0c17c73fd70fc6caad8"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:97acf1e1fd66ab53dacd2c35b319d7e548380c2e9e8c54525c6e76d21b1ae3b1"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:68934b242c51eb02907c5b81d138cb977b2129a0a75a8f8b60b01cb8586c7b21"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b710bc2b8292966b23a6a0121f7a6c51d45d2347edcc75f016ac123b8054d3f2"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18feb4b93302091b1541221196a2155aa296c363fd233814fa11e181adebc52f"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:3eb44520c4724c2e1a57c0af33a379eee41792595023f367ba3952a2d96c2aab"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:609251a0ca4770e5a8768ff902aa02bf636339c5a93f9349b48eb1f606f7f3e9"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:516f491c834eb320d6c843156440fe7fc0d50b33e44387fcec5b02f0bc118a4c"}, + {file = "lxml-5.3.0.tar.gz", hash = "sha256:4e109ca30d1edec1ac60cdbe341905dc3b8f55b16855e03a54aaf59e51ec8c6f"}, +] [package.extras] cssselect = ["cssselect (>=0.7)"] +html-clean = ["lxml-html-clean"] html5 = ["html5lib"] -htmlsoup = ["beautifulsoup4"] -source = ["Cython (>=0.29.7)"] +htmlsoup = ["BeautifulSoup4"] +source = ["Cython (>=3.0.11)"] [[package]] name = "mando" version = "0.6.4" description = "Create Python CLI apps with little to no effort at all!" -category = "dev" optional = false python-versions = "*" +files = [ + {file = "mando-0.6.4-py2.py3-none-any.whl", hash = "sha256:4ce09faec7e5192ffc3c57830e26acba0fd6cd11e1ee81af0d4df0657463bd1c"}, + {file = "mando-0.6.4.tar.gz", hash = "sha256:79feb19dc0f097daa64a1243db578e7674909b75f88ac2220f1c065c10a0d960"}, +] [package.dependencies] six = "*" [package.extras] -restructuredText = ["rst2ansi"] +restructuredtext = ["rst2ansi"] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "2.1.1" +version = "3.0.1" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" +files = [ + {file = "MarkupSafe-3.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:db842712984e91707437461930e6011e60b39136c7331e971952bb30465bc1a1"}, + {file = "MarkupSafe-3.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3ffb4a8e7d46ed96ae48805746755fadd0909fea2306f93d5d8233ba23dda12a"}, + {file = "MarkupSafe-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67c519635a4f64e495c50e3107d9b4075aec33634272b5db1cde839e07367589"}, + {file = "MarkupSafe-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48488d999ed50ba8d38c581d67e496f955821dc183883550a6fbc7f1aefdc170"}, + {file = "MarkupSafe-3.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f31ae06f1328595d762c9a2bf29dafd8621c7d3adc130cbb46278079758779ca"}, + {file = "MarkupSafe-3.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80fcbf3add8790caddfab6764bde258b5d09aefbe9169c183f88a7410f0f6dea"}, + {file = "MarkupSafe-3.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3341c043c37d78cc5ae6e3e305e988532b072329639007fd408a476642a89fd6"}, + {file = "MarkupSafe-3.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cb53e2a99df28eee3b5f4fea166020d3ef9116fdc5764bc5117486e6d1211b25"}, + {file = "MarkupSafe-3.0.1-cp310-cp310-win32.whl", hash = "sha256:db15ce28e1e127a0013dfb8ac243a8e392db8c61eae113337536edb28bdc1f97"}, + {file = "MarkupSafe-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:4ffaaac913c3f7345579db4f33b0020db693f302ca5137f106060316761beea9"}, + {file = "MarkupSafe-3.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:26627785a54a947f6d7336ce5963569b5d75614619e75193bdb4e06e21d447ad"}, + {file = "MarkupSafe-3.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b954093679d5750495725ea6f88409946d69cfb25ea7b4c846eef5044194f583"}, + {file = "MarkupSafe-3.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:973a371a55ce9ed333a3a0f8e0bcfae9e0d637711534bcb11e130af2ab9334e7"}, + {file = "MarkupSafe-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:244dbe463d5fb6d7ce161301a03a6fe744dac9072328ba9fc82289238582697b"}, + {file = "MarkupSafe-3.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d98e66a24497637dd31ccab090b34392dddb1f2f811c4b4cd80c230205c074a3"}, + {file = "MarkupSafe-3.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ad91738f14eb8da0ff82f2acd0098b6257621410dcbd4df20aaa5b4233d75a50"}, + {file = "MarkupSafe-3.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7044312a928a66a4c2a22644147bc61a199c1709712069a344a3fb5cfcf16915"}, + {file = "MarkupSafe-3.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a4792d3b3a6dfafefdf8e937f14906a51bd27025a36f4b188728a73382231d91"}, + {file = "MarkupSafe-3.0.1-cp311-cp311-win32.whl", hash = "sha256:fa7d686ed9883f3d664d39d5a8e74d3c5f63e603c2e3ff0abcba23eac6542635"}, + {file = "MarkupSafe-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:9ba25a71ebf05b9bb0e2ae99f8bc08a07ee8e98c612175087112656ca0f5c8bf"}, + {file = "MarkupSafe-3.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8ae369e84466aa70f3154ee23c1451fda10a8ee1b63923ce76667e3077f2b0c4"}, + {file = "MarkupSafe-3.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40f1e10d51c92859765522cbd79c5c8989f40f0419614bcdc5015e7b6bf97fc5"}, + {file = "MarkupSafe-3.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a4cb365cb49b750bdb60b846b0c0bc49ed62e59a76635095a179d440540c346"}, + {file = "MarkupSafe-3.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee3941769bd2522fe39222206f6dd97ae83c442a94c90f2b7a25d847d40f4729"}, + {file = "MarkupSafe-3.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62fada2c942702ef8952754abfc1a9f7658a4d5460fabe95ac7ec2cbe0d02abc"}, + {file = "MarkupSafe-3.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4c2d64fdba74ad16138300815cfdc6ab2f4647e23ced81f59e940d7d4a1469d9"}, + {file = "MarkupSafe-3.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:fb532dd9900381d2e8f48172ddc5a59db4c445a11b9fab40b3b786da40d3b56b"}, + {file = "MarkupSafe-3.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0f84af7e813784feb4d5e4ff7db633aba6c8ca64a833f61d8e4eade234ef0c38"}, + {file = "MarkupSafe-3.0.1-cp312-cp312-win32.whl", hash = "sha256:cbf445eb5628981a80f54087f9acdbf84f9b7d862756110d172993b9a5ae81aa"}, + {file = "MarkupSafe-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:a10860e00ded1dd0a65b83e717af28845bb7bd16d8ace40fe5531491de76b79f"}, + {file = "MarkupSafe-3.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e81c52638315ff4ac1b533d427f50bc0afc746deb949210bc85f05d4f15fd772"}, + {file = "MarkupSafe-3.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:312387403cd40699ab91d50735ea7a507b788091c416dd007eac54434aee51da"}, + {file = "MarkupSafe-3.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ae99f31f47d849758a687102afdd05bd3d3ff7dbab0a8f1587981b58a76152a"}, + {file = "MarkupSafe-3.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c97ff7fedf56d86bae92fa0a646ce1a0ec7509a7578e1ed238731ba13aabcd1c"}, + {file = "MarkupSafe-3.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7420ceda262dbb4b8d839a4ec63d61c261e4e77677ed7c66c99f4e7cb5030dd"}, + {file = "MarkupSafe-3.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45d42d132cff577c92bfba536aefcfea7e26efb975bd455db4e6602f5c9f45e7"}, + {file = "MarkupSafe-3.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4c8817557d0de9349109acb38b9dd570b03cc5014e8aabf1cbddc6e81005becd"}, + {file = "MarkupSafe-3.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a54c43d3ec4cf2a39f4387ad044221c66a376e58c0d0e971d47c475ba79c6b5"}, + {file = "MarkupSafe-3.0.1-cp313-cp313-win32.whl", hash = "sha256:c91b394f7601438ff79a4b93d16be92f216adb57d813a78be4446fe0f6bc2d8c"}, + {file = "MarkupSafe-3.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:fe32482b37b4b00c7a52a07211b479653b7fe4f22b2e481b9a9b099d8a430f2f"}, + {file = "MarkupSafe-3.0.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:17b2aea42a7280db02ac644db1d634ad47dcc96faf38ab304fe26ba2680d359a"}, + {file = "MarkupSafe-3.0.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:852dc840f6d7c985603e60b5deaae1d89c56cb038b577f6b5b8c808c97580f1d"}, + {file = "MarkupSafe-3.0.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0778de17cff1acaeccc3ff30cd99a3fd5c50fc58ad3d6c0e0c4c58092b859396"}, + {file = "MarkupSafe-3.0.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:800100d45176652ded796134277ecb13640c1a537cad3b8b53da45aa96330453"}, + {file = "MarkupSafe-3.0.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d06b24c686a34c86c8c1fba923181eae6b10565e4d80bdd7bc1c8e2f11247aa4"}, + {file = "MarkupSafe-3.0.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:33d1c36b90e570ba7785dacd1faaf091203d9942bc036118fab8110a401eb1a8"}, + {file = "MarkupSafe-3.0.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:beeebf760a9c1f4c07ef6a53465e8cfa776ea6a2021eda0d0417ec41043fe984"}, + {file = "MarkupSafe-3.0.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:bbde71a705f8e9e4c3e9e33db69341d040c827c7afa6789b14c6e16776074f5a"}, + {file = "MarkupSafe-3.0.1-cp313-cp313t-win32.whl", hash = "sha256:82b5dba6eb1bcc29cc305a18a3c5365d2af06ee71b123216416f7e20d2a84e5b"}, + {file = "MarkupSafe-3.0.1-cp313-cp313t-win_amd64.whl", hash = "sha256:730d86af59e0e43ce277bb83970530dd223bf7f2a838e086b50affa6ec5f9295"}, + {file = "MarkupSafe-3.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4935dd7883f1d50e2ffecca0aa33dc1946a94c8f3fdafb8df5c330e48f71b132"}, + {file = "MarkupSafe-3.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e9393357f19954248b00bed7c56f29a25c930593a77630c719653d51e7669c2a"}, + {file = "MarkupSafe-3.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40621d60d0e58aa573b68ac5e2d6b20d44392878e0bfc159012a5787c4e35bc8"}, + {file = "MarkupSafe-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f94190df587738280d544971500b9cafc9b950d32efcb1fba9ac10d84e6aa4e6"}, + {file = "MarkupSafe-3.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6a387d61fe41cdf7ea95b38e9af11cfb1a63499af2759444b99185c4ab33f5b"}, + {file = "MarkupSafe-3.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8ad4ad1429cd4f315f32ef263c1342166695fad76c100c5d979c45d5570ed58b"}, + {file = "MarkupSafe-3.0.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e24bfe89c6ac4c31792793ad9f861b8f6dc4546ac6dc8f1c9083c7c4f2b335cd"}, + {file = "MarkupSafe-3.0.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2a4b34a8d14649315c4bc26bbfa352663eb51d146e35eef231dd739d54a5430a"}, + {file = "MarkupSafe-3.0.1-cp39-cp39-win32.whl", hash = "sha256:242d6860f1fd9191aef5fae22b51c5c19767f93fb9ead4d21924e0bcb17619d8"}, + {file = "MarkupSafe-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:93e8248d650e7e9d49e8251f883eed60ecbc0e8ffd6349e18550925e31bd029b"}, + {file = "markupsafe-3.0.1.tar.gz", hash = "sha256:3e683ee4f5d0fa2dde4db77ed8dd8a876686e3fc417655c2ece9a90576905344"}, +] [[package]] name = "matplotlib" -version = "3.5.3" +version = "3.9.2" description = "Python plotting package" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" +files = [ + {file = "matplotlib-3.9.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9d78bbc0cbc891ad55b4f39a48c22182e9bdaea7fc0e5dbd364f49f729ca1bbb"}, + {file = "matplotlib-3.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c375cc72229614632c87355366bdf2570c2dac01ac66b8ad048d2dabadf2d0d4"}, + {file = "matplotlib-3.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d94ff717eb2bd0b58fe66380bd8b14ac35f48a98e7c6765117fe67fb7684e64"}, + {file = "matplotlib-3.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab68d50c06938ef28681073327795c5db99bb4666214d2d5f880ed11aeaded66"}, + {file = "matplotlib-3.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:65aacf95b62272d568044531e41de26285d54aec8cb859031f511f84bd8b495a"}, + {file = "matplotlib-3.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:3fd595f34aa8a55b7fc8bf9ebea8aa665a84c82d275190a61118d33fbc82ccae"}, + {file = "matplotlib-3.9.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d8dd059447824eec055e829258ab092b56bb0579fc3164fa09c64f3acd478772"}, + {file = "matplotlib-3.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c797dac8bb9c7a3fd3382b16fe8f215b4cf0f22adccea36f1545a6d7be310b41"}, + {file = "matplotlib-3.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d719465db13267bcef19ea8954a971db03b9f48b4647e3860e4bc8e6ed86610f"}, + {file = "matplotlib-3.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8912ef7c2362f7193b5819d17dae8629b34a95c58603d781329712ada83f9447"}, + {file = "matplotlib-3.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7741f26a58a240f43bee74965c4882b6c93df3e7eb3de160126d8c8f53a6ae6e"}, + {file = "matplotlib-3.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:ae82a14dab96fbfad7965403c643cafe6515e386de723e498cf3eeb1e0b70cc7"}, + {file = "matplotlib-3.9.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ac43031375a65c3196bee99f6001e7fa5bdfb00ddf43379d3c0609bdca042df9"}, + {file = "matplotlib-3.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be0fc24a5e4531ae4d8e858a1a548c1fe33b176bb13eff7f9d0d38ce5112a27d"}, + {file = "matplotlib-3.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf81de2926c2db243c9b2cbc3917619a0fc85796c6ba4e58f541df814bbf83c7"}, + {file = "matplotlib-3.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6ee45bc4245533111ced13f1f2cace1e7f89d1c793390392a80c139d6cf0e6c"}, + {file = "matplotlib-3.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:306c8dfc73239f0e72ac50e5a9cf19cc4e8e331dd0c54f5e69ca8758550f1e1e"}, + {file = "matplotlib-3.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:5413401594cfaff0052f9d8b1aafc6d305b4bd7c4331dccd18f561ff7e1d3bd3"}, + {file = "matplotlib-3.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:18128cc08f0d3cfff10b76baa2f296fc28c4607368a8402de61bb3f2eb33c7d9"}, + {file = "matplotlib-3.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4876d7d40219e8ae8bb70f9263bcbe5714415acfdf781086601211335e24f8aa"}, + {file = "matplotlib-3.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d9f07a80deab4bb0b82858a9e9ad53d1382fd122be8cde11080f4e7dfedb38b"}, + {file = "matplotlib-3.9.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c0410f181a531ec4e93bbc27692f2c71a15c2da16766f5ba9761e7ae518413"}, + {file = "matplotlib-3.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:909645cce2dc28b735674ce0931a4ac94e12f5b13f6bb0b5a5e65e7cea2c192b"}, + {file = "matplotlib-3.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:f32c7410c7f246838a77d6d1eff0c0f87f3cb0e7c4247aebea71a6d5a68cab49"}, + {file = "matplotlib-3.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:37e51dd1c2db16ede9cfd7b5cabdfc818b2c6397c83f8b10e0e797501c963a03"}, + {file = "matplotlib-3.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b82c5045cebcecd8496a4d694d43f9cc84aeeb49fe2133e036b207abe73f4d30"}, + {file = "matplotlib-3.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f053c40f94bc51bc03832a41b4f153d83f2062d88c72b5e79997072594e97e51"}, + {file = "matplotlib-3.9.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbe196377a8248972f5cede786d4c5508ed5f5ca4a1e09b44bda889958b33f8c"}, + {file = "matplotlib-3.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5816b1e1fe8c192cbc013f8f3e3368ac56fbecf02fb41b8f8559303f24c5015e"}, + {file = "matplotlib-3.9.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:cef2a73d06601437be399908cf13aee74e86932a5ccc6ccdf173408ebc5f6bb2"}, + {file = "matplotlib-3.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e0830e188029c14e891fadd99702fd90d317df294c3298aad682739c5533721a"}, + {file = "matplotlib-3.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03ba9c1299c920964e8d3857ba27173b4dbb51ca4bab47ffc2c2ba0eb5e2cbc5"}, + {file = "matplotlib-3.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cd93b91ab47a3616b4d3c42b52f8363b88ca021e340804c6ab2536344fad9ca"}, + {file = "matplotlib-3.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6d1ce5ed2aefcdce11904fc5bbea7d9c21fff3d5f543841edf3dea84451a09ea"}, + {file = "matplotlib-3.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:b2696efdc08648536efd4e1601b5fd491fd47f4db97a5fbfd175549a7365c1b2"}, + {file = "matplotlib-3.9.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:d52a3b618cb1cbb769ce2ee1dcdb333c3ab6e823944e9a2d36e37253815f9556"}, + {file = "matplotlib-3.9.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:039082812cacd6c6bec8e17a9c1e6baca230d4116d522e81e1f63a74d01d2e21"}, + {file = "matplotlib-3.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6758baae2ed64f2331d4fd19be38b7b4eae3ecec210049a26b6a4f3ae1c85dcc"}, + {file = "matplotlib-3.9.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:050598c2b29e0b9832cde72bcf97627bf00262adbc4a54e2b856426bb2ef0697"}, + {file = "matplotlib-3.9.2.tar.gz", hash = "sha256:96ab43906269ca64a6366934106fa01534454a69e471b7bf3d79083981aaab92"}, +] [package.dependencies] +contourpy = ">=1.0.1" cycler = ">=0.10" fonttools = ">=4.22.0" -kiwisolver = ">=1.0.1" -numpy = ">=1.17" +importlib-resources = {version = ">=3.2.0", markers = "python_version < \"3.10\""} +kiwisolver = ">=1.3.1" +numpy = ">=1.23" packaging = ">=20.0" -pillow = ">=6.2.0" -pyparsing = ">=2.2.1" +pillow = ">=8" +pyparsing = ">=2.3.1" python-dateutil = ">=2.7" -setuptools_scm = ">=4,<7" + +[package.extras] +dev = ["meson-python (>=0.13.1)", "numpy (>=1.25)", "pybind11 (>=2.6)", "setuptools (>=64)", "setuptools_scm (>=7)"] [[package]] name = "matplotlib-inline" -version = "0.1.6" +version = "0.1.7" description = "Inline Matplotlib backend for Jupyter" -category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" +files = [ + {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, + {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, +] [package.dependencies] traitlets = "*" @@ -1291,33 +2786,74 @@ traitlets = "*" name = "mccabe" version = "0.6.1" description = "McCabe checker, plugin for flake8" -category = "dev" optional = false python-versions = "*" +files = [ + {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, + {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] [[package]] name = "mistune" version = "0.8.4" description = "The fastest markdown parser in pure Python" -category = "main" optional = false python-versions = "*" +files = [ + {file = "mistune-0.8.4-py2.py3-none-any.whl", hash = "sha256:88a1051873018da288eee8538d476dffe1262495144b33ecb586c4ab266bb8d4"}, + {file = "mistune-0.8.4.tar.gz", hash = "sha256:59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e"}, +] [[package]] name = "more-itertools" -version = "8.14.0" +version = "10.5.0" description = "More routines for operating on iterables, beyond itertools" -category = "dev" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" +files = [ + {file = "more-itertools-10.5.0.tar.gz", hash = "sha256:5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6"}, + {file = "more_itertools-10.5.0-py3-none-any.whl", hash = "sha256:037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef"}, +] [[package]] name = "mypy" version = "0.930" description = "Optional static typing for Python" -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "mypy-0.930-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:221cc94dc6a801ccc2be7c0c9fd791c5e08d1fa2c5e1c12dec4eab15b2469871"}, + {file = "mypy-0.930-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db3a87376a1380f396d465bed462e76ea89f838f4c5e967d68ff6ee34b785c31"}, + {file = "mypy-0.930-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1d2296f35aae9802eeb1327058b550371ee382d71374b3e7d2804035ef0b830b"}, + {file = "mypy-0.930-cp310-cp310-win_amd64.whl", hash = "sha256:959319b9a3cafc33a8185f440a433ba520239c72e733bf91f9efd67b0a8e9b30"}, + {file = "mypy-0.930-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:45a4dc21c789cfd09b8ccafe114d6de66f0b341ad761338de717192f19397a8c"}, + {file = "mypy-0.930-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1e689e92cdebd87607a041585f1dc7339aa2e8a9f9bad9ba7e6ece619431b20c"}, + {file = "mypy-0.930-cp36-cp36m-win_amd64.whl", hash = "sha256:ed4e0ea066bb12f56b2812a15ff223c57c0a44eca817ceb96b214bb055c7051f"}, + {file = "mypy-0.930-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a9d8dffefba634b27d650e0de2564379a1a367e2e08d6617d8f89261a3bf63b2"}, + {file = "mypy-0.930-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b419e9721260161e70d054a15abbd50603c16f159860cfd0daeab647d828fc29"}, + {file = "mypy-0.930-cp37-cp37m-win_amd64.whl", hash = "sha256:601f46593f627f8a9b944f74fd387c9b5f4266b39abad77471947069c2fc7651"}, + {file = "mypy-0.930-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1ea7199780c1d7940b82dbc0a4e37722b4e3851264dbba81e01abecc9052d8a7"}, + {file = "mypy-0.930-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:70b197dd8c78fc5d2daf84bd093e8466a2b2e007eedaa85e792e513a820adbf7"}, + {file = "mypy-0.930-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5feb56f8bb280468fe5fc8e6f56f48f99aa0df9eed3c507a11505ee4657b5380"}, + {file = "mypy-0.930-cp38-cp38-win_amd64.whl", hash = "sha256:2e9c5409e9cb81049bb03fa1009b573dea87976713e3898561567a86c4eaee01"}, + {file = "mypy-0.930-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:554873e45c1ca20f31ddf873deb67fa5d2e87b76b97db50669f0468ccded8fae"}, + {file = "mypy-0.930-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0feb82e9fa849affca7edd24713dbe809dce780ced9f3feca5ed3d80e40b777f"}, + {file = "mypy-0.930-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bc1a0607ea03c30225347334af66b0af12eefba018a89a88c209e02b7065ea95"}, + {file = "mypy-0.930-cp39-cp39-win_amd64.whl", hash = "sha256:f9f665d69034b1fcfdbcd4197480d26298bbfb5d2dfe206245b6498addb34999"}, + {file = "mypy-0.930-py3-none-any.whl", hash = "sha256:bf4a44e03040206f7c058d1f5ba02ef2d1820720c88bc4285c7d9a4269f54173"}, + {file = "mypy-0.930.tar.gz", hash = "sha256:51426262ae4714cc7dd5439814676e0992b55bcc0f6514eccb4cf8e0678962c2"}, +] [package.dependencies] mypy-extensions = ">=0.4.3" @@ -1330,19 +2866,24 @@ python2 = ["typed-ast (>=1.4.0,<2)"] [[package]] name = "mypy-extensions" -version = "0.4.3" +version = "0.4.4" description = "Experimental type system extensions for programs checked with the mypy typechecker." -category = "dev" optional = false -python-versions = "*" +python-versions = ">=2.7" +files = [ + {file = "mypy_extensions-0.4.4.tar.gz", hash = "sha256:c8b707883a96efe9b4bb3aaf0dcc07e7e217d7d8368eec4db4049ee9e142f4fd"}, +] [[package]] name = "nbclient" version = "0.5.13" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." -category = "main" optional = false python-versions = ">=3.7.0" +files = [ + {file = "nbclient-0.5.13-py3-none-any.whl", hash = "sha256:47ac905af59379913c1f8f541098d2550153cf8dc58553cbe18c702b181518b0"}, + {file = "nbclient-0.5.13.tar.gz", hash = "sha256:40c52c9b5e3c31faecaee69f202b3f53e38d7c1c563de0fadde9d7eda0fdafe8"}, +] [package.dependencies] jupyter-client = ">=6.1.5" @@ -1351,16 +2892,19 @@ nest-asyncio = "*" traitlets = ">=5.0.0" [package.extras] -sphinx = ["Sphinx (>=1.7)", "sphinx-book-theme", "mock", "moto", "myst-parser"] -test = ["ipython (<8.0.0)", "ipykernel", "ipywidgets (<8.0.0)", "pytest (>=4.1)", "pytest-asyncio", "pytest-cov (>=2.6.1)", "check-manifest", "flake8", "mypy", "xmltodict", "black", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)"] +sphinx = ["Sphinx (>=1.7)", "mock", "moto", "myst-parser", "sphinx-book-theme"] +test = ["black", "check-manifest", "flake8", "ipykernel", "ipython (<8.0.0)", "ipywidgets (<8.0.0)", "mypy", "pip (>=18.1)", "pytest (>=4.1)", "pytest-asyncio", "pytest-cov (>=2.6.1)", "setuptools (>=38.6.0)", "twine (>=1.11.0)", "wheel (>=0.31.0)", "xmltodict"] [[package]] name = "nbconvert" -version = "6.5.3" +version = "6.5.4" description = "Converting Jupyter Notebooks" -category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "nbconvert-6.5.4-py3-none-any.whl", hash = "sha256:d679a947f849a966cbbd0bf6e7fedcfdb64be3b20ce7cef11ad55c13f5820e19"}, + {file = "nbconvert-6.5.4.tar.gz", hash = "sha256:9e3c7c6d491374cbdd5f35d268c05809357716d346f4573186bbeab32ee50bc1"}, +] [package.dependencies] beautifulsoup4 = "*" @@ -1382,23 +2926,26 @@ tinycss2 = "*" traitlets = ">=5.0" [package.extras] -all = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pre-commit", "pyppeteer (>=1,<1.1)", "tornado (>=6.1)", "sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"] -docs = ["sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"] +all = ["ipykernel", "ipython", "ipywidgets (>=7)", "nbsphinx (>=0.2.12)", "pre-commit", "pyppeteer (>=1,<1.1)", "pytest", "pytest-cov", "pytest-dependency", "sphinx (>=1.5.1)", "sphinx-rtd-theme", "tornado (>=6.1)"] +docs = ["ipython", "nbsphinx (>=0.2.12)", "sphinx (>=1.5.1)", "sphinx-rtd-theme"] serve = ["tornado (>=6.1)"] -test = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pre-commit", "pyppeteer (>=1,<1.1)"] +test = ["ipykernel", "ipywidgets (>=7)", "pre-commit", "pyppeteer (>=1,<1.1)", "pytest", "pytest-cov", "pytest-dependency"] webpdf = ["pyppeteer (>=1,<1.1)"] [[package]] name = "nbdime" -version = "3.1.1" +version = "4.0.2" description = "Diff and merge of Jupyter Notebooks" -category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "nbdime-4.0.2-py3-none-any.whl", hash = "sha256:e5a43aca669c576c66e757071c0e882de05ac305311d79aded99bfb5a3e9419e"}, + {file = "nbdime-4.0.2.tar.gz", hash = "sha256:d8279f8f4b236c0b253b20d60c4831bb67843ed8dbd6e09f234eb011d36f1bf2"}, +] [package.dependencies] colorama = "*" -GitPython = "<2.1.4 || >2.1.4,<2.1.5 || >2.1.5,<2.1.6 || >2.1.6" +gitpython = "<2.1.4 || >2.1.4,<2.1.5 || >2.1.5,<2.1.6 || >2.1.6" jinja2 = ">=2.9" jupyter-server = "*" jupyter-server-mathjax = ">=0.2.2" @@ -1408,53 +2955,63 @@ requests = "*" tornado = "*" [package.extras] -docs = ["sphinx", "recommonmark", "sphinx-rtd-theme"] -test = ["pytest (>=3.6)", "pytest-cov", "pytest-timeout", "pytest-tornado", "jupyter-server", "jsonschema", "mock", "notebook", "requests", "tabulate"] +docs = ["recommonmark", "sphinx", "sphinx-rtd-theme"] +test = ["jsonschema", "jupyter-server[test]", "mock", "notebook", "pytest (>=6.0)", "pytest-cov", "pytest-timeout", "pytest-tornado", "requests", "tabulate"] [[package]] name = "nbformat" -version = "5.4.0" +version = "5.10.4" description = "The Jupyter Notebook format" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, + {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, +] [package.dependencies] -fastjsonschema = "*" +fastjsonschema = ">=2.15" jsonschema = ">=2.6" -jupyter-core = "*" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" traitlets = ">=5.1" [package.extras] -test = ["check-manifest", "testpath", "pytest", "pre-commit"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["pep440", "pre-commit", "pytest", "testpath"] [[package]] name = "nest-asyncio" -version = "1.5.5" +version = "1.6.0" description = "Patch asyncio to allow nested event loops" -category = "main" optional = false python-versions = ">=3.5" +files = [ + {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, + {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, +] [[package]] name = "nglview" -version = "3.0.3" +version = "3.1.2" description = "IPython widget to interactively view molecular structures and trajectories." -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "nglview-3.1.2.tar.gz", hash = "sha256:7f672efa2b6ca0db34de968e5b5766b14b1b3dade212d2f8a083c600a11345ce"}, +] [package.dependencies] -ipywidgets = ">=7" +ipywidgets = ">=8" jupyterlab_widgets = "*" +notebook = ">=7" numpy = "*" [package.extras] -MDAnalysis = ["mdanalysis"] -ParmEd = ["parmed"] ase = ["ase"] htmd = ["htmd"] +mdanalysis = ["MDAnalysis"] mdtraj = ["mdtraj"] +parmed = ["parmed"] pytraj = ["pytraj"] qcelemental = ["qcelemental"] rdkit = ["rdkit"] @@ -1462,136 +3019,289 @@ simpletraj = ["simpletraj"] [[package]] name = "nodeenv" -version = "1.7.0" +version = "1.9.1" 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.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, +] [[package]] name = "notebook" -version = "6.4.12" -description = "A web-based notebook environment for interactive computing" -category = "main" +version = "7.2.2" +description = "Jupyter Notebook - A web-based notebook environment for interactive computing" +optional = false +python-versions = ">=3.8" +files = [ + {file = "notebook-7.2.2-py3-none-any.whl", hash = "sha256:c89264081f671bc02eec0ed470a627ed791b9156cad9285226b31611d3e9fe1c"}, + {file = "notebook-7.2.2.tar.gz", hash = "sha256:2ef07d4220421623ad3fe88118d687bc0450055570cdd160814a59cf3a1c516e"}, +] + +[package.dependencies] +jupyter-server = ">=2.4.0,<3" +jupyterlab = ">=4.2.0,<4.3" +jupyterlab-server = ">=2.27.1,<3" +notebook-shim = ">=0.2,<0.3" +tornado = ">=6.2.0" + +[package.extras] +dev = ["hatch", "pre-commit"] +docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] + +[[package]] +name = "notebook-shim" +version = "0.2.4" +description = "A shim layer for notebook traits and config" optional = false python-versions = ">=3.7" +files = [ + {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, + {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, +] [package.dependencies] -argon2-cffi = "*" -ipykernel = "*" -ipython-genutils = "*" -jinja2 = "*" -jupyter-client = ">=5.3.4" -jupyter-core = ">=4.6.1" -nbconvert = ">=5" -nbformat = "*" -nest-asyncio = ">=1.5" -prometheus-client = "*" -pyzmq = ">=17" -Send2Trash = ">=1.8.0" -terminado = ">=0.8.3" -tornado = ">=6.1" -traitlets = ">=4.2.1" +jupyter-server = ">=1.8,<3" [package.extras] -docs = ["sphinx", "nbsphinx", "sphinxcontrib-github-alt", "sphinx-rtd-theme", "myst-parser"] -json-logging = ["json-logging"] -test = ["pytest", "coverage", "requests", "testpath", "nbval", "selenium", "pytest-cov", "requests-unixsocket"] +test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"] [[package]] name = "numpy" -version = "1.23.2" -description = "NumPy is the fundamental package for array computing with Python." -category = "main" -optional = false -python-versions = ">=3.8" +version = "2.0.2" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "numpy-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:51129a29dbe56f9ca83438b706e2e69a39892b5eda6cedcb6b0c9fdc9b0d3ece"}, + {file = "numpy-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f15975dfec0cf2239224d80e32c3170b1d168335eaedee69da84fbe9f1f9cd04"}, + {file = "numpy-2.0.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:8c5713284ce4e282544c68d1c3b2c7161d38c256d2eefc93c1d683cf47683e66"}, + {file = "numpy-2.0.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:becfae3ddd30736fe1889a37f1f580e245ba79a5855bff5f2a29cb3ccc22dd7b"}, + {file = "numpy-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2da5960c3cf0df7eafefd806d4e612c5e19358de82cb3c343631188991566ccd"}, + {file = "numpy-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:496f71341824ed9f3d2fd36cf3ac57ae2e0165c143b55c3a035ee219413f3318"}, + {file = "numpy-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a61ec659f68ae254e4d237816e33171497e978140353c0c2038d46e63282d0c8"}, + {file = "numpy-2.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d731a1c6116ba289c1e9ee714b08a8ff882944d4ad631fd411106a30f083c326"}, + {file = "numpy-2.0.2-cp310-cp310-win32.whl", hash = "sha256:984d96121c9f9616cd33fbd0618b7f08e0cfc9600a7ee1d6fd9b239186d19d97"}, + {file = "numpy-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:c7b0be4ef08607dd04da4092faee0b86607f111d5ae68036f16cc787e250a131"}, + {file = "numpy-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:49ca4decb342d66018b01932139c0961a8f9ddc7589611158cb3c27cbcf76448"}, + {file = "numpy-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:11a76c372d1d37437857280aa142086476136a8c0f373b2e648ab2c8f18fb195"}, + {file = "numpy-2.0.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:807ec44583fd708a21d4a11d94aedf2f4f3c3719035c76a2bbe1fe8e217bdc57"}, + {file = "numpy-2.0.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8cafab480740e22f8d833acefed5cc87ce276f4ece12fdaa2e8903db2f82897a"}, + {file = "numpy-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a15f476a45e6e5a3a79d8a14e62161d27ad897381fecfa4a09ed5322f2085669"}, + {file = "numpy-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13e689d772146140a252c3a28501da66dfecd77490b498b168b501835041f951"}, + {file = "numpy-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9ea91dfb7c3d1c56a0e55657c0afb38cf1eeae4544c208dc465c3c9f3a7c09f9"}, + {file = "numpy-2.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1c9307701fec8f3f7a1e6711f9089c06e6284b3afbbcd259f7791282d660a15"}, + {file = "numpy-2.0.2-cp311-cp311-win32.whl", hash = "sha256:a392a68bd329eafac5817e5aefeb39038c48b671afd242710b451e76090e81f4"}, + {file = "numpy-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:286cd40ce2b7d652a6f22efdfc6d1edf879440e53e76a75955bc0c826c7e64dc"}, + {file = "numpy-2.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:df55d490dea7934f330006d0f81e8551ba6010a5bf035a249ef61a94f21c500b"}, + {file = "numpy-2.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8df823f570d9adf0978347d1f926b2a867d5608f434a7cff7f7908c6570dcf5e"}, + {file = "numpy-2.0.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9a92ae5c14811e390f3767053ff54eaee3bf84576d99a2456391401323f4ec2c"}, + {file = "numpy-2.0.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:a842d573724391493a97a62ebbb8e731f8a5dcc5d285dfc99141ca15a3302d0c"}, + {file = "numpy-2.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05e238064fc0610c840d1cf6a13bf63d7e391717d247f1bf0318172e759e692"}, + {file = "numpy-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0123ffdaa88fa4ab64835dcbde75dcdf89c453c922f18dced6e27c90d1d0ec5a"}, + {file = "numpy-2.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:96a55f64139912d61de9137f11bf39a55ec8faec288c75a54f93dfd39f7eb40c"}, + {file = "numpy-2.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec9852fb39354b5a45a80bdab5ac02dd02b15f44b3804e9f00c556bf24b4bded"}, + {file = "numpy-2.0.2-cp312-cp312-win32.whl", hash = "sha256:671bec6496f83202ed2d3c8fdc486a8fc86942f2e69ff0e986140339a63bcbe5"}, + {file = "numpy-2.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:cfd41e13fdc257aa5778496b8caa5e856dc4896d4ccf01841daee1d96465467a"}, + {file = "numpy-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9059e10581ce4093f735ed23f3b9d283b9d517ff46009ddd485f1747eb22653c"}, + {file = "numpy-2.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:423e89b23490805d2a5a96fe40ec507407b8ee786d66f7328be214f9679df6dd"}, + {file = "numpy-2.0.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:2b2955fa6f11907cf7a70dab0d0755159bca87755e831e47932367fc8f2f2d0b"}, + {file = "numpy-2.0.2-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:97032a27bd9d8988b9a97a8c4d2c9f2c15a81f61e2f21404d7e8ef00cb5be729"}, + {file = "numpy-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e795a8be3ddbac43274f18588329c72939870a16cae810c2b73461c40718ab1"}, + {file = "numpy-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b258c385842546006213344c50655ff1555a9338e2e5e02a0756dc3e803dd"}, + {file = "numpy-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5fec9451a7789926bcf7c2b8d187292c9f93ea30284802a0ab3f5be8ab36865d"}, + {file = "numpy-2.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9189427407d88ff25ecf8f12469d4d39d35bee1db5d39fc5c168c6f088a6956d"}, + {file = "numpy-2.0.2-cp39-cp39-win32.whl", hash = "sha256:905d16e0c60200656500c95b6b8dca5d109e23cb24abc701d41c02d74c6b3afa"}, + {file = "numpy-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:a3f4ab0caa7f053f6797fcd4e1e25caee367db3112ef2b6ef82d749530768c73"}, + {file = "numpy-2.0.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7f0a0c6f12e07fa94133c8a67404322845220c06a9e80e85999afe727f7438b8"}, + {file = "numpy-2.0.2-pp39-pypy39_pp73-macosx_14_0_x86_64.whl", hash = "sha256:312950fdd060354350ed123c0e25a71327d3711584beaef30cdaa93320c392d4"}, + {file = "numpy-2.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26df23238872200f63518dd2aa984cfca675d82469535dc7162dc2ee52d9dd5c"}, + {file = "numpy-2.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a46288ec55ebbd58947d31d72be2c63cbf839f0a63b49cb755022310792a3385"}, + {file = "numpy-2.0.2.tar.gz", hash = "sha256:883c987dee1880e2a864ab0dc9892292582510604156762362d9326444636e78"}, +] [[package]] name = "openpyxl" -version = "3.0.10" +version = "3.1.5" description = "A Python library to read/write Excel 2010 xlsx/xlsm files" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2"}, + {file = "openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050"}, +] [package.dependencies] et-xmlfile = "*" [[package]] -name = "packaging" -version = "21.3" -description = "Core utilities for Python packages" -category = "main" +name = "overrides" +version = "7.7.0" +description = "A decorator to automatically detect mismatch when overriding a method." optional = false python-versions = ">=3.6" +files = [ + {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, + {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, +] -[package.dependencies] -pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" +[[package]] +name = "packaging" +version = "24.1" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, +] [[package]] name = "pandas" -version = "1.4.4" +version = "2.2.3" description = "Powerful data structures for data analysis, time series, and statistics" -category = "main" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +files = [ + {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, + {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, + {file = "pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed"}, + {file = "pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57"}, + {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42"}, + {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f"}, + {file = "pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645"}, + {file = "pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039"}, + {file = "pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd"}, + {file = "pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698"}, + {file = "pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc"}, + {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3"}, + {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32"}, + {file = "pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5"}, + {file = "pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9"}, + {file = "pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4"}, + {file = "pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3"}, + {file = "pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319"}, + {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8"}, + {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a"}, + {file = "pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13"}, + {file = "pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015"}, + {file = "pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28"}, + {file = "pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0"}, + {file = "pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24"}, + {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659"}, + {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb"}, + {file = "pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d"}, + {file = "pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468"}, + {file = "pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18"}, + {file = "pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2"}, + {file = "pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4"}, + {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d"}, + {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a"}, + {file = "pandas-2.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc6b93f9b966093cb0fd62ff1a7e4c09e6d546ad7c1de191767baffc57628f39"}, + {file = "pandas-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5dbca4c1acd72e8eeef4753eeca07de9b1db4f398669d5994086f788a5d7cc30"}, + {file = "pandas-2.2.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8cd6d7cc958a3910f934ea8dbdf17b2364827bb4dafc38ce6eef6bb3d65ff09c"}, + {file = "pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99df71520d25fade9db7c1076ac94eb994f4d2673ef2aa2e86ee039b6746d20c"}, + {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31d0ced62d4ea3e231a9f228366919a5ea0b07440d9d4dac345376fd8e1477ea"}, + {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7eee9e7cea6adf3e3d24e304ac6b8300646e2a5d1cd3a3c2abed9101b0846761"}, + {file = "pandas-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4850ba03528b6dd51d6c5d273c46f183f39a9baf3f0143e566b89450965b105e"}, + {file = "pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667"}, +] [package.dependencies] numpy = [ - {version = ">=1.18.5", markers = "platform_machine != \"aarch64\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, - {version = ">=1.19.2", markers = "platform_machine == \"aarch64\" and python_version < \"3.10\""}, - {version = ">=1.20.0", markers = "platform_machine == \"arm64\" and python_version < \"3.10\""}, - {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, ] -python-dateutil = ">=2.8.1" +python-dateutil = ">=2.8.2" pytz = ">=2020.1" +tzdata = ">=2022.7" [package.extras] -test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] +aws = ["s3fs (>=2022.11.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] +compression = ["zstandard (>=0.19.0)"] +computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] +feather = ["pyarrow (>=10.0.1)"] +fss = ["fsspec (>=2022.11.0)"] +gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] +hdf5 = ["tables (>=3.8.0)"] +html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] +mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=10.0.1)"] +performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] +plot = ["matplotlib (>=3.6.3)"] +postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] +spss = ["pyreadstat (>=1.2.0)"] +sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.9.2)"] [[package]] name = "pandocfilters" -version = "1.5.0" +version = "1.5.1" description = "Utilities for writing pandoc filters in python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, + {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, +] [[package]] name = "parso" -version = "0.8.3" +version = "0.8.4" description = "A Python Parser" -category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, + {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, +] [package.extras] -qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] -testing = ["docopt", "pytest (<6.0.0)"] +qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] +testing = ["docopt", "pytest"] [[package]] name = "pbr" -version = "5.10.0" +version = "6.1.0" description = "Python Build Reasonableness" -category = "dev" optional = false python-versions = ">=2.6" +files = [ + {file = "pbr-6.1.0-py2.py3-none-any.whl", hash = "sha256:a776ae228892d8013649c0aeccbb3d5f99ee15e005a4cbb7e61d55a067b28a2a"}, + {file = "pbr-6.1.0.tar.gz", hash = "sha256:788183e382e3d1d7707db08978239965e8b9e4e5ed42669bf4758186734d5f24"}, +] [[package]] name = "pep8" version = "1.7.1" description = "Python style guide checker" -category = "dev" optional = false python-versions = "*" +files = [ + {file = "pep8-1.7.1-py2.py3-none-any.whl", hash = "sha256:b22cfae5db09833bb9bd7c8463b53e1a9c9b39f12e304a8d0bba729c501827ee"}, + {file = "pep8-1.7.1.tar.gz", hash = "sha256:fe249b52e20498e59e0b5c5256aa52ee99fc295b26ec9eaa85776ffdb9fe6374"}, +] [[package]] name = "pep8-naming" version = "0.12.1" description = "Check PEP-8 naming conventions, plugin for flake8" -category = "dev" optional = false python-versions = "*" +files = [ + {file = "pep8-naming-0.12.1.tar.gz", hash = "sha256:bb2455947757d162aa4cad55dba4ce029005cd1692f2899a21d51d8630ca7841"}, + {file = "pep8_naming-0.12.1-py2.py3-none-any.whl", hash = "sha256:4a8daeaeb33cfcde779309fc0c9c0a68a3bbe2ad8a8308b763c5068f86eb9f37"}, +] [package.dependencies] flake8 = ">=3.9.1" @@ -1599,123 +3309,242 @@ flake8-polyfill = ">=1.0.2,<2" [[package]] name = "pexpect" -version = "4.8.0" +version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." -category = "main" optional = false python-versions = "*" +files = [ + {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, + {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, +] [package.dependencies] ptyprocess = ">=0.5" -[[package]] -name = "pickleshare" -version = "0.7.5" -description = "Tiny 'shelve'-like database with concurrency support" -category = "main" -optional = false -python-versions = "*" - [[package]] name = "pillow" -version = "9.2.0" +version = "10.4.0" description = "Python Imaging Library (Fork)" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"}, + {file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc"}, + {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e"}, + {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46"}, + {file = "pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984"}, + {file = "pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141"}, + {file = "pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"}, + {file = "pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c"}, + {file = "pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319"}, + {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d"}, + {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696"}, + {file = "pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496"}, + {file = "pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91"}, + {file = "pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22"}, + {file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"}, + {file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a"}, + {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b"}, + {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9"}, + {file = "pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42"}, + {file = "pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a"}, + {file = "pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9"}, + {file = "pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3"}, + {file = "pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc"}, + {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a"}, + {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309"}, + {file = "pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060"}, + {file = "pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea"}, + {file = "pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d"}, + {file = "pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736"}, + {file = "pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd"}, + {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84"}, + {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0"}, + {file = "pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e"}, + {file = "pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab"}, + {file = "pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d"}, + {file = "pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c"}, + {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1"}, + {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df"}, + {file = "pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef"}, + {file = "pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5"}, + {file = "pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3"}, + {file = "pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06"}, +] [package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] +docs = ["furo", "olefile", "sphinx (>=7.3)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "2.5.2" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" +version = "4.3.6" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, +] [package.extras] -docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"] -test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "pluggy" -version = "1.0.0" +version = "1.5.0" description = "plugin and hook calling mechanisms for python" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] [package.extras] -testing = ["pytest-benchmark", "pytest"] -dev = ["tox", "pre-commit"] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] [[package]] name = "pre-commit" -version = "2.20.0" +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 = [ + {file = "pre_commit-2.21.0-py2.py3-none-any.whl", hash = "sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad"}, + {file = "pre_commit-2.21.0.tar.gz", hash = "sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658"}, +] [package.dependencies] cfgv = ">=2.0.0" identify = ">=1.0.0" nodeenv = ">=0.11.1" pyyaml = ">=5.1" -toml = "*" -virtualenv = ">=20.0.8" +virtualenv = ">=20.10.0" [[package]] name = "prometheus-client" -version = "0.14.1" +version = "0.21.0" description = "Python client for the Prometheus monitoring system." -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "prometheus_client-0.21.0-py3-none-any.whl", hash = "sha256:4fa6b4dd0ac16d58bb587c04b1caae65b8c5043e85f778f42f5f632f6af2e166"}, + {file = "prometheus_client-0.21.0.tar.gz", hash = "sha256:96c83c606b71ff2b0a433c98889d275f51ffec6c5e267de37c7a2b5c9aa9233e"}, +] [package.extras] twisted = ["twisted"] [[package]] name = "prompt-toolkit" -version = "3.0.30" +version = "3.0.48" description = "Library for building powerful interactive command lines in Python" -category = "main" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.0" +files = [ + {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, + {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, +] [package.dependencies] wcwidth = "*" [[package]] name = "psutil" -version = "5.9.1" +version = "6.0.0" description = "Cross-platform lib for process and system monitoring in Python." -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "psutil-6.0.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a021da3e881cd935e64a3d0a20983bda0bb4cf80e4f74fa9bfcb1bc5785360c6"}, + {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:1287c2b95f1c0a364d23bc6f2ea2365a8d4d9b726a3be7294296ff7ba97c17f0"}, + {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:a9a3dbfb4de4f18174528d87cc352d1f788b7496991cca33c6996f40c9e3c92c"}, + {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6ec7588fb3ddaec7344a825afe298db83fe01bfaaab39155fa84cf1c0d6b13c3"}, + {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:1e7c870afcb7d91fdea2b37c24aeb08f98b6d67257a5cb0a8bc3ac68d0f1a68c"}, + {file = "psutil-6.0.0-cp27-none-win32.whl", hash = "sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35"}, + {file = "psutil-6.0.0-cp27-none-win_amd64.whl", hash = "sha256:21f1fb635deccd510f69f485b87433460a603919b45e2a324ad65b0cc74f8fb1"}, + {file = "psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0"}, + {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0"}, + {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd"}, + {file = "psutil-6.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e8d0054fc88153ca0544f5c4d554d42e33df2e009c4ff42284ac9ebdef4132"}, + {file = "psutil-6.0.0-cp36-cp36m-win32.whl", hash = "sha256:fc8c9510cde0146432bbdb433322861ee8c3efbf8589865c8bf8d21cb30c4d14"}, + {file = "psutil-6.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:34859b8d8f423b86e4385ff3665d3f4d94be3cdf48221fbe476e883514fdb71c"}, + {file = "psutil-6.0.0-cp37-abi3-win32.whl", hash = "sha256:a495580d6bae27291324fe60cea0b5a7c23fa36a7cd35035a16d93bdcf076b9d"}, + {file = "psutil-6.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:33ea5e1c975250a720b3a6609c490db40dae5d83a4eb315170c4fe0d8b1f34b3"}, + {file = "psutil-6.0.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:ffe7fc9b6b36beadc8c322f84e1caff51e8703b88eee1da46d1e3a6ae11b4fd0"}, + {file = "psutil-6.0.0.tar.gz", hash = "sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2"}, +] [package.extras] -test = ["ipaddress", "mock", "enum34", "pywin32", "wmi"] +test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] [[package]] name = "ptyprocess" version = "0.7.0" description = "Run a subprocess in a pseudo terminal" -category = "main" optional = false python-versions = "*" +files = [ + {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, + {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, +] [[package]] name = "pure-eval" -version = "0.2.2" +version = "0.2.3" description = "Safely evaluate AST nodes without side effects" -category = "main" optional = false python-versions = "*" +files = [ + {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, + {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, +] [package.extras] tests = ["pytest"] @@ -1724,79 +3553,106 @@ tests = ["pytest"] name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] [[package]] name = "pyclean" -version = "2.2.0" +version = "2.7.6" description = "Pure Python cross-platform pyclean. Clean up your Python bytecode." -category = "dev" optional = false python-versions = "*" +files = [ + {file = "pyclean-2.7.6-py3-none-any.whl", hash = "sha256:db5f74f6d2fedb79366e3260b260f5ab0053e1df28af14fc2c860800bf00fe96"}, + {file = "pyclean-2.7.6.tar.gz", hash = "sha256:cde95ad4fbc194e970fd7ad009e82718f6c1d1309b195be9018d334d79661cca"}, +] [[package]] name = "pycodestyle" version = "2.8.0" description = "Python style guide checker" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "pycodestyle-2.8.0-py2.py3-none-any.whl", hash = "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20"}, + {file = "pycodestyle-2.8.0.tar.gz", hash = "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f"}, +] [[package]] name = "pycparser" -version = "2.21" +version = "2.22" description = "C parser in Python" -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.8" +files = [ + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, +] [[package]] name = "pydocstyle" -version = "6.1.1" +version = "6.3.0" description = "Python docstring style checker" -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "pydocstyle-6.3.0-py3-none-any.whl", hash = "sha256:118762d452a49d6b05e194ef344a55822987a462831ade91ec5c06fd2169d019"}, + {file = "pydocstyle-6.3.0.tar.gz", hash = "sha256:7ce43f0c0ac87b07494eb9c0b462c0b73e6ff276807f204d6b53edc72b7e44e1"}, +] [package.dependencies] -snowballstemmer = "*" +snowballstemmer = ">=2.2.0" [package.extras] -toml = ["toml"] +toml = ["tomli (>=1.2.3)"] [[package]] name = "pyflakes" version = "2.4.0" description = "passive checker of Python programs" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pyflakes-2.4.0-py2.py3-none-any.whl", hash = "sha256:3bb3a3f256f4b7968c9c788781e4ff07dce46bdf12339dcda61053375426ee2e"}, + {file = "pyflakes-2.4.0.tar.gz", hash = "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c"}, +] [[package]] name = "pygments" -version = "2.13.0" +version = "2.18.0" description = "Pygments is a syntax highlighting package written in Python." -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, +] [package.extras] -plugins = ["importlib-metadata"] +windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pylint" -version = "2.15.0" +version = "2.17.7" description = "python code static checker" -category = "dev" optional = false python-versions = ">=3.7.2" +files = [ + {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, + {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, +] [package.dependencies] -astroid = ">=2.12.4,<=2.14.0-dev0" +astroid = ">=2.15.8,<=2.17.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -dill = ">=0.2" +dill = [ + {version = ">=0.2", markers = "python_version < \"3.11\""}, + {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, +] isort = ">=4.2.5,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" @@ -1810,30 +3666,28 @@ testutils = ["gitpython (>3)"] [[package]] name = "pyparsing" -version = "3.0.9" +version = "3.1.4" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" optional = false python-versions = ">=3.6.8" +files = [ + {file = "pyparsing-3.1.4-py3-none-any.whl", hash = "sha256:a6a7ee4235a3f944aa1fa2249307708f893fe5717dc603503c6c7969c070fb7c"}, + {file = "pyparsing-3.1.4.tar.gz", hash = "sha256:f86ec8d1a83f11977c9a6ea7598e8c27fc5cddfa5b07ea2241edbbde1d7bc032"}, +] [package.extras] -diagrams = ["railroad-diagrams", "jinja2"] - -[[package]] -name = "pyrsistent" -version = "0.18.1" -description = "Persistent/Functional/Immutable data structures" -category = "main" -optional = false -python-versions = ">=3.7" +diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pytest" version = "6.2.5" description = "pytest: simple powerful testing with Python" -category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, + {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, +] [package.dependencies] atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} @@ -1852,35 +3706,44 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm name = "pytest-cov" version = "3.0.0" description = "Pytest plugin for measuring coverage." -category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "pytest-cov-3.0.0.tar.gz", hash = "sha256:e7f0f5b1617d2210a2cabc266dfe2f4c75a8d32fb89eafb7ad9d06f6d076d470"}, + {file = "pytest_cov-3.0.0-py3-none-any.whl", hash = "sha256:578d5d15ac4a25e5f961c938b85a05b09fdaae9deef3bb6de9a6e766622ca7a6"}, +] [package.dependencies] coverage = {version = ">=5.2.1", extras = ["toml"]} pytest = ">=4.6" [package.extras] -testing = ["virtualenv", "pytest-xdist", "six", "process-tests", "hunter", "fields"] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] [[package]] name = "pytest-datadir" -version = "1.3.1" +version = "1.5.0" description = "pytest plugin for test data directories and files" -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.8" +files = [ + {file = "pytest-datadir-1.5.0.tar.gz", hash = "sha256:1617ed92f9afda0c877e4eac91904b5f779d24ba8f5e438752e3ae39d8d2ee3f"}, + {file = "pytest_datadir-1.5.0-py3-none-any.whl", hash = "sha256:34adf361bcc7b37961bbc1dfa8d25a4829e778bab461703c38a5c50ca9c36dc8"}, +] [package.dependencies] -pytest = ">=2.7.0" +pytest = ">=5.0" [[package]] name = "pytest-forked" -version = "1.4.0" +version = "1.6.0" description = "run tests in isolated forked subprocesses" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "pytest-forked-1.6.0.tar.gz", hash = "sha256:4dafd46a9a600f65d822b8f605133ecf5b3e1941ebb3588e943b4e3eb71a5a3f"}, + {file = "pytest_forked-1.6.0-py3-none-any.whl", hash = "sha256:810958f66a91afb1a1e2ae83089d8dc1cd2437ac96b12963042fbb9fb4d16af0"}, +] [package.dependencies] py = "*" @@ -1888,32 +3751,39 @@ pytest = ">=3.10" [[package]] name = "pytest-notebook" -version = "0.7.0" +version = "0.10.0" description = "A pytest plugin for testing Jupyter Notebooks." -category = "main" optional = false -python-versions = "~=3.7" +python-versions = "~=3.8" +files = [ + {file = "pytest_notebook-0.10.0-py3-none-any.whl", hash = "sha256:482ab2f8fbac6ecb417226e9b7e68476332262a03f555e49d89a164ee16581f6"}, + {file = "pytest_notebook-0.10.0.tar.gz", hash = "sha256:0a38a73b04c40137402b5f39a053395b418028cb3994a04dbcffe603c7b2a646"}, +] [package.dependencies] attrs = ">=19,<23" +importlib-metadata = {version = ">=6.0,<7.0", markers = "python_version < \"3.10\""} jsonschema = "*" nbclient = ">=0.5.10,<0.6.0" -nbdime = "*" +nbdime = ">=4" nbformat = "*" pytest = ">=3.5.0" [package.extras] -testing = ["beautifulsoup4 (==4.8.0)", "black (==19.3b0)", "coverage (>=5.0,<6.0)", "ipykernel", "pytest-regressions", "pytest-cov"] -docs = ["coverage (>=5.0,<6.0)", "myst-nb (>=0.13.1,<0.14.0)", "sphinx-book-theme (>=0.1.0,<0.2.0)", "pyyaml", "sphinx (>=3)"] -code_style = ["doc8 (>=0.8.0,<0.9.0)", "pre-commit (>=2.7.0,<2.8.0)"] +code-style = ["doc8 (>=0.8.0,<0.9.0)", "pre-commit (>=3.5.0,<3.6.0)"] +docs = ["black", "coverage (>=5.0,<6.0)", "myst-nb (>=1.0,<2.0)", "pytest-cov", "pyyaml", "sphinx (>=3)", "sphinx-book-theme (>=1.0.1,<1.1.0)"] +testing = ["beautifulsoup4 (==4.12.2)", "black (==23.11.0)", "coverage (>=5.0,<6.0)", "ipykernel", "pytest-cov", "pytest-regressions"] [[package]] name = "pytest-testinfra" version = "6.8.0" description = "Test infrastructures" -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "pytest-testinfra-6.8.0.tar.gz", hash = "sha256:07c8c2c472aca7d83099ebc5f850d383721cd654b66c60ffbb145e45e584ff99"}, + {file = "pytest_testinfra-6.8.0-py3-none-any.whl", hash = "sha256:56ac1dfc61342632a1189091473e253db1a3cdcecce0d49d6a769f33cd264814"}, +] [package.dependencies] pytest = "!=3.0.2" @@ -1926,11 +3796,14 @@ winrm = ["pywinrm"] [[package]] name = "pytest-timeout" -version = "2.1.0" +version = "2.2.0" description = "pytest plugin to abort hanging tests" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "pytest-timeout-2.2.0.tar.gz", hash = "sha256:3b0b95dabf3cb50bac9ef5ca912fa0cfc286526af17afc806824df20c2f72c90"}, + {file = "pytest_timeout-2.2.0-py3-none-any.whl", hash = "sha256:bde531e096466f49398a59f2dde76fa78429a09a12411466f88a07213e220de2"}, +] [package.dependencies] pytest = ">=5.0.0" @@ -1939,9 +3812,12 @@ pytest = ">=5.0.0" name = "pytest-xdist" version = "2.5.0" description = "pytest xdist plugin for distributed testing and loop-on-failing modes" -category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "pytest-xdist-2.5.0.tar.gz", hash = "sha256:4580deca3ff04ddb2ac53eba39d76cb5dd5edeac050cb6fbc768b0dd712b4edf"}, + {file = "pytest_xdist-2.5.0-py3-none-any.whl", hash = "sha256:6fe5c74fec98906deb8f2d2b616b5c782022744978e7bd4695d39c8f42d0ce65"}, +] [package.dependencies] execnet = ">=1.1" @@ -1955,323 +3831,690 @@ testing = ["filelock"] [[package]] name = "python-dateutil" -version = "2.8.2" +version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] [package.dependencies] six = ">=1.5" +[[package]] +name = "python-json-logger" +version = "2.0.7" +description = "A python library adding a json log formatter" +optional = false +python-versions = ">=3.6" +files = [ + {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"}, + {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"}, +] + [[package]] name = "pytz" -version = "2022.2.1" +version = "2024.2" description = "World timezone definitions, modern and historical" -category = "main" optional = false python-versions = "*" +files = [ + {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, + {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, +] [[package]] name = "pyupgrade" -version = "2.37.3" +version = "2.38.4" description = "A tool to automatically upgrade syntax for newer versions." -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "pyupgrade-2.38.4-py2.py3-none-any.whl", hash = "sha256:944ff993c396ddc2b9012eb3de4cda138eb4c149b22c6c560d4c8bfd0e180982"}, + {file = "pyupgrade-2.38.4.tar.gz", hash = "sha256:1eb43a49f416752929741ba4d706bf3f33593d3cac9bdc217fc1ef55c047c1f4"}, +] [package.dependencies] -tokenize-rt = ">=3.2.0" +tokenize-rt = "<5" [[package]] name = "pywin32" -version = "304" +version = "307" description = "Python for Window Extensions" -category = "main" optional = false python-versions = "*" +files = [ + {file = "pywin32-307-cp310-cp310-win32.whl", hash = "sha256:f8f25d893c1e1ce2d685ef6d0a481e87c6f510d0f3f117932781f412e0eba31b"}, + {file = "pywin32-307-cp310-cp310-win_amd64.whl", hash = "sha256:36e650c5e5e6b29b5d317385b02d20803ddbac5d1031e1f88d20d76676dd103d"}, + {file = "pywin32-307-cp310-cp310-win_arm64.whl", hash = "sha256:0c12d61e0274e0c62acee79e3e503c312426ddd0e8d4899c626cddc1cafe0ff4"}, + {file = "pywin32-307-cp311-cp311-win32.whl", hash = "sha256:fec5d27cc893178fab299de911b8e4d12c5954e1baf83e8a664311e56a272b75"}, + {file = "pywin32-307-cp311-cp311-win_amd64.whl", hash = "sha256:987a86971753ed7fdd52a7fb5747aba955b2c7fbbc3d8b76ec850358c1cc28c3"}, + {file = "pywin32-307-cp311-cp311-win_arm64.whl", hash = "sha256:fd436897c186a2e693cd0437386ed79f989f4d13d6f353f8787ecbb0ae719398"}, + {file = "pywin32-307-cp312-cp312-win32.whl", hash = "sha256:07649ec6b01712f36debf39fc94f3d696a46579e852f60157a729ac039df0815"}, + {file = "pywin32-307-cp312-cp312-win_amd64.whl", hash = "sha256:00d047992bb5dcf79f8b9b7c81f72e0130f9fe4b22df613f755ab1cc021d8347"}, + {file = "pywin32-307-cp312-cp312-win_arm64.whl", hash = "sha256:b53658acbfc6a8241d72cc09e9d1d666be4e6c99376bc59e26cdb6223c4554d2"}, + {file = "pywin32-307-cp313-cp313-win32.whl", hash = "sha256:ea4d56e48dc1ab2aa0a5e3c0741ad6e926529510516db7a3b6981a1ae74405e5"}, + {file = "pywin32-307-cp313-cp313-win_amd64.whl", hash = "sha256:576d09813eaf4c8168d0bfd66fb7cb3b15a61041cf41598c2db4a4583bf832d2"}, + {file = "pywin32-307-cp313-cp313-win_arm64.whl", hash = "sha256:b30c9bdbffda6a260beb2919f918daced23d32c79109412c2085cbc513338a0a"}, + {file = "pywin32-307-cp37-cp37m-win32.whl", hash = "sha256:5101472f5180c647d4525a0ed289ec723a26231550dbfd369ec19d5faf60e511"}, + {file = "pywin32-307-cp37-cp37m-win_amd64.whl", hash = "sha256:05de55a7c110478dc4b202230e98af5e0720855360d2b31a44bb4e296d795fba"}, + {file = "pywin32-307-cp38-cp38-win32.whl", hash = "sha256:13d059fb7f10792542082f5731d5d3d9645320fc38814759313e5ee97c3fac01"}, + {file = "pywin32-307-cp38-cp38-win_amd64.whl", hash = "sha256:7e0b2f93769d450a98ac7a31a087e07b126b6d571e8b4386a5762eb85325270b"}, + {file = "pywin32-307-cp39-cp39-win32.whl", hash = "sha256:55ee87f2f8c294e72ad9d4261ca423022310a6e79fb314a8ca76ab3f493854c6"}, + {file = "pywin32-307-cp39-cp39-win_amd64.whl", hash = "sha256:e9d5202922e74985b037c9ef46778335c102b74b95cec70f629453dbe7235d87"}, +] [[package]] name = "pywinpty" -version = "2.0.7" +version = "2.0.13" description = "Pseudo terminal support for Windows from Python." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "pywinpty-2.0.13-cp310-none-win_amd64.whl", hash = "sha256:697bff211fb5a6508fee2dc6ff174ce03f34a9a233df9d8b5fe9c8ce4d5eaf56"}, + {file = "pywinpty-2.0.13-cp311-none-win_amd64.whl", hash = "sha256:b96fb14698db1284db84ca38c79f15b4cfdc3172065b5137383910567591fa99"}, + {file = "pywinpty-2.0.13-cp312-none-win_amd64.whl", hash = "sha256:2fd876b82ca750bb1333236ce98488c1be96b08f4f7647cfdf4129dfad83c2d4"}, + {file = "pywinpty-2.0.13-cp38-none-win_amd64.whl", hash = "sha256:61d420c2116c0212808d31625611b51caf621fe67f8a6377e2e8b617ea1c1f7d"}, + {file = "pywinpty-2.0.13-cp39-none-win_amd64.whl", hash = "sha256:71cb613a9ee24174730ac7ae439fd179ca34ccb8c5349e8d7b72ab5dea2c6f4b"}, + {file = "pywinpty-2.0.13.tar.gz", hash = "sha256:c34e32351a3313ddd0d7da23d27f835c860d32fe4ac814d372a3ea9594f41dde"}, +] [[package]] name = "pyyaml" -version = "6.0" +version = "6.0.2" description = "YAML parser and emitter for Python" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, +] [[package]] name = "pyzmq" -version = "23.2.1" +version = "26.2.0" description = "Python bindings for 0MQ" -category = "main" optional = false -python-versions = ">=3.6" - -[package.dependencies] -cffi = {version = "*", markers = "implementation_name == \"pypy\""} -py = {version = "*", markers = "implementation_name == \"pypy\""} - -[[package]] -name = "qtconsole" -version = "5.3.2" -description = "Jupyter Qt console" -category = "main" -optional = true -python-versions = ">= 3.7" - -[package.dependencies] -ipykernel = ">=4.1" -ipython-genutils = "*" -jupyter-client = ">=4.1" -jupyter-core = "*" -pygments = "*" -pyzmq = ">=17.1" -qtpy = ">=2.0.1" -traitlets = "<5.2.1 || >5.2.1,<5.2.2 || >5.2.2" - -[package.extras] -doc = ["Sphinx (>=1.3)"] -test = ["flaky", "pytest", "pytest-qt"] - -[[package]] -name = "qtpy" -version = "2.2.0" -description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)." -category = "main" -optional = true python-versions = ">=3.7" +files = [ + {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629"}, + {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dacd995031a01d16eec825bf30802fceb2c3791ef24bcce48fa98ce40918c27b"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89289a5ee32ef6c439086184529ae060c741334b8970a6855ec0b6ad3ff28764"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5506f06d7dc6ecf1efacb4a013b1f05071bb24b76350832c96449f4a2d95091c"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ea039387c10202ce304af74def5021e9adc6297067f3441d348d2b633e8166a"}, + {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2224fa4a4c2ee872886ed00a571f5e967c85e078e8e8c2530a2fb01b3309b88"}, + {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:28ad5233e9c3b52d76196c696e362508959741e1a005fb8fa03b51aea156088f"}, + {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1c17211bc037c7d88e85ed8b7d8f7e52db6dc8eca5590d162717c654550f7282"}, + {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b8f86dd868d41bea9a5f873ee13bf5551c94cf6bc51baebc6f85075971fe6eea"}, + {file = "pyzmq-26.2.0-cp310-cp310-win32.whl", hash = "sha256:46a446c212e58456b23af260f3d9fb785054f3e3653dbf7279d8f2b5546b21c2"}, + {file = "pyzmq-26.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:49d34ab71db5a9c292a7644ce74190b1dd5a3475612eefb1f8be1d6961441971"}, + {file = "pyzmq-26.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:bfa832bfa540e5b5c27dcf5de5d82ebc431b82c453a43d141afb1e5d2de025fa"}, + {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:8f7e66c7113c684c2b3f1c83cdd3376103ee0ce4c49ff80a648643e57fb22218"}, + {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3a495b30fc91db2db25120df5847d9833af237546fd59170701acd816ccc01c4"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77eb0968da535cba0470a5165468b2cac7772cfb569977cff92e240f57e31bef"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ace4f71f1900a548f48407fc9be59c6ba9d9aaf658c2eea6cf2779e72f9f317"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92a78853d7280bffb93df0a4a6a2498cba10ee793cc8076ef797ef2f74d107cf"}, + {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:689c5d781014956a4a6de61d74ba97b23547e431e9e7d64f27d4922ba96e9d6e"}, + {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aca98bc423eb7d153214b2df397c6421ba6373d3397b26c057af3c904452e37"}, + {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f3496d76b89d9429a656293744ceca4d2ac2a10ae59b84c1da9b5165f429ad3"}, + {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5c2b3bfd4b9689919db068ac6c9911f3fcb231c39f7dd30e3138be94896d18e6"}, + {file = "pyzmq-26.2.0-cp311-cp311-win32.whl", hash = "sha256:eac5174677da084abf378739dbf4ad245661635f1600edd1221f150b165343f4"}, + {file = "pyzmq-26.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:5a509df7d0a83a4b178d0f937ef14286659225ef4e8812e05580776c70e155d5"}, + {file = "pyzmq-26.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0e6091b157d48cbe37bd67233318dbb53e1e6327d6fc3bb284afd585d141003"}, + {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:ded0fc7d90fe93ae0b18059930086c51e640cdd3baebdc783a695c77f123dcd9"}, + {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17bf5a931c7f6618023cdacc7081f3f266aecb68ca692adac015c383a134ca52"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55cf66647e49d4621a7e20c8d13511ef1fe1efbbccf670811864452487007e08"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4661c88db4a9e0f958c8abc2b97472e23061f0bc737f6f6179d7a27024e1faa5"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7f69de383cb47522c9c208aec6dd17697db7875a4674c4af3f8cfdac0bdeae"}, + {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f98f6dfa8b8ccaf39163ce872bddacca38f6a67289116c8937a02e30bbe9711"}, + {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3e0210287329272539eea617830a6a28161fbbd8a3271bf4150ae3e58c5d0e6"}, + {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6b274e0762c33c7471f1a7471d1a2085b1a35eba5cdc48d2ae319f28b6fc4de3"}, + {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29c6a4635eef69d68a00321e12a7d2559fe2dfccfa8efae3ffb8e91cd0b36a8b"}, + {file = "pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7"}, + {file = "pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a"}, + {file = "pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b"}, + {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726"}, + {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187"}, + {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b"}, + {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18"}, + {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115"}, + {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e"}, + {file = "pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5"}, + {file = "pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad"}, + {file = "pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797"}, + {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a"}, + {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797"}, + {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386"}, + {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306"}, + {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6"}, + {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0"}, + {file = "pyzmq-26.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3b55a4229ce5da9497dd0452b914556ae58e96a4381bb6f59f1305dfd7e53fc8"}, + {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9cb3a6460cdea8fe8194a76de8895707e61ded10ad0be97188cc8463ffa7e3a8"}, + {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8ab5cad923cc95c87bffee098a27856c859bd5d0af31bd346035aa816b081fe1"}, + {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ed69074a610fad1c2fda66180e7b2edd4d31c53f2d1872bc2d1211563904cd9"}, + {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cccba051221b916a4f5e538997c45d7d136a5646442b1231b916d0164067ea27"}, + {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:0eaa83fc4c1e271c24eaf8fb083cbccef8fde77ec8cd45f3c35a9a123e6da097"}, + {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9edda2df81daa129b25a39b86cb57dfdfe16f7ec15b42b19bfac503360d27a93"}, + {file = "pyzmq-26.2.0-cp37-cp37m-win32.whl", hash = "sha256:ea0eb6af8a17fa272f7b98d7bebfab7836a0d62738e16ba380f440fceca2d951"}, + {file = "pyzmq-26.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4ff9dc6bc1664bb9eec25cd17506ef6672d506115095411e237d571e92a58231"}, + {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2eb7735ee73ca1b0d71e0e67c3739c689067f055c764f73aac4cc8ecf958ee3f"}, + {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a534f43bc738181aa7cbbaf48e3eca62c76453a40a746ab95d4b27b1111a7d2"}, + {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aedd5dd8692635813368e558a05266b995d3d020b23e49581ddd5bbe197a8ab6"}, + {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8be4700cd8bb02cc454f630dcdf7cfa99de96788b80c51b60fe2fe1dac480289"}, + {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fcc03fa4997c447dce58264e93b5aa2d57714fbe0f06c07b7785ae131512732"}, + {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:402b190912935d3db15b03e8f7485812db350d271b284ded2b80d2e5704be780"}, + {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8685fa9c25ff00f550c1fec650430c4b71e4e48e8d852f7ddcf2e48308038640"}, + {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:76589c020680778f06b7e0b193f4b6dd66d470234a16e1df90329f5e14a171cd"}, + {file = "pyzmq-26.2.0-cp38-cp38-win32.whl", hash = "sha256:8423c1877d72c041f2c263b1ec6e34360448decfb323fa8b94e85883043ef988"}, + {file = "pyzmq-26.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:76589f2cd6b77b5bdea4fca5992dc1c23389d68b18ccc26a53680ba2dc80ff2f"}, + {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:b1d464cb8d72bfc1a3adc53305a63a8e0cac6bc8c5a07e8ca190ab8d3faa43c2"}, + {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4da04c48873a6abdd71811c5e163bd656ee1b957971db7f35140a2d573f6949c"}, + {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d049df610ac811dcffdc147153b414147428567fbbc8be43bb8885f04db39d98"}, + {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05590cdbc6b902101d0e65d6a4780af14dc22914cc6ab995d99b85af45362cc9"}, + {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c811cfcd6a9bf680236c40c6f617187515269ab2912f3d7e8c0174898e2519db"}, + {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6835dd60355593de10350394242b5757fbbd88b25287314316f266e24c61d073"}, + {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc6bee759a6bddea5db78d7dcd609397449cb2d2d6587f48f3ca613b19410cfc"}, + {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c530e1eecd036ecc83c3407f77bb86feb79916d4a33d11394b8234f3bd35b940"}, + {file = "pyzmq-26.2.0-cp39-cp39-win32.whl", hash = "sha256:367b4f689786fca726ef7a6c5ba606958b145b9340a5e4808132cc65759abd44"}, + {file = "pyzmq-26.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:e6fa2e3e683f34aea77de8112f6483803c96a44fd726d7358b9888ae5bb394ec"}, + {file = "pyzmq-26.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:7445be39143a8aa4faec43b076e06944b8f9d0701b669df4af200531b21e40bb"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:706e794564bec25819d21a41c31d4df2d48e1cc4b061e8d345d7fb4dd3e94072"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b435f2753621cd36e7c1762156815e21c985c72b19135dac43a7f4f31d28dd1"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160c7e0a5eb178011e72892f99f918c04a131f36056d10d9c1afb223fc952c2d"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4a71d5d6e7b28a47a394c0471b7e77a0661e2d651e7ae91e0cab0a587859ca"}, + {file = "pyzmq-26.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:90412f2db8c02a3864cbfc67db0e3dcdbda336acf1c469526d3e869394fe001c"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2ea4ad4e6a12e454de05f2949d4beddb52460f3de7c8b9d5c46fbb7d7222e02c"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fc4f7a173a5609631bb0c42c23d12c49df3966f89f496a51d3eb0ec81f4519d6"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:878206a45202247781472a2d99df12a176fef806ca175799e1c6ad263510d57c"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17c412bad2eb9468e876f556eb4ee910e62d721d2c7a53c7fa31e643d35352e6"}, + {file = "pyzmq-26.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:0d987a3ae5a71c6226b203cfd298720e0086c7fe7c74f35fa8edddfbd6597eed"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:39887ac397ff35b7b775db7201095fc6310a35fdbae85bac4523f7eb3b840e20"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fdb5b3e311d4d4b0eb8b3e8b4d1b0a512713ad7e6a68791d0923d1aec433d919"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:226af7dcb51fdb0109f0016449b357e182ea0ceb6b47dfb5999d569e5db161d5"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bed0e799e6120b9c32756203fb9dfe8ca2fb8467fed830c34c877e25638c3fc"}, + {file = "pyzmq-26.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:29c7947c594e105cb9e6c466bace8532dc1ca02d498684128b339799f5248277"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cdeabcff45d1c219636ee2e54d852262e5c2e085d6cb476d938aee8d921356b3"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35cffef589bcdc587d06f9149f8d5e9e8859920a071df5a2671de2213bef592a"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18c8dc3b7468d8b4bdf60ce9d7141897da103c7a4690157b32b60acb45e333e6"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7133d0a1677aec369d67dd78520d3fa96dd7f3dcec99d66c1762870e5ea1a50a"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a96179a24b14fa6428cbfc08641c779a53f8fcec43644030328f44034c7f1f4"}, + {file = "pyzmq-26.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4f78c88905461a9203eac9faac157a2a0dbba84a0fd09fd29315db27be40af9f"}, + {file = "pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f"}, +] [package.dependencies] -packaging = "*" - -[package.extras] -test = ["pytest-qt", "pytest-cov (>=3.0.0)", "pytest (>=6,!=7.0.0,!=7.0.1)"] +cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "radon" version = "5.1.0" description = "Code Metrics in Python" -category = "dev" optional = false python-versions = "*" +files = [ + {file = "radon-5.1.0-py2.py3-none-any.whl", hash = "sha256:fa74e018197f1fcb54578af0f675d8b8e2342bd8e0b72bef8197bc4c9e645f36"}, + {file = "radon-5.1.0.tar.gz", hash = "sha256:cb1d8752e5f862fb9e20d82b5f758cbc4fb1237c92c9a66450ea0ea7bf29aeee"}, +] [package.dependencies] colorama = {version = ">=0.4.1", markers = "python_version > \"3.4\""} future = "*" mando = ">=0.6,<0.7" +[[package]] +name = "referencing" +version = "0.35.1" +description = "JSON Referencing + Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, + {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + [[package]] name = "requests" -version = "2.28.1" +version = "2.32.3" description = "Python HTTP for Humans." -category = "main" optional = false -python-versions = ">=3.7, <4" +python-versions = ">=3.8" +files = [ + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, +] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<3" +charset-normalizer = ">=2,<4" idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<1.27" +urllib3 = ">=1.21.1,<3" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-mock" -version = "1.10.0" +version = "1.12.1" description = "Mock out responses from the requests package" -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.5" +files = [ + {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, + {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, +] [package.dependencies] -requests = ">=2.3,<3" -six = "*" +requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] -test = ["fixtures", "mock", "purl", "pytest", "sphinx", "testrepository (>=0.0.18)", "testtools", "requests-futures"] + +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +description = "A pure python RFC3339 validator" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, + {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, +] + +[package.dependencies] +six = "*" + +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +description = "Pure python rfc3986 validator" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, + {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, +] [[package]] name = "rich" -version = "12.5.1" +version = "13.9.2" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" -category = "dev" optional = false -python-versions = ">=3.6.3,<4.0.0" +python-versions = ">=3.8.0" +files = [ + {file = "rich-13.9.2-py3-none-any.whl", hash = "sha256:8c82a3d3f8dcfe9e734771313e606b39d8247bb6b826e196f4914b333b743cf1"}, + {file = "rich-13.9.2.tar.gz", hash = "sha256:51a2c62057461aaf7152b4d611168f93a9fc73068f8ded2790f29fe2b5366d0c"}, +] [package.dependencies] -commonmark = ">=0.9.0,<0.10.0" -pygments = ">=2.6.0,<3.0.0" +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" +typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.11\""} [package.extras] -jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] +jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] -name = "scipy" -version = "1.6.1" -description = "SciPy: Scientific Library for Python" -category = "main" +name = "rpds-py" +version = "0.20.0" +description = "Python bindings to Rust's persistent data structures (rpds)" optional = false -python-versions = ">=3.7" - -[package.dependencies] -numpy = ">=1.16.5" +python-versions = ">=3.8" +files = [ + {file = "rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2"}, + {file = "rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94"}, + {file = "rpds_py-0.20.0-cp310-none-win32.whl", hash = "sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee"}, + {file = "rpds_py-0.20.0-cp310-none-win_amd64.whl", hash = "sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399"}, + {file = "rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489"}, + {file = "rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58"}, + {file = "rpds_py-0.20.0-cp311-none-win32.whl", hash = "sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0"}, + {file = "rpds_py-0.20.0-cp311-none-win_amd64.whl", hash = "sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c"}, + {file = "rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6"}, + {file = "rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174"}, + {file = "rpds_py-0.20.0-cp312-none-win32.whl", hash = "sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139"}, + {file = "rpds_py-0.20.0-cp312-none-win_amd64.whl", hash = "sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585"}, + {file = "rpds_py-0.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29"}, + {file = "rpds_py-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57"}, + {file = "rpds_py-0.20.0-cp313-none-win32.whl", hash = "sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a"}, + {file = "rpds_py-0.20.0-cp313-none-win_amd64.whl", hash = "sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2"}, + {file = "rpds_py-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24"}, + {file = "rpds_py-0.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a"}, + {file = "rpds_py-0.20.0-cp38-none-win32.whl", hash = "sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5"}, + {file = "rpds_py-0.20.0-cp38-none-win_amd64.whl", hash = "sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232"}, + {file = "rpds_py-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22"}, + {file = "rpds_py-0.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b"}, + {file = "rpds_py-0.20.0-cp39-none-win32.whl", hash = "sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7"}, + {file = "rpds_py-0.20.0-cp39-none-win_amd64.whl", hash = "sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8"}, + {file = "rpds_py-0.20.0.tar.gz", hash = "sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121"}, +] [[package]] name = "seaborn" -version = "0.11.2" -description = "seaborn: statistical data visualization" -category = "main" +version = "0.13.2" +description = "Statistical data visualization" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "seaborn-0.13.2-py3-none-any.whl", hash = "sha256:636f8336facf092165e27924f223d3c62ca560b1f2bb5dff7ab7fad265361987"}, + {file = "seaborn-0.13.2.tar.gz", hash = "sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7"}, +] [package.dependencies] -matplotlib = ">=2.2" -numpy = ">=1.15" -pandas = ">=0.23" -scipy = ">=1.0" +matplotlib = ">=3.4,<3.6.1 || >3.6.1" +numpy = ">=1.20,<1.24.0 || >1.24.0" +pandas = ">=1.2" + +[package.extras] +dev = ["flake8", "flit", "mypy", "pandas-stubs", "pre-commit", "pytest", "pytest-cov", "pytest-xdist"] +docs = ["ipykernel", "nbconvert", "numpydoc", "pydata_sphinx_theme (==0.10.0rc2)", "pyyaml", "sphinx (<6.0.0)", "sphinx-copybutton", "sphinx-design", "sphinx-issues"] +stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"] [[package]] name = "secretcolors" version = "1.2.6" description = "A small package for fantastic color palette" -category = "main" optional = false python-versions = "*" +files = [ + {file = "SecretColors-1.2.6-py3-none-any.whl", hash = "sha256:d96f8d3b12f563801e9a685ae86d321b599f4b721d42dd0135851c29eea64296"}, +] [[package]] name = "send2trash" -version = "1.8.0" -description = "Send file to trash natively under Mac OS X, Windows and Linux." -category = "main" +version = "1.8.3" +description = "Send file to trash natively under Mac OS X, Windows and Linux" optional = false -python-versions = "*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, + {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, +] [package.extras] -nativelib = ["pyobjc-framework-cocoa", "pywin32"] -objc = ["pyobjc-framework-cocoa"] +nativelib = ["pyobjc-framework-Cocoa", "pywin32"] +objc = ["pyobjc-framework-Cocoa"] win32 = ["pywin32"] [[package]] -name = "setuptools-scm" -version = "6.4.2" -description = "the blessed package to manage your versions by scm tags" -category = "main" +name = "setuptools" +version = "58.1.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.6" - -[package.dependencies] -packaging = ">=20.0" -tomli = ">=1.0.0" +files = [ + {file = "setuptools-58.1.0-py3-none-any.whl", hash = "sha256:7324fd4b66efa05cdfc9c89174573a4410acc7848f318cc0565c7fb659dfdc81"}, + {file = "setuptools-58.1.0.tar.gz", hash = "sha256:5de67252090e08d25f240f07d80310f778a5a46cdcf9ea9855662630ac8547b2"}, +] [package.extras] -test = ["pytest (>=6.2)", "virtualenv (>20)"] -toml = ["setuptools (>=42)"] +docs = ["furo", "jaraco.packaging (>=8.2)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx", "sphinx-inline-tabs", "sphinxcontrib-towncrier"] +testing = ["flake8-2020", "jaraco.envs", "jaraco.path (>=3.2.0)", "mock", "paver", "pip (>=19.1)", "pytest (>=4.6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-flake8", "pytest-mypy", "pytest-virtualenv (>=1.2.7)", "pytest-xdist", "sphinx", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "single-version" -version = "1.5.1" +version = "1.6.0" description = "Small utility to define version string for Poetry-style Python project." -category = "main" optional = false -python-versions = ">=3.6,<4.0" +python-versions = ">=3.7,<4.0" +files = [ + {file = "single_version-1.6.0-py3-none-any.whl", hash = "sha256:67a2734e728b9554750e867b33591f3ad9509ccb851bb3047ced7bfe68429ecd"}, + {file = "single_version-1.6.0.tar.gz", hash = "sha256:3b1fb6e9bd2c88268948d9191c78b63ddd3c07554c1f07cd8a85aedf2486e4fc"}, +] [[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 = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] [[package]] name = "smmap" -version = "5.0.0" +version = "5.0.1" description = "A pure Python implementation of a sliding window memory map manager" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"}, + {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"}, +] [[package]] name = "sniffio" -version = "1.2.0" +version = "1.3.1" 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 = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] [[package]] 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 = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] [[package]] name = "soupsieve" -version = "2.3.2.post1" +version = "2.6" description = "A modern CSS selector implementation for Beautiful Soup." -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, + {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"}, +] [[package]] name = "stack-data" -version = "0.5.0" +version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" -category = "main" optional = false python-versions = "*" +files = [ + {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, + {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, +] [package.dependencies] -asttokens = "*" -executing = "*" +asttokens = ">=2.1.0" +executing = ">=1.2.0" pure-eval = "*" [package.extras] -tests = ["cython", "littleutils", "pygments", "typeguard", "pytest"] +tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] [[package]] name = "stevedore" -version = "4.0.0" +version = "5.3.0" description = "Manage dynamic plugins for Python applications" -category = "dev" optional = false python-versions = ">=3.8" +files = [ + {file = "stevedore-5.3.0-py3-none-any.whl", hash = "sha256:1efd34ca08f474dad08d9b19e934a22c68bb6fe416926479ba29e5013bcc8f78"}, + {file = "stevedore-5.3.0.tar.gz", hash = "sha256:9a64265f4060312828151c204efbe9b7a9852a0d9228756344dbc7e4023e375a"}, +] [package.dependencies] -pbr = ">=2.0.0,<2.1.0 || >2.1.0" +pbr = ">=2.0.0" [[package]] name = "tenacity" -version = "8.0.1" +version = "8.5.0" description = "Retry code until it succeeds" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, + {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, +] [package.extras] -doc = ["reno", "sphinx", "tornado (>=4.5)"] +doc = ["reno", "sphinx"] +test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "terminado" -version = "0.15.0" +version = "0.18.1" description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, + {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, +] [package.dependencies] ptyprocess = {version = "*", markers = "os_name != \"nt\""} @@ -2279,496 +4522,472 @@ pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} tornado = ">=6.1.0" [package.extras] -test = ["pre-commit", "pytest-timeout", "pytest (>=6.0)"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] +test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] +typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] [[package]] name = "tinycss2" -version = "1.1.1" +version = "1.3.0" description = "A tiny CSS parser" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "tinycss2-1.3.0-py3-none-any.whl", hash = "sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"}, + {file = "tinycss2-1.3.0.tar.gz", hash = "sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d"}, +] [package.dependencies] webencodings = ">=0.4" [package.extras] -test = ["coverage", "pytest-isort", "pytest-flake8", "pytest-cov", "pytest"] -doc = ["sphinx-rtd-theme", "sphinx"] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["pytest", "ruff"] [[package]] name = "tokenize-rt" version = "4.2.1" description = "A wrapper around the stdlib `tokenize` which roundtrips." -category = "dev" optional = false python-versions = ">=3.6.1" +files = [ + {file = "tokenize_rt-4.2.1-py2.py3-none-any.whl", hash = "sha256:08a27fa032a81cf45e8858d0ac706004fcd523e8463415ddf1442be38e204ea8"}, + {file = "tokenize_rt-4.2.1.tar.gz", hash = "sha256:0d4f69026fed520f8a1e0103aa36c406ef4661417f20ca643f913e33531b3b94"}, +] [[package]] name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, +] [[package]] name = "tomlkit" -version = "0.11.4" +version = "0.13.2" description = "Style preserving TOML library" -category = "dev" optional = false -python-versions = ">=3.6,<4.0" +python-versions = ">=3.8" +files = [ + {file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"}, + {file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"}, +] [[package]] name = "tornado" -version = "6.2" +version = "6.4.1" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -category = "main" optional = false -python-versions = ">= 3.7" +python-versions = ">=3.8" +files = [ + {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, + {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, + {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, + {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, + {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, +] [[package]] name = "tqdm" -version = "4.64.0" +version = "4.66.5" description = "Fast, Extensible Progress Meter" -category = "main" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +python-versions = ">=3.7" +files = [ + {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, + {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, +] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] -dev = ["py-make (>=0.1.0)", "twine", "wheel"] +dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] notebook = ["ipywidgets (>=6)"] slack = ["slack-sdk"] telegram = ["requests"] [[package]] name = "traitlets" -version = "5.3.0" -description = "" -category = "main" +version = "5.14.3" +description = "Traitlets Python configuration system" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, + {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, +] [package.extras] -test = ["pre-commit", "pytest"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] [[package]] name = "tryceratops" -version = "1.1.0" -description = "A linter to manage your exception like a PRO!" -category = "dev" +version = "1.2.0" +description = "Prevent Exception Handling AntiPatterns" optional = false python-versions = ">=3.8,<4.0" +files = [ + {file = "tryceratops-1.2.0-py3-none-any.whl", hash = "sha256:2a994d7027dbb7080f629357d99328d42e6a83fe581d7dae5826c1de9858a571"}, + {file = "tryceratops-1.2.0.tar.gz", hash = "sha256:7ab89c512e1f0c5b04479e895601527d10ba9aa04f0863f143bde95c5532f75e"}, +] [package.dependencies] click = ">=7" rich = ">=10.14.0" toml = ">=0.10.2" +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20241003" +description = "Typing stubs for python-dateutil" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446"}, + {file = "types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d"}, +] + [[package]] name = "types-pyyaml" -version = "6.0.11" +version = "6.0.12.20240917" description = "Typing stubs for PyYAML" -category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.8" +files = [ + {file = "types-PyYAML-6.0.12.20240917.tar.gz", hash = "sha256:d1405a86f9576682234ef83bcb4e6fff7c9305c8b1fbad5e0bcd4f7dbdc9c587"}, + {file = "types_PyYAML-6.0.12.20240917-py3-none-any.whl", hash = "sha256:392b267f1c0fe6022952462bf5d6523f31e37f6cea49b14cee7ad634b6301570"}, +] [[package]] name = "types-requests" -version = "2.28.9" +version = "2.32.0.20240914" description = "Typing stubs for requests" -category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.8" +files = [ + {file = "types-requests-2.32.0.20240914.tar.gz", hash = "sha256:2850e178db3919d9bf809e434eef65ba49d0e7e33ac92d588f4a5e295fffd405"}, + {file = "types_requests-2.32.0.20240914-py3-none-any.whl", hash = "sha256:59c2f673eb55f32a99b2894faf6020e1a9f4a402ad0f192bfee0b64469054310"}, +] [package.dependencies] -types-urllib3 = "<1.27" +urllib3 = ">=2" [[package]] name = "types-setuptools" version = "57.4.18" description = "Typing stubs for setuptools" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "types-urllib3" -version = "1.26.23" -description = "Typing stubs for urllib3" -category = "dev" optional = false python-versions = "*" +files = [ + {file = "types-setuptools-57.4.18.tar.gz", hash = "sha256:8ee03d823fe7fda0bd35faeae33d35cb5c25b497263e6a58b34c4cfd05f40bcf"}, + {file = "types_setuptools-57.4.18-py3-none-any.whl", hash = "sha256:9660b8774b12cd61b448e2fd87a667c02e7ec13ce9f15171f1d49a4654c4df6a"}, +] [[package]] name = "typing-extensions" -version = "4.3.0" -description = "Backported and Experimental Type Hints for Python 3.7+" -category = "dev" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] [[package]] -name = "typing-inspect" -version = "0.8.0" -description = "Runtime inspection utilities for typing module." -category = "dev" +name = "tzdata" +version = "2024.2" +description = "Provider of IANA time zone data" optional = false -python-versions = "*" - -[package.dependencies] -mypy-extensions = ">=0.3.0" -typing-extensions = ">=3.7.4" +python-versions = ">=2" +files = [ + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, +] [[package]] name = "unittest2pytest" version = "0.4" description = "Convert unittest test-cases to pytest" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "unittest2pytest-0.4-py2.py3-none-any.whl", hash = "sha256:8f270c37fee3b57b3e2bb32db0a872d07ddb77c3b2ae62e1c922b1b497af9a2f"}, + {file = "unittest2pytest-0.4.tar.gz", hash = "sha256:a909522aa54787e20c1cabda9624bf81edcfe5107dc3c73a478ad2d0cf67c21f"}, +] [[package]] name = "untokenize" version = "0.1.1" description = "Transforms tokens into original source code (while preserving whitespace)." -category = "dev" optional = false python-versions = "*" +files = [ + {file = "untokenize-0.1.1.tar.gz", hash = "sha256:3865dbbbb8efb4bb5eaa72f1be7f3e0be00ea8b7f125c69cbd1f5fda926f37a2"}, +] + +[[package]] +name = "uri-template" +version = "1.3.0" +description = "RFC 6570 URI Template Processor" +optional = false +python-versions = ">=3.7" +files = [ + {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, + {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, +] + +[package.extras] +dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] [[package]] name = "urllib3" -version = "1.26.12" +version = "2.2.3" 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.*, <4" +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, +] [package.extras] -brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] -secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "urllib3-secure-extra", "ipaddress"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.16.4" +version = "20.26.6" description = "Virtual Python Environment builder" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "virtualenv-20.26.6-py3-none-any.whl", hash = "sha256:7345cc5b25405607a624d8418154577459c3e0277f5466dd79c49d5e492995f2"}, + {file = "virtualenv-20.26.6.tar.gz", hash = "sha256:280aede09a2a5c317e409a00102e7077c6432c5a38f0ef938e643805a7ad2c48"}, +] [package.dependencies] -distlib = ">=0.3.5,<1" -filelock = ">=3.4.1,<4" -platformdirs = ">=2.4,<3" +distlib = ">=0.3.7,<1" +filelock = ">=3.12.2,<4" +platformdirs = ">=3.9.1,<5" [package.extras] -docs = ["proselint (>=0.13)", "sphinx (>=5.1.1)", "sphinx-argparse (>=0.3.1)", "sphinx-rtd-theme (>=1)", "towncrier (>=21.9)"] -testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=21.3)", "pytest (>=7.0.1)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.6.1)", "pytest-randomly (>=3.10.3)", "pytest-timeout (>=2.1)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] [[package]] name = "vulture" -version = "2.5" +version = "2.13" description = "Find dead code" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "vulture-2.13-py2.py3-none-any.whl", hash = "sha256:34793ba60488e7cccbecdef3a7fe151656372ef94fdac9fe004c52a4000a6d44"}, + {file = "vulture-2.13.tar.gz", hash = "sha256:78248bf58f5eaffcc2ade306141ead73f437339950f80045dce7f8b078e5a1aa"}, +] [package.dependencies] -toml = "*" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} [[package]] name = "wcwidth" -version = "0.2.5" +version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" -category = "main" optional = false python-versions = "*" +files = [ + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, +] + +[[package]] +name = "webcolors" +version = "24.8.0" +description = "A library for working with the color formats defined by HTML and CSS." +optional = false +python-versions = ">=3.8" +files = [ + {file = "webcolors-24.8.0-py3-none-any.whl", hash = "sha256:fc4c3b59358ada164552084a8ebee637c221e4059267d0f8325b3b560f6c7f0a"}, + {file = "webcolors-24.8.0.tar.gz", hash = "sha256:08b07af286a01bcd30d583a7acadf629583d1f79bfef27dd2c2c5c263817277d"}, +] + +[package.extras] +docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"] +tests = ["coverage[toml]"] [[package]] name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" -category = "main" optional = false python-versions = "*" +files = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] [[package]] name = "websocket-client" -version = "1.4.0" +version = "1.8.0" description = "WebSocket client for Python with low level API options" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, + {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, +] [package.extras] +docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] +optional = ["python-socks", "wsaccel"] test = ["websockets"] -optional = ["wsaccel", "python-socks"] -docs = ["sphinx-rtd-theme (>=0.5)", "Sphinx (>=3.4)"] [[package]] name = "widgetsnbextension" -version = "4.0.2" +version = "4.0.13" description = "Jupyter interactive widgets for Jupyter Notebook" -category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "widgetsnbextension-4.0.13-py3-none-any.whl", hash = "sha256:74b2692e8500525cc38c2b877236ba51d34541e6385eeed5aec15a70f88a6c71"}, + {file = "widgetsnbextension-4.0.13.tar.gz", hash = "sha256:ffcb67bc9febd10234a362795f643927f4e0c05d9342c727b65d2384f8feacb6"}, +] [[package]] name = "wrapt" -version = "1.14.1" +version = "1.16.0" description = "Module for decorators, wrappers and monkey patching." -category = "dev" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.6" +files = [ + {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, + {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, + {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, + {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, + {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, + {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, + {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, + {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, + {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, + {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, + {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, + {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, + {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, + {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, + {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, + {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, + {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, + {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, +] [[package]] name = "yapf" version = "0.32.0" description = "A formatter for Python code." -category = "dev" optional = false python-versions = "*" +files = [ + {file = "yapf-0.32.0-py2.py3-none-any.whl", hash = "sha256:8fea849025584e486fd06d6ba2bed717f396080fd3cc236ba10cb97c4c51cf32"}, + {file = "yapf-0.32.0.tar.gz", hash = "sha256:a3f5085d37ef7e3e004c4ba9f9b3e40c54ff1901cd111f05145ae313a7c67d1b"}, +] [[package]] name = "zipp" -version = "3.8.1" +version = "3.20.2" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"}, + {file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"}, +] [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] - -[extras] -examples = ["fastaparser", "jupyter-contrib-nbextensions", "jupyter-console", "jupyter", "pandas", "seaborn", "tqdm"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] [metadata] -lock-version = "1.1" +lock-version = "2.0" python-versions = "^3.9.6" -content-hash = "d4eb510cb0bd0114022c1839642cdaf6f7e90f9e1423d7cc67cc0618f800857b" - -[metadata.files] -anyio = [] -appnope = [] -argon2-cffi = [] -argon2-cffi-bindings = [] -astor = [] -astroid = [] -asttokens = [] -atomicwrites = [] -attrs = [] -autoflake = [] -autopep8 = [] -backcall = [] -bandit = [] -beautifulsoup4 = [] -biopython = [] -bleach = [] -certifi = [] -cffi = [] -cfgv = [] -charset-normalizer = [] -cleanpy = [] -click = [] -cohesion = [] -colorama = [] -commonmark = [] -coverage = [] -cycler = [] -debugpy = [] -decorator = [] -defusedxml = [] -dill = [] -distlib = [] -dna-features-viewer = [] -docformatter = [] -entrypoints = [] -eradicate = [] -et-xmlfile = [] -execnet = [] -executing = [] -fastaparser = [] -fastjsonschema = [] -filelock = [] -fixit = [] -flake8 = [] -flake8-bandit = [] -flake8-broken-line = [] -flake8-bugbear = [] -flake8-commas = [] -flake8-comprehensions = [] -flake8-copyright = [] -flake8-debugger = [] -flake8-docstrings = [] -flake8-eradicate = [] -flake8-executable = [] -flake8-implicit-str-concat = [] -flake8-logging-format = [] -flake8-no-pep420 = [] -flake8-plugin-utils = [] -flake8-polyfill = [] -flake8-print = [] -flake8-pytest-style = [] -flake8-quotes = [] -flake8-simplify = [] -flake8-type-checking = [] -flake8-typing-imports = [] -flake8-use-pathlib = [] -fonttools = [] -future = [] -gitdb = [] -gitpython = [] -identify = [] -idna = [] -importlib-resources = [] -iniconfig = [] -ipykernel = [] -ipython = [] -ipython-genutils = [] -ipywidgets = [] -isort = [] -jedi = [] -jinja2 = [] -jsonschema = [] -jupyter = [] -jupyter-client = [] -jupyter-console = [] -jupyter-contrib-core = [] -jupyter-contrib-nbextensions = [] -jupyter-core = [] -jupyter-highlight-selected-word = [] -jupyter-latex-envs = [] -jupyter-nbextensions-configurator = [] -jupyter-server = [] -jupyter-server-mathjax = [] -jupyterlab-pygments = [] -jupyterlab-widgets = [] -kiwisolver = [] -lazy-object-proxy = [] -libcst = [] -lxml = [] -mando = [] -markupsafe = [] -matplotlib = [] -matplotlib-inline = [] -mccabe = [] -mistune = [] -more-itertools = [] -mypy = [] -mypy-extensions = [] -nbclient = [] -nbconvert = [] -nbdime = [] -nbformat = [] -nest-asyncio = [] -nglview = [] -nodeenv = [] -notebook = [] -numpy = [] -openpyxl = [] -packaging = [] -pandas = [] -pandocfilters = [] -parso = [] -pbr = [] -pep8 = [] -pep8-naming = [] -pexpect = [] -pickleshare = [] -pillow = [] -platformdirs = [] -pluggy = [] -pre-commit = [] -prometheus-client = [] -prompt-toolkit = [] -psutil = [] -ptyprocess = [] -pure-eval = [] -py = [] -pyclean = [] -pycodestyle = [] -pycparser = [] -pydocstyle = [] -pyflakes = [] -pygments = [] -pylint = [] -pyparsing = [] -pyrsistent = [] -pytest = [] -pytest-cov = [] -pytest-datadir = [] -pytest-forked = [] -pytest-notebook = [] -pytest-testinfra = [] -pytest-timeout = [] -pytest-xdist = [] -python-dateutil = [] -pytz = [] -pyupgrade = [] -pywin32 = [] -pywinpty = [] -pyyaml = [] -pyzmq = [] -qtconsole = [] -qtpy = [] -radon = [] -requests = [] -requests-mock = [] -rich = [] -scipy = [] -seaborn = [] -secretcolors = [] -send2trash = [] -setuptools-scm = [] -single-version = [] -six = [] -smmap = [] -sniffio = [] -snowballstemmer = [] -soupsieve = [] -stack-data = [] -stevedore = [] -tenacity = [] -terminado = [] -tinycss2 = [] -tokenize-rt = [] -toml = [] -tomli = [] -tomlkit = [] -tornado = [] -tqdm = [] -traitlets = [] -tryceratops = [] -types-pyyaml = [] -types-requests = [] -types-setuptools = [] -types-urllib3 = [] -typing-extensions = [] -typing-inspect = [] -unittest2pytest = [] -untokenize = [] -urllib3 = [] -virtualenv = [] -vulture = [] -wcwidth = [] -webencodings = [] -websocket-client = [] -widgetsnbextension = [] -wrapt = [] -yapf = [] -zipp = [] +content-hash = "df2c91762e73aab5d17ea470acb1daa176df31cbcd880e05f2471b24d64d9085" diff --git a/pyproject.toml b/pyproject.toml index 638ebc9..e23a0e7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,13 +1,13 @@ [tool.poetry] name = "teselagen" -version = "0.4.9" +version = "0.5.0" description = "Teselagen Biotechnology API client" authors = ["Your Name "] license = "MIT" readme = "README.md" -homepage = "" +homepage = "https://github.com/TeselaGen/api-client" repository = "https://github.com/TeselaGen/api-client" -documentation = "" +documentation = "https://github.com/TeselaGen/api-client" keywords = [ "Synthetic Biology", "Teselagen", @@ -27,6 +27,7 @@ exclude = [ "**/.test_configuration", ] + [tool.poetry.dependencies] # general dependencies python = "^3.9.6" @@ -37,7 +38,7 @@ single_version = "^1.5.1" pytest = "^6.2.5" pytest-cov = "^3.0.0" pytest-datadir = "^1.3.1" -pytest-notebook = "^0.7.0" +pytest-notebook = "^0.10.0" pytest-timeout = "^2.0.2" pytest-xdist = "^2.4.0" # library dependencies @@ -47,7 +48,7 @@ fastaparser = "^1.1" # openpyxl = "^3.0.9" openpyxl = "^3.0.7" # pandas = "^1.3.4" -pandas = "^1.1.5" +pandas = "^2.2.3" requests = "^2.26.0" requests-mock = "^1.9.3" SecretColors = "^1.2.4" @@ -55,26 +56,22 @@ SecretColors = "^1.2.4" tenacity = "^8.0.0" tqdm = "^4.62.3" -# A list of all of the optional dependencies, some of which are included in the -# below `extras`. They can be opted into by apps. + # optionals # being used by examples -seaborn = { version = "^0.11.2", optional = true } -jupyter = { version = "^1.0.0", optional = true } -jupyter-console = { version = "^6.4.0", optional = true } -jupyter-contrib-nbextensions = { version = "^0.5.1", optional = true } - -[tool.poetry.extras] -examples = ["fastaparser", "jupyter_contrib_nbextensions", "jupyter-console", "jupyter", "pandas", "seaborn", "tqdm"] +[tool.poetry.group.extras.dependencies] +# examples = ["fastaparser", "jupyter_contrib_nbextensions", "jupyter-console", "jupyter", "pandas", "seaborn", "tqdm"] +jupyter = { version = "^1.1.1"} +jupyter-contrib-nbextensions = { version = "^0.7.0"} +jupyter-console = { version = "^6.6.3"} -[tool.poetry.dev-dependencies] -seaborn = "^0.11.2" +[tool.poetry.group.dev.dependencies] +seaborn = "^0.13.2" # TODO(diegovalenzuelaiturra): Check if required for testing jupyter notebooks. Check if fixing versions is is still required. -notebook = "^6.4.0" -nglview = "^3.0.3" +notebook = "^7.2.2" +nglview = "^3.1.2" nbconvert = "^6.5.0" -jupyter-client = "6.1.12" # Temporarily pinned for avoiding https://github.com/jupyter/jupyter_client/issues/637 # testing, formaters, fixers, linters, etc. autoflake = "^1.4" autopep8 = "^1.6.0" @@ -95,7 +92,7 @@ flake8-debugger = "^4.0.0" flake8-docstrings = "^1.6.0" flake8-eradicate = "^1.2.0" flake8-executable = "^2.1.1" -flake8-implicit-str-concat = "^0.2.0" +flake8-implicit-str-concat = "^0.4.0" flake8-logging-format = "^0.6.0" flake8-no-pep420 = "^2.0.0" flake8-polyfill = "^1.0.2" diff --git a/teselagen/api/build_client.py b/teselagen/api/build_client.py index 3a3bbac..09ca172 100644 --- a/teselagen/api/build_client.py +++ b/teselagen/api/build_client.py @@ -168,7 +168,7 @@ def __init__( self.headers = teselagen_client.headers # Here we define the Base CLI URL. - api_url_base: str = f'{self.host_url}/{module_name}/cli-api' + api_url_base: str = teselagen_client.api_url_base # Here we define the client endpoints # Example : diff --git a/teselagen/api/client.py b/teselagen/api/client.py index 4a99490..ff50e24 100644 --- a/teselagen/api/client.py +++ b/teselagen/api/client.py @@ -15,7 +15,6 @@ from teselagen.api.discover_client import DISCOVERClient from teselagen.api.test_client import TESTClient from teselagen.utils import DEFAULT_API_TOKEN_NAME -from teselagen.utils import DEFAULT_HOST_URL from teselagen.utils import delete_session_file from teselagen.utils import get from teselagen.utils import get_credentials @@ -23,6 +22,7 @@ from teselagen.utils import post from teselagen.utils import put from teselagen.utils import save_session_file +from teselagen.utils import get_default_host_name from teselagen.utils.utils import ParsedJSONResponse from teselagen.utils.utils import Session @@ -59,7 +59,7 @@ class TeselaGenClient: def __init__( self, - host_url: str = DEFAULT_HOST_URL, + host_url: str = get_default_host_name(), api_token_name: str = DEFAULT_API_TOKEN_NAME, module_name: Literal['design', 'build', 'test', 'discover'] = DEFAULT_MODULE_NAME, ) -> None: @@ -71,7 +71,7 @@ def __init__( host_url (str) : The Host URL of the API. Defaults to "https://platform.teselagen.com" - api_token_name (str) : The name of the API token to use. Defaults to "x-tg-cli-token" + api_token_name (str) : The name of the API token to use. Defaults to "x-tg-api-token" """ self._design: Optional[DESIGNClient] = None self._test: Optional[TESTClient] = None @@ -85,23 +85,23 @@ def __init__( # Here we define a common Base URL. Using the DESIGN Module as the target server for these common endpoints. _module_name: str = module_name if module_name != 'discover' else 'evolve' - # module_url: str = urljoin(f'{self.host_url}/',_module_name) - # api_url_base: str = urljoin(self.host_url, f'{_module_name}/cli-api') + + self.api_url_base: str = f'{self.host_url}/tg-api/' + # Here we define the client endpoints. Using the DESIGN Module as the target server for these common endpoints. - self.register_url: str = urljoin(self.host_url, f'{_module_name}/register') - self.login_url: str = urljoin(self.host_url, f'{_module_name}/login') - self.info_url: str = urljoin(self.host_url, f'{_module_name}/cli-api/info') + self.register_url: str = urljoin(self.api_url_base, 'register') + self.login_url: str = urljoin(self.api_url_base, 'login') + self.info_url: str = urljoin(self.api_url_base, 'info') # self.status_url: str = f'{api_url_base}/public/status' - self.status_url: str = urljoin(self.host_url, f'{_module_name}/cli-api/public/status') + self.status_url: str = urljoin(self.api_url_base, f'public/status') # self.auth_url: str = f'{api_url_base}/public/auth' - self.auth_url: str = urljoin(self.host_url, f'{_module_name}/cli-api/public/auth') + self.auth_url: str = urljoin(self.api_url_base, f'public/auth') # Laboratories - # self.labs_url: str = '{self.host_url}/test/cli-api/laboratories' - self.labs_url: str = urljoin(self.host_url, f'{_module_name}/cli-api/laboratories') + self.labs_url: str = urljoin(self.api_url_base, f'laboratories') # NOTE : The authorization token will be updated with the "login" method. self.auth_token: Optional[str] = None @@ -208,9 +208,12 @@ def login( password=password, expiration_time=expiration_time, ) + + if auth_token is None: + raise ValueError('Login failed. Please check your credentials.') + del username, password - # else: - # auth_token = apiKey + # It will update the auth token and headers. self.update_token(token=auth_token) return None diff --git a/teselagen/api/design_client.py b/teselagen/api/design_client.py index d0ecff6..4f0af92 100644 --- a/teselagen/api/design_client.py +++ b/teselagen/api/design_client.py @@ -58,16 +58,16 @@ def __init__( self.host_url = teselagen_client.host_url self.headers = teselagen_client.headers # Here we define the Base CLI URL. - api_url_base: str = f'{self.host_url}/{module_name}/cli-api' + api_url_base: str = teselagen_client.api_url_base # EXPORT # GET # /export/sequence/{format}/{sequenceId} - self.export_dna_sequence_url: str = f'{api_url_base}/sequence/' + self.export_dna_sequence_url: str = f'{api_url_base}sequence/' # GET # /export/sequences/{format}/ - self.export_dna_sequences_url: str = f'{api_url_base}/sequences/' + self.export_dna_sequences_url: str = f'{api_url_base}sequences/' # GET # /export/aminoacids/{format}/{sequenceId} # self.export_aminoacid_sequence_url: str = f'{api_url_base}/export/aminoacids' @@ -83,36 +83,36 @@ def __init__( # GET # /designs/{id} - self.get_design_url: str = f'{api_url_base}/designs' + self.get_design_url: str = f'{api_url_base}designs' # DEL # /designs/{id} # self.delete_design_url: str = f'{api_url_base}/designs' # GET # /designs - self.get_designs_url: str = f'{api_url_base}/designs' + self.get_designs_url: str = f'{api_url_base}designs' # POST # /designs - self.post_designs_url: str = f'{api_url_base}/designs' + self.post_designs_url: str = f'{api_url_base}designs' # POST # /codon-optimization-jobs - self.post_codon_op: str = f'{api_url_base}/codon-optimization-jobs' + self.post_codon_op: str = f'{api_url_base}codon-optimization-jobs' # GET # /codon-optimization-jobs - self.get_codon_op_result: str = f'{api_url_base}/codon-optimization-jobs' + self.get_codon_op_result: str = f'{api_url_base}codon-optimization-jobs' # GET # /codon-optimization-jobs - self.get_assembly_report_url: str = f'{api_url_base}/assembly-report/export' + '/{}' + self.get_assembly_report_url: str = f'{api_url_base}assembly-report/export' + '/{}' # RBS Calculator API Tesealgen Integration endpoints # GET # /rbs-calculator/status - self.rbs_calculator_status_url: str = f'{api_url_base}/rbs-calculator/status' + self.rbs_calculator_status_url: str = f'{api_url_base}rbs-calculator/status' # POST # /rbs-calculator/submit - self.rbs_calculator_submit_url: str = f'{api_url_base}/rbs-calculator/submit' + self.rbs_calculator_submit_url: str = f'{api_url_base}rbs-calculator/submit' # GET # /rbs-calculator/jobs/ @@ -124,11 +124,11 @@ def __init__( # GET # /rbs-calculator/organisms - self.rbs_calculator_organisms_url: str = f'{api_url_base}/rbs-calculator/organisms' + self.rbs_calculator_organisms_url: str = f'{api_url_base}rbs-calculator/organisms' # POST # /import/aminoacids - self.import_aa_url: str = f'{api_url_base}/import/aminoacids' + self.import_aa_url: str = f'{api_url_base}import/aminoacids' # GET # /export/aminoacids/:format/:sequenceId diff --git a/teselagen/api/discover_client.py b/teselagen/api/discover_client.py index 5f50a34..1fb6827 100644 --- a/teselagen/api/discover_client.py +++ b/teselagen/api/discover_client.py @@ -65,7 +65,7 @@ def __init__( self.headers = teselagen_client.headers # Here we define the Base CLI URL. - api_url_base: str = f'{self.host_url}/{module_name}/cli-api' + api_url_base: str = teselagen_client.api_url_base # Here we define the client endpoints # Example : @@ -169,7 +169,10 @@ def get_model_info( response['content'] = json.loads(response['content']) # Check output - return self._get_data_from_content(response['content']) + try: + return self._get_data_from_content(response['content']) + except Exception as e: + return ValueError(f"Found problem while gettig model of id {model_id}") def get_models_by_type( self, @@ -739,10 +742,12 @@ def cancel_task( def design_crispr_grnas( self, sequence: str, + run_name: str = 'CRISPR Guide RNA Run', target_indexes: Optional[Tuple[int, int]] = None, target_sequence: Optional[str] = None, pam_site: str = 'NGG', min_score: float = 40.0, + guide_length: int = 20, max_number: Optional[int] = 50, wait_for_results: bool = True, ) -> Dict[str, Any]: @@ -780,27 +785,55 @@ def design_crispr_grnas( `wait_for_results` is `False` it will just return a dict with `taskID`, the id of the submitted \ task, and a `message` string. """ + # TODO: include missing parameters as arguments body: Dict[str, Any] = { - 'data': { - 'sequence': sequence, - }, - 'options': { - 'pamSite': pam_site, - 'minScore': min_score, + "guideRnaRunData": { + "name": run_name, + "genomeId": "no genome id", + "genomicRegionId": "no genomic region id", + "genomicReferenceSequenceId": "no genomic reference sequence id", + "sequenceFeatureId": "no sequence feature id", + "scaffoldSequence": { + "sequence": "no scaffold sequence", + "id": "no scaffold sequence id" + } }, + "CRISPRToolData": { + "data": { + "targetSequence": "", + "targetStart": 0, + "targetEnd": 0, + "genomeFilename": "", + "targetIsForward": True + }, + "options": { + "pamSite": "NGG", + "minScore": min_score, + # "maxNumber": 50, + "guideLength": guide_length + }, + "scoring":{} + + } } + if target_indexes is not None: - body['data']['targetStart'] = target_indexes[0] - body['data']['targetEnd'] = target_indexes[1] + body['CRISPRToolData']['data']['targetStart'] = target_indexes[0] + body['CRISPRToolData']['data']['targetEnd'] = target_indexes[1] if target_sequence is not None: - body['data']['targetSequence'] = target_sequence + body['CRISPRToolData']['data']['targetSequence'] = target_sequence if max_number is not None: - body['options']['maxNumber'] = max_number + body['CRISPRToolData']['options']['maxNumber'] = max_number response = post(url=self.crispr_guide_rnas_url, headers=self.headers, json=body) - result = json.loads(response['content']) + + if isinstance(response['content'], str): + result = json.loads(response['content']) + else: + print(f"Error in response: {response}") + result = {} if wait_for_results and 'taskId' in result: result = wait_for_status( diff --git a/teselagen/api/test_client.py b/teselagen/api/test_client.py index bdd8730..df1a5c4 100644 --- a/teselagen/api/test_client.py +++ b/teselagen/api/test_client.py @@ -24,17 +24,6 @@ from teselagen.api import TeselaGenClient - class ExperimentRecord(TypedDict, total=True): - """The experiment the Assay Subject belongs to. - - Attributes: - id (str): ID of the Assay Subject experiment. - - name (str): Name of the Assay Subject experiment. - """ - id: str - name: str - class AssayRecord(TypedDict, total=True): """The assay the Assay Subject has been involved in. @@ -46,20 +35,6 @@ class AssayRecord(TypedDict, total=True): id: str name: str - class ExperimentAssayRecord(TypedDict, total=True): - """Experiment object. - - Attributes: - id (str): ID of the assay's experiment - - name (str): Name of the assay's experiment - - experiment (ExperimentRecord): Experiment object. - """ - id: str - name: str - experiment: ExperimentRecord - class AssaySubjectClass(TypedDict, total=True): """Assay Subject Class. @@ -136,9 +111,6 @@ class AssaySubjectRecord(AssaySubjectRecordBase, total=False): assaySubjectGroups (List[AssaySubjectGroup]): A list of JSON records with the assay subject groups \ information (full). - experiments (List[ExperimentRecord]): A list of JSON records with the assay subject experiments \ - information (full). - assays (List[AssayRecord]): A list of JSON records with the assay subject assays information (full). """ # id: str # noqa: E800 @@ -146,7 +118,6 @@ class AssaySubjectRecord(AssaySubjectRecordBase, total=False): # assaySubjectClass: AssaySubjectClass # noqa: E800 descriptors: List[Descriptor] assaySubjectGroups: List[AssaySubjectGroup] # noqa: N815 - experiments: List[ExperimentRecord] assays: List[AssayRecord] # ---------------------------------------------------------------------------------------------------------------- @@ -220,7 +191,7 @@ def __init__( self.headers = teselagen_client.headers # Here we define the Base CLI URL. - api_url_base: str = f'{self.host_url}/{module_name}/cli-api' + api_url_base: str = teselagen_client.api_url_base # Here we define the client endpoints # Example : @@ -236,16 +207,10 @@ def __init__( self.post_assay_subjects_descriptors_import_url: str = f'{api_url_base}/assay-subjects/imports' self.get_assay_subjects_descriptors_import_url: str = join(api_url_base, 'assay-subjects/imports') + '/{}' - # Experiments - self.get_experiments_url: str = f'{api_url_base}/experiments' - self.create_experiment_url: str = f'{api_url_base}/experiments' - self.delete_experiment_url: str = join(api_url_base, 'experiments') + '/{}' - # Assays self.get_assays_url: str = f'{api_url_base}/assays' - self.get_assays_by_experiment_url: str = join(api_url_base, 'experiments') + '/{}/assays' - self.create_assay_url: str = join(api_url_base, 'experiments') + '/{}/assays' + self.create_assay_url: str = join(api_url_base, 'assays') self.delete_assay_url: str = join(api_url_base, 'assays') + '/{}' self.assay_results_url: str = join(api_url_base, 'assays') + '/{}/results' # Two endpoints for posting and getting an import job (specially useful for long running imports) @@ -258,7 +223,6 @@ def __init__( self.delete_file_url: str = join(api_url_base, 'files') + '/{}' self.upload_file_url: str = join(api_url_base, 'files') self.upload_file_into_assay_url: str = join(api_url_base, 'assays') + '/{}/files' - self.upload_file_into_experiment_url: str = join(api_url_base, 'experiments') + '/{}/files' # Metadata self.get_metadata_url: str = join(api_url_base, 'metadata') + '/{}' @@ -311,7 +275,6 @@ def get_assay_subjects( - assaySubjectClass (dict): A JSON with assay subject class information (summarized and full). - descriptors (List[dict]): A list of JSON records with the assay subject descriptors information (full). - assaySubjectGroups (List[dict]): A list of JSON records with the assay subject groups information (full). - - experiments (List[dict]): A list of JSON records with the assay subject experiments information (full). - assays (List[dict]): A list of JSON records with the assay subject assays information (full). """ url: str = '' @@ -507,90 +470,16 @@ def get_assay_subjects_descriptor_import_status( return response - # Experiments Endpoints - - def get_experiments(self) -> List[ExperimentRecord]: - """Fetches all experiments from the Laboratory selected with the `select_laboratory` function. - - Args : - - Returns : - (List[Experiment]): A list of experiments objects. - - ```json - [ - {"id": "1", "name": "Experiment 1"}, - {"id": "2", "name": "Experiment 2"} - ] - ``` - """ - response = get( - url=self.get_experiments_url, - headers=self.headers, - ) - - # response['content'] = [{'id' : str, 'name': str}, ...] - response['content'] = json.loads(response['content']) - - return response['content'] - - # TODO(diegovalenzuelaiturra): Can there be multiple experiments with the same name? - # TODO(diegovalenzuelaiturra): Check if the returned `Experiment` object differs from the `Experiment` object - # obtained with `get_experiments` method. - # If so, we may want to make the difference between `Experiment` and ExperimentRecord` - def create_experiment( - self, - experiment_name: str, - ) -> ExperimentRecord: - experiment: List[ExperimentRecord] = [] - exp_response: Dict[str, Any] = {} - - experiments: List[ExperimentRecord] = self.get_experiments() - experiment = list(filter(lambda x: x['name'] == experiment_name, experiments)) - - if len(experiment) != 1: - body = { - 'name': experiment_name, - } - response = post(url=self.create_experiment_url, headers=self.headers, json=body) - exp_response = json.loads(response['content'])[0] - - # Now we GET experiments from db in order to return the complete experiment to the user - experiment = list(filter( - lambda x: x['id'] == exp_response['id'], - self.get_experiments(), - )) - - if len(experiment) == 0: # sourcery skip: simplify-len-comparison - raise OSError(f"Error while looking for new id {exp_response['id']}") - - return experiment[0] - - def delete_experiment( - self, - experiment_id: str | int, - ) -> None: - """Deletes an experiment with ID=`experiment_id`.""" - # The requests.Response response object contains a string with the id of the experiment deleted. - response = delete( # noqa: F841 - url=self.delete_experiment_url.format(experiment_id), - headers=self.headers, - ) - - return None - # Assay Endpoints def get_assays( self, - experiment_id: Optional[str] = None, - ) -> List[ExperimentAssayRecord]: - """Fetches all assays from the experiment specified in `experiment_id`. + ) -> List[AssayRecord]: + """Fetches all assays. - If no `experiment_id` is passed, all assays from the selected Laboratory are returned. + All assays from the selected Laboratory are returned. Args : - experiment_id (int): Experiment identifier. Returns : (List[Dict[str, Any]]): A list of assays objects. @@ -599,25 +488,20 @@ def get_assays( [ { "id" : "1", - "name" : "Assay 1", - "experiment" : { - "id" : "1", - "name" : "Experiment 1" - } + "name" : "Assay 1" + }, { "id" : "2", - "name" : "Assay 2", - "experiment" : { - "id" : "1", - "name" : "Experiment 1" - } + "name" : "Assay 2" + }, ] ``` """ + # TODO: Make endpoint searchable! response = get( - url=self.get_assays_by_experiment_url.format(experiment_id) if experiment_id else self.get_assays_url, + url=self.get_assays_url, headers=self.headers, ) @@ -627,10 +511,9 @@ def get_assays( def create_assay( self, - experiment_id: str, assay_name: str, parser_id: Optional[int] = None, - ) -> ExperimentAssayRecord: + ) -> dict: body = { 'name': assay_name, 'parserId': str(parser_id) if parser_id else None, @@ -638,7 +521,7 @@ def create_assay( try: response = post( - url=self.create_assay_url.format(experiment_id), + url=self.create_assay_url, headers=self.headers, json=body, ) @@ -647,19 +530,12 @@ def create_assay( raise # A dictionary {id: str} with the ID of the new Assay. - assay_res: List[Dict[str, str]] = json.loads(response['content'])[0] - - # Retrieve the created object - assay: List[ExperimentAssayRecord] = list( - filter( - lambda x: x['id'] == assay_res['id'], - self.get_assays(experiment_id=experiment_id), - )) + assay_res: Dict[str, str] = json.loads(response['content'])[0] - if len(assay) == 0: - raise OSError(f"Can't find new id {assay_res['id']}") + if not assay_res: + raise OSError(f"Creation failed. Result: {assay_res}") - return assay[0] + return assay_res def delete_assay( self, @@ -693,7 +569,6 @@ def put_assay_results( file_id: Optional[Union[int, str]] = None, filepath: Optional[Union[str, Path]] = None, assay_name: Optional[str] = None, - experiment_id: Optional[Union[str, int]] = None, createSubjectsFromFile: Optional[bool] = True, # noqa: N803 createMeasurementTargetsFromFile: Optional[bool] = True, ): @@ -715,7 +590,6 @@ def put_assay_results( assay_name (str): Name of the assay into which insert the assay results. - experiment_id (number): Experiment identifier. Only used when passed and 'assay_name' an no 'assay_id'. createSubjectsFromFile (bool): Flag that indicates whether to create new Assay Subject found in the file. @@ -726,10 +600,9 @@ def put_assay_results( and/or measurement targets were created during the insert. """ if assay_id is None and assay_name is not None: - # Supports creating a new assay by providing an assay name and an experiment ID. + # Supports creating a new assay by providing an assay name assay_id = self.get_or_create_assay( - assay_name=assay_name, - experiment_id=str(experiment_id), + assay_name=assay_name ) else: raise Exception("Please provide a valid 'assay_id' or 'assay_name'.") @@ -774,7 +647,6 @@ def import_assay_results( file_id: Optional[Union[int, str]] = None, filepath: Optional[Union[str, Path]] = None, assay_name: Optional[str] = None, - experiment_id: Optional[Union[str, int]] = None, ): """Calls Teselagen TEST API endpoint: `POST /assays/results/importer`. @@ -794,7 +666,6 @@ def import_assay_results( assay_name (str) : Name of the assay into which insert the assay results. - experiment_id (number) : Experiment identifier. Only used when passed and 'assay_name' an no 'assay_id'. Returns: (): a JSON object with a status and an import process ID. Which can be used to check the status of the \ @@ -804,10 +675,9 @@ def import_assay_results( raise Exception("Please provide a valid 'assay_id' or 'assay_name'.") if assay_id is None and assay_name is not None: - # Supports creating a new assay by providing an assay name and an experiment ID. + # Supports creating a new assay by providing an assay name assay_id = self.get_or_create_assay( assay_name=assay_name, - experiment_id=str(experiment_id), ) # Implements the ability to do the file upload behind the scenes. @@ -1116,15 +986,11 @@ def _get_assay_file_results_from_api( def get_files_info( self, - experiment_id: Optional[str] = None, assay_id: Optional[str] = None, file_id: Optional[str] = None, ) -> List[Dict[str, Any]]: """Fetches all files from the selected Laboratory. - You can also filter the results by experiment, by assay or by file, using the 'experiment_id', 'assay_id' \ - and/or 'file_id' arguments. - Returns: (): A list of assays objects. @@ -1136,18 +1002,15 @@ def get_files_info( "id": "1", "name": "Assay 1" }, - "experiment": {...} }, { "id": "2", "name": "File 2", "assay": null, - "experiment": {...} }] ``` """ params = { - 'experimentId': experiment_id, 'assayId': assay_id, } @@ -1170,7 +1033,6 @@ def get_files_info( def upload_file( self, filepath: Union[str, Path], - experiment_id: Optional[int] = None, assay_id: Optional[str] = None, ): """Uploads a file. The request body is of type "multipart/form-data". @@ -1182,7 +1044,6 @@ def upload_file( Args: filepath (str): Path to the file to be uploaded. - experiment_id (Optional[int]): Experiment identifier. assay_id (Optional[int]): Assay identifier. @@ -1200,8 +1061,7 @@ def upload_file( del headers['Content-Type'] upload_file_url = self.upload_file_into_assay_url.format( - assay_id) if assay_id else self.upload_file_into_experiment_url.format( - experiment_id) if experiment_id else self.upload_file_url + assay_id) if assay_id else self.upload_file_url response = post( url=upload_file_url, @@ -1348,20 +1208,15 @@ def delete_metadata( def get_or_create_assay( self, assay_name: str, - experiment_id: str, ) -> str: - """Supports creating a new assay by providing an assay name and an experiment ID.""" + """Supports creating a new assay by providing an assay name """ assay_id = None - if experiment_id is None: - raise Exception("Please provide a valid 'experiment_id'.") - assays = self.get_assays() assay = list( - filter(lambda x: x['name'] == assay_name and x['experiment'] and x['experiment']['id'] == experiment_id, + filter(lambda x: x['name'] == assay_name, assays)) assay_id = assay[0]['id'] if len(assay) > 0 else self.create_assay( - experiment_id=experiment_id, assay_name=assay_name, )['id'] diff --git a/teselagen/api/tests/test_build_client.py b/teselagen/api/tests/test_build_client.py index 3215e43..77c45c2 100644 --- a/teselagen/api/tests/test_build_client.py +++ b/teselagen/api/tests/test_build_client.py @@ -383,7 +383,7 @@ def test_get_samples_with_default_query_params( ('2', '10', 'id', ''), # A basic GQL Filter (string) to filter by sample name: '{"name": "pA06046"}' # NOTE: names are not unique, so this could return multiple samples - ('1', '10', 'id', json.dumps({'name': 'pA06046'})), + ('1', '10', 'id', json.dumps({'name': 'Sample 00'})), ], ids=[ 'one_page_number', diff --git a/teselagen/api/tests/test_client.py b/teselagen/api/tests/test_client.py index b64e1ad..cb1fafa 100644 --- a/teselagen/api/tests/test_client.py +++ b/teselagen/api/tests/test_client.py @@ -15,11 +15,12 @@ from teselagen.api import TeselaGenClient from teselagen.api.client import DEFAULT_API_TOKEN_NAME -from teselagen.api.client import DEFAULT_HOST_URL + from teselagen.api.client import get from teselagen.utils import delete_session_file from teselagen.utils import get_credentials_path from teselagen.utils import get_session_path +from teselagen.utils import get_default_host_name if TYPE_CHECKING: from typing import Any, Dict, List, Literal @@ -47,7 +48,6 @@ def headers(self) -> Dict[str, str]: @pytest.fixture def client( self, - module_name: str, host_url: str, api_token_name: str, ) -> TeselaGenClient: @@ -57,7 +57,6 @@ def client( (TESTClient) : An instance of the TEST client. """ return TeselaGenClient( - module_name=module_name, host_url=host_url, api_token_name=api_token_name, ) @@ -101,20 +100,15 @@ def test_class_attributes(self) -> None: 'unselect_laboratory', ] - # static_methods: List[str] = [""] - # attributes: List[str] = [*methods, *static_methods] attributes: List[str] = methods assert all(hasattr(TeselaGenClient, attribute) for attribute in attributes) assert isinstance(DEFAULT_API_TOKEN_NAME, str) - assert isinstance(DEFAULT_HOST_URL, str) - @pytest.mark.parametrize('module_name', MODULES_TO_BE_TESTED) def test_instance_attributes( self, client: TeselaGenClient, - module_name: str, ) -> None: attributes: List[str] = [ 'host_url', @@ -137,45 +131,12 @@ def test_instance_attributes( assert 'Content-Type' in client.headers.keys() assert isinstance(client.headers['Content-Type'], str) - # # There's another login test below - # @pytest.mark.parametrize("module_name", MODULES_TO_BE_TESTED) - # def test_03_post_to_login_endpoint( - # self, - # module_name, - # ): - # host_url: str = HOST_URL - - # api_url: str = f"{host_url}/{module_name}/login" - # headers: Dict[str, str] = { - # "Content-type": "application/json", - # } - # request: Dict[str, str] = { - # "email": credentials["test_user"], - # "password": credentials["test_password"], - # } - - # response = post(url=api_url, headers=headers, json=request) - # del request - - # assert isinstance(response, dict) - - # expected_keys: List[str] = ["content", "status", "url"] - - # assert all(expected_key in response.keys() for expected_key in expected_keys) - # assert isinstance(response["status"], bool) - # assert isinstance(response["url"], str) - # assert isinstance(response["content"], str) or response["content"] is None - - @pytest.mark.parametrize('module_name', MODULES_TO_BE_TESTED) def test_get( self, - module_name: str, host_url: str, headers: Dict[str, str], ) -> None: - base_url: str = host_url - path: str = f'/{module_name}/cli-api/public/status' - api_url: str = urljoin(base_url, path) # Example: https://platform.teselagen.com/test/cli-api/public/status + api_url: str = urljoin(host_url, "tg-api/public/status") response = get(url=api_url, headers=headers) @@ -197,32 +158,26 @@ def test_get( def test_put(self) -> None: pass - @pytest.mark.parametrize('module_name', MODULES_TO_BE_TESTED) def test_client_instantiation( self, client: TeselaGenClient, - module_name: str, test_configuration, ) -> None: assert client.auth_token is None assert test_configuration['api_token_name'] not in client.headers.keys() - @pytest.mark.parametrize('module_name', MODULES_TO_BE_TESTED) def test_get_server_status( self, client: TeselaGenClient, - #module_name: str, ) -> None: # We verify that the server is operational. server_status: str = client.get_server_status() - expected_server_status: str = 'TeselaGen CLI API is operational.' + expected_server_status: str = 'TeselaGen API is operational.' assert server_status == expected_server_status - @pytest.mark.parametrize('module_name', MODULES_TO_BE_TESTED) def test_get_api_info_deauthorized( self, client: TeselaGenClient, - #module_name: str, ) -> None: # The client should only be instantiated but not authorized. # with pytest.raises(AssertionError, match=r".*unauthorized.*"): @@ -230,11 +185,9 @@ def test_get_api_info_deauthorized( api_info = client.get_api_info() assert 'unauthorized' in api_info.lower() - @pytest.mark.parametrize('module_name', MODULES_TO_BE_TESTED) def test_login( self, client: TeselaGenClient, - #module_name: str, expiration_time: str, test_configuration, ) -> None: @@ -242,8 +195,6 @@ def test_login( # LOGIN # We login the user with the CLI. client.login( - # username=credentials['test_user'], - # passwd=credentials['test_password'], expiration_time=expiration_time) # We verify the client is authorized. @@ -267,8 +218,6 @@ def test_login( # LOGOUT # We logout the user from the CLI. client.logout( - # username=credentials['test_user'], - # password=credentials['test_password'] ) # Check session file no longer exist @@ -278,7 +227,6 @@ def test_login( api_info = client.get_api_info() assert 'unauthorized' in api_info.lower() - @pytest.mark.parametrize('module_name', MODULES_TO_BE_TESTED) def test_get_laboratories( self, logged_client: TeselaGenClient, @@ -292,7 +240,6 @@ def test_get_laboratories( assert all(isinstance(element, dict) for element in response) assert all(key in element.keys() for element in response for key in ['id', 'name']) - @pytest.mark.parametrize('module_name', [MODULES_TO_BE_TESTED[0]]) def test_select_lab_by_name( self, logged_client: TeselaGenClient, diff --git a/teselagen/api/tests/test_design_client.py b/teselagen/api/tests/test_design_client.py index 7cd6c88..e09173d 100644 --- a/teselagen/api/tests/test_design_client.py +++ b/teselagen/api/tests/test_design_client.py @@ -126,7 +126,7 @@ def test_get_assembly_report_mock( TEST_REPORT_ID = 1023 # Create Mock - api_url_base = f'{logged_client.host_url}/design/cli-api' + api_url_base = f'{logged_client.host_url}/tg-api' url = f'{api_url_base}{logged_client.design.URL_GET_ASSEMBLY_REPORT}/{TEST_REPORT_ID}' requests_mock.get(url, content=b'estoesunarchivobinario') @@ -264,7 +264,7 @@ def test_rbs_calculator_jobs( logged_client: TeselaGenClient, ): """Hits a mock CLI API endpoint, it tests that its correctly calling it with the expected mock response.""" - api_url_base = f'{logged_client.host_url}/design/cli-api' + api_url_base = logged_client.api_url_base mock_url = f'{api_url_base}/mock/rbs-calculator/jobs' res = get(url=mock_url, headers=logged_client.headers) @@ -286,7 +286,7 @@ def test_rbs_calculator_organisms( self, logged_client: TeselaGenClient, ): - api_url_base = f'{logged_client.host_url}/design/cli-api' + api_url_base = logged_client.api_url_base mock_url = f'{api_url_base}/mock/rbs-calculator/organisms' res = get(url=mock_url, headers=logged_client.headers) @@ -303,7 +303,7 @@ def test_rbs_calculator_job( self, logged_client: TeselaGenClient, ): - api_url_base = f'{logged_client.host_url}/design/cli-api' + api_url_base = logged_client.api_url_base mock_url = f'{api_url_base}/mock/rbs-calculator/jobs/{JOB_ID_ONE}' res = get(url=mock_url, headers=logged_client.headers) @@ -338,7 +338,7 @@ def test_rbs_calculator_submit( self, logged_client: TeselaGenClient, ): - api_url_base = f'{logged_client.host_url}/design/cli-api' + api_url_base = logged_client.api_url_base mock_url = f'{api_url_base}/mock/rbs-calculator/submit' params = json.dumps({ 'algorithm': 'ReverseRBS', diff --git a/teselagen/api/tests/test_discover_client.py b/teselagen/api/tests/test_discover_client.py index d394240..2e4c409 100644 --- a/teselagen/api/tests/test_discover_client.py +++ b/teselagen/api/tests/test_discover_client.py @@ -205,12 +205,12 @@ def test_design_crispr_grnas( res = discover_client.design_crispr_grnas( sequence=fasta_seq, target_indexes=(500, 600), + wait_for_results=False ) assert isinstance(res, dict) - assert 'guides' in res - assert 'target_indexes' in res - assert len(res['guides']) == 7 + assert "message" in res + assert res['message'] == 'successfully submited' def test_design_crispr_grnas_mock( self, diff --git a/teselagen/api/tests/test_multiomics.py b/teselagen/api/tests/test_multiomics.py index ae06e15..47a14e6 100644 --- a/teselagen/api/tests/test_multiomics.py +++ b/teselagen/api/tests/test_multiomics.py @@ -57,32 +57,32 @@ def client_with_lab( client.logout() -@pytest.fixture(scope='module') -def wild_type_experiment(client_with_lab: TeselaGenClient) -> typing.Generator[Dict[str, Any], None, None]: - """Creates an experiment for "Wild Type" data and destroys it when finished.""" - # set-up - experiment_name = 'Test multiomics data for WT Strain' - experiment = client_with_lab.test.create_experiment(experiment_name=experiment_name) +# @pytest.fixture(scope='module') +# def wild_type_experiment(client_with_lab: TeselaGenClient) -> typing.Generator[Dict[str, Any], None, None]: +# """Creates an experiment for "Wild Type" data and destroys it when finished.""" +# # set-up +# experiment_name = 'Test multiomics data for WT Strain' +# experiment = client_with_lab.test.create_experiment(experiment_name=experiment_name) - # yield - yield experiment +# # yield +# yield experiment - # tear-down - client_with_lab.test.delete_experiment(experiment['id']) +# # tear-down +# client_with_lab.test.delete_experiment(experiment['id']) -@pytest.fixture(scope="module") -def bio_engineered_experiment(client_with_lab: TeselaGenClient) -> typing.Generator[Dict[str, Any], None, None]: - """Creates an experiment for "Bio Engineered" data and destroys it when finished.""" - # set-up - experiment_name = 'Test multiomics data for BE Strain' - experiment = client_with_lab.test.create_experiment(experiment_name=experiment_name) +# @pytest.fixture(scope="module") +# def bio_engineered_experiment(client_with_lab: TeselaGenClient) -> typing.Generator[Dict[str, Any], None, None]: +# """Creates an experiment for "Bio Engineered" data and destroys it when finished.""" +# # set-up +# experiment_name = 'Test multiomics data for BE Strain' +# experiment = client_with_lab.test.create_experiment(experiment_name=experiment_name) - # yield - yield experiment +# # yield +# yield experiment - # tear-down - client_with_lab.test.delete_experiment(experiment['id']) +# # tear-down +# client_with_lab.test.delete_experiment(experiment['id']) @pytest.fixture(scope='module') @@ -535,6 +535,7 @@ def test_experiment_description_upload( assert 'importId' in response assert 'message' in response + @pytest.mark.skip(reason="Experiments are currently disabled, we should implement this without them") def test_optical_density_upload( self, optical_density_upload, @@ -549,6 +550,7 @@ def test_optical_density_upload( ] assert len(filtered_assays) == 1, 'Expecting just one assay for this assertion' + @pytest.mark.skip(reason="Experiments are currently disabled, we should implement this without them") def test_upload_external_metabolites( self, upload_external_metabolites, @@ -563,6 +565,7 @@ def test_upload_external_metabolites( ] assert len(filtered_assays) == 1, 'Expecting just one assay for this assertion' + @pytest.mark.skip(reason="Experiments are currently disabled, we should implement this without them") def test_upload_transcriptomics( self, upload_transcriptomics, @@ -577,6 +580,7 @@ def test_upload_transcriptomics( ] assert len(filtered_assays) == 1, 'Expecting just one assay for this assertion' + @pytest.mark.skip(reason="Experiments are currently disabled, we should implement this without them") def test_download_data( self, upload_transcriptomics, @@ -609,6 +613,7 @@ def test_download_data( # @pytest.mark.skip(reason=("These endpoints are under maintenance on the platform. " # "This should be solved in the following updates. " # "Please, contact the TeselaGen team for more information. ")) + @pytest.mark.skip(reason="Experiments are currently disabled, we should implement this without them") def test_download_file( self, optical_density_upload, diff --git a/teselagen/api/tests/test_test_client.py b/teselagen/api/tests/test_test_client.py index faea022..9f7aa0c 100644 --- a/teselagen/api/tests/test_test_client.py +++ b/teselagen/api/tests/test_test_client.py @@ -37,30 +37,11 @@ # TEST_FILE_CONTENTS: str = "Line,Teselagen Example Descriptor 1,Teselagen Example Descriptor 2,Teselagen Example Target,Teselagen Example Target Metric\n1,A0,B1,1,ug/mL\n2,A0,B2,2,ug/mL\n3,A0,B3,3,ug/mL\n4,A0,B5,5,ug/mL\n5,A0,B6,6,ug/mL\n6,A0,B9,9,ug/mL\n7,A0,B10,10,ug/mL\n8,A0,B11,11,ug/mL\n9,A0,B12,12,ug/mL\n10,A0,B13,13,ug/mL\n11,A0,B14,14,ug/mL\n12,A0,B15,15,ug/mL\n13,A0,B17,17,ug/mL\n14,A0,B18,18,ug/mL\n15,A1,B0,1,ug/mL\n16,A1,B2,3,ug/mL\n17,A1,B3,4,ug/mL\n18,A1,B5,6,ug/mL\n19,A1,B6,7,ug/mL\n20,A1,B7,8,ug/mL\n21,A1,B8,9,ug/mL\n22,A1,B11,12,ug/mL\n23,A1,B12,13,ug/mL\n24,A1,B13,14,ug/mL\n25,A1,B14,15,ug/mL\n26,A1,B15,16,ug/mL\n27,A1,B16,17,ug/mL\n28,A1,B17,18,ug/mL\n29,A1,B18,19,ug/mL\n30,A1,B19,20,ug/mL\n31,A2,B0,2,ug/mL\n32,A2,B1,3,ug/mL\n33,A2,B2,4,ug/mL\n34,A2,B3,5,ug/mL\n35,A2,B5,7,ug/mL\n36,A2,B6,8,ug/mL\n37,A2,B8,10,ug/mL\n38,A2,B9,11,ug/mL\n39,A2,B10,12,ug/mL\n40,A2,B12,14,ug/mL\n41,A2,B13,15,ug/mL\n42,A2,B14,16,ug/mL\n43,A2,B15,17,ug/mL\n44,A2,B16,18,ug/mL\n45,A2,B17,19,ug/mL\n46,A2,B18,20,ug/mL\n47,A3,B0,3,ug/mL\n48,A3,B2,5,ug/mL\n49,A3,B3,6,ug/mL\n50,A3,B4,7,ug/mL\n51,A3,B5,8,ug/mL\n52,A3,B6,9,ug/mL\n53,A3,B7,10,ug/mL\n54,A3,B9,12,ug/mL\n55,A3,B10,13,ug/mL\n56,A3,B11,14,ug/mL\n57,A3,B12,15,ug/mL\n58,A3,B13,16,ug/mL\n59,A3,B14,17,ug/mL\n60,A3,B15,18,ug/mL\n61,A3,B16,19,ug/mL\n62,A3,B17,20,ug/mL\n63,A3,B18,21,ug/mL\n64,A3,B19,22,ug/mL\n65,A4,B1,5,ug/mL\n66,A4,B2,6,ug/mL\n67,A4,B3,7,ug/mL\n68,A4,B4,8,ug/mL\n69,A4,B5,9,ug/mL\n70,A4,B6,10,ug/mL\n71,A4,B7,11,ug/mL\n72,A4,B8,12,ug/mL\n73,A4,B10,14,ug/mL\n74,A4,B11,15,ug/mL\n75,A4,B12,16,ug/mL\n76,A4,B13,17,ug/mL\n77,A4,B14,18,ug/mL\n78,A4,B16,20,ug/mL\n79,A4,B18,22,ug/mL\n80,A4,B19,23,ug/mL\n81,A5,B0,5,ug/mL\n82,A5,B1,6,ug/mL\n83,A5,B2,7,ug/mL\n84,A5,B3,8,ug/mL\n85,A5,B4,9,ug/mL\n86,A5,B6,11,ug/mL\n87,A5,B7,12,ug/mL\n88,A5,B9,14,ug/mL\n89,A5,B10,15,ug/mL\n90,A5,B11,16,ug/mL\n91,A5,B12,17,ug/mL\n92,A5,B13,18,ug/mL\n93,A5,B14,19,ug/mL\n94,A5,B15,20,ug/mL\n95,A5,B16,21,ug/mL\n96,A5,B17,22,ug/mL\n97,A5,B18,23,ug/mL\n98,A5,B19,24,ug/mL\n99,A6,B0,6,ug/mL\n100,A6,B1,7,ug/mL\n101,A6,B2,8,ug/mL\n102,A6,B6,12,ug/mL\n103,A6,B7,13,ug/mL\n104,A6,B8,14,ug/mL\n105,A6,B9,15,ug/mL\n106,A6,B10,16,ug/mL\n107,A6,B11,17,ug/mL\n108,A6,B12,18,ug/mL\n109,A6,B13,19,ug/mL\n110,A6,B14,20,ug/mL\n111,A6,B15,21,ug/mL\n112,A6,B17,23,ug/mL\n113,A6,B18,24,ug/mL\n114,A6,B19,25,ug/mL\n115,A7,B0,7,ug/mL\n116,A7,B2,9,ug/mL\n117,A7,B3,10,ug/mL\n118,A7,B4,11,ug/mL\n119,A7,B5,12,ug/mL\n120,A7,B6,13,ug/mL\n121,A7,B7,14,ug/mL\n122,A7,B9,16,ug/mL\n123,A7,B10,17,ug/mL\n124,A7,B11,18,ug/mL\n125,A7,B12,19,ug/mL\n126,A7,B14,21,ug/mL\n127,A7,B16,23,ug/mL\n128,A7,B18,25,ug/mL\n129,A7,B19,26,ug/mL\n130,A8,B0,8,ug/mL\n131,A8,B3,11,ug/mL\n132,A8,B5,13,ug/mL\n133,A8,B6,14,ug/mL\n134,A8,B7,15,ug/mL\n135,A8,B9,17,ug/mL\n136,A8,B10,18,ug/mL\n137,A8,B11,19,ug/mL\n138,A8,B12,20,ug/mL\n139,A8,B14,22,ug/mL\n140,A8,B15,23,ug/mL\n141,A8,B18,26,ug/mL\n142,A8,B19,27,ug/mL\n143,A9,B3,12,ug/mL\n144,A9,B4,13,ug/mL\n145,A9,B5,14,ug/mL\n146,A9,B6,15,ug/mL\n147,A9,B8,17,ug/mL\n148,A9,B10,19,ug/mL\n149,A9,B11,20,ug/mL\n150,A9,B12,21,ug/mL\n151,A9,B13,22,ug/mL\n152,A9,B14,23,ug/mL\n153,A9,B15,24,ug/mL\n154,A9,B16,25,ug/mL\n155,A9,B19,28,ug/mL\n156,A10,B0,10,ug/mL\n157,A10,B1,11,ug/mL\n158,A10,B3,13,ug/mL\n159,A10,B5,15,ug/mL\n160,A10,B7,17,ug/mL\n161,A10,B9,19,ug/mL\n162,A10,B10,20,ug/mL\n163,A10,B11,21,ug/mL\n164,A10,B12,22,ug/mL\n165,A10,B13,23,ug/mL\n166,A10,B14,24,ug/mL\n167,A10,B15,25,ug/mL\n168,A10,B17,27,ug/mL\n169,A10,B19,29,ug/mL\n170,A11,B0,11,ug/mL\n171,A11,B1,12,ug/mL\n172,A11,B2,13,ug/mL\n173,A11,B3,14,ug/mL\n174,A11,B4,15,ug/mL\n175,A11,B5,16,ug/mL\n176,A11,B6,17,ug/mL\n177,A11,B8,19,ug/mL\n178,A11,B10,21,ug/mL\n179,A11,B11,22,ug/mL\n180,A11,B12,23,ug/mL\n181,A11,B13,24,ug/mL\n182,A11,B15,26,ug/mL\n183,A11,B16,27,ug/mL\n184,A11,B17,28,ug/mL\n185,A11,B18,29,ug/mL\n186,A12,B0,12,ug/mL\n187,A12,B1,13,ug/mL\n188,A12,B2,14,ug/mL\n189,A12,B3,15,ug/mL\n190,A12,B5,17,ug/mL\n191,A12,B6,18,ug/mL\n192,A12,B7,19,ug/mL\n193,A12,B8,20,ug/mL\n194,A12,B9,21,ug/mL\n195,A12,B10,22,ug/mL\n196,A12,B11,23,ug/mL\n197,A12,B12,24,ug/mL\n198,A12,B14,26,ug/mL\n199,A12,B15,27,ug/mL\n200,A12,B17,29,ug/mL\n201,A12,B18,30,ug/mL\n202,A12,B19,31,ug/mL\n203,A13,B0,13,ug/mL\n204,A13,B1,14,ug/mL\n205,A13,B2,15,ug/mL\n206,A13,B3,16,ug/mL\n207,A13,B5,18,ug/mL\n208,A13,B6,19,ug/mL\n209,A13,B8,21,ug/mL\n210,A13,B9,22,ug/mL\n211,A13,B10,23,ug/mL\n212,A13,B11,24,ug/mL\n213,A13,B12,25,ug/mL\n214,A13,B15,28,ug/mL\n215,A13,B16,29,ug/mL\n216,A13,B18,31,ug/mL\n217,A13,B19,32,ug/mL\n218,A14,B1,15,ug/mL\n219,A14,B4,18,ug/mL\n220,A14,B5,19,ug/mL\n221,A14,B6,20,ug/mL\n222,A14,B9,23,ug/mL\n223,A14,B10,24,ug/mL\n224,A14,B11,25,ug/mL\n225,A14,B12,26,ug/mL\n226,A14,B13,27,ug/mL\n227,A14,B14,28,ug/mL\n228,A14,B15,29,ug/mL\n229,A14,B16,30,ug/mL\n230,A14,B17,31,ug/mL\n231,A14,B18,32,ug/mL\n232,A14,B19,33,ug/mL\n233,A15,B0,15,ug/mL\n234,A15,B1,16,ug/mL\n235,A15,B2,17,ug/mL\n236,A15,B3,18,ug/mL\n237,A15,B5,20,ug/mL\n238,A15,B6,21,ug/mL\n239,A15,B7,22,ug/mL\n240,A15,B9,24,ug/mL\n241,A15,B11,26,ug/mL\n242,A15,B12,27,ug/mL\n243,A15,B13,28,ug/mL\n244,A15,B14,29,ug/mL\n245,A15,B16,31,ug/mL\n246,A15,B17,32,ug/mL\n247,A15,B19,34,ug/mL\n248,A16,B0,16,ug/mL\n249,A16,B2,18,ug/mL\n250,A16,B3,19,ug/mL\n251,A16,B4,20,ug/mL\n252,A16,B5,21,ug/mL\n253,A16,B6,22,ug/mL\n254,A16,B7,23,ug/mL\n255,A16,B8,24,ug/mL\n256,A16,B9,25,ug/mL\n257,A16,B10,26,ug/mL\n258,A16,B11,27,ug/mL\n259,A16,B12,28,ug/mL\n260,A16,B13,29,ug/mL\n261,A16,B14,30,ug/mL\n262,A16,B15,31,ug/mL\n263,A16,B17,33,ug/mL\n264,A16,B18,34,ug/mL\n265,A16,B19,35,ug/mL\n266,A17,B0,17,ug/mL\n267,A17,B2,19,ug/mL\n268,A17,B4,21,ug/mL\n269,A17,B5,22,ug/mL\n270,A17,B6,23,ug/mL\n271,A17,B8,25,ug/mL\n272,A17,B9,26,ug/mL\n273,A17,B10,27,ug/mL\n274,A17,B11,28,ug/mL\n275,A17,B12,29,ug/mL\n276,A17,B13,30,ug/mL\n277,A17,B14,31,ug/mL\n278,A17,B15,32,ug/mL\n279,A17,B16,33,ug/mL\n280,A17,B17,34,ug/mL\n281,A17,B18,35,ug/mL\n282,A18,B0,18,ug/mL\n283,A18,B1,19,ug/mL\n284,A18,B2,20,ug/mL\n285,A18,B3,21,ug/mL\n286,A18,B4,22,ug/mL\n287,A18,B6,24,ug/mL\n288,A18,B7,25,ug/mL\n289,A18,B8,26,ug/mL\n290,A18,B9,27,ug/mL\n291,A18,B11,29,ug/mL\n292,A18,B12,30,ug/mL\n293,A18,B13,31,ug/mL\n294,A18,B14,32,ug/mL\n295,A18,B15,33,ug/mL\n296,A18,B16,34,ug/mL\n297,A18,B17,35,ug/mL\n298,A18,B18,36,ug/mL\n299,A19,B0,19,ug/mL\n300,A19,B1,20,ug/mL\n301,A19,B3,22,ug/mL\n302,A19,B4,23,ug/mL\n303,A19,B5,24,ug/mL\n304,A19,B6,25,ug/mL\n305,A19,B7,26,ug/mL\n306,A19,B9,28,ug/mL\n307,A19,B10,29,ug/mL\n308,A19,B11,30,ug/mL\n309,A19,B12,31,ug/mL\n310,A19,B13,32,ug/mL\n311,A19,B14,33,ug/mL\n312,A19,B16,35,ug/mL\n313,A19,B19,38,ug/mL" -# Default IDs for testing purposes : -# experimentId = 1 -# parserId = 1 class TestTESTClient: """Tests for the TeselaGen Client.""" - # @pytest.fixture - # def lab_id( - # self, - # client: TeselaGenClient, - # ) -> int: - # """Get the lab id used for testing. - - # Returns: - # (int) : The laboratory identifier used for testing. - # """ - # available_labs = client.get_laboratories() - # # _lab_id: int = 1 - # client.select_laboratory("The Test Lab") - - # return available_labs[0]['id'] - @pytest.fixture def select_laboratory( self, @@ -71,18 +52,6 @@ def select_laboratory( # lab_id: int = available_labs[0]['id'] client.select_laboratory(lab_name="The Test Lab") - @pytest.fixture - def experiment_id( - self, - experiment: Mapping[str, Any], - ) -> str: - """Get the experiment id used for testing. - - Returns: - (int) : The experiment identifier used for testing. - """ - return experiment['id'] - @pytest.fixture def assay_id(self) -> int: """Get the assay id used for testing. @@ -92,141 +61,23 @@ def assay_id(self) -> int: """ return 1 - @pytest.fixture - def experiment( - self, - request: FixtureRequest, - logged_client: TeselaGenClient, - select_laboratory, - ) -> typing.Generator[Mapping[str, Any], None, None]: - client: TESTClient = logged_client.test - test_name: str = request.node.name - experiment_name: str = f'Python Test Client Experiment - Test: {test_name} - Run at: {datetime.now()} ' - experiment = client.create_experiment(experiment_name=experiment_name) - - yield experiment - - # Tear down - experiment_id: str = experiment['id'] - client.delete_experiment(experiment_id=experiment_id) - @pytest.fixture def assay( self, logged_client: TeselaGenClient, - experiment: Mapping[str, Any], select_laboratory, ) -> Mapping[str, Any]: client: TESTClient = logged_client.test - experiment_id: str = experiment['id'] assay_name: str = 'Python Test Client Assay' # TODO : We may need to update this, probably with a parser or parser_id fixture parser_id: Optional[int] = None return client.create_assay( - experiment_id=experiment_id, + # experiment_id=experiment_id, assay_name=assay_name, parser_id=parser_id, ) - def test_class_attributes(self) -> None: - # We check if the class inherit the parents methods. - - # parent_class_methods: List[str] = [ - # "register", - # "login", - # "logout", - # "get_server_status", - # "create_token", - # "update_token", - # "get_api_info", - # "get_current_user", - # "get_laboratories", - # "select_laboratory", - # "unselect_laboratory", - # ] - - # We check if the class has the required methods. - - experiment_methods: List[str] = [ - 'get_experiments', - 'create_experiment', - 'delete_experiment', - ] - - assay_methods: List[str] = [ - 'get_assays', - 'create_assay', - 'delete_assay', - ] - - file_methods: List[str] = [ - 'get_files_info', - 'upload_file', - 'download_file', - 'delete_file', - ] - - metadata_methods: List[str] = [ - 'get_metadata', - 'create_metadata', - 'delete_metadata', - ] - - attributes: List[str] = [ - # *parent_class_methods, - *experiment_methods, - *assay_methods, - *file_methods, - *metadata_methods, - ] - - assert all(hasattr(TESTClient, attribute) for attribute in attributes) - - def test_instance_attributes( - self, - logged_client: TeselaGenClient, - ) -> None: - # We check if the client inherit the required parents attributes. - # parent_class_attributes: List[str] = ['labs_url'] - - # We check if the client has the required attributes. - - experiment_attributes: List[str] = [ - 'get_experiments_url', - 'create_experiment_url', - 'delete_experiment_url', - ] - - assay_attributes: List[str] = [ - 'get_assays_url', - 'get_assays_by_experiment_url', - 'create_assay_url', - 'delete_assay_url', - ] - - file_attributes: List[str] = [ - 'get_files_info_url', - 'get_file_data_url', - 'delete_file_url', - 'upload_file_url', - 'upload_file_into_assay_url', - ] - - metadata_attributes: List[str] = [ - 'get_metadata_url', - 'create_metadata_url', - 'delete_metadata_url', - ] - - attributes: List[str] = [ - # *parent_class_attributes, - *experiment_attributes, - *assay_attributes, - *file_attributes, - *metadata_attributes, - ] - - assert all(hasattr(logged_client.test, attribute) for attribute in attributes) + def test_login( self, @@ -240,8 +91,6 @@ def test_login( # LOGIN client.login( - # username=credentials["test_user"], - # passwd=credentials["test_password"], expiration_time=expiration_time) # After login, the client has tokens @@ -249,24 +98,6 @@ def test_login( assert api_token_name in client.headers.keys() assert isinstance(client.headers[api_token_name], str) - def test_create_experiment( - self, - experiment: Mapping[str, Any], - ) -> None: - response = experiment - assert isinstance(response, dict) - assert 'id' in response.keys() - assert response['id'] is not None - - def test_delete_experiment( - self, - logged_client: TeselaGenClient, - experiment: Mapping[str, Any], - ) -> None: - client: TESTClient = logged_client.test - experiment_id: str = experiment['id'] - response = client.delete_experiment(experiment_id=experiment_id) - assert response is None def test_create_assay( self, @@ -275,7 +106,6 @@ def test_create_assay( response = assay assert isinstance(response, dict) assert 'id' in response.keys() - assert 'name' in response.keys() assert response['id'] is not None def test_delete_assay( @@ -290,32 +120,16 @@ def test_delete_assay( assert response['id'] == assay_id, 'Error deleting assay.' - def test_get_experiments( - self, - logged_client: TeselaGenClient, - select_laboratory, - experiment - ) -> None: - client: TESTClient = logged_client.test - response = client.get_experiments() - - assert isinstance(response, list) - assert len(response) > 0 - assert all(isinstance(element, dict) for element in response) - assert all( - key in element.keys() and element[key] is not None for element in response for key in ['id', 'name']) - # assert all(element[key] is not None for element in response for key in ["id", "name"]) def test_get_assays( self, logged_client: TeselaGenClient, - experiment_id: str, select_laboratory, assay: List[Mapping[str, Any]], ) -> None: client: TESTClient = logged_client.test - response = client.get_assays(experiment_id=experiment_id) + response = client.get_assays() assert isinstance(response, list) # NOTE: It may be an empty list (?) @@ -341,7 +155,7 @@ def test_get_files( assert all(isinstance(element, dict) for element in response) # TODO: We should expect an "assay" key that may be None - assert all(key in element.keys() for element in response for key in ['id', 'name', 'assay', 'experiment']) + assert all(key in element.keys() for element in response for key in ['id', 'name', 'assay']) def test_upload_file( self, @@ -358,7 +172,7 @@ def test_upload_file( assay_id=assay_id, ) - assert all(key in ['id', 'importStatus', 'name', 'assay', 'experiment'] for key in response) + assert all(key in ['id', 'importStatus', 'name', 'assay'] for key in response) def test_download_file( self, @@ -438,7 +252,6 @@ def test_upload_assays( filename: str = 'test_data.csv' contents = TEST_FILE_CONTENTS assay_name: str = 'test_name' - experiment_id: str = '1' parser_id: str = '1' number_of_previous_assays = len(client.get_assays(experiment_id=experiment_id)) @@ -446,13 +259,12 @@ def test_upload_assays( uploaded_assay_id = client.upload_assay( filename=filename, contents=contents, - experiment_id=experiment_id, parser_id=parser_id, assay_name=assay_name, ) assert isinstance(uploaded_assay_id, int) - number_of_current_assays = len(client.get_assays(experiment_id=experiment_id)) + number_of_current_assays = len(client.get_assays()) assert number_of_current_assays == number_of_previous_assays + 1 # ASSAY LENGTH diff --git a/teselagen/examples/pytested/CRISPR-Tool.ipynb b/teselagen/examples/CRISPR-Tool.ipynb similarity index 97% rename from teselagen/examples/pytested/CRISPR-Tool.ipynb rename to teselagen/examples/CRISPR-Tool.ipynb index 483c17a..4d1a61a 100644 --- a/teselagen/examples/pytested/CRISPR-Tool.ipynb +++ b/teselagen/examples/CRISPR-Tool.ipynb @@ -9,6 +9,15 @@ "" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "⚠️ This notebook is currently not working as API endpoint needs some updates\n", + "
" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -28,24 +37,14 @@ "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.9/dist-packages/single_version/ver.py:38: ResourceWarning: unclosed file <_io.TextIOWrapper name='/usr/local/lib/python3.9/dist-packages/pyproject.toml' mode='r' encoding='UTF-8'>\n", - " return found.group(1)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "/usr/local/lib/python3.9/dist-packages/single_version/ver.py:38: ResourceWarning: unclosed file <_io.TextIOWrapper name='/home/pyproject.toml' mode='r' encoding='UTF-8'>\n", - " return found.group(1)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "python version : 3.9.13\n", - "pandas version : 1.4.2\n" - ] + "data": { + "text/plain": [ + "python version : 3.11.6\n", + "pandas version : 2.2.3\n" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ diff --git a/teselagen/examples/pytested/Closing-the-DBTL-Cycle.ipynb b/teselagen/examples/pytested/Closing-the-DBTL-Cycle.ipynb index a83663e..236f3dc 100644 --- a/teselagen/examples/pytested/Closing-the-DBTL-Cycle.ipynb +++ b/teselagen/examples/pytested/Closing-the-DBTL-Cycle.ipynb @@ -43,8 +43,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "python version : 3.9.13\n", - "pandas version : 1.4.2\n" + "python version : 3.11.6\n", + "pandas version : 2.2.3\n" ] } ], @@ -85,7 +85,7 @@ "output_type": "stream", "text": [ "Client ready. Please login\n", - "Session active at https://rc.teselagen.com\n", + "Connection Accepted at http://host.docker.internal:3000\n", "Selected Lab: The Test Lab\n" ] } @@ -107,19 +107,19 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Model id e4baedd7-0a17-4382-8fdc-9b6baf87c43e, name: Teselagen Example Evolutive Model\n" + "Model id 1c045df0-5c98-4a34-be5c-858c6338dda0, name: TeselaGen Example Evolutive Model\n" ] } ], "source": [ - "search_for_name = \"Teselagen Example Evolutive Model\"\n", + "search_for_name = \"TeselaGen Example Evolutive Model\"\n", "evolution_models_info = client.discover.get_models_by_type('evolutive')\n", "model_id = -1\n", "\n", @@ -141,7 +141,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -165,9 +165,9 @@ " \n", " \n", " \n", - " Teselagen Enzyme A\n", - " Teselagen Enzyme B\n", - " Production\n", + " Enzyme A\n", + " Enzyme B\n", + " Production[concentration]\n", " prediction\n", " sigma\n", " acq\n", @@ -178,142 +178,129 @@ " \n", " \n", " 0\n", - " Variant A1\n", - " Variant B3\n", + " Variant A0\n", + " Variant B5\n", " NaN\n", - " 4.842277\n", - " 3.142049\n", - " 0.127976\n", + " 5.857349\n", + " 3.551383\n", + " 2.257864e-01\n", " True\n", - " 3.0\n", + " 0.0\n", " \n", " \n", " 1\n", - " Variant A0\n", + " Variant A1\n", " Variant B5\n", " NaN\n", - " 5.172261\n", - " 3.389486\n", - " 0.208031\n", + " 6.110863\n", + " 3.082977\n", + " 1.629062e-01\n", " True\n", - " 4.0\n", + " 1.0\n", " \n", " \n", " 2\n", - " Variant A4\n", - " Variant B2\n", + " Variant A5\n", + " Variant B0\n", " NaN\n", - " 4.678120\n", - " 2.237455\n", - " 0.020480\n", + " 6.376794\n", + " 2.555047\n", + " 9.812427e-02\n", " True\n", - " 8.0\n", + " 2.0\n", " \n", " \n", " 3\n", - " Variant A2\n", - " Variant B3\n", + " Variant A0\n", + " Variant B4\n", " NaN\n", - " 5.693773\n", - " 2.384573\n", - " 0.082872\n", + " 3.959335\n", + " 2.732824\n", + " 1.438397e-02\n", " True\n", - " 9.0\n", + " 3.0\n", " \n", " \n", " 4\n", " Variant A4\n", " Variant B3\n", " NaN\n", - " 6.224357\n", - " 2.517428\n", - " 0.160054\n", + " 5.813882\n", + " 1.128252\n", + " 4.040040e-05\n", " True\n", - " 1.0\n", + " 4.0\n", " \n", " \n", " 5\n", - " Variant A5\n", - " Variant B4\n", - " NaN\n", - " 6.179204\n", - " 2.372436\n", - " 0.125915\n", - " True\n", - " 2.0\n", - " \n", - " \n", - " 6\n", - " Variant A3\n", - " Variant B5\n", + " Variant A0\n", + " Variant B3\n", " NaN\n", - " 7.085248\n", - " 2.010375\n", - " 0.168389\n", + " 2.699689\n", + " 1.992503\n", + " 7.369750e-05\n", " True\n", " 5.0\n", " \n", " \n", - " 7\n", - " Variant A4\n", - " Variant B4\n", + " 6\n", + " Variant A2\n", + " Variant B1\n", " NaN\n", - " 6.287957\n", - " 2.238001\n", - " 0.112734\n", + " 4.126216\n", + " 1.259064\n", + " 5.724000e-07\n", " True\n", " 6.0\n", " \n", " \n", - " 8\n", - " Variant A5\n", - " Variant B1\n", + " 7\n", + " Variant A2\n", + " Variant B0\n", " NaN\n", - " 4.789871\n", - " 2.664990\n", - " 0.059986\n", + " 3.407090\n", + " 1.268080\n", + " 3.530000e-08\n", " True\n", " 7.0\n", " \n", " \n", - " 9\n", - " Variant A1\n", - " Variant B5\n", + " 8\n", + " Variant A0\n", + " Variant B0\n", " NaN\n", - " 6.544949\n", - " 2.851464\n", - " 0.290311\n", + " 1.986438\n", + " 1.226591\n", + " 0.000000e+00\n", " True\n", - " 0.0\n", + " 8.0\n", " \n", " \n", "\n", "" ], "text/plain": [ - " Teselagen Enzyme A Teselagen Enzyme B Production prediction sigma \\\n", - "0 Variant A1 Variant B3 NaN 4.842277 3.142049 \n", - "1 Variant A0 Variant B5 NaN 5.172261 3.389486 \n", - "2 Variant A4 Variant B2 NaN 4.678120 2.237455 \n", - "3 Variant A2 Variant B3 NaN 5.693773 2.384573 \n", - "4 Variant A4 Variant B3 NaN 6.224357 2.517428 \n", - "5 Variant A5 Variant B4 NaN 6.179204 2.372436 \n", - "6 Variant A3 Variant B5 NaN 7.085248 2.010375 \n", - "7 Variant A4 Variant B4 NaN 6.287957 2.238001 \n", - "8 Variant A5 Variant B1 NaN 4.789871 2.664990 \n", - "9 Variant A1 Variant B5 NaN 6.544949 2.851464 \n", + " Enzyme A Enzyme B Production[concentration] prediction sigma \\\n", + "0 Variant A0 Variant B5 NaN 5.857349 3.551383 \n", + "1 Variant A1 Variant B5 NaN 6.110863 3.082977 \n", + "2 Variant A5 Variant B0 NaN 6.376794 2.555047 \n", + "3 Variant A0 Variant B4 NaN 3.959335 2.732824 \n", + "4 Variant A4 Variant B3 NaN 5.813882 1.128252 \n", + "5 Variant A0 Variant B3 NaN 2.699689 1.992503 \n", + "6 Variant A2 Variant B1 NaN 4.126216 1.259064 \n", + "7 Variant A2 Variant B0 NaN 3.407090 1.268080 \n", + "8 Variant A0 Variant B0 NaN 1.986438 1.226591 \n", "\n", - " acq in_batch priority \n", - "0 0.127976 True 3.0 \n", - "1 0.208031 True 4.0 \n", - "2 0.020480 True 8.0 \n", - "3 0.082872 True 9.0 \n", - "4 0.160054 True 1.0 \n", - "5 0.125915 True 2.0 \n", - "6 0.168389 True 5.0 \n", - "7 0.112734 True 6.0 \n", - "8 0.059986 True 7.0 \n", - "9 0.290311 True 0.0 " + " acq in_batch priority \n", + "0 2.257864e-01 True 0.0 \n", + "1 1.629062e-01 True 1.0 \n", + "2 9.812427e-02 True 2.0 \n", + "3 1.438397e-02 True 3.0 \n", + "4 4.040040e-05 True 4.0 \n", + "5 7.369750e-05 True 5.0 \n", + "6 5.724000e-07 True 6.0 \n", + "7 3.530000e-08 True 7.0 \n", + "8 0.000000e+00 True 8.0 " ] }, "metadata": {}, @@ -351,21 +338,21 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Generating design using 10 candidates\n" + "Generating design using 9 candidates\n" ] } ], "source": [ "design = build_design_from_candidates(\n", " candidates_data=data.to_dict(orient=\"records\"),\n", - " bin_cols=['Teselagen Enzyme A', 'Teselagen Enzyme B'],\n", + " bin_cols=['Enzyme A', 'Enzyme B'],\n", " name=\"Closing DBTL Example\",\n", " priority_col='priority',\n", ")" @@ -387,13 +374,13 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'id': '7209c4f3-88a0-4510-a345-d3f7571c0065'}" + "{'id': '0c31702a-299e-4c72-9c72-ee2b1ac615f7'}" ] }, "metadata": {}, @@ -430,25 +417,18 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# design_url = f\"{design_client.host_url}/design/client/designs/{response['id']}\"\n", "# display(HTML(f\"\"\"{design_url}\"\"\"))" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "teselagen-mXBWz8ru-py3.11", "language": "python", "name": "python3" }, @@ -462,7 +442,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.11.6" } }, "nbformat": 4, diff --git a/teselagen/examples/pytested/Hello-World-TEST-module.ipynb b/teselagen/examples/pytested/Hello-World-TEST-module.ipynb index d3dd3b6..967ed4c 100644 --- a/teselagen/examples/pytested/Hello-World-TEST-module.ipynb +++ b/teselagen/examples/pytested/Hello-World-TEST-module.ipynb @@ -25,17 +25,17 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "python version : 3.9.13\n", + "python version : 3.11.6\n", "json version : 2.0.9\n", - "pandas version : 1.4.2\n", - "matplotlib version : 3.5.2\n" + "pandas version : 2.2.3\n", + "matplotlib version : 3.9.2\n" ] } ], @@ -51,7 +51,7 @@ "from teselagen.api import TeselaGenClient\n", "from teselagen.utils.utils import get_project_root\n", "\n", - "plt.style.use('seaborn-colorblind')\n", + "plt.style.use('seaborn-v0_8-colorblind')\n", "\n", "print(f\"python version : {platform.python_version()}\")\n", "print(f\"json version : {json.__version__}\")\n", @@ -68,7 +68,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -76,7 +76,7 @@ "output_type": "stream", "text": [ "Client ready. Please login\n", - "Session active at https://rc.teselagen.com\n" + "Connection Accepted at http://host.docker.internal:3000\n" ] } ], @@ -109,29 +109,13 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[{'id': '6a34bee2-9cc2-4ae4-92b3-5673c13cfe1b',\n", - " 'name': 'Teselagen Example Lab'},\n", - " {'id': 'eafd0b92-9369-4f80-81c6-661dc8ef8046', 'name': 'Example Lab'},\n", - " {'id': 'a8acfc8f-98c5-4a32-9fb5-06fa0a4744fe', 'name': '3 Lab'},\n", - " {'id': '91a368cc-bb00-4359-9e8d-2525cc667eec', 'name': 'Green Lab'},\n", - " {'id': 'cfdb5d8e-3cda-43dd-88e5-76bbd5652bcc', 'name': '1 Lab'},\n", - " {'id': 'd63a9bba-a04a-40d9-877c-dddf004f8038', 'name': 'QA Lab'},\n", - " {'id': '9de9ab86-2feb-4f09-97a5-ad8ede3f12cb', 'name': 'Xime Lab'},\n", - " {'id': '4a9cf778-d017-401d-b26a-5669a32a3a9a', 'name': 'User Lab'},\n", - " {'id': '6131985c-661c-407b-ac86-16cc148712d9', 'name': 'TV_Lab'},\n", - " {'id': 'b825f27f-2477-49a6-a33b-65175ad372ef', 'name': 'admin lab'},\n", - " {'id': '04522bbb-f5cd-4ffe-9582-48a2b264d629', 'name': 'Davis Lab 2'},\n", - " {'id': '449103b4-6274-46ca-a203-4ac312ea4947', 'name': 'Davis Lab'},\n", - " {'id': 'b2fdf0ed-fd2e-4c58-9faa-1688dce2d200', 'name': 'CLI TEST'},\n", - " {'id': '08514bfe-b53e-4282-b5ca-31c6fd3beaa1', 'name': 'The Test Lab'},\n", - " {'id': '3743ea9d-3c29-45c3-98eb-ec8bf3988d4c', 'name': 'Teselagen-AR'},\n", - " {'id': '3cb272f1-fa5a-46be-8fcb-4ef2a0a12d19', 'name': 'SUPER LAB'}]" + "[{'id': '89984f4b-d57e-491b-a184-ef5ecce80bb8', 'name': 'The Test Lab'}]" ] }, "metadata": {}, @@ -150,33 +134,6 @@ "At the next cell a lab is selected. The remaining actions of this notebook will be done inside that lab." ] }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Selected Lab: Example Lab\n" - ] - } - ], - "source": [ - "# Select a Laboratory\n", - "client.select_laboratory(lab_name=\"Example Lab\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Experiments\n", - "\n", - "Experiments represents all the studies inside a laboratory. Each experiment can contain several Assays. The **get_experiments** function returns a list of dictionaries that contain experiments information." - ] - }, { "cell_type": "code", "execution_count": 5, @@ -186,40 +143,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "{'id': 'ae879d18-3731-4937-ae58-3b1c18df2685', 'name': 'Common Experiment'}\n", - "{'id': 'c6e7424c-e2c3-4949-8cb4-1d756da4f45a', 'name': 'QA 6495'}\n", - "{'id': 'c275ba2b-a282-4970-85a6-b74ad5b84405', 'name': 'QA 6793'}\n", - "{'id': '40720aa2-398c-4883-83fb-2e0ac35ecacb', 'name': 'New Experiment'}\n", - "{'id': 'a34d31c7-c129-40a3-890a-c9ec0886bd6a', 'name': 'floo'}\n", - "{'id': '43397bc5-042d-4289-abfa-465d4fe190bd', 'name': 'foo'}\n" + "Selected Lab: The Test Lab\n" ] } ], "source": [ - "# Get My Experiments from the selected Laboratory.\n", - "experiments = client.test.get_experiments()\n", - "# Print some of them\n", - "for exp in experiments:\n", - " print(exp)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'id': '2e1ae17d-6ed1-4026-b7dc-00f4cc9a1a4d', 'name': 'Jupyter Experiment'}\n" - ] - } - ], - "source": [ - "# Create a new Experiment in the selected Laboratory.\n", - "new_experiment = client.test.create_experiment(experiment_name=\"Jupyter Experiment\")\n", - "print(new_experiment)" + "# Select a Laboratory\n", + "client.select_laboratory(lab_name=\"The Test Lab\")" ] }, { @@ -261,90 +191,128 @@ " \n", " id\n", " name\n", - " experiment\n", + " __typename\n", " \n", " \n", " \n", " \n", " 0\n", - " a7c46c68-6009-49fb-8f21-ed412429a66b\n", - " Common Assay\n", - " {'id': 'ae879d18-3731-4937-ae58-3b1c18df2685',...\n", + " e396a9e9-4b56-4a96-87cc-53ce5fc64e1e\n", + " Example Assay\n", + " assay\n", " \n", " \n", " 1\n", - " 9c29972e-f9c9-4667-a186-475c195d7417\n", - " QA6495\n", - " {'id': 'c6e7424c-e2c3-4949-8cb4-1d756da4f45a',...\n", + " 213d8180-fa1b-43d0-ae10-df035e98e341\n", + " Python Test Client Assay\n", + " assay\n", " \n", " \n", " 2\n", - " 5b728f44-661f-4255-9873-06a2bc3dbaa1\n", - " QA6793\n", - " {'id': 'c275ba2b-a282-4970-85a6-b74ad5b84405',...\n", + " 65844ae5-d241-4bc5-9c48-acee6ac652e5\n", + " Python Test Client Assay\n", + " assay\n", " \n", " \n", " 3\n", - " 2ad97c41-7d42-42d8-9786-66dc7ff5b1ca\n", - " QA6793\n", - " {'id': 'c275ba2b-a282-4970-85a6-b74ad5b84405',...\n", + " 6d7234b9-04a3-47c4-b3d7-545b4b6dd956\n", + " Python Test Client Assay\n", + " assay\n", " \n", " \n", " 4\n", - " 6121505b-e3c7-4919-b4e4-e6132b069824\n", - " ASas\n", - " {'id': 'c275ba2b-a282-4970-85a6-b74ad5b84405',...\n", + " 2f74b3b2-4b4d-4291-a783-8fdca0c260f2\n", + " Python Test Client Assay\n", + " assay\n", " \n", " \n", " 5\n", - " cb7d5ed2-3443-4801-a84c-0eb901dcb4bc\n", - " test\n", - " {'id': 'c275ba2b-a282-4970-85a6-b74ad5b84405',...\n", + " 173f88a2-7e84-45ff-a7bf-fbb19c2cb2bc\n", + " Python Test Client Assay\n", + " assay\n", " \n", " \n", " 6\n", - " a9bce351-4b76-41d7-8e77-a8b525eeeb78\n", - " New assay\n", - " {'id': '40720aa2-398c-4883-83fb-2e0ac35ecacb',...\n", + " 17fd2928-f182-4bcc-aeac-537001e09f6e\n", + " Python Test Client Assay\n", + " assay\n", " \n", " \n", " 7\n", - " dc64175a-18b7-4416-9039-fb6a44ce32b2\n", - " QA Assay\n", - " {'id': 'ae879d18-3731-4937-ae58-3b1c18df2685',...\n", + " fe0d8951-6969-4cf2-b8ef-146463a4a8b7\n", + " Python Test Client Assay\n", + " assay\n", " \n", " \n", " 8\n", - " 9604cf12-24a0-4742-a35f-4b6391aebee9\n", - " Delete Assay\n", - " {'id': 'ae879d18-3731-4937-ae58-3b1c18df2685',...\n", + " 6ba245e1-3cfe-40d5-8faa-7e833724832c\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 9\n", + " 08947bc5-7841-41dc-a1bd-2bd63ed05eeb\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 10\n", + " 77680452-df5e-4439-b664-dd3e8ed0f9e6\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 11\n", + " 88e01d9b-619e-472a-8df7-d3171800693a\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 12\n", + " fe1dca2a-bd50-4909-8594-48d31b6f4719\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 13\n", + " eb7a6701-802a-4dcb-862c-f480a83d2f9a\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 14\n", + " 77ce63f4-6737-4751-857f-b926756eff50\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 15\n", + " 054b624d-dec8-4249-ba0c-9b45b475ba02\n", + " Python Test Client Assay\n", + " assay\n", " \n", " \n", "\n", "" ], "text/plain": [ - " id name \\\n", - "0 a7c46c68-6009-49fb-8f21-ed412429a66b Common Assay \n", - "1 9c29972e-f9c9-4667-a186-475c195d7417 QA6495 \n", - "2 5b728f44-661f-4255-9873-06a2bc3dbaa1 QA6793 \n", - "3 2ad97c41-7d42-42d8-9786-66dc7ff5b1ca QA6793 \n", - "4 6121505b-e3c7-4919-b4e4-e6132b069824 ASas \n", - "5 cb7d5ed2-3443-4801-a84c-0eb901dcb4bc test \n", - "6 a9bce351-4b76-41d7-8e77-a8b525eeeb78 New assay \n", - "7 dc64175a-18b7-4416-9039-fb6a44ce32b2 QA Assay \n", - "8 9604cf12-24a0-4742-a35f-4b6391aebee9 Delete Assay \n", - "\n", - " experiment \n", - "0 {'id': 'ae879d18-3731-4937-ae58-3b1c18df2685',... \n", - "1 {'id': 'c6e7424c-e2c3-4949-8cb4-1d756da4f45a',... \n", - "2 {'id': 'c275ba2b-a282-4970-85a6-b74ad5b84405',... \n", - "3 {'id': 'c275ba2b-a282-4970-85a6-b74ad5b84405',... \n", - "4 {'id': 'c275ba2b-a282-4970-85a6-b74ad5b84405',... \n", - "5 {'id': 'c275ba2b-a282-4970-85a6-b74ad5b84405',... \n", - "6 {'id': '40720aa2-398c-4883-83fb-2e0ac35ecacb',... \n", - "7 {'id': 'ae879d18-3731-4937-ae58-3b1c18df2685',... \n", - "8 {'id': 'ae879d18-3731-4937-ae58-3b1c18df2685',... " + " id name __typename\n", + "0 e396a9e9-4b56-4a96-87cc-53ce5fc64e1e Example Assay assay\n", + "1 213d8180-fa1b-43d0-ae10-df035e98e341 Python Test Client Assay assay\n", + "2 65844ae5-d241-4bc5-9c48-acee6ac652e5 Python Test Client Assay assay\n", + "3 6d7234b9-04a3-47c4-b3d7-545b4b6dd956 Python Test Client Assay assay\n", + "4 2f74b3b2-4b4d-4291-a783-8fdca0c260f2 Python Test Client Assay assay\n", + "5 173f88a2-7e84-45ff-a7bf-fbb19c2cb2bc Python Test Client Assay assay\n", + "6 17fd2928-f182-4bcc-aeac-537001e09f6e Python Test Client Assay assay\n", + "7 fe0d8951-6969-4cf2-b8ef-146463a4a8b7 Python Test Client Assay assay\n", + "8 6ba245e1-3cfe-40d5-8faa-7e833724832c Python Test Client Assay assay\n", + "9 08947bc5-7841-41dc-a1bd-2bd63ed05eeb Python Test Client Assay assay\n", + "10 77680452-df5e-4439-b664-dd3e8ed0f9e6 Python Test Client Assay assay\n", + "11 88e01d9b-619e-472a-8df7-d3171800693a Python Test Client Assay assay\n", + "12 fe1dca2a-bd50-4909-8594-48d31b6f4719 Python Test Client Assay assay\n", + "13 eb7a6701-802a-4dcb-862c-f480a83d2f9a Python Test Client Assay assay\n", + "14 77ce63f4-6737-4751-857f-b926756eff50 Python Test Client Assay assay\n", + "15 054b624d-dec8-4249-ba0c-9b45b475ba02 Python Test Client Assay assay" ] }, "metadata": {}, @@ -368,20 +336,20 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'id': 'fa5a73eb-55f1-4e61-9859-f3888f87f8e3', 'name': 'Jupyter Assay', 'experiment': {'id': '2e1ae17d-6ed1-4026-b7dc-00f4cc9a1a4d', 'name': 'Jupyter Experiment'}}\n" + "{'id': '72a979f4-234c-427d-ab21-6e0310af18df'}\n" ] } ], "source": [ "# Create a new Assay within a new experiment\n", - "new_assay = client.test.create_assay(experiment_id=new_experiment['id'], assay_name='Jupyter Assay')\n", + "new_assay = client.test.create_assay(assay_name='Jupyter Assay')\n", "print(new_assay)" ] }, @@ -394,7 +362,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -420,26 +388,135 @@ " \n", " id\n", " name\n", - " experiment\n", + " __typename\n", " \n", " \n", " \n", " \n", " 0\n", - " fa5a73eb-55f1-4e61-9859-f3888f87f8e3\n", + " e396a9e9-4b56-4a96-87cc-53ce5fc64e1e\n", + " Example Assay\n", + " assay\n", + " \n", + " \n", + " 1\n", + " 213d8180-fa1b-43d0-ae10-df035e98e341\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 2\n", + " 65844ae5-d241-4bc5-9c48-acee6ac652e5\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 3\n", + " 6d7234b9-04a3-47c4-b3d7-545b4b6dd956\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 4\n", + " 2f74b3b2-4b4d-4291-a783-8fdca0c260f2\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 5\n", + " 173f88a2-7e84-45ff-a7bf-fbb19c2cb2bc\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 6\n", + " 17fd2928-f182-4bcc-aeac-537001e09f6e\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 7\n", + " fe0d8951-6969-4cf2-b8ef-146463a4a8b7\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 8\n", + " 6ba245e1-3cfe-40d5-8faa-7e833724832c\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 9\n", + " 08947bc5-7841-41dc-a1bd-2bd63ed05eeb\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 10\n", + " 77680452-df5e-4439-b664-dd3e8ed0f9e6\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 11\n", + " 88e01d9b-619e-472a-8df7-d3171800693a\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 12\n", + " fe1dca2a-bd50-4909-8594-48d31b6f4719\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 13\n", + " eb7a6701-802a-4dcb-862c-f480a83d2f9a\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 14\n", + " 77ce63f4-6737-4751-857f-b926756eff50\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 15\n", + " 054b624d-dec8-4249-ba0c-9b45b475ba02\n", + " Python Test Client Assay\n", + " assay\n", + " \n", + " \n", + " 16\n", + " 72a979f4-234c-427d-ab21-6e0310af18df\n", " Jupyter Assay\n", - " {'id': '2e1ae17d-6ed1-4026-b7dc-00f4cc9a1a4d',...\n", + " assay\n", " \n", " \n", "\n", "" ], "text/plain": [ - " id name \\\n", - "0 fa5a73eb-55f1-4e61-9859-f3888f87f8e3 Jupyter Assay \n", - "\n", - " experiment \n", - "0 {'id': '2e1ae17d-6ed1-4026-b7dc-00f4cc9a1a4d',... " + " id name __typename\n", + "0 e396a9e9-4b56-4a96-87cc-53ce5fc64e1e Example Assay assay\n", + "1 213d8180-fa1b-43d0-ae10-df035e98e341 Python Test Client Assay assay\n", + "2 65844ae5-d241-4bc5-9c48-acee6ac652e5 Python Test Client Assay assay\n", + "3 6d7234b9-04a3-47c4-b3d7-545b4b6dd956 Python Test Client Assay assay\n", + "4 2f74b3b2-4b4d-4291-a783-8fdca0c260f2 Python Test Client Assay assay\n", + "5 173f88a2-7e84-45ff-a7bf-fbb19c2cb2bc Python Test Client Assay assay\n", + "6 17fd2928-f182-4bcc-aeac-537001e09f6e Python Test Client Assay assay\n", + "7 fe0d8951-6969-4cf2-b8ef-146463a4a8b7 Python Test Client Assay assay\n", + "8 6ba245e1-3cfe-40d5-8faa-7e833724832c Python Test Client Assay assay\n", + "9 08947bc5-7841-41dc-a1bd-2bd63ed05eeb Python Test Client Assay assay\n", + "10 77680452-df5e-4439-b664-dd3e8ed0f9e6 Python Test Client Assay assay\n", + "11 88e01d9b-619e-472a-8df7-d3171800693a Python Test Client Assay assay\n", + "12 fe1dca2a-bd50-4909-8594-48d31b6f4719 Python Test Client Assay assay\n", + "13 eb7a6701-802a-4dcb-862c-f480a83d2f9a Python Test Client Assay assay\n", + "14 77ce63f4-6737-4751-857f-b926756eff50 Python Test Client Assay assay\n", + "15 054b624d-dec8-4249-ba0c-9b45b475ba02 Python Test Client Assay assay\n", + "16 72a979f4-234c-427d-ab21-6e0310af18df Jupyter Assay assay" ] }, "metadata": {}, @@ -448,7 +525,7 @@ ], "source": [ "# Get All Assays From Experiment with ID=\"experiment_id\"\n", - "assays = pd.DataFrame(client.test.get_assays(experiment_id=new_experiment['id']))\n", + "assays = pd.DataFrame(client.test.get_assays())\n", "display(assays)" ] }, @@ -463,7 +540,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -490,49 +567,43 @@ " id\n", " name\n", " importStatus\n", - " experiment\n", " assay\n", " \n", " \n", " \n", " \n", " 0\n", - " 1a586e7b-376c-4553-9cb9-7b50096968bf\n", - " Assay A.csv\n", - " MAPPING\n", - " None\n", - " None\n", + " f58b6635-7dce-45d9-a457-583d432f318c\n", + " ExampleData.csv\n", + " FINISHED\n", + " {'id': 'e396a9e9-4b56-4a96-87cc-53ce5fc64e1e',...\n", " \n", " \n", " 1\n", - " 0054603b-87f8-415b-8f8a-875d5b121f7e\n", - " test_module_example_20_1_aliquots_multi_meas.csv\n", - " FINISHED\n", - " None\n", + " 223272af-4978-41b7-8ead-59bb628e9281\n", + " example_file.csv\n", + " INPROGRESS\n", " None\n", " \n", " \n", " 2\n", - " 6788554e-5d6f-4c48-b5cb-8b677e2100f7\n", - " test_module_example_100_aliquots_multi_meas.csv\n", - " FINISHED\n", - " None\n", + " 7054b379-ef40-45db-8618-dfeb998279be\n", + " example_file.csv\n", + " INPROGRESS\n", " None\n", " \n", " \n", " 3\n", - " da5bc36a-551f-4a5a-b694-4be6f7bf0cb7\n", - " test_module_example_100_aliquots_multi_meas.csv\n", - " FINISHED\n", - " None\n", + " f62726c0-6292-4d98-88df-d47608d18980\n", + " example_file.csv\n", + " INPROGRESS\n", " None\n", " \n", " \n", " 4\n", - " eb3b7dba-7cce-4c8b-92ee-2a9b0626a0a0\n", - " test_module_example_3_subject_2_meas_refdim.csv\n", - " FINISHED\n", - " None\n", + " b953e69e-0092-4e81-9c64-6e896e4e065c\n", + " example_file.csv\n", + " INPROGRESS\n", " None\n", " \n", " \n", @@ -540,29 +611,22 @@ "" ], "text/plain": [ - " id \\\n", - "0 1a586e7b-376c-4553-9cb9-7b50096968bf \n", - "1 0054603b-87f8-415b-8f8a-875d5b121f7e \n", - "2 6788554e-5d6f-4c48-b5cb-8b677e2100f7 \n", - "3 da5bc36a-551f-4a5a-b694-4be6f7bf0cb7 \n", - "4 eb3b7dba-7cce-4c8b-92ee-2a9b0626a0a0 \n", - "\n", - " name importStatus experiment \\\n", - "0 Assay A.csv MAPPING None \n", - "1 test_module_example_20_1_aliquots_multi_meas.csv FINISHED None \n", - "2 test_module_example_100_aliquots_multi_meas.csv FINISHED None \n", - "3 test_module_example_100_aliquots_multi_meas.csv FINISHED None \n", - "4 test_module_example_3_subject_2_meas_refdim.csv FINISHED None \n", + " id name importStatus \\\n", + "0 f58b6635-7dce-45d9-a457-583d432f318c ExampleData.csv FINISHED \n", + "1 223272af-4978-41b7-8ead-59bb628e9281 example_file.csv INPROGRESS \n", + "2 7054b379-ef40-45db-8618-dfeb998279be example_file.csv INPROGRESS \n", + "3 f62726c0-6292-4d98-88df-d47608d18980 example_file.csv INPROGRESS \n", + "4 b953e69e-0092-4e81-9c64-6e896e4e065c example_file.csv INPROGRESS \n", "\n", - " assay \n", - "0 None \n", - "1 None \n", - "2 None \n", - "3 None \n", - "4 None " + " assay \n", + "0 {'id': 'e396a9e9-4b56-4a96-87cc-53ce5fc64e1e',... \n", + "1 None \n", + "2 None \n", + "3 None \n", + "4 None " ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -576,14 +640,14 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'id': '209540c8-1e2e-426e-a0a5-5695ad8ef3de', 'name': 'example_file.csv', 'importStatus': 'INPROGRESS', 'experiment': {'id': '2e1ae17d-6ed1-4026-b7dc-00f4cc9a1a4d', 'name': 'Jupyter Experiment'}, 'assay': {'id': 'fa5a73eb-55f1-4e61-9859-f3888f87f8e3', 'name': 'Jupyter Assay'}}\n" + "{'id': 'e020ae0d-d91e-4449-83ba-151153b33915', 'name': 'example_file.csv', 'importStatus': 'INPROGRESS', 'assay': {'id': '72a979f4-234c-427d-ab21-6e0310af18df', 'name': 'Jupyter Assay'}}\n" ] } ], @@ -598,7 +662,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -690,7 +754,7 @@ "4 6 ug/mL " ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -713,16 +777,16 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'id': '209540c8-1e2e-426e-a0a5-5695ad8ef3de'}" + "{'id': 'e020ae0d-d91e-4449-83ba-151153b33915'}" ] }, - "execution_count": 13, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -734,16 +798,16 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'id': 'fa5a73eb-55f1-4e61-9859-f3888f87f8e3'}" + "{'id': '72a979f4-234c-427d-ab21-6e0310af18df'}" ] }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -752,42 +816,11 @@ "# Delete an Assay\n", "client.test.delete_assay(assay_id=new_assay['id'])" ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "# Delete an Experiment from the selected laboratory.\n", - "client.test.delete_experiment(experiment_id=new_experiment['id'])" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "# Delete all experiments with the name Jupyter Experiment\n", - "# (if any remains due to uncompleted executions of the notebook)\n", - "# experiments = client.get_experiments()\n", - "# for exp in experiments:\n", - "# if exp['name'] == \"Jupyter Experiment\":\n", - "# client.delete_experiment(experiment_id=exp['id'])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "teselagen-mXBWz8ru-py3.11", "language": "python", "name": "python3" }, @@ -801,7 +834,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.11.6" } }, "nbformat": 4, diff --git a/teselagen/examples/pytested/Hello_World_BUILD_module.ipynb b/teselagen/examples/pytested/Hello_World_BUILD_module.ipynb index f2c2d4f..6781b37 100644 --- a/teselagen/examples/pytested/Hello_World_BUILD_module.ipynb +++ b/teselagen/examples/pytested/Hello_World_BUILD_module.ipynb @@ -39,19 +39,19 @@ "metadata": {}, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Python version: 3.9.13\n", - "TeselaGen's Python Client version: 0.4.8\n" + "/var/folders/5d/j7y9hwmj3hz8dk7qwbnp5k6c0000gn/T/ipykernel_12658/2093691340.py:6: DeprecationWarning: Importing display from IPython.core.display is deprecated since IPython 7.14, please import from IPython display\n", + " from IPython.core.display import display\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "/tmp/ipykernel_88734/2093691340.py:6: DeprecationWarning: Importing display from IPython.core.display is deprecated since IPython 7.14, please import from IPython display\n", - " from IPython.core.display import display\n" + "Python version: 3.11.6\n", + "TeselaGen's Python Client version: 0.4.9\n" ] } ], @@ -71,17 +71,6 @@ "from teselagen.utils.plot_tools import RenderJSON\n" ] }, - { - "cell_type": "code", - "execution_count": 2, - "id": "affef9bf", - "metadata": {}, - "outputs": [], - "source": [ - "# Define the host url address to be used across this notebook\n", - "HOST_URL = \"https://rc.teselagen.com\"" - ] - }, { "cell_type": "markdown", "id": "cb6a847b", @@ -111,17 +100,17 @@ "output_type": "stream", "text": [ "Client ready. Please login\n", - "Session active at https://rc.teselagen.com\n", - "Selected Lab: Example Lab\n" + "Session active at http://host.docker.internal:3000\n", + "Selected Lab: The Test Lab\n" ] } ], "source": [ "# Connect to your teselagen instance by passing it as the 'host_url' argument of TeselaGenClient(host_url=host_url)\n", - "client = TeselaGenClient(host_url=HOST_URL)\n", + "client = TeselaGenClient()\n", "# client = TeselaGenClient()\n", "client.login()\n", - "client.select_laboratory(lab_name=\"Example Lab\")" + "client.select_laboratory(lab_name=\"The Test Lab\")" ] }, { @@ -148,8 +137,8 @@ "text": [ "[\n", " {\n", - " \"id\": \"720b7f40-7cd3-4cd8-a412-589a8a97f5e4\",\n", - " \"name\": \"NEB T7 Express Lys/Iq\",\n", + " \"id\": \"001eccf1-30cf-459a-a700-acd50a38a95d\",\n", + " \"name\": \"Sample 00\",\n", " \"status\": null,\n", " \"sampleTypeCode\": \"REGISTERED_SAMPLE\",\n", " \"sampleType\": {\n", @@ -158,26 +147,26 @@ " \"__typename\": \"sampleType\"\n", " },\n", " \"sampleFormulations\": [],\n", - " \"updatedAt\": \"2023-01-10T18:51:47.437Z\",\n", - " \"createdAt\": \"2023-01-10T18:51:47.437Z\",\n", + " \"updatedAt\": \"2024-10-10T13:17:36.884Z\",\n", + " \"createdAt\": \"2024-10-10T13:17:36.884Z\",\n", " \"taggedItems\": [],\n", " \"material\": {\n", - " \"id\": \"2c199bfa-ca46-4494-b01b-a94230add0ad\",\n", - " \"name\": \"NEB T7 Express Lys/Iq\",\n", + " \"id\": \"a2f321f7-764c-4f03-bfce-6114ed58d5c6\",\n", + " \"name\": \"Mock material 00\",\n", " \"__typename\": \"material\"\n", " },\n", " \"batch\": null,\n", - " \"lab\": null,\n", - " \"user\": {\n", - " \"id\": \"21362f3f-c999-4779-bb08-28c89b08c9e1\",\n", - " \"username\": \"Admin User\",\n", - " \"__typename\": \"user\"\n", + " \"lab\": {\n", + " \"id\": \"sys-common-lab\",\n", + " \"name\": \"Common Lab\",\n", + " \"__typename\": \"lab\"\n", " },\n", + " \"user\": null,\n", " \"__typename\": \"sample\"\n", " },\n", " {\n", - " \"id\": \"0434d9ad-2ab5-4575-b3a5-351829f5a1d5\",\n", - " \"name\": \"NEB T7 Express Lys/Iq\",\n", + " \"id\": \"fda10c27-9a65-402e-912e-87d09aa2bcf8\",\n", + " \"name\": \"Sample 01\",\n", " \"status\": null,\n", " \"sampleTypeCode\": \"REGISTERED_SAMPLE\",\n", " \"sampleType\": {\n", @@ -186,26 +175,26 @@ " \"__typename\": \"sampleType\"\n", " },\n", " \"sampleFormulations\": [],\n", - " \"updatedAt\": \"2023-01-10T18:51:47.437Z\",\n", - " \"createdAt\": \"2023-01-10T18:51:47.437Z\",\n", + " \"updatedAt\": \"2024-10-10T13:17:36.884Z\",\n", + " \"createdAt\": \"2024-10-10T13:17:36.884Z\",\n", " \"taggedItems\": [],\n", " \"material\": {\n", - " \"id\": \"2c199bfa-ca46-4494-b01b-a94230add0ad\",\n", - " \"name\": \"NEB T7 Express Lys/Iq\",\n", + " \"id\": \"00ca71ec-c99a-4930-8c77-232a07d83e76\",\n", + " \"name\": \"Mock material 01\",\n", " \"__typename\": \"material\"\n", " },\n", " \"batch\": null,\n", - " \"lab\": null,\n", - " \"user\": {\n", - " \"id\": \"21362f3f-c999-4779-bb08-28c89b08c9e1\",\n", - " \"username\": \"Admin User\",\n", - " \"__typename\": \"user\"\n", + " \"lab\": {\n", + " \"id\": \"sys-common-lab\",\n", + " \"name\": \"Common Lab\",\n", + " \"__typename\": \"lab\"\n", " },\n", + " \"user\": null,\n", " \"__typename\": \"sample\"\n", " },\n", " {\n", - " \"id\": \"1ac36b35-dfee-45a8-ac32-2da935688b05\",\n", - " \"name\": \"NEB T7 Express Lys/Iq\",\n", + " \"id\": \"4758d5c4-ff50-4f45-b8a0-742234e60c4c\",\n", + " \"name\": \"Sample 02\",\n", " \"status\": null,\n", " \"sampleTypeCode\": \"REGISTERED_SAMPLE\",\n", " \"sampleType\": {\n", @@ -214,26 +203,26 @@ " \"__typename\": \"sampleType\"\n", " },\n", " \"sampleFormulations\": [],\n", - " \"updatedAt\": \"2023-01-10T18:51:47.437Z\",\n", - " \"createdAt\": \"2023-01-10T18:51:47.437Z\",\n", + " \"updatedAt\": \"2024-10-10T13:17:36.884Z\",\n", + " \"createdAt\": \"2024-10-10T13:17:36.884Z\",\n", " \"taggedItems\": [],\n", " \"material\": {\n", - " \"id\": \"2c199bfa-ca46-4494-b01b-a94230add0ad\",\n", - " \"name\": \"NEB T7 Express Lys/Iq\",\n", + " \"id\": \"718e2362-5b9b-4d58-a143-18e8b0a1e547\",\n", + " \"name\": \"Mock material 02\",\n", " \"__typename\": \"material\"\n", " },\n", " \"batch\": null,\n", - " \"lab\": null,\n", - " \"user\": {\n", - " \"id\": \"21362f3f-c999-4779-bb08-28c89b08c9e1\",\n", - " \"username\": \"Admin User\",\n", - " \"__typename\": \"user\"\n", + " \"lab\": {\n", + " \"id\": \"sys-common-lab\",\n", + " \"name\": \"Common Lab\",\n", + " \"__typename\": \"lab\"\n", " },\n", + " \"user\": null,\n", " \"__typename\": \"sample\"\n", " },\n", " {\n", - " \"id\": \"6bb2e918-64ac-4e6e-b275-e6e5188bb3da\",\n", - " \"name\": \"NEB T7 Express Lys/Iq\",\n", + " \"id\": \"b43208e4-0fe9-4824-b041-8c7d37a839ae\",\n", + " \"name\": \"Sample 03\",\n", " \"status\": null,\n", " \"sampleTypeCode\": \"REGISTERED_SAMPLE\",\n", " \"sampleType\": {\n", @@ -242,21 +231,21 @@ " \"__typename\": \"sampleType\"\n", " },\n", " \"sampleFormulations\": [],\n", - " \"updatedAt\": \"2023-01-10T18:51:47.437Z\",\n", - " \"createdAt\": \"2023-01-10T18:51:47.437Z\",\n", + " \"updatedAt\": \"2024-10-10T13:17:36.884Z\",\n", + " \"createdAt\": \"2024-10-10T13:17:36.884Z\",\n", " \"taggedItems\": [],\n", " \"material\": {\n", - " \"id\": \"2c199bfa-ca46-4494-b01b-a94230add0ad\",\n", - " \"name\": \"NEB T7 Express Lys/Iq\",\n", + " \"id\": \"5ee657b1-53fe-4d7b-b3a0-6e228c02069e\",\n", + " \"name\": \"Mock material 03\",\n", " \"__typename\": \"material\"\n", " },\n", " \"batch\": null,\n", - " \"lab\": null,\n", - " \"user\": {\n", - " \"id\": \"21362f3f-c999-4779-bb08-28c89b08c9e1\",\n", - " \"username\": \"Admin User\",\n", - " \"__typename\": \"user\"\n", + " \"lab\": {\n", + " \"id\": \"sys-common-lab\",\n", + " \"name\": \"Common Lab\",\n", + " \"__typename\": \"lab\"\n", " },\n", + " \"user\": null,\n", " \"__typename\": \"sample\"\n", " }\n", "]\n" @@ -316,7 +305,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "720b7f40-7cd3-4cd8-a412-589a8a97f5e4\n" + "001eccf1-30cf-459a-a700-acd50a38a95d\n" ] } ], @@ -345,7 +334,7 @@ "data": { "text/html": [ "\n", - "
\n", + "
\n", " " ] }, @@ -354,7 +343,7 @@ }, { "data": { - "application/javascript": "\n require([\"https://rawgit.com/caldwell/renderjson/master/renderjson.js\"], function() {\n document.getElementById('34056c99-ad69-4dd2-a509-e60a2c09df17').appendChild(renderjson({\"id\": \"720b7f40-7cd3-4cd8-a412-589a8a97f5e4\", \"user\": {\"id\": \"21362f3f-c999-4779-bb08-28c89b08c9e1\", \"username\": \"Admin User\", \"__typename\": \"user\"}, \"sampleTypeCode\": \"REGISTERED_SAMPLE\", \"sampleType\": {\"code\": \"REGISTERED_SAMPLE\", \"name\": \"Registered Sample\", \"__typename\": \"sampleType\"}, \"sampleStatus\": null, \"sampleIsolation\": null, \"sampleProteinPatterns\": [], \"sampleFormulations\": [], \"status\": null, \"name\": \"NEB T7 Express Lys/Iq\", \"sampleAliquotId\": null, \"createdAt\": \"2023-01-10T18:51:47.437Z\", \"updatedAt\": \"2023-01-10T18:51:47.437Z\", \"aliquots\": [], \"taggedItems\": [], \"material\": {\"id\": \"2c199bfa-ca46-4494-b01b-a94230add0ad\", \"name\": \"NEB T7 Express Lys/Iq\", \"provenanceType\": \"registered\", \"materialTypeCode\": \"MICROBIAL\", \"externalReferenceId\": null, \"externalReferenceSystem\": null, \"externalReferenceType\": null, \"strain\": {\"id\": \"2bbfa6af-c493-4725-85fd-f3e61b3f1d56\", \"name\": \"NEB T7 Express Lys/Iq\", \"description\": null, \"biosafetyLevel\": {\"code\": \"N/A\", \"name\": \"N/A\", \"__typename\": \"biosafetyLevel\"}, \"targetOrganismClass\": {\"id\": \"6422c444-19c3-42b3-a9ca-995d93b8dfe9\", \"name\": \"Bacteria\", \"__typename\": \"targetOrganismClass\"}, \"specie\": null, \"genome\": null, \"genotype\": null, \"growthConditionId\": null, \"growthCondition\": null, \"strainFiles\": [], \"strainSelectionMethods\": [], \"strainPlasmids\": [], \"lab\": null, \"createdAt\": \"2020-01-14T16:38:42.764Z\", \"updatedAt\": \"2020-07-08T18:10:00.182Z\", \"user\": {\"id\": \"77cb0d13-89f2-4657-acf9-686960d71d93\", \"username\": \"Siobhan Davis\", \"__typename\": \"user\"}, \"__typename\": \"strain\"}, \"polynucleotideMaterialSequence\": null, \"microbialMaterialMicrobialMaterialPlasmids\": [], \"__typename\": \"material\"}, \"__typename\": \"sample\"}))\n });\n " + "application/javascript": "\n require([\"https://rawgit.com/caldwell/renderjson/master/renderjson.js\"], function() {\n document.getElementById('fb01fcce-3dbb-497e-a15b-86d996ca021a').appendChild(renderjson({\"id\": \"001eccf1-30cf-459a-a700-acd50a38a95d\", \"user\": null, \"sampleTypeCode\": \"REGISTERED_SAMPLE\", \"sampleType\": {\"code\": \"REGISTERED_SAMPLE\", \"name\": \"Registered Sample\", \"__typename\": \"sampleType\"}, \"sampleStatus\": null, \"sampleIsolation\": null, \"sampleProteinPatterns\": [], \"sampleFormulations\": [], \"status\": null, \"name\": \"Sample 00\", \"sampleAliquotId\": null, \"createdAt\": \"2024-10-10T13:17:36.884Z\", \"updatedAt\": \"2024-10-10T13:17:36.884Z\", \"aliquots\": [{\"id\": \"b46b9e03-720f-4357-86fb-7c19e06b3e32\", \"aliquotType\": \"sample-aliquot\", \"aliquotContainer\": {\"id\": \"002e232b-69b6-44a8-a637-c723f567fe47\", \"rowPosition\": 0, \"columnPosition\": 0, \"containerArray\": {\"id\": \"db65c053-bf09-40b4-89fc-765f76becda8\", \"name\": \"Example Wet Plate\", \"__typename\": \"containerArray\"}, \"__typename\": \"aliquotContainer\"}, \"__typename\": \"aliquot\"}], \"taggedItems\": [], \"material\": {\"id\": \"a2f321f7-764c-4f03-bfce-6114ed58d5c6\", \"name\": \"Mock material 00\", \"materialTypeCode\": \"DNA\", \"externalReferenceId\": null, \"externalReferenceSystem\": null, \"externalReferenceType\": null, \"strain\": null, \"polynucleotideMaterialSequence\": null, \"microbialMaterialMicrobialMaterialPlasmids\": [], \"__typename\": \"material\"}, \"__typename\": \"sample\"}))\n });\n " }, "metadata": {}, "output_type": "display_data" @@ -400,28 +389,42 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 28, "id": "df9907ba", "metadata": {}, "outputs": [], "source": [ "USERNAME = \"****@teselagen.com\" # Replace this with your username\n", - "PASSWORD = \"*******\" # Replace this with your password/api-key" + "PASSWORD = \"*******\" # Replace this with your password/api-key\n", + "HOST_URL = \"https://rc-single.teselagen.com\"" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 29, "id": "3aca3f46", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "HOST_URL: http://host.docker.internal:3000\n" + ] + } + ], "source": [ "# Load credentials from file if not set above\n", "if USERNAME == \"****@teselagen.com\":\n", " with open('../../../.credentials', 'r') as f:\n", - " credentials = json.load(f)\n", - " USERNAME = credentials['username'] \n", - " PASSWORD = credentials['password']" + " credentials: dict = json.load(f)\n", + " USERNAME = credentials['username']\n", + " PASSWORD = credentials['password']\n", + " cred_host = credentials.get('host', None)\n", + " if cred_host:\n", + " HOST_URL = cred_host\n", + "\n", + "print(f\"HOST_URL: {HOST_URL}\")" ] }, { @@ -434,7 +437,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 30, "id": "6532da80", "metadata": {}, "outputs": [], @@ -453,13 +456,13 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 31, "id": "da4b3153", "metadata": {}, "outputs": [], "source": [ "response: requests.Response = session.put(\n", - " url=f'{HOST_URL}/build/cli-api/public/auth',\n", + " url=f'{HOST_URL}/tg-api/public/auth',\n", " json={\n", " 'username': USERNAME,\n", " 'password': PASSWORD,\n", @@ -471,7 +474,7 @@ "# update session headers - TOKEN\n", "session.headers.update(\n", " {\n", - " 'x-tg-cli-token': response.json()['token'] # TOKEN\n", + " 'x-tg-api-token': response.json()['token'] # TOKEN\n", " },\n", ")\n", "del response" @@ -487,7 +490,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 33, "id": "630db276", "metadata": {}, "outputs": [ @@ -495,21 +498,21 @@ "name": "stdout", "output_type": "stream", "text": [ - "Available labs: {'Teselagen Example Lab': '6a34bee2-9cc2-4ae4-92b3-5673c13cfe1b', 'Example Lab': 'eafd0b92-9369-4f80-81c6-661dc8ef8046', '3 Lab': 'a8acfc8f-98c5-4a32-9fb5-06fa0a4744fe', 'Green Lab': '91a368cc-bb00-4359-9e8d-2525cc667eec', '1 Lab': 'cfdb5d8e-3cda-43dd-88e5-76bbd5652bcc', 'QA Lab': 'd63a9bba-a04a-40d9-877c-dddf004f8038', 'Xime Lab': '9de9ab86-2feb-4f09-97a5-ad8ede3f12cb', 'User Lab': '4a9cf778-d017-401d-b26a-5669a32a3a9a', 'TV_Lab': '6131985c-661c-407b-ac86-16cc148712d9', 'admin lab': 'b825f27f-2477-49a6-a33b-65175ad372ef', 'Davis Lab 2': '04522bbb-f5cd-4ffe-9582-48a2b264d629', 'Davis Lab': '449103b4-6274-46ca-a203-4ac312ea4947', 'CLI TEST': 'b2fdf0ed-fd2e-4c58-9faa-1688dce2d200', 'The Test Lab': '08514bfe-b53e-4282-b5ca-31c6fd3beaa1', 'Teselagen-AR': '3743ea9d-3c29-45c3-98eb-ec8bf3988d4c', 'SUPER LAB': '3cb272f1-fa5a-46be-8fcb-4ef2a0a12d19'}\n" + "Available labs: {'The Test Lab': '89984f4b-d57e-491b-a184-ef5ecce80bb8'}\n" ] } ], "source": [ "# First we get the labs\n", "response = session.get(\n", - " url=f'{HOST_URL}/design/cli-api/laboratories',\n", + " url=f'{HOST_URL}/tg-api/laboratories',\n", ")\n", "response.raise_for_status()\n", - "labs = {lab['name']:lab['id'] for lab in response.json()} \n", + "labs = {lab['name']:lab['id'] for lab in response.json()}\n", "print(f\"Available labs: {labs}\")\n", "\n", "# Now we select one\n", - "session.headers.update({'tg-active-lab-id': labs['Example Lab']})" + "session.headers.update({'tg-active-lab-id': labs['The Test Lab']})" ] }, { @@ -522,7 +525,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 34, "id": "bee267eb", "metadata": {}, "outputs": [ @@ -530,7 +533,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "{'User-Agent': 'python-requests/2.27.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'x-tg-cli-token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2ZXJzaW9uIjoidjEyIiwiZ3VpZCI6IjY4YjFhZWM0LWE5Y2QtNDhmNS1iNDRmLTdjMjYwOTA1NTdhNSIsInNlc3Npb25JZCI6ImFhOWViNzI2LTI3ZjgtNGY4OC1hZTA2LWVjYjA0MTlmMmM4NyIsImlkIjoiMjEzNjJmM2YtYzk5OS00Nzc5LWJiMDgtMjhjODliMDhjOWUxIiwidXNlcm5hbWUiOiJhZG1pbkB0ZXNlbGFnZW4uY29tIiwicm9sZXMiOnsiQURNSU4iOnRydWUsIkxBQl9DUkVBVE9SIjp0cnVlfSwicm9sZUNvZGVzIjpbIkFETUlOIiwiTEFCX0NSRUFUT1IiLCJNRU1CRVIiLCJMQUJfQURNSU4iXSwiaWF0IjoxNjk3NzI1NjU1LCJleHAiOjE2OTc4MTIwNTV9.6-6_4QbIR_uC95T9tAwIsSM6YaaANGbXHyqf86oTnjA', 'tg-active-lab-id': 'eafd0b92-9369-4f80-81c6-661dc8ef8046'}\n" + "{'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'x-tg-api-token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2ZXJzaW9uIjoidjEyIiwiZ3VpZCI6InNlZWRlZC11c2VyIiwic2Vzc2lvbklkIjoiZTBlNTQzNzYtYWYwMC00NTNmLWI2ZWQtOWIzNzIyN2ZlNGRjIiwiaWQiOiI2NDg5ODI4Ni01M2FmLTQyOWYtYTI5MS1kOTExMTkzZWZjNmYiLCJ1c2VybmFtZSI6InRlc3RAdGVzZWxhZ2VuLmNvbSIsInJvbGVzIjp7IkFETUlOIjp0cnVlLCJMQUJfQ1JFQVRPUiI6dHJ1ZX0sInJvbGVDb2RlcyI6WyJBRE1JTiIsIkxBQl9DUkVBVE9SIiwiTUVNQkVSIl0sImlhdCI6MTcyODY3OTE1OSwiZXhwIjoxNzI4NzY1NTU5fQ.9VNjAKrYtKWZ2ZF9Ldwh7w3dpAr8VL2ZQI8yqYI2UO4', 'tg-active-lab-id': '89984f4b-d57e-491b-a184-ef5ecce80bb8'}\n" ] } ], @@ -556,7 +559,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 35, "id": "ce6a632c", "metadata": {}, "outputs": [ @@ -564,18 +567,18 @@ "name": "stdout", "output_type": "stream", "text": [ - "[{'id': '720b7f40-7cd3-4cd8-a412-589a8a97f5e4', 'name': 'NEB T7 Express Lys/Iq', 'status': None, 'sampleTypeCode': 'REGISTERED_SAMPLE', 'sampleType': {'code': 'REGISTERED_SAMPLE', 'name': 'Registered Sample', '__typename': 'sampleType'}, 'sampleFormulations': [], 'updatedAt': '2023-01-10T18:51:47.437Z', 'createdAt': '2023-01-10T18:51:47.437Z', 'taggedItems': [], 'material': {'id': '2c199bfa-ca46-4494-b01b-a94230add0ad', 'name': 'NEB T7 Express Lys/Iq', '__typename': 'material'}, 'batch': None, 'lab': None, 'user': {'id': '21362f3f-c999-4779-bb08-28c89b08c9e1', 'username': 'Admin User', '__typename': 'user'}, '__typename': 'sample'}, {'id': '0434d9ad-2ab5-4575-b3a5-351829f5a1d5', 'name': 'NEB T7 Express Lys/Iq', 'status': None, 'sampleTypeCode': 'REGISTERED_SAMPLE', 'sampleType': {'code': 'REGISTERED_SAMPLE', 'name': 'Registered Sample', '__typename': 'sampleType'}, 'sampleFormulations': [], 'updatedAt': '2023-01-10T18:51:47.437Z', 'createdAt': '2023-01-10T18:51:47.437Z', 'taggedItems': [], 'material': {'id': '2c199bfa-ca46-4494-b01b-a94230add0ad', 'name': 'NEB T7 Express Lys/Iq', '__typename': 'material'}, 'batch': None, 'lab': None, 'user': {'id': '21362f3f-c999-4779-bb08-28c89b08c9e1', 'username': 'Admin User', '__typename': 'user'}, '__typename': 'sample'}, {'id': '1ac36b35-dfee-45a8-ac32-2da935688b05', 'name': 'NEB T7 Express Lys/Iq', 'status': None, 'sampleTypeCode': 'REGISTERED_SAMPLE', 'sampleType': {'code': 'REGISTERED_SAMPLE', 'name': 'Registered Sample', '__typename': 'sampleType'}, 'sampleFormulations': [], 'updatedAt': '2023-01-10T18:51:47.437Z', 'createdAt': '2023-01-10T18:51:47.437Z', 'taggedItems': [], 'material': {'id': '2c199bfa-ca46-4494-b01b-a94230add0ad', 'name': 'NEB T7 Express Lys/Iq', '__typename': 'material'}, 'batch': None, 'lab': None, 'user': {'id': '21362f3f-c999-4779-bb08-28c89b08c9e1', 'username': 'Admin User', '__typename': 'user'}, '__typename': 'sample'}, {'id': '6bb2e918-64ac-4e6e-b275-e6e5188bb3da', 'name': 'NEB T7 Express Lys/Iq', 'status': None, 'sampleTypeCode': 'REGISTERED_SAMPLE', 'sampleType': {'code': 'REGISTERED_SAMPLE', 'name': 'Registered Sample', '__typename': 'sampleType'}, 'sampleFormulations': [], 'updatedAt': '2023-01-10T18:51:47.437Z', 'createdAt': '2023-01-10T18:51:47.437Z', 'taggedItems': [], 'material': {'id': '2c199bfa-ca46-4494-b01b-a94230add0ad', 'name': 'NEB T7 Express Lys/Iq', '__typename': 'material'}, 'batch': None, 'lab': None, 'user': {'id': '21362f3f-c999-4779-bb08-28c89b08c9e1', 'username': 'Admin User', '__typename': 'user'}, '__typename': 'sample'}, {'id': '4abe85ae-6f92-44a9-be9f-8ced2918f0dc', 'name': 'NEB T7 Express Lys/Iq', 'status': None, 'sampleTypeCode': 'REGISTERED_SAMPLE', 'sampleType': {'code': 'REGISTERED_SAMPLE', 'name': 'Registered Sample', '__typename': 'sampleType'}, 'sampleFormulations': [], 'updatedAt': '2023-01-10T18:51:47.437Z', 'createdAt': '2023-01-10T18:51:47.437Z', 'taggedItems': [], 'material': {'id': '2c199bfa-ca46-4494-b01b-a94230add0ad', 'name': 'NEB T7 Express Lys/Iq', '__typename': 'material'}, 'batch': None, 'lab': None, 'user': {'id': '21362f3f-c999-4779-bb08-28c89b08c9e1', 'username': 'Admin User', '__typename': 'user'}, '__typename': 'sample'}]\n" + "[{'id': '001eccf1-30cf-459a-a700-acd50a38a95d', 'name': 'Sample 00', 'status': None, 'sampleTypeCode': 'REGISTERED_SAMPLE', 'sampleType': {'code': 'REGISTERED_SAMPLE', 'name': 'Registered Sample', '__typename': 'sampleType'}, 'sampleFormulations': [], 'updatedAt': '2024-10-10T13:17:36.884Z', 'createdAt': '2024-10-10T13:17:36.884Z', 'taggedItems': [], 'material': {'id': 'a2f321f7-764c-4f03-bfce-6114ed58d5c6', 'name': 'Mock material 00', '__typename': 'material'}, 'batch': None, 'lab': {'id': 'sys-common-lab', 'name': 'Common Lab', '__typename': 'lab'}, 'user': None, '__typename': 'sample'}, {'id': 'fda10c27-9a65-402e-912e-87d09aa2bcf8', 'name': 'Sample 01', 'status': None, 'sampleTypeCode': 'REGISTERED_SAMPLE', 'sampleType': {'code': 'REGISTERED_SAMPLE', 'name': 'Registered Sample', '__typename': 'sampleType'}, 'sampleFormulations': [], 'updatedAt': '2024-10-10T13:17:36.884Z', 'createdAt': '2024-10-10T13:17:36.884Z', 'taggedItems': [], 'material': {'id': '00ca71ec-c99a-4930-8c77-232a07d83e76', 'name': 'Mock material 01', '__typename': 'material'}, 'batch': None, 'lab': {'id': 'sys-common-lab', 'name': 'Common Lab', '__typename': 'lab'}, 'user': None, '__typename': 'sample'}, {'id': '4758d5c4-ff50-4f45-b8a0-742234e60c4c', 'name': 'Sample 02', 'status': None, 'sampleTypeCode': 'REGISTERED_SAMPLE', 'sampleType': {'code': 'REGISTERED_SAMPLE', 'name': 'Registered Sample', '__typename': 'sampleType'}, 'sampleFormulations': [], 'updatedAt': '2024-10-10T13:17:36.884Z', 'createdAt': '2024-10-10T13:17:36.884Z', 'taggedItems': [], 'material': {'id': '718e2362-5b9b-4d58-a143-18e8b0a1e547', 'name': 'Mock material 02', '__typename': 'material'}, 'batch': None, 'lab': {'id': 'sys-common-lab', 'name': 'Common Lab', '__typename': 'lab'}, 'user': None, '__typename': 'sample'}, {'id': 'b43208e4-0fe9-4824-b041-8c7d37a839ae', 'name': 'Sample 03', 'status': None, 'sampleTypeCode': 'REGISTERED_SAMPLE', 'sampleType': {'code': 'REGISTERED_SAMPLE', 'name': 'Registered Sample', '__typename': 'sampleType'}, 'sampleFormulations': [], 'updatedAt': '2024-10-10T13:17:36.884Z', 'createdAt': '2024-10-10T13:17:36.884Z', 'taggedItems': [], 'material': {'id': '5ee657b1-53fe-4d7b-b3a0-6e228c02069e', 'name': 'Mock material 03', '__typename': 'material'}, 'batch': None, 'lab': {'id': 'sys-common-lab', 'name': 'Common Lab', '__typename': 'lab'}, 'user': None, '__typename': 'sample'}, {'id': '9485cf4e-4b3a-451a-a401-2e90d709c372', 'name': 'Sample 04', 'status': None, 'sampleTypeCode': 'REGISTERED_SAMPLE', 'sampleType': {'code': 'REGISTERED_SAMPLE', 'name': 'Registered Sample', '__typename': 'sampleType'}, 'sampleFormulations': [], 'updatedAt': '2024-10-10T13:17:36.884Z', 'createdAt': '2024-10-10T13:17:36.884Z', 'taggedItems': [], 'material': {'id': '0bcbba5e-8870-452d-98ec-e97c00e55999', 'name': 'Mock material 04', '__typename': 'material'}, 'batch': None, 'lab': {'id': 'sys-common-lab', 'name': 'Common Lab', '__typename': 'lab'}, 'user': None, '__typename': 'sample'}]\n" ] } ], "source": [ "# Without a filter parameter\n", - "response = session.get(url=f'{HOST_URL}/build/cli-api/samples')\n", + "response = session.get(url=f'{HOST_URL}/tg-api/samples')\n", "# Set a filter parameter:\n", "#gqlFilter: str = json.dumps({\"name\": \"Pool8-Isolate63\"})\n", "\n", "#response = session.get(\n", - "# url=f'{HOST_URL}/build/cli-api/samples?gqlFilter={gqlFilter}',\n", + "# url=f'{HOST_URL}/tg-api/samples?gqlFilter={gqlFilter}',\n", "#)\n", "response.raise_for_status()\n", "print(response.json()[0:5]) # [{'id': str, 'name': str}, ... ]" @@ -591,7 +594,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 36, "id": "f4d0e07d", "metadata": {}, "outputs": [ @@ -599,34 +602,26 @@ "name": "stdout", "output_type": "stream", "text": [ - "[{'id': 'f915c7b4-494d-4f66-adc9-1aca855c12f9', 'name': 'Plate', 'assignedPosition': None, 'createdAt': '2023-01-10T18:51:14.065Z', 'updatedAt': '2023-01-10T18:51:56.245Z', 'containerArrayType': {'id': '3b4ff7f8-8b12-4b65-b274-4992fc40f6b1', 'name': 'Generic 96 Well Plate', 'isPlate': True, 'containerFormatCode': '96_WELL', 'aliquotContainerType': {'code': 'GENERIC_96_PLATE_WELL', 'maxVolume': 360, 'volumetricUnitCode': 'uL', '__typename': 'aliquotContainerType'}, '__typename': 'containerArrayType'}, 'batch': None, 'lab': None, 'barcode': {'id': '67308e85-ad4c-41e3-9770-66e2d70bbc70', 'barcodeString': 'pSHPs0312B058761MU', '__typename': 'barcode'}, 'user': {'id': '21362f3f-c999-4779-bb08-28c89b08c9e1', 'username': 'Admin User', '__typename': 'user'}, 'taggedItems': [], 'projectItems': [], '__typename': 'containerArray'}, {'id': '7f5b41a2-f2df-4c29-ab1a-7036d97a3b89', 'name': 'Microbial Transformation Plate', 'assignedPosition': None, 'createdAt': '2023-01-10T18:51:47.422Z', 'updatedAt': '2023-01-10T18:51:56.245Z', 'containerArrayType': {'id': '681d0812-96b7-4ff2-8d32-805a7ddca89c', 'name': 'Uploaded', 'isPlate': True, 'containerFormatCode': '96_WELL', 'aliquotContainerType': {'code': 'bAS2bYMgdQ', 'maxVolume': 5, 'volumetricUnitCode': 'L', '__typename': 'aliquotContainerType'}, '__typename': 'containerArrayType'}, 'batch': None, 'lab': None, 'barcode': {'id': '53a98576-59e0-4447-b0f4-5c381bcc97ef', 'barcodeString': 'Z000002294', '__typename': 'barcode'}, 'user': {'id': '21362f3f-c999-4779-bb08-28c89b08c9e1', 'username': 'Admin User', '__typename': 'user'}, 'taggedItems': [], 'projectItems': [], '__typename': 'containerArray'}, {'id': '8d5c77d5-78e5-4b66-b845-9f4510f19dc6', 'name': 'Plate', 'assignedPosition': None, 'createdAt': '2022-06-21T23:10:33.274Z', 'updatedAt': '2022-06-21T23:10:33.274Z', 'containerArrayType': {'id': '3b4ff7f8-8b12-4b65-b274-4992fc40f6b1', 'name': 'Generic 96 Well Plate', 'isPlate': True, 'containerFormatCode': '96_WELL', 'aliquotContainerType': {'code': 'GENERIC_96_PLATE_WELL', 'maxVolume': 360, 'volumetricUnitCode': 'uL', '__typename': 'aliquotContainerType'}, '__typename': 'containerArrayType'}, 'batch': None, 'lab': None, 'barcode': {'id': 'd4f138ee-85de-46db-8a3b-7d79ec5f28fe', 'barcodeString': 'pSHPs0312B058761MU', '__typename': 'barcode'}, 'user': {'id': '21362f3f-c999-4779-bb08-28c89b08c9e1', 'username': 'Admin User', '__typename': 'user'}, 'taggedItems': [], 'projectItems': [], '__typename': 'containerArray'}, {'id': '38f3e2da-9d61-4fdd-bec1-2da4734094d8', 'name': 'Aliquot Rearray Plate Untitled Workflow Run', 'assignedPosition': None, 'createdAt': '2022-06-13T22:46:25.000Z', 'updatedAt': '2022-06-13T22:48:15.203Z', 'containerArrayType': {'id': '681d0812-96b7-4ff2-8d32-805a7ddca89c', 'name': 'Uploaded', 'isPlate': True, 'containerFormatCode': '96_WELL', 'aliquotContainerType': {'code': 'bAS2bYMgdQ', 'maxVolume': 5, 'volumetricUnitCode': 'L', '__typename': 'aliquotContainerType'}, '__typename': 'containerArrayType'}, 'batch': None, 'lab': None, 'barcode': {'id': '38b37fc2-226a-41aa-8c96-76f18509c3ff', 'barcodeString': 'Z000002279', '__typename': 'barcode'}, 'user': {'id': '21362f3f-c999-4779-bb08-28c89b08c9e1', 'username': 'Admin User', '__typename': 'user'}, 'taggedItems': [], 'projectItems': [], '__typename': 'containerArray'}, {'id': '81b5ce69-c8dc-4471-a047-a8de43089e97', 'name': 'Empty Test Plate', 'assignedPosition': None, 'createdAt': '2022-05-18T18:25:57.053Z', 'updatedAt': '2022-05-18T18:26:25.514Z', 'containerArrayType': {'id': '096916b6-15f6-4d7a-8aa9-ed93276fb67a', 'name': 'Generic 6 Well Plate', 'isPlate': True, 'containerFormatCode': '6_WELL', 'aliquotContainerType': {'code': 'GENERIC_6_PLATE_WELL', 'maxVolume': 360, 'volumetricUnitCode': 'uL', '__typename': 'aliquotContainerType'}, '__typename': 'containerArrayType'}, 'batch': None, 'lab': None, 'barcode': {'id': '1b79e777-4ecc-4e50-b265-8b086a66e823', 'barcodeString': 'Z000002278', '__typename': 'barcode'}, 'user': {'id': '21362f3f-c999-4779-bb08-28c89b08c9e1', 'username': 'Admin User', '__typename': 'user'}, 'taggedItems': [], 'projectItems': [], '__typename': 'containerArray'}]\n" + "[{'id': 'db65c053-bf09-40b4-89fc-765f76becda8', 'name': 'Example Wet Plate', 'assignedPosition': None, 'createdAt': '2024-10-10T13:17:36.851Z', 'updatedAt': '2024-10-10T13:17:36.851Z', 'containerArrayType': {'id': '26691182-8e49-437b-af6b-1e26b6b27735', 'name': 'Generic 96 Well Plate', 'isPlate': True, 'containerFormatCode': '96_WELL', 'aliquotContainerType': {'code': 'GENERIC_96_PLATE_WELL', 'maxVolume': 360, 'volumetricUnitCode': 'uL', '__typename': 'aliquotContainerType'}, '__typename': 'containerArrayType'}, 'batch': None, 'lab': {'id': 'sys-common-lab', 'name': 'Common Lab', '__typename': 'lab'}, 'barcode': None, 'user': None, 'taggedItems': [{'tag': {'id': '046a8d10-024e-4f6c-97a1-b5ae39714071', 'name': 'Seeded', '__typename': 'tag'}, '__typename': 'taggedItem'}], 'projectItems': [], '__typename': 'containerArray'}, {'id': '5d06a289-d637-4e94-8061-28f97a9a4724', 'name': 'dilution test', 'assignedPosition': None, 'createdAt': '2024-10-10T13:17:36.851Z', 'updatedAt': '2024-10-10T13:17:36.851Z', 'containerArrayType': {'id': '26691182-8e49-437b-af6b-1e26b6b27735', 'name': 'Generic 96 Well Plate', 'isPlate': True, 'containerFormatCode': '96_WELL', 'aliquotContainerType': {'code': 'GENERIC_96_PLATE_WELL', 'maxVolume': 360, 'volumetricUnitCode': 'uL', '__typename': 'aliquotContainerType'}, '__typename': 'containerArrayType'}, 'batch': None, 'lab': {'id': 'sys-common-lab', 'name': 'Common Lab', '__typename': 'lab'}, 'barcode': {'id': '906feaf9-8b89-4bf6-a2b5-a92674b91140', 'barcodeString': 'BC0000010', '__typename': 'barcode'}, 'user': None, 'taggedItems': [], 'projectItems': [], '__typename': 'containerArray'}, {'id': '6c7dc007-0e16-4ac0-86a6-dc98ab517e7a', 'name': 'Sample Formulation Test Plate', 'assignedPosition': {'id': '60311c1b-174b-4702-a36f-2af965cae589', '__typename': 'assignedPosition'}, 'createdAt': '2024-10-10T13:17:36.851Z', 'updatedAt': '2024-10-10T13:17:36.851Z', 'containerArrayType': {'id': '0dea7962-df64-432d-ab16-661b0f43cd34', 'name': 'Generic 24 Well Plate', 'isPlate': True, 'containerFormatCode': '24_WELL', 'aliquotContainerType': {'code': 'GENERIC_24_PLATE_WELL', 'maxVolume': 360, 'volumetricUnitCode': 'uL', '__typename': 'aliquotContainerType'}, '__typename': 'containerArrayType'}, 'batch': None, 'lab': {'id': 'sys-common-lab', 'name': 'Common Lab', '__typename': 'lab'}, 'barcode': None, 'user': None, 'taggedItems': [{'tag': {'id': '046a8d10-024e-4f6c-97a1-b5ae39714071', 'name': 'Seeded', '__typename': 'tag'}, '__typename': 'taggedItem'}], 'projectItems': [], '__typename': 'containerArray'}, {'id': 'ed8fc2d1-e10d-42be-b184-db95b3e42beb', 'name': 'microbial material test plate', 'assignedPosition': None, 'createdAt': '2024-10-10T13:17:36.851Z', 'updatedAt': '2024-10-10T13:17:36.851Z', 'containerArrayType': {'id': '26691182-8e49-437b-af6b-1e26b6b27735', 'name': 'Generic 96 Well Plate', 'isPlate': True, 'containerFormatCode': '96_WELL', 'aliquotContainerType': {'code': 'GENERIC_96_PLATE_WELL', 'maxVolume': 360, 'volumetricUnitCode': 'uL', '__typename': 'aliquotContainerType'}, '__typename': 'containerArrayType'}, 'batch': None, 'lab': {'id': 'sys-common-lab', 'name': 'Common Lab', '__typename': 'lab'}, 'barcode': {'id': '53affc03-b42c-4602-9eb5-489c0f3254e8', 'barcodeString': '12345', '__typename': 'barcode'}, 'user': None, 'taggedItems': [{'tag': {'id': '046a8d10-024e-4f6c-97a1-b5ae39714071', 'name': 'Seeded', '__typename': 'tag'}, '__typename': 'taggedItem'}], 'projectItems': [], '__typename': 'containerArray'}, {'id': '883a64a4-90b7-4fec-8eff-96f1b49ec5fa', 'name': 'Plate Prep Strain Rack', 'assignedPosition': None, 'createdAt': '2024-10-10T13:17:36.851Z', 'updatedAt': '2024-10-10T13:17:36.851Z', 'containerArrayType': {'id': '2de23009-2a83-47d9-9a9a-df64f33986ed', 'name': 'Generic 6 Position Tube Rack', 'isPlate': False, 'containerFormatCode': '6_WELL', 'aliquotContainerType': None, '__typename': 'containerArrayType'}, 'batch': None, 'lab': {'id': 'sys-common-lab', 'name': 'Common Lab', '__typename': 'lab'}, 'barcode': {'id': 'e9c20c65-7846-4ff4-8932-d305927840ea', 'barcodeString': 'Z000235zdf', '__typename': 'barcode'}, 'user': None, 'taggedItems': [{'tag': {'id': '046a8d10-024e-4f6c-97a1-b5ae39714071', 'name': 'Seeded', '__typename': 'tag'}, '__typename': 'taggedItem'}], 'projectItems': [], '__typename': 'containerArray'}]\n" ] } ], "source": [ "# Without a filter parameter\n", - "response = session.get(url=f'{HOST_URL}/build/cli-api/plates')\n", + "response = session.get(url=f'{HOST_URL}/tg-api/plates')\n", "# Set a filter parameter:\n", "#gqlFilter: str = json.dumps({\"name\": \"Dilution 1\"})\n", "#response = session.get(\n", - "# url=f'{HOST_URL}/build/cli-api/plates?gqlFilter={gqlFilter}',\n", + "# url=f'{HOST_URL}/tg-api/plates?gqlFilter={gqlFilter}',\n", "#)\n", "response.raise_for_status()\n", "print(response.json()[0:5]) # [{'id': str, 'name': str}, ... ]" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "172a87c6", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "teselagen-mXBWz8ru-py3.11", "language": "python", "name": "python3" }, @@ -640,7 +635,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.11.6" } }, "nbformat": 4, diff --git a/teselagen/examples/pytested/Hello_World_DESIGN_module.ipynb b/teselagen/examples/pytested/Hello_World_DESIGN_module.ipynb index 6a30be5..8a9f6ea 100644 --- a/teselagen/examples/pytested/Hello_World_DESIGN_module.ipynb +++ b/teselagen/examples/pytested/Hello_World_DESIGN_module.ipynb @@ -37,7 +37,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "edb34ce5a8924cdc84cac96a7e5026d6", + "model_id": "c7973425d1814c36a141a5d4f50d42e9", "version_major": 2, "version_minor": 0 }, @@ -50,8 +50,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "python version : 3.9.13\n", - "pandas version : 1.4.2\n" + "python version : 3.11.6\n", + "pandas version : 2.2.3\n" ] } ], @@ -91,7 +91,7 @@ "output_type": "stream", "text": [ "Client ready. Please login\n", - "Session active at https://rc.teselagen.com\n", + "Connection Accepted at http://host.docker.internal:3000\n", "Selected Lab: The Test Lab\n" ] } @@ -114,7 +114,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "https://rc.teselagen.com\n" + "http://host.docker.internal:3000\n" ] } ], @@ -148,7 +148,7 @@ "data": { "text/html": [ "\n", - "
\n", + "
\n", " " ] }, @@ -157,7 +157,7 @@ }, { "data": { - "application/javascript": "\n require([\"https://rawgit.com/caldwell/renderjson/master/renderjson.js\"], function() {\n document.getElementById('daac4ed8-adf7-4953-b71b-a527927d8624').appendChild(renderjson({\"id\": \"b06f7337-e839-414f-8a16-0474eb0043c0\", \"name\": \"part_1 part_1\", \"circular\": false, \"description\": \"|1800|linear\", \"size\": 0, \"hash\": \"NLD6799b909cd53ea39cd8293646f4c4f36086cb9553fc8270a7431fc1222f0041c\", \"rotationalHash\": \"NLD6799b909cd53ea39cd8293646f4c4f36086cb9553fc8270a7431fc1222f0041c\", \"sequenceTypeCode\": \"LINEAR_DNA\", \"sequenceType\": {\"code\": \"LINEAR_DNA\", \"name\": \"Linear DNA\", \"__typename\": \"sequenceType\"}, \"plasmidMicrobialMaterialPlasmids\": [], \"__typename\": \"sequence\", \"isJ5Sequence\": false, \"parts\": [{\"id\": \"d6aa7df7-f4e2-417a-82d0-b93fded264d5\", \"name\": \"random sequence 1 consisting of 7000 bases. - partitioned in 3 - part 1\", \"type\": \"misc_feature\", \"start\": -1, \"end\": -1, \"strand\": 1, \"notes\": {\"tag\": []}, \"annotationTypePlural\": \"parts\", \"forward\": true, \"color\": \"#006FEF\"}], \"sequenceFeatures\": [], \"type\": \"DNA\", \"isOligo\": false, \"isRna\": false, \"proteinSequence\": \"\", \"sequence\": \"\", \"proteinSize\": 0, \"primers\": [], \"features\": [], \"lineageAnnotations\": [], \"assemblyPieces\": [], \"warnings\": [], \"cutsites\": [], \"orfs\": [], \"translations\": [], \"guides\": [], \"extendedProperties\": [], \"tags\": []}))\n });\n " + "application/javascript": "\n require([\"https://rawgit.com/caldwell/renderjson/master/renderjson.js\"], function() {\n document.getElementById('feda58bd-2e7f-464a-ab8b-b50ba09a983e').appendChild(renderjson({\"id\": \"d8feb0a4-0dd4-474d-a6d4-02f061825de3\", \"name\": \"Construct 8\", \"circular\": true, \"description\": \"pS8c-vector_backbone,ccmN_nterm_sig_pep,short_gly_ser_linker,GFPuv,ssrA_tag_enhanced_5prime,ssrA_tag_3prime\", \"size\": 0, \"hash\": \"NCD1aa771622858e194cd93d80d819ad09a4cebc1be81f9f3a50b44fada39888f48\", \"sequenceTypeCode\": \"CIRCULAR_DNA\", \"sequenceType\": {\"code\": \"CIRCULAR_DNA\", \"name\": \"Circular DNA\", \"__typename\": \"sequenceType\"}, \"polynucleotideMaterialId\": \"8188443a-3ef9-4239-a925-9d22bddfcc91\", \"polynucleotideMaterial\": {\"id\": \"8188443a-3ef9-4239-a925-9d22bddfcc91\", \"name\": \"Material for Construct 8\", \"samples\": [], \"__typename\": \"material\"}, \"__typename\": \"sequence\", \"isJ5Sequence\": false, \"parts\": [{\"id\": \"b3321d9e-9387-48f9-acc5-8002f99df1dd\", \"name\": \"short_gly_ser_linker\", \"type\": \"misc_feature\", \"start\": 0, \"end\": 0, \"strand\": -1, \"notes\": {\"tag\": []}, \"annotationTypePlural\": \"parts\", \"forward\": false, \"color\": \"#006FEF\"}], \"sequenceFeatures\": [{\"id\": \"c1f69f91-a91a-41e9-be30-9fece45a0073\", \"start\": 6, \"end\": 885, \"type\": \"CDS\", \"name\": \"araC\", \"strand\": -1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"e746be40-4c3d-45ec-9c6f-c17d199ca67d\", \"start\": 913, \"end\": 931, \"type\": \"protein_bind\", \"name\": \"operator O2\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"d0197504-4052-45f3-a01c-e27c8711cca3\", \"start\": 1035, \"end\": 1064, \"type\": \"promoter\", \"name\": \"araC promoter\", \"strand\": -1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"ab056d21-3841-49e1-8914-1fad6d077df3\", \"start\": 1071, \"end\": 1093, \"type\": \"protein_bind\", \"name\": \"operator O1\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"10ae4404-63ed-47f5-a5c8-ad2257ce7ce6\", \"start\": 1114, \"end\": 1128, \"type\": \"misc_binding\", \"name\": \"CAP site\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"6bb56a69-038a-4b21-a04e-69e5eee9ee1b\", \"start\": 1123, \"end\": 1162, \"type\": \"protein_bind\", \"name\": \"Operator I2 and I1\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"59dfcd63-bde7-4b90-9a55-cc006d96ab07\", \"start\": 1160, \"end\": 1188, \"type\": \"promoter\", \"name\": \"pBAD promoter\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"ef4338c3-2cc0-424e-a4cd-40be976fcb79\", \"start\": 1206, \"end\": 1299, \"type\": \"primer_bind\", \"name\": \"Oligo 2 (pS8c-vector_backbone) (ccmN_nterm_sig_pep) Reverse\", \"strand\": -1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"2a36f9f5-e8e8-45e6-9c92-19b95c4c4ee7\", \"start\": 1215, \"end\": 1235, \"type\": \"RBS\", \"name\": \"RBS\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"d81d6164-7597-41bc-b913-205f558837e1\", \"start\": 1235, \"end\": 2072, \"type\": \"CDS\", \"name\": \"GFPuv\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"8677b3ef-13b7-429e-b4b5-02955f97d05f\", \"start\": 1238, \"end\": 1295, \"type\": \"misc_feature\", \"name\": \"ccmN_sig_pep\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"37f4ec35-1785-4fc4-a1dd-382d0ee35747\", \"start\": 1295, \"end\": 1319, \"type\": \"misc_feature\", \"name\": \"gly_ser_linker\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"ec3102c5-a65f-4151-bcd7-7e903116cdab\", \"start\": 1295, \"end\": 1351, \"type\": \"primer_bind\", \"name\": \"Oligo 3 (short_gly_ser_linker) (GFPuv) Forward\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"6e7a018c-d679-48e0-837c-2aadb1ac5cd7\", \"start\": 1738, \"end\": 1739, \"type\": \"misc_feature\", \"name\": \"XhoI_silent_mutation\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"5cd8882d-6028-427b-89e9-4d2b4996d828\", \"start\": 1837, \"end\": 1838, \"type\": \"misc_feature\", \"name\": \"BamHI_silent_mutation\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"a8d54ed5-5f8f-4141-b68d-fdd1e22f782f\", \"start\": 2012, \"end\": 2055, \"type\": \"primer_bind\", \"name\": \"Oligo 4 (GFPuv) (ssrA_tag_enhanced_5prime) Reverse\", \"strand\": -1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"a7bec6ef-74a0-4e92-bbde-1a99525b4a93\", \"start\": 2030, \"end\": 2051, \"type\": \"misc_feature\", \"name\": \"ssrA tag enhanced\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"d7cf5657-219f-4a00-b7aa-cd820daba37b\", \"start\": 2051, \"end\": 2069, \"type\": \"misc_feature\", \"name\": \"ssrA tag\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"0f7c766d-b921-4772-889e-5af28fa6106c\", \"start\": 2051, \"end\": 2094, \"type\": \"primer_bind\", \"name\": \"Oligo 1 (ssrA_tag_3prime) (pS8c-vector_backbone) Forward\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"ecbe6477-0eec-4ad1-af5f-e55f1b2df867\", \"start\": 2087, \"end\": 2216, \"type\": \"terminator\", \"name\": \"dbl term\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"f5301a24-0f05-482a-b834-20c04e97c57b\", \"start\": 2217, \"end\": 4446, \"type\": \"rep_origin\", \"name\": \"pSC101**\", \"strand\": -1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"e019bc68-653b-4713-9f03-d960e9325ec9\", \"start\": 4446, \"end\": 4552, \"type\": \"terminator\", \"name\": \"T0\", \"strand\": 1, \"__typename\": \"sequenceFeature\"}, {\"id\": \"b57f6279-cc81-42fc-8532-b9a91da9ffa9\", \"start\": 4567, \"end\": 5227, \"type\": \"misc_marker\", \"name\": \"CmR\", \"strand\": -1, \"__typename\": \"sequenceFeature\"}], \"type\": \"DNA\", \"isOligo\": false, \"isRna\": false, \"proteinSequence\": \"\", \"sequence\": \"\", \"proteinSize\": 0, \"primers\": [{\"id\": \"ef4338c3-2cc0-424e-a4cd-40be976fcb79\", \"start\": 0, \"end\": 0, \"type\": \"primer_bind\", \"name\": \"Oligo 2 (pS8c-vector_backbone) (ccmN_nterm_sig_pep) Reverse\", \"strand\": -1, \"__typename\": \"sequenceFeature\", \"useLinkedOligo\": false, \"annotationTypePlural\": \"primers\", \"forward\": false, \"color\": \"#53d969\"}, {\"id\": \"ec3102c5-a65f-4151-bcd7-7e903116cdab\", \"start\": 0, \"end\": 0, \"type\": \"primer_bind\", \"name\": \"Oligo 3 (short_gly_ser_linker) (GFPuv) Forward\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"useLinkedOligo\": false, \"annotationTypePlural\": \"primers\", \"forward\": true, \"color\": \"#53d969\"}, {\"id\": \"a8d54ed5-5f8f-4141-b68d-fdd1e22f782f\", \"start\": 0, \"end\": 0, \"type\": \"primer_bind\", \"name\": \"Oligo 4 (GFPuv) (ssrA_tag_enhanced_5prime) Reverse\", \"strand\": -1, \"__typename\": \"sequenceFeature\", \"useLinkedOligo\": false, \"annotationTypePlural\": \"primers\", \"forward\": false, \"color\": \"#53d969\"}, {\"id\": \"0f7c766d-b921-4772-889e-5af28fa6106c\", \"start\": 0, \"end\": 0, \"type\": \"primer_bind\", \"name\": \"Oligo 1 (ssrA_tag_3prime) (pS8c-vector_backbone) Forward\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"useLinkedOligo\": false, \"annotationTypePlural\": \"primers\", \"forward\": true, \"color\": \"#53d969\"}], \"features\": [{\"notes\": {}, \"id\": \"c1f69f91-a91a-41e9-be30-9fece45a0073\", \"start\": 0, \"end\": 0, \"type\": \"CDS\", \"name\": \"araC\", \"strand\": -1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": false, \"color\": \"#EF6500\"}, {\"notes\": {}, \"id\": \"e746be40-4c3d-45ec-9c6f-c17d199ca67d\", \"start\": 0, \"end\": 0, \"type\": \"protein_bind\", \"name\": \"operator O2\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": true, \"color\": \"#2E2E2E\"}, {\"notes\": {}, \"id\": \"d0197504-4052-45f3-a01c-e27c8711cca3\", \"start\": 0, \"end\": 0, \"type\": \"promoter\", \"name\": \"araC promoter\", \"strand\": -1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": false, \"color\": \"#31B440\"}, {\"notes\": {}, \"id\": \"ab056d21-3841-49e1-8914-1fad6d077df3\", \"start\": 0, \"end\": 0, \"type\": \"protein_bind\", \"name\": \"operator O1\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": true, \"color\": \"#2E2E2E\"}, {\"notes\": {}, \"id\": \"10ae4404-63ed-47f5-a5c8-ad2257ce7ce6\", \"start\": 0, \"end\": 0, \"type\": \"misc_binding\", \"name\": \"CAP site\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": true, \"color\": \"#006FEF\"}, {\"notes\": {}, \"id\": \"6bb56a69-038a-4b21-a04e-69e5eee9ee1b\", \"start\": 0, \"end\": 0, \"type\": \"protein_bind\", \"name\": \"Operator I2 and I1\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": true, \"color\": \"#2E2E2E\"}, {\"notes\": {}, \"id\": \"59dfcd63-bde7-4b90-9a55-cc006d96ab07\", \"start\": 0, \"end\": 0, \"type\": \"promoter\", \"name\": \"pBAD promoter\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": true, \"color\": \"#31B440\"}, {\"notes\": {}, \"id\": \"2a36f9f5-e8e8-45e6-9c92-19b95c4c4ee7\", \"start\": 0, \"end\": 0, \"type\": \"RBS\", \"name\": \"RBS\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": true, \"color\": \"#BDFFCB\"}, {\"notes\": {}, \"id\": \"d81d6164-7597-41bc-b913-205f558837e1\", \"start\": 0, \"end\": 0, \"type\": \"CDS\", \"name\": \"GFPuv\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": true, \"color\": \"#EF6500\"}, {\"notes\": {}, \"id\": \"8677b3ef-13b7-429e-b4b5-02955f97d05f\", \"start\": 0, \"end\": 0, \"type\": \"misc_feature\", \"name\": \"ccmN_sig_pep\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": true, \"color\": \"#006FEF\"}, {\"notes\": {}, \"id\": \"37f4ec35-1785-4fc4-a1dd-382d0ee35747\", \"start\": 0, \"end\": 0, \"type\": \"misc_feature\", \"name\": \"gly_ser_linker\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": true, \"color\": \"#006FEF\"}, {\"notes\": {}, \"id\": \"6e7a018c-d679-48e0-837c-2aadb1ac5cd7\", \"start\": 0, \"end\": 0, \"type\": \"misc_feature\", \"name\": \"XhoI_silent_mutation\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": true, \"color\": \"#006FEF\"}, {\"notes\": {}, \"id\": \"5cd8882d-6028-427b-89e9-4d2b4996d828\", \"start\": 0, \"end\": 0, \"type\": \"misc_feature\", \"name\": \"BamHI_silent_mutation\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": true, \"color\": \"#006FEF\"}, {\"notes\": {}, \"id\": \"a7bec6ef-74a0-4e92-bbde-1a99525b4a93\", \"start\": 0, \"end\": 0, \"type\": \"misc_feature\", \"name\": \"ssrA tag enhanced\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": true, \"color\": \"#006FEF\"}, {\"notes\": {}, \"id\": \"d7cf5657-219f-4a00-b7aa-cd820daba37b\", \"start\": 0, \"end\": 0, \"type\": \"misc_feature\", \"name\": \"ssrA tag\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": true, \"color\": \"#006FEF\"}, {\"notes\": {}, \"id\": \"ecbe6477-0eec-4ad1-af5f-e55f1b2df867\", \"start\": 0, \"end\": 0, \"type\": \"terminator\", \"name\": \"dbl term\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": true, \"color\": \"#F51600\"}, {\"notes\": {}, \"id\": \"f5301a24-0f05-482a-b834-20c04e97c57b\", \"start\": 0, \"end\": 0, \"type\": \"rep_origin\", \"name\": \"pSC101**\", \"strand\": -1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": false, \"color\": \"#878787\"}, {\"notes\": {}, \"id\": \"e019bc68-653b-4713-9f03-d960e9325ec9\", \"start\": 0, \"end\": 0, \"type\": \"terminator\", \"name\": \"T0\", \"strand\": 1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": true, \"color\": \"#F51600\"}, {\"notes\": {}, \"id\": \"b57f6279-cc81-42fc-8532-b9a91da9ffa9\", \"start\": 0, \"end\": 0, \"type\": \"misc_marker\", \"name\": \"CmR\", \"strand\": -1, \"__typename\": \"sequenceFeature\", \"annotationTypePlural\": \"features\", \"forward\": false, \"color\": \"#8DCEB1\"}], \"lineageAnnotations\": [], \"assemblyPieces\": [], \"warnings\": [], \"cutsites\": [], \"orfs\": [], \"translations\": [], \"guides\": [], \"extendedProperties\": [], \"tags\": []}))\n });\n " }, "metadata": {}, "output_type": "display_data" @@ -181,7 +181,33 @@ "execution_count": 5, "id": "narrative-liver", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "araC\n", + "operator O2\n", + "araC promoter\n", + "operator O1\n", + "CAP site\n", + "Operator I2 and I1\n", + "pBAD promoter\n", + "RBS\n", + "GFPuv\n", + "ccmN_sig_pep\n", + "gly_ser_linker\n", + "XhoI_silent_mutation\n", + "BamHI_silent_mutation\n", + "ssrA tag enhanced\n", + "ssrA tag\n", + "dbl term\n", + "pSC101**\n", + "T0\n", + "CmR\n" + ] + } + ], "source": [ "features = sequence['features']\n", "for feat in features:\n", @@ -197,7 +223,215 @@ { "data": { "text/plain": [ - "[]" + "[{'notes': {},\n", + " 'id': 'c1f69f91-a91a-41e9-be30-9fece45a0073',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'CDS',\n", + " 'name': 'araC',\n", + " 'strand': -1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': False,\n", + " 'color': '#EF6500'},\n", + " {'notes': {},\n", + " 'id': 'e746be40-4c3d-45ec-9c6f-c17d199ca67d',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'protein_bind',\n", + " 'name': 'operator O2',\n", + " 'strand': 1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': True,\n", + " 'color': '#2E2E2E'},\n", + " {'notes': {},\n", + " 'id': 'd0197504-4052-45f3-a01c-e27c8711cca3',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'promoter',\n", + " 'name': 'araC promoter',\n", + " 'strand': -1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': False,\n", + " 'color': '#31B440'},\n", + " {'notes': {},\n", + " 'id': 'ab056d21-3841-49e1-8914-1fad6d077df3',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'protein_bind',\n", + " 'name': 'operator O1',\n", + " 'strand': 1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': True,\n", + " 'color': '#2E2E2E'},\n", + " {'notes': {},\n", + " 'id': '10ae4404-63ed-47f5-a5c8-ad2257ce7ce6',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'misc_binding',\n", + " 'name': 'CAP site',\n", + " 'strand': 1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': True,\n", + " 'color': '#006FEF'},\n", + " {'notes': {},\n", + " 'id': '6bb56a69-038a-4b21-a04e-69e5eee9ee1b',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'protein_bind',\n", + " 'name': 'Operator I2 and I1',\n", + " 'strand': 1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': True,\n", + " 'color': '#2E2E2E'},\n", + " {'notes': {},\n", + " 'id': '59dfcd63-bde7-4b90-9a55-cc006d96ab07',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'promoter',\n", + " 'name': 'pBAD promoter',\n", + " 'strand': 1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': True,\n", + " 'color': '#31B440'},\n", + " {'notes': {},\n", + " 'id': '2a36f9f5-e8e8-45e6-9c92-19b95c4c4ee7',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'RBS',\n", + " 'name': 'RBS',\n", + " 'strand': 1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': True,\n", + " 'color': '#BDFFCB'},\n", + " {'notes': {},\n", + " 'id': 'd81d6164-7597-41bc-b913-205f558837e1',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'CDS',\n", + " 'name': 'GFPuv',\n", + " 'strand': 1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': True,\n", + " 'color': '#EF6500'},\n", + " {'notes': {},\n", + " 'id': '8677b3ef-13b7-429e-b4b5-02955f97d05f',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'misc_feature',\n", + " 'name': 'ccmN_sig_pep',\n", + " 'strand': 1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': True,\n", + " 'color': '#006FEF'},\n", + " {'notes': {},\n", + " 'id': '37f4ec35-1785-4fc4-a1dd-382d0ee35747',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'misc_feature',\n", + " 'name': 'gly_ser_linker',\n", + " 'strand': 1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': True,\n", + " 'color': '#006FEF'},\n", + " {'notes': {},\n", + " 'id': '6e7a018c-d679-48e0-837c-2aadb1ac5cd7',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'misc_feature',\n", + " 'name': 'XhoI_silent_mutation',\n", + " 'strand': 1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': True,\n", + " 'color': '#006FEF'},\n", + " {'notes': {},\n", + " 'id': '5cd8882d-6028-427b-89e9-4d2b4996d828',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'misc_feature',\n", + " 'name': 'BamHI_silent_mutation',\n", + " 'strand': 1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': True,\n", + " 'color': '#006FEF'},\n", + " {'notes': {},\n", + " 'id': 'a7bec6ef-74a0-4e92-bbde-1a99525b4a93',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'misc_feature',\n", + " 'name': 'ssrA tag enhanced',\n", + " 'strand': 1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': True,\n", + " 'color': '#006FEF'},\n", + " {'notes': {},\n", + " 'id': 'd7cf5657-219f-4a00-b7aa-cd820daba37b',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'misc_feature',\n", + " 'name': 'ssrA tag',\n", + " 'strand': 1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': True,\n", + " 'color': '#006FEF'},\n", + " {'notes': {},\n", + " 'id': 'ecbe6477-0eec-4ad1-af5f-e55f1b2df867',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'terminator',\n", + " 'name': 'dbl term',\n", + " 'strand': 1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': True,\n", + " 'color': '#F51600'},\n", + " {'notes': {},\n", + " 'id': 'f5301a24-0f05-482a-b834-20c04e97c57b',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'rep_origin',\n", + " 'name': 'pSC101**',\n", + " 'strand': -1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': False,\n", + " 'color': '#878787'},\n", + " {'notes': {},\n", + " 'id': 'e019bc68-653b-4713-9f03-d960e9325ec9',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'terminator',\n", + " 'name': 'T0',\n", + " 'strand': 1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': True,\n", + " 'color': '#F51600'},\n", + " {'notes': {},\n", + " 'id': 'b57f6279-cc81-42fc-8532-b9a91da9ffa9',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'misc_marker',\n", + " 'name': 'CmR',\n", + " 'strand': -1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': False,\n", + " 'color': '#8DCEB1'}]" ] }, "execution_count": 6, @@ -222,7 +456,27 @@ "execution_count": 7, "id": "nuclear-cliff", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{'notes': {},\n", + " 'id': 'd81d6164-7597-41bc-b913-205f558837e1',\n", + " 'start': 0,\n", + " 'end': 0,\n", + " 'type': 'CDS',\n", + " 'name': 'GFPuv',\n", + " 'strand': 1,\n", + " '__typename': 'sequenceFeature',\n", + " 'annotationTypePlural': 'features',\n", + " 'forward': True,\n", + " 'color': '#EF6500'}" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "gfp_uv_feature = [feat for feat in features if feat['name'] == \"GFPuv\"]\n", "if gfp_uv_feature:\n", @@ -242,7 +496,17 @@ "execution_count": 8, "id": "regular-filename", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "if gfp_uv_feature:\n", " display(sequence['sequence'][int(gfp_uv_feature[0]['start']):int(gfp_uv_feature[0]['end']) + 1])" @@ -259,17 +523,50 @@ { "cell_type": "code", "execution_count": 9, + "id": "6c1ea267", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "features=[feat for feat in features if feat['end'] - feat['start'] > 100]\n", + "features" + ] + }, + { + "cell_type": "code", + "execution_count": 10, "id": "artistic-liverpool", "metadata": { "scrolled": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No features found\n" + ] + } + ], "source": [ - "if features:\n", + "filtered_features = [feat for feat in features if feat['end'] - feat['start'] > 100]\n", + "if filtered_features:\n", " _ = plot_plasmid_features(plasmid_length=len(sequence['sequence']),\n", - " features=[feat for feat in features if feat['end'] - feat['start'] > 100])\n", + " features=filtered_features)\n", " # This line just centers the image\n", - " HTML(\"\"\"\"\"\")" + " HTML(\"\"\"\"\"\")\n", + "else:\n", + " print(\"No features found\")" ] }, { @@ -284,7 +581,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "id": "special-landscape", "metadata": {}, "outputs": [ @@ -316,7 +613,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "id": "serial-promise", "metadata": {}, "outputs": [], @@ -328,7 +625,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "id": "loving-africa", "metadata": {}, "outputs": [], @@ -349,7 +646,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "id": "worth-marketplace", "metadata": {}, "outputs": [], @@ -391,31 +688,16 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 17, "id": "excellent-broad", "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "ae31abd5da1742b9930121dbb1539dff", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "NGLWidget()" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Uncomment the following lines to show the 3D structure\n", - "view = nglview.show_pdbid(\"2KNJ\") # load \"2KNJ\" from RCSB PDB and display viewer widget\n", - "view" + "# view = nglview.show_pdbid(\"2KNJ\") # load \"2KNJ\" from RCSB PDB and display viewer widget\n", + "# view" ] }, { @@ -436,17 +718,18 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 18, "id": "invisible-commerce", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'existingAminoAcidSequences': [{'id': '7a5c3f16-c19e-4f26-bb47-2ecb68e0cdc7'}]}" + "{'createdAminoAcidSequences': [{'id': '266ad981-3b0e-4d49-8fcf-823b860173ff',\n", + " 'name': '2KNJ2'}]}" ] }, - "execution_count": 15, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -461,17 +744,18 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 19, "id": "bafd06c3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'existingAminoAcidSequences': [{'id': '7a5c3f16-c19e-4f26-bb47-2ecb68e0cdc7'}]}" + "{'createdAminoAcidSequences': [{'id': '266ad981-3b0e-4d49-8fcf-823b860173ff',\n", + " 'name': '2KNJ2'}]}" ] }, - "execution_count": 16, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -490,7 +774,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 20, "id": "pretty-console", "metadata": {}, "outputs": [], @@ -515,7 +799,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 21, "id": "strong-person", "metadata": {}, "outputs": [ @@ -523,7 +807,7 @@ "data": { "text/html": [ "\n", - "
\n", + "
\n", " " ] }, @@ -532,7 +816,7 @@ }, { "data": { - "application/javascript": "\n require([\"https://rawgit.com/caldwell/renderjson/master/renderjson.js\"], function() {\n document.getElementById('6a794431-74d3-4a04-9ae0-9312eb411e3c').appendChild(renderjson([{\"id\": \"7a5c3f16-c19e-4f26-bb47-2ecb68e0cdc7\", \"name\": \"2KNJ2\", \"isoPoint\": null, \"uniprotId\": null, \"size\": 270, \"molecularWeight\": 10208.4559, \"extinctionCoefficient\": 2980, \"proteinSequence\": \"hhqelctkgddalvtelecirlrispetnaafdnavqqlnclnracayrkmcatnnleqamsvyftneqikeihdaatacdpeahhehdh\", \"regionAnnotations\": [], \"tags\": [], \"createdAt\": \"2023-10-19T14:16:02.689Z\", \"updatedAt\": \"2023-10-19T14:20:35.163Z\"}]))\n });\n " + "application/javascript": "\n require([\"https://rawgit.com/caldwell/renderjson/master/renderjson.js\"], function() {\n document.getElementById('cbcc8683-1634-4ef7-a9b6-216c050f1b6e').appendChild(renderjson([{\"id\": \"266ad981-3b0e-4d49-8fcf-823b860173ff\", \"name\": \"2KNJ2\", \"isoPoint\": null, \"uniprotId\": null, \"size\": 270, \"molecularWeight\": 10208.4559, \"extinctionCoefficient\": 2980, \"proteinSequence\": \"HHQELCTKGDDALVTELECIRLRISPETNAAFDNAVQQLNCLNRACAYRKMCATNNLEQAMSVYFTNEQIKEIHDAATACDPEAHHEHDH\", \"regionAnnotations\": [], \"tags\": [], \"createdAt\": \"2024-10-11T21:20:09.134Z\", \"updatedAt\": \"2024-10-11T21:20:09.134Z\"}]))\n });\n " }, "metadata": {}, "output_type": "display_data" @@ -553,7 +837,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "teselagen-mXBWz8ru-py3.11", "language": "python", "name": "python3" }, @@ -567,7 +851,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.11.6" } }, "nbformat": 4, diff --git a/teselagen/utils/configuration_helper.py b/teselagen/utils/configuration_helper.py index cc462c1..e143398 100644 --- a/teselagen/utils/configuration_helper.py +++ b/teselagen/utils/configuration_helper.py @@ -10,10 +10,11 @@ from pathlib import Path from typing import Dict -from teselagen.api.client import DEFAULT_HOST_URL + from teselagen.utils import get_credentials_path from teselagen.utils import get_project_root from teselagen.utils import get_test_configuration_path +from teselagen.utils import get_default_host_name logger = logging.getLogger(__name__) @@ -46,9 +47,10 @@ if input("test configuration ? [yes|no] : ").lower() in ["y", "yes"]: # test configuration - host_url: str = input(f"host_url [default: {DEFAULT_HOST_URL}] : ") + default_host_name = get_default_host_name() + host_url: str = input(f"host_url [default: {default_host_name}] : ") configuration: Dict[str, str] = { - "host_url": host_url if host_url != "" else DEFAULT_HOST_URL, + "host_url": host_url if host_url != "" else default_host_name, } print(f"Saving test configuration to : {configuration_path.absolute()}") diff --git a/teselagen/utils/utils.py b/teselagen/utils/utils.py index dfe70eb..7509788 100644 --- a/teselagen/utils/utils.py +++ b/teselagen/utils/utils.py @@ -6,6 +6,7 @@ from __future__ import annotations from collections.abc import Callable +from dataclasses import dataclass from datetime import date from datetime import datetime from datetime import time @@ -38,8 +39,8 @@ # _DecoratorFactoryType = Callable[[_DecoratorType], _DecoratorType] # noqa: E800 # CONSTANTS -DEFAULT_HOST_URL: Literal['https://rc.teselagen.com'] = 'https://rc.teselagen.com' -DEFAULT_API_TOKEN_NAME: Literal['x-tg-cli-token'] = 'x-tg-cli-token' +DEFAULT_HOST_URL: Literal['https://rc-single.teselagen.com'] = 'https://rc-single.teselagen.com' +DEFAULT_API_TOKEN_NAME: Literal['x-tg-api-token'] = 'x-tg-api-token' DEFAULT_MAX_DATAPOINTS: int = 100 @@ -100,6 +101,11 @@ def _(func: functools.partial[Any]) -> str: # NOTE: partial function has no `__name__` attribute, so we need to get it from its `func` attribute instead. return get_func_name(func.func) +def get_default_host_name()->str: + cred_data = load_credentials_from_file() + if cred_data is not None and cred_data.host_url is not None: + return cred_data.host_url + return DEFAULT_HOST_URL def wrapped_partial(func: F, *args: object, **kwargs: object) -> F: """Partial that propagates `__name__` and `__doc__`.""" @@ -276,8 +282,9 @@ def get_credentials( """ # Check if credentials are defined on a file file_credentials = load_credentials_from_file() - username = file_credentials[0] if username is None else username - password = file_credentials[1] if password is None else password + if file_credentials: + username = file_credentials.username if username is None else username + password = file_credentials.password if password is None else password # If credentials aren't defined, get them from user input try: @@ -322,9 +329,13 @@ def delete_session_file(session_filepath: Optional[str] = None) -> None: if Path(session_filepath).is_file(): Path(session_filepath).unlink() +@dataclass +class Credentials(): + username: Optional[str] + password: Optional[str] + host_url: Optional[str] - -def load_credentials_from_file(path_to_credentials_file: str = None) -> Tuple[Optional[str], Optional[str]]: +def load_credentials_from_file(path_to_credentials_file: Optional[str] = None) -> Optional[Credentials]: """Load credentials from json credentials file. The credentials file should contain a JSON object with the following keys (and the values) @@ -348,11 +359,14 @@ def load_credentials_from_file(path_to_credentials_file: str = None) -> Tuple[Op path_to_credentials_file = str(get_credentials_path()) if not Path(path_to_credentials_file).is_file(): - return None, None + return None credentials: Dict = load_from_json(filepath=Path(path_to_credentials_file)) - return credentials['username'], credentials['password'] + return Credentials( + username=credentials['username'], + password=credentials['password'], + host_url=credentials['host_url']) def handler(func: F) -> F: