From e773a7d2fa38694d54c64be972a9e01429917b42 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Wed, 8 Oct 2025 15:27:46 -0400 Subject: [PATCH 01/26] Update dependency --- examples/MITRotor_quickstart.ipynb | 4 +- poetry.lock | 2282 ++++++++++++++++------------ pyproject.toml | 2 +- 3 files changed, 1344 insertions(+), 944 deletions(-) diff --git a/examples/MITRotor_quickstart.ipynb b/examples/MITRotor_quickstart.ipynb index f1871f4..499b920 100644 --- a/examples/MITRotor_quickstart.ipynb +++ b/examples/MITRotor_quickstart.ipynb @@ -310,7 +310,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "mitrotor-l4Gn_-ln-py3.12", "language": "python", "name": "python3" }, @@ -324,7 +324,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.6" + "version": "3.12.11" } }, "nbformat": 4, diff --git a/poetry.lock b/poetry.lock index 8a67ceb..d5ebdd6 100644 --- a/poetry.lock +++ b/poetry.lock @@ -26,15 +26,15 @@ trio = ["trio (>=0.26.1)"] [[package]] name = "anyio" -version = "4.9.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" +version = "4.11.0" +description = "High-level concurrency and networking framework on top of asyncio or Trio" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"}, - {file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"}, + {file = "anyio-4.11.0-py3-none-any.whl", hash = "sha256:0287e96f4d26d4149305414d4e3bc32f0dcd0862365a4bddea19d7a1ec38c4fc"}, + {file = "anyio-4.11.0.tar.gz", hash = "sha256:82a8d0b81e318cc5ce71a5f1f8b5c4e63619620b63141ef8c995fa0db95a57c4"}, ] [package.dependencies] @@ -43,9 +43,7 @@ sniffio = ">=1.1" typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] -doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] -test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] -trio = ["trio (>=0.26.1)"] +trio = ["trio (>=0.31.0)"] [[package]] name = "appnope" @@ -82,6 +80,7 @@ description = "Low-level CFFI bindings for Argon2" optional = false python-versions = ">=3.6" groups = ["dev"] +markers = "python_version <= \"3.11\"" 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"}, @@ -113,6 +112,49 @@ cffi = ">=1.0.1" dev = ["cogapp", "pre-commit", "pytest", "wheel"] tests = ["pytest"] +[[package]] +name = "argon2-cffi-bindings" +version = "25.1.0" +description = "Low-level CFFI bindings for Argon2" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +markers = "python_version >= \"3.12\"" +files = [ + {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:3d3f05610594151994ca9ccb3c771115bdb4daef161976a266f0dd8aa9996b8f"}, + {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:8b8efee945193e667a396cbc7b4fb7d357297d6234d30a489905d96caabde56b"}, + {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3c6702abc36bf3ccba3f802b799505def420a1b7039862014a65db3205967f5a"}, + {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a1c70058c6ab1e352304ac7e3b52554daadacd8d453c1752e547c76e9c99ac44"}, + {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e2fd3bfbff3c5d74fef31a722f729bf93500910db650c925c2d6ef879a7e51cb"}, + {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4f9665de60b1b0e99bcd6be4f17d90339698ce954cfd8d9cf4f91c995165a92"}, + {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ba92837e4a9aa6a508c8d2d7883ed5a8f6c308c89a4790e1e447a220deb79a85"}, + {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-win32.whl", hash = "sha256:84a461d4d84ae1295871329b346a97f68eade8c53b6ed9a7ca2d7467f3c8ff6f"}, + {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b55aec3565b65f56455eebc9b9f34130440404f27fe21c3b375bf1ea4d8fbae6"}, + {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:87c33a52407e4c41f3b70a9c2d3f6056d88b10dad7695be708c5021673f55623"}, + {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:aecba1723ae35330a008418a91ea6cfcedf6d31e5fbaa056a166462ff066d500"}, + {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2630b6240b495dfab90aebe159ff784d08ea999aa4b0d17efa734055a07d2f44"}, + {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:7aef0c91e2c0fbca6fc68e7555aa60ef7008a739cbe045541e438373bc54d2b0"}, + {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e021e87faa76ae0d413b619fe2b65ab9a037f24c60a1e6cc43457ae20de6dc6"}, + {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3e924cfc503018a714f94a49a149fdc0b644eaead5d1f089330399134fa028a"}, + {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c87b72589133f0346a1cb8d5ecca4b933e3c9b64656c9d175270a000e73b288d"}, + {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1db89609c06afa1a214a69a462ea741cf735b29a57530478c06eb81dd403de99"}, + {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-win32.whl", hash = "sha256:473bcb5f82924b1becbb637b63303ec8d10e84c8d241119419897a26116515d2"}, + {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-win_amd64.whl", hash = "sha256:a98cd7d17e9f7ce244c0803cad3c23a7d379c301ba618a5fa76a67d116618b98"}, + {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-win_arm64.whl", hash = "sha256:b0fdbcf513833809c882823f98dc2f931cf659d9a1429616ac3adebb49f5db94"}, + {file = "argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6dca33a9859abf613e22733131fc9194091c1fa7cb3e131c143056b4856aa47e"}, + {file = "argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:21378b40e1b8d1655dd5310c84a40fc19a9aa5e6366e835ceb8576bf0fea716d"}, + {file = "argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d588dec224e2a83edbdc785a5e6f3c6cd736f46bfd4b441bbb5aa1f5085e584"}, + {file = "argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5acb4e41090d53f17ca1110c3427f0a130f944b896fc8c83973219c97f57b690"}, + {file = "argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:da0c79c23a63723aa5d782250fbf51b768abca630285262fb5144ba5ae01e520"}, + {file = "argon2_cffi_bindings-25.1.0.tar.gz", hash = "sha256:b957f3e6ea4d55d820e40ff76f450952807013d361a65d7f28acc0acbf29229d"}, +] + +[package.dependencies] +cffi = [ + {version = ">=1.0.1", markers = "python_version < \"3.14\""}, + {version = ">=2.0.0b1", markers = "python_version >= \"3.14\""}, +] + [[package]] name = "arrow" version = "1.3.0" @@ -185,6 +227,7 @@ description = "Classes Without Boilerplate" optional = false python-versions = ">=3.8" groups = ["dev"] +markers = "python_version <= \"3.11\"" files = [ {file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3"}, {file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b"}, @@ -198,6 +241,19 @@ docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphi tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] +[[package]] +name = "attrs" +version = "25.4.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +markers = "python_version >= \"3.12\"" +files = [ + {file = "attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373"}, + {file = "attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11"}, +] + [[package]] name = "babel" version = "2.17.0" @@ -231,14 +287,14 @@ files = [ [[package]] name = "beautifulsoup4" -version = "4.13.4" +version = "4.14.2" description = "Screen-scraping library" optional = false python-versions = ">=3.7.0" groups = ["dev"] files = [ - {file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b"}, - {file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195"}, + {file = "beautifulsoup4-4.14.2-py3-none-any.whl", hash = "sha256:5ef6fa3a8cbece8488d66985560f97ed091e22bbc4e9c2338508a9d5de6d4515"}, + {file = "beautifulsoup4-4.14.2.tar.gz", hash = "sha256:2a98ab9f944a11acee9cc848508ec28d9228abfd522ef0fad6a02a72e0ded69e"}, ] [package.dependencies] @@ -344,14 +400,14 @@ css = ["tinycss2 (>=1.1.0,<1.5)"] [[package]] name = "certifi" -version = "2025.7.14" +version = "2025.10.5" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2"}, - {file = "certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995"}, + {file = "certifi-2025.10.5-py3-none-any.whl", hash = "sha256:0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de"}, + {file = "certifi-2025.10.5.tar.gz", hash = "sha256:47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43"}, ] [[package]] @@ -361,6 +417,7 @@ description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" groups = ["dev"] +markers = "python_version <= \"3.11\"" 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"}, @@ -434,106 +491,191 @@ files = [ [package.dependencies] pycparser = "*" +[[package]] +name = "cffi" +version = "2.0.0" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +markers = "python_version >= \"3.12\"" +files = [ + {file = "cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44"}, + {file = "cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49"}, + {file = "cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c"}, + {file = "cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb"}, + {file = "cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0"}, + {file = "cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4"}, + {file = "cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453"}, + {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495"}, + {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5"}, + {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb"}, + {file = "cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a"}, + {file = "cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739"}, + {file = "cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe"}, + {file = "cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c"}, + {file = "cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92"}, + {file = "cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93"}, + {file = "cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5"}, + {file = "cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664"}, + {file = "cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26"}, + {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9"}, + {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414"}, + {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743"}, + {file = "cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5"}, + {file = "cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5"}, + {file = "cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d"}, + {file = "cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d"}, + {file = "cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c"}, + {file = "cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe"}, + {file = "cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062"}, + {file = "cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e"}, + {file = "cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037"}, + {file = "cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba"}, + {file = "cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94"}, + {file = "cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187"}, + {file = "cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18"}, + {file = "cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5"}, + {file = "cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6"}, + {file = "cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb"}, + {file = "cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca"}, + {file = "cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b"}, + {file = "cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b"}, + {file = "cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2"}, + {file = "cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3"}, + {file = "cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26"}, + {file = "cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c"}, + {file = "cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b"}, + {file = "cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27"}, + {file = "cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75"}, + {file = "cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91"}, + {file = "cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5"}, + {file = "cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13"}, + {file = "cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b"}, + {file = "cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c"}, + {file = "cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef"}, + {file = "cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775"}, + {file = "cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205"}, + {file = "cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1"}, + {file = "cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f"}, + {file = "cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25"}, + {file = "cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad"}, + {file = "cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9"}, + {file = "cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d"}, + {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c"}, + {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8"}, + {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc"}, + {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592"}, + {file = "cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512"}, + {file = "cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4"}, + {file = "cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e"}, + {file = "cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6"}, + {file = "cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9"}, + {file = "cffi-2.0.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf"}, + {file = "cffi-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7"}, + {file = "cffi-2.0.0-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c"}, + {file = "cffi-2.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165"}, + {file = "cffi-2.0.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534"}, + {file = "cffi-2.0.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f"}, + {file = "cffi-2.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63"}, + {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2"}, + {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65"}, + {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322"}, + {file = "cffi-2.0.0-cp39-cp39-win32.whl", hash = "sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a"}, + {file = "cffi-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9"}, + {file = "cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529"}, +] + +[package.dependencies] +pycparser = {version = "*", markers = "implementation_name != \"PyPy\""} + [[package]] name = "charset-normalizer" -version = "3.4.2" +version = "3.4.3" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941"}, - {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd"}, - {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6"}, - {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d"}, - {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86"}, - {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c"}, - {file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0"}, - {file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef"}, - {file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6"}, - {file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366"}, - {file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db"}, - {file = "charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a"}, - {file = "charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509"}, - {file = "charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2"}, - {file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645"}, - {file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd"}, - {file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8"}, - {file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f"}, - {file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7"}, - {file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9"}, - {file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544"}, - {file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82"}, - {file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0"}, - {file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5"}, - {file = "charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a"}, - {file = "charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28"}, - {file = "charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7"}, - {file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3"}, - {file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a"}, - {file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214"}, - {file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a"}, - {file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd"}, - {file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981"}, - {file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c"}, - {file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b"}, - {file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d"}, - {file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f"}, - {file = "charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c"}, - {file = "charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e"}, - {file = "charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0"}, - {file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf"}, - {file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e"}, - {file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1"}, - {file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c"}, - {file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691"}, - {file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0"}, - {file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b"}, - {file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff"}, - {file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b"}, - {file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148"}, - {file = "charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7"}, - {file = "charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980"}, - {file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cad5f45b3146325bb38d6855642f6fd609c3f7cad4dbaf75549bf3b904d3184"}, - {file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2680962a4848b3c4f155dc2ee64505a9c57186d0d56b43123b17ca3de18f0fa"}, - {file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36b31da18b8890a76ec181c3cf44326bf2c48e36d393ca1b72b3f484113ea344"}, - {file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4074c5a429281bf056ddd4c5d3b740ebca4d43ffffe2ef4bf4d2d05114299da"}, - {file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9e36a97bee9b86ef9a1cf7bb96747eb7a15c2f22bdb5b516434b00f2a599f02"}, - {file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:1b1bde144d98e446b056ef98e59c256e9294f6b74d7af6846bf5ffdafd687a7d"}, - {file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:915f3849a011c1f593ab99092f3cecfcb4d65d8feb4a64cf1bf2d22074dc0ec4"}, - {file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f"}, - {file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:25a23ea5c7edc53e0f29bae2c44fcb5a1aa10591aae107f2a2b2583a9c5cbc64"}, - {file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:770cab594ecf99ae64c236bc9ee3439c3f46be49796e265ce0cc8bc17b10294f"}, - {file = "charset_normalizer-3.4.2-cp37-cp37m-win32.whl", hash = "sha256:6a0289e4589e8bdfef02a80478f1dfcb14f0ab696b5a00e1f4b8a14a307a3c58"}, - {file = "charset_normalizer-3.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6fc1f5b51fa4cecaa18f2bd7a003f3dd039dd615cd69a2afd6d3b19aed6775f2"}, - {file = "charset_normalizer-3.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb"}, - {file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a"}, - {file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45"}, - {file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5"}, - {file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1"}, - {file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027"}, - {file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b"}, - {file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455"}, - {file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01"}, - {file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58"}, - {file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681"}, - {file = "charset_normalizer-3.4.2-cp38-cp38-win32.whl", hash = "sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7"}, - {file = "charset_normalizer-3.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a"}, - {file = "charset_normalizer-3.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4"}, - {file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7"}, - {file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836"}, - {file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597"}, - {file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7"}, - {file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f"}, - {file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba"}, - {file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12"}, - {file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518"}, - {file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5"}, - {file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3"}, - {file = "charset_normalizer-3.4.2-cp39-cp39-win32.whl", hash = "sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471"}, - {file = "charset_normalizer-3.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e"}, - {file = "charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0"}, - {file = "charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-win32.whl", hash = "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0f2be7e0cf7754b9a30eb01f4295cc3d4358a479843b31f328afd210e2c7598c"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c60e092517a73c632ec38e290eba714e9627abe9d301c8c8a12ec32c314a2a4b"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:252098c8c7a873e17dd696ed98bbe91dbacd571da4b87df3736768efa7a792e4"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3653fad4fe3ed447a596ae8638b437f827234f01a8cd801842e43f3d0a6b281b"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8999f965f922ae054125286faf9f11bc6932184b93011d138925a1773830bbe9"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d95bfb53c211b57198bb91c46dd5a2d8018b3af446583aab40074bf7988401cb"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:5b413b0b1bfd94dbf4023ad6945889f374cd24e3f62de58d6bb102c4d9ae534a"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:b5e3b2d152e74e100a9e9573837aba24aab611d39428ded46f4e4022ea7d1942"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a2d08ac246bb48479170408d6c19f6385fa743e7157d716e144cad849b2dd94b"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-win32.whl", hash = "sha256:ec557499516fc90fd374bf2e32349a2887a876fbf162c160e3c01b6849eaf557"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:5d8d01eac18c423815ed4f4a2ec3b439d654e55ee4ad610e153cf02faf67ea40"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-win32.whl", hash = "sha256:16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca"}, + {file = "charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a"}, + {file = "charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14"}, ] [[package]] @@ -554,15 +696,15 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "click" -version = "8.2.1" +version = "8.3.0" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.10" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b"}, - {file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202"}, + {file = "click-8.3.0-py3-none-any.whl", hash = "sha256:9b9f285302c6e3064f4330c05f05b81945b2a39544279343e6e7c5f27a9baddc"}, + {file = "click-8.3.0.tar.gz", hash = "sha256:e7b8232224eba16f4ebe410c25ced9f7875cb5f3263ffc93cc3e8da705e229c4"}, ] [package.dependencies] @@ -583,19 +725,16 @@ markers = {main = "platform_system == \"Windows\"", dev = "platform_system == \" [[package]] name = "comm" -version = "0.2.2" +version = "0.2.3" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, - {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, + {file = "comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417"}, + {file = "comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971"}, ] -[package.dependencies] -traitlets = ">=4" - [package.extras] test = ["pytest"] @@ -674,79 +813,94 @@ test-no-images = ["pytest", "pytest-cov", "wurlitzer"] [[package]] name = "contourpy" -version = "1.3.2" +version = "1.3.3" description = "Python library for calculating contours of 2D quadrilateral grids" optional = false -python-versions = ">=3.10" +python-versions = ">=3.11" groups = ["examples"] markers = "python_version >= \"3.12\"" files = [ - {file = "contourpy-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba38e3f9f330af820c4b27ceb4b9c7feee5fe0493ea53a8720f4792667465934"}, - {file = "contourpy-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc41ba0714aa2968d1f8674ec97504a8f7e334f48eeacebcaa6256213acb0989"}, - {file = "contourpy-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9be002b31c558d1ddf1b9b415b162c603405414bacd6932d031c5b5a8b757f0d"}, - {file = "contourpy-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d2e74acbcba3bfdb6d9d8384cdc4f9260cae86ed9beee8bd5f54fee49a430b9"}, - {file = "contourpy-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e259bced5549ac64410162adc973c5e2fb77f04df4a439d00b478e57a0e65512"}, - {file = "contourpy-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad687a04bc802cbe8b9c399c07162a3c35e227e2daccf1668eb1f278cb698631"}, - {file = "contourpy-1.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cdd22595308f53ef2f891040ab2b93d79192513ffccbd7fe19be7aa773a5e09f"}, - {file = "contourpy-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b4f54d6a2defe9f257327b0f243612dd051cc43825587520b1bf74a31e2f6ef2"}, - {file = "contourpy-1.3.2-cp310-cp310-win32.whl", hash = "sha256:f939a054192ddc596e031e50bb13b657ce318cf13d264f095ce9db7dc6ae81c0"}, - {file = "contourpy-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c440093bbc8fc21c637c03bafcbef95ccd963bc6e0514ad887932c18ca2a759a"}, - {file = "contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445"}, - {file = "contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773"}, - {file = "contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1"}, - {file = "contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43"}, - {file = "contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab"}, - {file = "contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7"}, - {file = "contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83"}, - {file = "contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd"}, - {file = "contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f"}, - {file = "contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878"}, - {file = "contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2"}, - {file = "contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15"}, - {file = "contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92"}, - {file = "contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87"}, - {file = "contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415"}, - {file = "contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe"}, - {file = "contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441"}, - {file = "contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e"}, - {file = "contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912"}, - {file = "contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73"}, - {file = "contourpy-1.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:de39db2604ae755316cb5967728f4bea92685884b1e767b7c24e983ef5f771cb"}, - {file = "contourpy-1.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f9e896f447c5c8618f1edb2bafa9a4030f22a575ec418ad70611450720b5b08"}, - {file = "contourpy-1.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71e2bd4a1c4188f5c2b8d274da78faab884b59df20df63c34f74aa1813c4427c"}, - {file = "contourpy-1.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de425af81b6cea33101ae95ece1f696af39446db9682a0b56daaa48cfc29f38f"}, - {file = "contourpy-1.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:977e98a0e0480d3fe292246417239d2d45435904afd6d7332d8455981c408b85"}, - {file = "contourpy-1.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:434f0adf84911c924519d2b08fc10491dd282b20bdd3fa8f60fd816ea0b48841"}, - {file = "contourpy-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c66c4906cdbc50e9cba65978823e6e00b45682eb09adbb78c9775b74eb222422"}, - {file = "contourpy-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b7fc0cd78ba2f4695fd0a6ad81a19e7e3ab825c31b577f384aa9d7817dc3bef"}, - {file = "contourpy-1.3.2-cp313-cp313-win32.whl", hash = "sha256:15ce6ab60957ca74cff444fe66d9045c1fd3e92c8936894ebd1f3eef2fff075f"}, - {file = "contourpy-1.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e1578f7eafce927b168752ed7e22646dad6cd9bca673c60bff55889fa236ebf9"}, - {file = "contourpy-1.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0475b1f6604896bc7c53bb070e355e9321e1bc0d381735421a2d2068ec56531f"}, - {file = "contourpy-1.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c85bb486e9be652314bb5b9e2e3b0d1b2e643d5eec4992c0fbe8ac71775da739"}, - {file = "contourpy-1.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:745b57db7758f3ffc05a10254edd3182a2a83402a89c00957a8e8a22f5582823"}, - {file = "contourpy-1.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:970e9173dbd7eba9b4e01aab19215a48ee5dd3f43cef736eebde064a171f89a5"}, - {file = "contourpy-1.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6c4639a9c22230276b7bffb6a850dfc8258a2521305e1faefe804d006b2e532"}, - {file = "contourpy-1.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc829960f34ba36aad4302e78eabf3ef16a3a100863f0d4eeddf30e8a485a03b"}, - {file = "contourpy-1.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d32530b534e986374fc19eaa77fcb87e8a99e5431499949b828312bdcd20ac52"}, - {file = "contourpy-1.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e298e7e70cf4eb179cc1077be1c725b5fd131ebc81181bf0c03525c8abc297fd"}, - {file = "contourpy-1.3.2-cp313-cp313t-win32.whl", hash = "sha256:d0e589ae0d55204991450bb5c23f571c64fe43adaa53f93fc902a84c96f52fe1"}, - {file = "contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69"}, - {file = "contourpy-1.3.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c"}, - {file = "contourpy-1.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:107ba8a6a7eec58bb475329e6d3b95deba9440667c4d62b9b6063942b61d7f16"}, - {file = "contourpy-1.3.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ded1706ed0c1049224531b81128efbd5084598f18d8a2d9efae833edbd2b40ad"}, - {file = "contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0"}, - {file = "contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5"}, - {file = "contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5"}, - {file = "contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54"}, + {file = "contourpy-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:709a48ef9a690e1343202916450bc48b9e51c049b089c7f79a267b46cffcdaa1"}, + {file = "contourpy-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:23416f38bfd74d5d28ab8429cc4d63fa67d5068bd711a85edb1c3fb0c3e2f381"}, + {file = "contourpy-1.3.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:929ddf8c4c7f348e4c0a5a3a714b5c8542ffaa8c22954862a46ca1813b667ee7"}, + {file = "contourpy-1.3.3-cp311-cp311-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9e999574eddae35f1312c2b4b717b7885d4edd6cb46700e04f7f02db454e67c1"}, + {file = "contourpy-1.3.3-cp311-cp311-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0bf67e0e3f482cb69779dd3061b534eb35ac9b17f163d851e2a547d56dba0a3a"}, + {file = "contourpy-1.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51e79c1f7470158e838808d4a996fa9bac72c498e93d8ebe5119bc1e6becb0db"}, + {file = "contourpy-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:598c3aaece21c503615fd59c92a3598b428b2f01bfb4b8ca9c4edeecc2438620"}, + {file = "contourpy-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:322ab1c99b008dad206d406bb61d014cf0174df491ae9d9d0fac6a6fda4f977f"}, + {file = "contourpy-1.3.3-cp311-cp311-win32.whl", hash = "sha256:fd907ae12cd483cd83e414b12941c632a969171bf90fc937d0c9f268a31cafff"}, + {file = "contourpy-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:3519428f6be58431c56581f1694ba8e50626f2dd550af225f82fb5f5814d2a42"}, + {file = "contourpy-1.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:15ff10bfada4bf92ec8b31c62bf7c1834c244019b4a33095a68000d7075df470"}, + {file = "contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb"}, + {file = "contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6"}, + {file = "contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7"}, + {file = "contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8"}, + {file = "contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea"}, + {file = "contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1"}, + {file = "contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7"}, + {file = "contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411"}, + {file = "contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69"}, + {file = "contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b"}, + {file = "contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc"}, + {file = "contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5"}, + {file = "contourpy-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1"}, + {file = "contourpy-1.3.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286"}, + {file = "contourpy-1.3.3-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5"}, + {file = "contourpy-1.3.3-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67"}, + {file = "contourpy-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9"}, + {file = "contourpy-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659"}, + {file = "contourpy-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7"}, + {file = "contourpy-1.3.3-cp313-cp313-win32.whl", hash = "sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d"}, + {file = "contourpy-1.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263"}, + {file = "contourpy-1.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9"}, + {file = "contourpy-1.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d"}, + {file = "contourpy-1.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216"}, + {file = "contourpy-1.3.3-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae"}, + {file = "contourpy-1.3.3-cp313-cp313t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20"}, + {file = "contourpy-1.3.3-cp313-cp313t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99"}, + {file = "contourpy-1.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b"}, + {file = "contourpy-1.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a"}, + {file = "contourpy-1.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e"}, + {file = "contourpy-1.3.3-cp313-cp313t-win32.whl", hash = "sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3"}, + {file = "contourpy-1.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8"}, + {file = "contourpy-1.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301"}, + {file = "contourpy-1.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a"}, + {file = "contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77"}, + {file = "contourpy-1.3.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5"}, + {file = "contourpy-1.3.3-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4"}, + {file = "contourpy-1.3.3-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36"}, + {file = "contourpy-1.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3"}, + {file = "contourpy-1.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b"}, + {file = "contourpy-1.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36"}, + {file = "contourpy-1.3.3-cp314-cp314-win32.whl", hash = "sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d"}, + {file = "contourpy-1.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd"}, + {file = "contourpy-1.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339"}, + {file = "contourpy-1.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772"}, + {file = "contourpy-1.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77"}, + {file = "contourpy-1.3.3-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13"}, + {file = "contourpy-1.3.3-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe"}, + {file = "contourpy-1.3.3-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f"}, + {file = "contourpy-1.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0"}, + {file = "contourpy-1.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4"}, + {file = "contourpy-1.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f"}, + {file = "contourpy-1.3.3-cp314-cp314t-win32.whl", hash = "sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae"}, + {file = "contourpy-1.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc"}, + {file = "contourpy-1.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b"}, + {file = "contourpy-1.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd5dfcaeb10f7b7f9dc8941717c6c2ade08f587be2226222c12b25f0483ed497"}, + {file = "contourpy-1.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:0c1fc238306b35f246d61a1d416a627348b5cf0648648a031e14bb8705fcdfe8"}, + {file = "contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70f9aad7de812d6541d29d2bbf8feb22ff7e1c299523db288004e3157ff4674e"}, + {file = "contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ed3657edf08512fc3fe81b510e35c2012fbd3081d2e26160f27ca28affec989"}, + {file = "contourpy-1.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:3d1a3799d62d45c18bafd41c5fa05120b96a28079f2393af559b843d1a966a77"}, + {file = "contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880"}, ] [package.dependencies] -numpy = ">=1.23" +numpy = ">=1.25" [package.extras] bokeh = ["bokeh", "selenium"] docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"] -mypy = ["bokeh", "contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.15.0)", "types-Pillow"] +mypy = ["bokeh", "contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.17.0)", "types-Pillow"] test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] test-no-images = ["pytest", "pytest-cov", "pytest-rerunfailures", "pytest-xdist", "wurlitzer"] @@ -768,38 +922,42 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "debugpy" -version = "1.8.15" +version = "1.8.17" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "debugpy-1.8.15-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e9a8125c85172e3ec30985012e7a81ea5e70bbb836637f8a4104f454f9b06c97"}, - {file = "debugpy-1.8.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fd0b6b5eccaa745c214fd240ea82f46049d99ef74b185a3517dad3ea1ec55d9"}, - {file = "debugpy-1.8.15-cp310-cp310-win32.whl", hash = "sha256:8181cce4d344010f6bfe94a531c351a46a96b0f7987750932b2908e7a1e14a55"}, - {file = "debugpy-1.8.15-cp310-cp310-win_amd64.whl", hash = "sha256:af2dcae4e4cd6e8b35f982ccab29fe65f7e8766e10720a717bc80c464584ee21"}, - {file = "debugpy-1.8.15-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:babc4fb1962dd6a37e94d611280e3d0d11a1f5e6c72ac9b3d87a08212c4b6dd3"}, - {file = "debugpy-1.8.15-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f778e68f2986a58479d0ac4f643e0b8c82fdd97c2e200d4d61e7c2d13838eb53"}, - {file = "debugpy-1.8.15-cp311-cp311-win32.whl", hash = "sha256:f9d1b5abd75cd965e2deabb1a06b0e93a1546f31f9f621d2705e78104377c702"}, - {file = "debugpy-1.8.15-cp311-cp311-win_amd64.whl", hash = "sha256:62954fb904bec463e2b5a415777f6d1926c97febb08ef1694da0e5d1463c5c3b"}, - {file = "debugpy-1.8.15-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:3dcc7225cb317469721ab5136cda9ff9c8b6e6fb43e87c9e15d5b108b99d01ba"}, - {file = "debugpy-1.8.15-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:047a493ca93c85ccede1dbbaf4e66816794bdc214213dde41a9a61e42d27f8fc"}, - {file = "debugpy-1.8.15-cp312-cp312-win32.whl", hash = "sha256:b08e9b0bc260cf324c890626961dad4ffd973f7568fbf57feb3c3a65ab6b6327"}, - {file = "debugpy-1.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:e2a4fe357c92334272eb2845fcfcdbec3ef9f22c16cf613c388ac0887aed15fa"}, - {file = "debugpy-1.8.15-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:f5e01291ad7d6649aed5773256c5bba7a1a556196300232de1474c3c372592bf"}, - {file = "debugpy-1.8.15-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94dc0f0d00e528d915e0ce1c78e771475b2335b376c49afcc7382ee0b146bab6"}, - {file = "debugpy-1.8.15-cp313-cp313-win32.whl", hash = "sha256:fcf0748d4f6e25f89dc5e013d1129ca6f26ad4da405e0723a4f704583896a709"}, - {file = "debugpy-1.8.15-cp313-cp313-win_amd64.whl", hash = "sha256:73c943776cb83e36baf95e8f7f8da765896fd94b05991e7bc162456d25500683"}, - {file = "debugpy-1.8.15-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:054cd4935bd2e4964dfe1aeee4d6bca89d0c833366776fc35387f8a2f517dd00"}, - {file = "debugpy-1.8.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c4288e662997df3176c4b9d93ee1393913fbaf320732be332d538000c53208"}, - {file = "debugpy-1.8.15-cp38-cp38-win32.whl", hash = "sha256:aaa8ce6a37d764f93fe583d7c6ca58eb7550b36941387483db113125f122bb0d"}, - {file = "debugpy-1.8.15-cp38-cp38-win_amd64.whl", hash = "sha256:71cdf7f676af78e70f005c7fad2ef9da0edc2a24befbf3ab146a51f0d58048c2"}, - {file = "debugpy-1.8.15-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:085b6d0adb3eb457c2823ac497a0690b10a99eff8b01c01a041e84579f114b56"}, - {file = "debugpy-1.8.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd546a405381d17527814852642df0a74b7da8acc20ae5f3cfad0b7c86419511"}, - {file = "debugpy-1.8.15-cp39-cp39-win32.whl", hash = "sha256:ae0d445fe11ff4351428e6c2389e904e1cdcb4a47785da5a5ec4af6c5b95fce5"}, - {file = "debugpy-1.8.15-cp39-cp39-win_amd64.whl", hash = "sha256:de7db80189ca97ab4b10a87e4039cfe4dd7ddfccc8f33b5ae40fcd33792fc67a"}, - {file = "debugpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:bce2e6c5ff4f2e00b98d45e7e01a49c7b489ff6df5f12d881c67d2f1ac635f3d"}, - {file = "debugpy-1.8.15.tar.gz", hash = "sha256:58d7a20b7773ab5ee6bdfb2e6cf622fdf1e40c9d5aef2857d85391526719ac00"}, + {file = "debugpy-1.8.17-cp310-cp310-macosx_15_0_x86_64.whl", hash = "sha256:c41d2ce8bbaddcc0009cc73f65318eedfa3dbc88a8298081deb05389f1ab5542"}, + {file = "debugpy-1.8.17-cp310-cp310-manylinux_2_34_x86_64.whl", hash = "sha256:1440fd514e1b815edd5861ca394786f90eb24960eb26d6f7200994333b1d79e3"}, + {file = "debugpy-1.8.17-cp310-cp310-win32.whl", hash = "sha256:3a32c0af575749083d7492dc79f6ab69f21b2d2ad4cd977a958a07d5865316e4"}, + {file = "debugpy-1.8.17-cp310-cp310-win_amd64.whl", hash = "sha256:a3aad0537cf4d9c1996434be68c6c9a6d233ac6f76c2a482c7803295b4e4f99a"}, + {file = "debugpy-1.8.17-cp311-cp311-macosx_15_0_universal2.whl", hash = "sha256:d3fce3f0e3de262a3b67e69916d001f3e767661c6e1ee42553009d445d1cd840"}, + {file = "debugpy-1.8.17-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:c6bdf134457ae0cac6fb68205776be635d31174eeac9541e1d0c062165c6461f"}, + {file = "debugpy-1.8.17-cp311-cp311-win32.whl", hash = "sha256:e79a195f9e059edfe5d8bf6f3749b2599452d3e9380484cd261f6b7cd2c7c4da"}, + {file = "debugpy-1.8.17-cp311-cp311-win_amd64.whl", hash = "sha256:b532282ad4eca958b1b2d7dbcb2b7218e02cb934165859b918e3b6ba7772d3f4"}, + {file = "debugpy-1.8.17-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:f14467edef672195c6f6b8e27ce5005313cb5d03c9239059bc7182b60c176e2d"}, + {file = "debugpy-1.8.17-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:24693179ef9dfa20dca8605905a42b392be56d410c333af82f1c5dff807a64cc"}, + {file = "debugpy-1.8.17-cp312-cp312-win32.whl", hash = "sha256:6a4e9dacf2cbb60d2514ff7b04b4534b0139facbf2abdffe0639ddb6088e59cf"}, + {file = "debugpy-1.8.17-cp312-cp312-win_amd64.whl", hash = "sha256:e8f8f61c518952fb15f74a302e068b48d9c4691768ade433e4adeea961993464"}, + {file = "debugpy-1.8.17-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:857c1dd5d70042502aef1c6d1c2801211f3ea7e56f75e9c335f434afb403e464"}, + {file = "debugpy-1.8.17-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:3bea3b0b12f3946e098cce9b43c3c46e317b567f79570c3f43f0b96d00788088"}, + {file = "debugpy-1.8.17-cp313-cp313-win32.whl", hash = "sha256:e34ee844c2f17b18556b5bbe59e1e2ff4e86a00282d2a46edab73fd7f18f4a83"}, + {file = "debugpy-1.8.17-cp313-cp313-win_amd64.whl", hash = "sha256:6c5cd6f009ad4fca8e33e5238210dc1e5f42db07d4b6ab21ac7ffa904a196420"}, + {file = "debugpy-1.8.17-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:045290c010bcd2d82bc97aa2daf6837443cd52f6328592698809b4549babcee1"}, + {file = "debugpy-1.8.17-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:b69b6bd9dba6a03632534cdf67c760625760a215ae289f7489a452af1031fe1f"}, + {file = "debugpy-1.8.17-cp314-cp314-win32.whl", hash = "sha256:5c59b74aa5630f3a5194467100c3b3d1c77898f9ab27e3f7dc5d40fc2f122670"}, + {file = "debugpy-1.8.17-cp314-cp314-win_amd64.whl", hash = "sha256:893cba7bb0f55161de4365584b025f7064e1f88913551bcd23be3260b231429c"}, + {file = "debugpy-1.8.17-cp38-cp38-macosx_15_0_x86_64.whl", hash = "sha256:8deb4e31cd575c9f9370042876e078ca118117c1b5e1f22c32befcfbb6955f0c"}, + {file = "debugpy-1.8.17-cp38-cp38-manylinux_2_34_x86_64.whl", hash = "sha256:b75868b675949a96ab51abc114c7163f40ff0d8f7d6d5fd63f8932fd38e9c6d7"}, + {file = "debugpy-1.8.17-cp38-cp38-win32.whl", hash = "sha256:17e456da14848d618662354e1dccfd5e5fb75deec3d1d48dc0aa0baacda55860"}, + {file = "debugpy-1.8.17-cp38-cp38-win_amd64.whl", hash = "sha256:e851beb536a427b5df8aa7d0c7835b29a13812f41e46292ff80b2ef77327355a"}, + {file = "debugpy-1.8.17-cp39-cp39-macosx_15_0_x86_64.whl", hash = "sha256:f2ac8055a0c4a09b30b931100996ba49ef334c6947e7ae365cdd870416d7513e"}, + {file = "debugpy-1.8.17-cp39-cp39-manylinux_2_34_x86_64.whl", hash = "sha256:eaa85bce251feca8e4c87ce3b954aba84b8c645b90f0e6a515c00394a9f5c0e7"}, + {file = "debugpy-1.8.17-cp39-cp39-win32.whl", hash = "sha256:b13eea5587e44f27f6c48588b5ad56dcb74a4f3a5f89250443c94587f3eb2ea1"}, + {file = "debugpy-1.8.17-cp39-cp39-win_amd64.whl", hash = "sha256:bb1bbf92317e1f35afcf3ef0450219efb3afe00be79d8664b250ac0933b9015f"}, + {file = "debugpy-1.8.17-py2.py3-none-any.whl", hash = "sha256:60c7dca6571efe660ccb7a9508d73ca14b8796c4ed484c2002abba714226cfef"}, + {file = "debugpy-1.8.17.tar.gz", hash = "sha256:fd723b47a8c08892b1a16b2c6239a8b96637c62a59b94bb5dab4bac592a58a8e"}, ] [[package]] @@ -847,14 +1005,14 @@ test = ["pytest (>=6)"] [[package]] name = "executing" -version = "2.2.0" +version = "2.2.1" description = "Get the currently executing AST node of a frame, and other information" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa"}, - {file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755"}, + {file = "executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017"}, + {file = "executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4"}, ] [package.extras] @@ -862,14 +1020,14 @@ tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipyth [[package]] name = "fastjsonschema" -version = "2.21.1" +version = "2.21.2" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" groups = ["dev"] files = [ - {file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667"}, - {file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4"}, + {file = "fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463"}, + {file = "fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de"}, ] [package.extras] @@ -952,55 +1110,71 @@ woff = ["brotli (>=1.0.1) ; platform_python_implementation == \"CPython\"", "bro [[package]] name = "fonttools" -version = "4.59.0" +version = "4.60.1" description = "Tools to manipulate font files" optional = false python-versions = ">=3.9" groups = ["examples"] markers = "python_version >= \"3.12\"" files = [ - {file = "fonttools-4.59.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:524133c1be38445c5c0575eacea42dbd44374b310b1ffc4b60ff01d881fabb96"}, - {file = "fonttools-4.59.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21e606b2d38fed938dde871c5736822dd6bda7a4631b92e509a1f5cd1b90c5df"}, - {file = "fonttools-4.59.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e93df708c69a193fc7987192f94df250f83f3851fda49413f02ba5dded639482"}, - {file = "fonttools-4.59.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:62224a9bb85b4b66d1b46d45cbe43d71cbf8f527d332b177e3b96191ffbc1e64"}, - {file = "fonttools-4.59.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8974b2a266b54c96709bd5e239979cddfd2dbceed331aa567ea1d7c4a2202db"}, - {file = "fonttools-4.59.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:209b75943d158f610b78320eacb5539aa9e920bee2c775445b2846c65d20e19d"}, - {file = "fonttools-4.59.0-cp310-cp310-win32.whl", hash = "sha256:4c908a7036f0f3677f8afa577bcd973e3e20ddd2f7c42a33208d18bee95cdb6f"}, - {file = "fonttools-4.59.0-cp310-cp310-win_amd64.whl", hash = "sha256:8b4309a2775e4feee7356e63b163969a215d663399cce1b3d3b65e7ec2d9680e"}, - {file = "fonttools-4.59.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:841b2186adce48903c0fef235421ae21549020eca942c1da773ac380b056ab3c"}, - {file = "fonttools-4.59.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9bcc1e77fbd1609198966ded6b2a9897bd6c6bcbd2287a2fc7d75f1a254179c5"}, - {file = "fonttools-4.59.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:37c377f7cb2ab2eca8a0b319c68146d34a339792f9420fca6cd49cf28d370705"}, - {file = "fonttools-4.59.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fa39475eaccb98f9199eccfda4298abaf35ae0caec676ffc25b3a5e224044464"}, - {file = "fonttools-4.59.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d3972b13148c1d1fbc092b27678a33b3080d1ac0ca305742b0119b75f9e87e38"}, - {file = "fonttools-4.59.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a408c3c51358c89b29cfa5317cf11518b7ce5de1717abb55c5ae2d2921027de6"}, - {file = "fonttools-4.59.0-cp311-cp311-win32.whl", hash = "sha256:6770d7da00f358183d8fd5c4615436189e4f683bdb6affb02cad3d221d7bb757"}, - {file = "fonttools-4.59.0-cp311-cp311-win_amd64.whl", hash = "sha256:84fc186980231a287b28560d3123bd255d3c6b6659828c642b4cf961e2b923d0"}, - {file = "fonttools-4.59.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f9b3a78f69dcbd803cf2fb3f972779875b244c1115481dfbdd567b2c22b31f6b"}, - {file = "fonttools-4.59.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:57bb7e26928573ee7c6504f54c05860d867fd35e675769f3ce01b52af38d48e2"}, - {file = "fonttools-4.59.0-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4536f2695fe5c1ffb528d84a35a7d3967e5558d2af58b4775e7ab1449d65767b"}, - {file = "fonttools-4.59.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:885bde7d26e5b40e15c47bd5def48b38cbd50830a65f98122a8fb90962af7cd1"}, - {file = "fonttools-4.59.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6801aeddb6acb2c42eafa45bc1cb98ba236871ae6f33f31e984670b749a8e58e"}, - {file = "fonttools-4.59.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:31003b6a10f70742a63126b80863ab48175fb8272a18ca0846c0482968f0588e"}, - {file = "fonttools-4.59.0-cp312-cp312-win32.whl", hash = "sha256:fbce6dae41b692a5973d0f2158f782b9ad05babc2c2019a970a1094a23909b1b"}, - {file = "fonttools-4.59.0-cp312-cp312-win_amd64.whl", hash = "sha256:332bfe685d1ac58ca8d62b8d6c71c2e52a6c64bc218dc8f7825c9ea51385aa01"}, - {file = "fonttools-4.59.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:78813b49d749e1bb4db1c57f2d4d7e6db22c253cb0a86ad819f5dc197710d4b2"}, - {file = "fonttools-4.59.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:401b1941ce37e78b8fd119b419b617277c65ae9417742a63282257434fd68ea2"}, - {file = "fonttools-4.59.0-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:efd7e6660674e234e29937bc1481dceb7e0336bfae75b856b4fb272b5093c5d4"}, - {file = "fonttools-4.59.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:51ab1ff33c19e336c02dee1e9fd1abd974a4ca3d8f7eef2a104d0816a241ce97"}, - {file = "fonttools-4.59.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a9bf8adc9e1f3012edc8f09b08336272aec0c55bc677422273e21280db748f7c"}, - {file = "fonttools-4.59.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:37e01c6ec0c98599778c2e688350d624fa4770fbd6144551bd5e032f1199171c"}, - {file = "fonttools-4.59.0-cp313-cp313-win32.whl", hash = "sha256:70d6b3ceaa9cc5a6ac52884f3b3d9544e8e231e95b23f138bdb78e6d4dc0eae3"}, - {file = "fonttools-4.59.0-cp313-cp313-win_amd64.whl", hash = "sha256:26731739daa23b872643f0e4072d5939960237d540c35c14e6a06d47d71ca8fe"}, - {file = "fonttools-4.59.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8d77f92438daeaddc05682f0f3dac90c5b9829bcac75b57e8ce09cb67786073c"}, - {file = "fonttools-4.59.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:60f6665579e909b618282f3c14fa0b80570fbf1ee0e67678b9a9d43aa5d67a37"}, - {file = "fonttools-4.59.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:169b99a2553a227f7b5fea8d9ecd673aa258617f466b2abc6091fe4512a0dcd0"}, - {file = "fonttools-4.59.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:052444a5d0151878e87e3e512a1aa1a0ab35ee4c28afde0a778e23b0ace4a7de"}, - {file = "fonttools-4.59.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d40dcf533ca481355aa7b682e9e079f766f35715defa4929aeb5597f9604272e"}, - {file = "fonttools-4.59.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b818db35879d2edf7f46c7e729c700a0bce03b61b9412f5a7118406687cb151d"}, - {file = "fonttools-4.59.0-cp39-cp39-win32.whl", hash = "sha256:2e7cf8044ce2598bb87e44ba1d2c6e45d7a8decf56055b92906dc53f67c76d64"}, - {file = "fonttools-4.59.0-cp39-cp39-win_amd64.whl", hash = "sha256:902425f5afe28572d65d2bf9c33edd5265c612ff82c69e6f83ea13eafc0dcbea"}, - {file = "fonttools-4.59.0-py3-none-any.whl", hash = "sha256:241313683afd3baacb32a6bd124d0bce7404bc5280e12e291bae1b9bba28711d"}, - {file = "fonttools-4.59.0.tar.gz", hash = "sha256:be392ec3529e2f57faa28709d60723a763904f71a2b63aabe14fee6648fe3b14"}, + {file = "fonttools-4.60.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9a52f254ce051e196b8fe2af4634c2d2f02c981756c6464dc192f1b6050b4e28"}, + {file = "fonttools-4.60.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7420a2696a44650120cdd269a5d2e56a477e2bfa9d95e86229059beb1c19e15"}, + {file = "fonttools-4.60.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee0c0b3b35b34f782afc673d503167157094a16f442ace7c6c5e0ca80b08f50c"}, + {file = "fonttools-4.60.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:282dafa55f9659e8999110bd8ed422ebe1c8aecd0dc396550b038e6c9a08b8ea"}, + {file = "fonttools-4.60.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4ba4bd646e86de16160f0fb72e31c3b9b7d0721c3e5b26b9fa2fc931dfdb2652"}, + {file = "fonttools-4.60.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0b0835ed15dd5b40d726bb61c846a688f5b4ce2208ec68779bc81860adb5851a"}, + {file = "fonttools-4.60.1-cp310-cp310-win32.whl", hash = "sha256:1525796c3ffe27bb6268ed2a1bb0dcf214d561dfaf04728abf01489eb5339dce"}, + {file = "fonttools-4.60.1-cp310-cp310-win_amd64.whl", hash = "sha256:268ecda8ca6cb5c4f044b1fb9b3b376e8cd1b361cef275082429dc4174907038"}, + {file = "fonttools-4.60.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7b4c32e232a71f63a5d00259ca3d88345ce2a43295bb049d21061f338124246f"}, + {file = "fonttools-4.60.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3630e86c484263eaac71d117085d509cbcf7b18f677906824e4bace598fb70d2"}, + {file = "fonttools-4.60.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5c1015318e4fec75dd4943ad5f6a206d9727adf97410d58b7e32ab644a807914"}, + {file = "fonttools-4.60.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e6c58beb17380f7c2ea181ea11e7db8c0ceb474c9dd45f48e71e2cb577d146a1"}, + {file = "fonttools-4.60.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec3681a0cb34c255d76dd9d865a55f260164adb9fa02628415cdc2d43ee2c05d"}, + {file = "fonttools-4.60.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f4b5c37a5f40e4d733d3bbaaef082149bee5a5ea3156a785ff64d949bd1353fa"}, + {file = "fonttools-4.60.1-cp311-cp311-win32.whl", hash = "sha256:398447f3d8c0c786cbf1209711e79080a40761eb44b27cdafffb48f52bcec258"}, + {file = "fonttools-4.60.1-cp311-cp311-win_amd64.whl", hash = "sha256:d066ea419f719ed87bc2c99a4a4bfd77c2e5949cb724588b9dd58f3fd90b92bf"}, + {file = "fonttools-4.60.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7b0c6d57ab00dae9529f3faf187f2254ea0aa1e04215cf2f1a8ec277c96661bc"}, + {file = "fonttools-4.60.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:839565cbf14645952d933853e8ade66a463684ed6ed6c9345d0faf1f0e868877"}, + {file = "fonttools-4.60.1-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8177ec9676ea6e1793c8a084a90b65a9f778771998eb919d05db6d4b1c0b114c"}, + {file = "fonttools-4.60.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:996a4d1834524adbb423385d5a629b868ef9d774670856c63c9a0408a3063401"}, + {file = "fonttools-4.60.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a46b2f450bc79e06ef3b6394f0c68660529ed51692606ad7f953fc2e448bc903"}, + {file = "fonttools-4.60.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6ec722ee589e89a89f5b7574f5c45604030aa6ae24cb2c751e2707193b466fed"}, + {file = "fonttools-4.60.1-cp312-cp312-win32.whl", hash = "sha256:b2cf105cee600d2de04ca3cfa1f74f1127f8455b71dbad02b9da6ec266e116d6"}, + {file = "fonttools-4.60.1-cp312-cp312-win_amd64.whl", hash = "sha256:992775c9fbe2cf794786fa0ffca7f09f564ba3499b8fe9f2f80bd7197db60383"}, + {file = "fonttools-4.60.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6f68576bb4bbf6060c7ab047b1574a1ebe5c50a17de62830079967b211059ebb"}, + {file = "fonttools-4.60.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:eedacb5c5d22b7097482fa834bda0dafa3d914a4e829ec83cdea2a01f8c813c4"}, + {file = "fonttools-4.60.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b33a7884fabd72bdf5f910d0cf46be50dce86a0362a65cfc746a4168c67eb96c"}, + {file = "fonttools-4.60.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2409d5fb7b55fd70f715e6d34e7a6e4f7511b8ad29a49d6df225ee76da76dd77"}, + {file = "fonttools-4.60.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c8651e0d4b3bdeda6602b85fdc2abbefc1b41e573ecb37b6779c4ca50753a199"}, + {file = "fonttools-4.60.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:145daa14bf24824b677b9357c5e44fd8895c2a8f53596e1b9ea3496081dc692c"}, + {file = "fonttools-4.60.1-cp313-cp313-win32.whl", hash = "sha256:2299df884c11162617a66b7c316957d74a18e3758c0274762d2cc87df7bc0272"}, + {file = "fonttools-4.60.1-cp313-cp313-win_amd64.whl", hash = "sha256:a3db56f153bd4c5c2b619ab02c5db5192e222150ce5a1bc10f16164714bc39ac"}, + {file = "fonttools-4.60.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:a884aef09d45ba1206712c7dbda5829562d3fea7726935d3289d343232ecb0d3"}, + {file = "fonttools-4.60.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8a44788d9d91df72d1a5eac49b31aeb887a5f4aab761b4cffc4196c74907ea85"}, + {file = "fonttools-4.60.1-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e852d9dda9f93ad3651ae1e3bb770eac544ec93c3807888798eccddf84596537"}, + {file = "fonttools-4.60.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:154cb6ee417e417bf5f7c42fe25858c9140c26f647c7347c06f0cc2d47eff003"}, + {file = "fonttools-4.60.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:5664fd1a9ea7f244487ac8f10340c4e37664675e8667d6fee420766e0fb3cf08"}, + {file = "fonttools-4.60.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:583b7f8e3c49486e4d489ad1deacfb8d5be54a8ef34d6df824f6a171f8511d99"}, + {file = "fonttools-4.60.1-cp314-cp314-win32.whl", hash = "sha256:66929e2ea2810c6533a5184f938502cfdaea4bc3efb7130d8cc02e1c1b4108d6"}, + {file = "fonttools-4.60.1-cp314-cp314-win_amd64.whl", hash = "sha256:f3d5be054c461d6a2268831f04091dc82753176f6ea06dc6047a5e168265a987"}, + {file = "fonttools-4.60.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:b6379e7546ba4ae4b18f8ae2b9bc5960936007a1c0e30b342f662577e8bc3299"}, + {file = "fonttools-4.60.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9d0ced62b59e0430b3690dbc5373df1c2aa7585e9a8ce38eff87f0fd993c5b01"}, + {file = "fonttools-4.60.1-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:875cb7764708b3132637f6c5fb385b16eeba0f7ac9fa45a69d35e09b47045801"}, + {file = "fonttools-4.60.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a184b2ea57b13680ab6d5fbde99ccef152c95c06746cb7718c583abd8f945ccc"}, + {file = "fonttools-4.60.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:026290e4ec76583881763fac284aca67365e0be9f13a7fb137257096114cb3bc"}, + {file = "fonttools-4.60.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f0e8817c7d1a0c2eedebf57ef9a9896f3ea23324769a9a2061a80fe8852705ed"}, + {file = "fonttools-4.60.1-cp314-cp314t-win32.whl", hash = "sha256:1410155d0e764a4615774e5c2c6fc516259fe3eca5882f034eb9bfdbee056259"}, + {file = "fonttools-4.60.1-cp314-cp314t-win_amd64.whl", hash = "sha256:022beaea4b73a70295b688f817ddc24ed3e3418b5036ffcd5658141184ef0d0c"}, + {file = "fonttools-4.60.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:122e1a8ada290423c493491d002f622b1992b1ab0b488c68e31c413390dc7eb2"}, + {file = "fonttools-4.60.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a140761c4ff63d0cb9256ac752f230460ee225ccef4ad8f68affc723c88e2036"}, + {file = "fonttools-4.60.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0eae96373e4b7c9e45d099d7a523444e3554360927225c1cdae221a58a45b856"}, + {file = "fonttools-4.60.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:596ecaca36367027d525b3b426d8a8208169d09edcf8c7506aceb3a38bfb55c7"}, + {file = "fonttools-4.60.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2ee06fc57512144d8b0445194c2da9f190f61ad51e230f14836286470c99f854"}, + {file = "fonttools-4.60.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b42d86938e8dda1cd9a1a87a6d82f1818eaf933348429653559a458d027446da"}, + {file = "fonttools-4.60.1-cp39-cp39-win32.whl", hash = "sha256:8b4eb332f9501cb1cd3d4d099374a1e1306783ff95489a1026bde9eb02ccc34a"}, + {file = "fonttools-4.60.1-cp39-cp39-win_amd64.whl", hash = "sha256:7473a8ed9ed09aeaa191301244a5a9dbe46fe0bf54f9d6cd21d83044c3321217"}, + {file = "fonttools-4.60.1-py3-none-any.whl", hash = "sha256:906306ac7afe2156fcf0042173d6ebbb05416af70f6b370967b47f8f00103bbb"}, + {file = "fonttools-4.60.1.tar.gz", hash = "sha256:ef00af0439ebfee806b25f24c8f92109157ff3fac5731dc7867957812e87b8d9"}, ] [package.extras] @@ -1215,15 +1389,15 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio [[package]] name = "ipykernel" -version = "6.30.0" +version = "6.30.1" description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "ipykernel-6.30.0-py3-none-any.whl", hash = "sha256:fd2936e55c4a1c2ee8b1e5fa6a372b8eecc0ab1338750dee76f48fa5cca1301e"}, - {file = "ipykernel-6.30.0.tar.gz", hash = "sha256:b7b808ddb2d261aae2df3a26ff3ff810046e6de3dfbc6f7de8c98ea0a6cb632c"}, + {file = "ipykernel-6.30.1-py3-none-any.whl", hash = "sha256:aa6b9fb93dca949069d8b85b6c79b2518e32ac583ae9c7d37c51d119e18b3fb4"}, + {file = "ipykernel-6.30.1.tar.gz", hash = "sha256:6abb270161896402e76b91394fcdce5d1be5d45f456671e5080572f8505be39b"}, ] [package.dependencies] @@ -1404,14 +1578,14 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "json5" -version = "0.12.0" +version = "0.12.1" description = "A Python implementation of the JSON5 data format." optional = false python-versions = ">=3.8.0" groups = ["dev"] files = [ - {file = "json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db"}, - {file = "json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a"}, + {file = "json5-0.12.1-py3-none-any.whl", hash = "sha256:d9c9b3bc34a5f54d43c35e11ef7cb87d8bdd098c6ace87117a7b7e83e705c1d5"}, + {file = "json5-0.12.1.tar.gz", hash = "sha256:b2743e77b3242f8d03c143dd975a6ec7c52e2f2afe76ed934e53503dd4ad4990"}, ] [package.extras] @@ -1464,15 +1638,15 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jsonschema" -version = "4.25.0" +version = "4.25.1" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "jsonschema-4.25.0-py3-none-any.whl", hash = "sha256:24c2e8da302de79c8b9382fee3e76b355e44d2a4364bb207159ce10b517bd716"}, - {file = "jsonschema-4.25.0.tar.gz", hash = "sha256:e63acf5c11762c0e6672ffb61482bdf57f0876684d8d249c0fe2d730d48bc55f"}, + {file = "jsonschema-4.25.1-py3-none-any.whl", hash = "sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63"}, + {file = "jsonschema-4.25.1.tar.gz", hash = "sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85"}, ] [package.dependencies] @@ -1513,15 +1687,15 @@ referencing = ">=0.31.0" [[package]] name = "jsonschema-specifications" -version = "2025.4.1" +version = "2025.9.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af"}, - {file = "jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608"}, + {file = "jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe"}, + {file = "jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d"}, ] [package.dependencies] @@ -1674,14 +1848,14 @@ test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "p [[package]] name = "jupyter-lsp" -version = "2.2.6" +version = "2.3.0" description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "jupyter_lsp-2.2.6-py3-none-any.whl", hash = "sha256:283783752bf0b459ee7fa88effa72104d87dd343b82d5c06cf113ef755b15b6d"}, - {file = "jupyter_lsp-2.2.6.tar.gz", hash = "sha256:0566bd9bb04fd9e6774a937ed01522b555ba78be37bebef787c8ab22de4c0361"}, + {file = "jupyter_lsp-2.3.0-py3-none-any.whl", hash = "sha256:e914a3cb2addf48b1c7710914771aaf1819d46b2e5a79b0f917b5478ec93f34f"}, + {file = "jupyter_lsp-2.3.0.tar.gz", hash = "sha256:458aa59339dc868fb784d73364f17dbce8836e906cd75fd471a325cba02e0245"}, ] [package.dependencies] @@ -1728,15 +1902,15 @@ test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console [[package]] name = "jupyter-server" -version = "2.16.0" +version = "2.17.0" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e"}, - {file = "jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6"}, + {file = "jupyter_server-2.17.0-py3-none-any.whl", hash = "sha256:e8cb9c7db4251f51ed307e329b81b72ccf2056ff82d50524debde1ee1870e13f"}, + {file = "jupyter_server-2.17.0.tar.gz", hash = "sha256:c38ea898566964c888b4772ae1ed58eca84592e88251d2cfc4d171f81f7e99d5"}, ] [package.dependencies] @@ -1749,7 +1923,6 @@ jupyter-events = ">=0.11.0" jupyter-server-terminals = ">=0.4.4" nbconvert = ">=6.4.4" nbformat = ">=5.3.0" -overrides = ">=5.0" packaging = ">=22.0" prometheus-client = ">=0.9" pywinpty = {version = ">=2.0.1", markers = "os_name == \"nt\""} @@ -1824,21 +1997,21 @@ upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)" [[package]] name = "jupyterlab" -version = "4.4.5" +version = "4.4.9" description = "JupyterLab computational environment" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "jupyterlab-4.4.5-py3-none-any.whl", hash = "sha256:e76244cceb2d1fb4a99341f3edc866f2a13a9e14c50368d730d75d8017be0863"}, - {file = "jupyterlab-4.4.5.tar.gz", hash = "sha256:0bd6c18e6a3c3d91388af6540afa3d0bb0b2e76287a7b88ddf20ab41b336e595"}, + {file = "jupyterlab-4.4.9-py3-none-any.whl", hash = "sha256:394c902827350c017430a8370b9f40c03c098773084bc53930145c146d3d2cb2"}, + {file = "jupyterlab-4.4.9.tar.gz", hash = "sha256:ea55aca8269909016d5fde2dc09b97128bc931230183fe7e2920ede5154ad9c2"}, ] [package.dependencies] async-lru = ">=1.0.0" -httpx = ">=0.25.0" -ipykernel = ">=6.5.0" +httpx = ">=0.25.0,<1" +ipykernel = ">=6.5.0,<6.30.0 || >6.30.0" jinja2 = ">=3.0.3" jupyter-core = "*" jupyter-lsp = ">=2.0.0" @@ -2035,106 +2208,127 @@ files = [ [[package]] name = "kiwisolver" -version = "1.4.8" +version = "1.4.9" description = "A fast implementation of the Cassowary constraint solver" optional = false python-versions = ">=3.10" groups = ["examples"] markers = "python_version >= \"3.12\"" files = [ - {file = "kiwisolver-1.4.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88c6f252f6816a73b1f8c904f7bbe02fd67c09a69f7cb8a0eecdbf5ce78e63db"}, - {file = "kiwisolver-1.4.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72941acb7b67138f35b879bbe85be0f6c6a70cab78fe3ef6db9c024d9223e5b"}, - {file = "kiwisolver-1.4.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce2cf1e5688edcb727fdf7cd1bbd0b6416758996826a8be1d958f91880d0809d"}, - {file = "kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c8bf637892dc6e6aad2bc6d4d69d08764166e5e3f69d469e55427b6ac001b19d"}, - {file = "kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:034d2c891f76bd3edbdb3ea11140d8510dca675443da7304205a2eaa45d8334c"}, - {file = "kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47b28d1dfe0793d5e96bce90835e17edf9a499b53969b03c6c47ea5985844c3"}, - {file = "kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb158fe28ca0c29f2260cca8c43005329ad58452c36f0edf298204de32a9a3ed"}, - {file = "kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5536185fce131780ebd809f8e623bf4030ce1b161353166c49a3c74c287897f"}, - {file = "kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:369b75d40abedc1da2c1f4de13f3482cb99e3237b38726710f4a793432b1c5ff"}, - {file = "kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:641f2ddf9358c80faa22e22eb4c9f54bd3f0e442e038728f500e3b978d00aa7d"}, - {file = "kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d561d2d8883e0819445cfe58d7ddd673e4015c3c57261d7bdcd3710d0d14005c"}, - {file = "kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1732e065704b47c9afca7ffa272f845300a4eb959276bf6970dc07265e73b605"}, - {file = "kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bcb1ebc3547619c3b58a39e2448af089ea2ef44b37988caf432447374941574e"}, - {file = "kiwisolver-1.4.8-cp310-cp310-win_amd64.whl", hash = "sha256:89c107041f7b27844179ea9c85d6da275aa55ecf28413e87624d033cf1f6b751"}, - {file = "kiwisolver-1.4.8-cp310-cp310-win_arm64.whl", hash = "sha256:b5773efa2be9eb9fcf5415ea3ab70fc785d598729fd6057bea38d539ead28271"}, - {file = "kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84"}, - {file = "kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561"}, - {file = "kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7"}, - {file = "kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03"}, - {file = "kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954"}, - {file = "kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79"}, - {file = "kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6"}, - {file = "kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0"}, - {file = "kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab"}, - {file = "kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc"}, - {file = "kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25"}, - {file = "kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc"}, - {file = "kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67"}, - {file = "kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34"}, - {file = "kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2"}, - {file = "kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502"}, - {file = "kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31"}, - {file = "kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb"}, - {file = "kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f"}, - {file = "kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc"}, - {file = "kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a"}, - {file = "kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a"}, - {file = "kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a"}, - {file = "kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3"}, - {file = "kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b"}, - {file = "kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4"}, - {file = "kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d"}, - {file = "kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8"}, - {file = "kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50"}, - {file = "kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476"}, - {file = "kiwisolver-1.4.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09"}, - {file = "kiwisolver-1.4.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1"}, - {file = "kiwisolver-1.4.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c"}, - {file = "kiwisolver-1.4.8-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b"}, - {file = "kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47"}, - {file = "kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16"}, - {file = "kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc"}, - {file = "kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246"}, - {file = "kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794"}, - {file = "kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b"}, - {file = "kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3"}, - {file = "kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957"}, - {file = "kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb"}, - {file = "kiwisolver-1.4.8-cp313-cp313-win_amd64.whl", hash = "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2"}, - {file = "kiwisolver-1.4.8-cp313-cp313-win_arm64.whl", hash = "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30"}, - {file = "kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c"}, - {file = "kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc"}, - {file = "kiwisolver-1.4.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712"}, - {file = "kiwisolver-1.4.8-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e"}, - {file = "kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880"}, - {file = "kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062"}, - {file = "kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7"}, - {file = "kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed"}, - {file = "kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d"}, - {file = "kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165"}, - {file = "kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6"}, - {file = "kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90"}, - {file = "kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85"}, - {file = "kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e7a019419b7b510f0f7c9dceff8c5eae2392037eae483a7f9162625233802b0a"}, - {file = "kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:286b18e86682fd2217a48fc6be6b0f20c1d0ed10958d8dc53453ad58d7be0bf8"}, - {file = "kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4191ee8dfd0be1c3666ccbac178c5a05d5f8d689bbe3fc92f3c4abec817f8fe0"}, - {file = "kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd2785b9391f2873ad46088ed7599a6a71e762e1ea33e87514b1a441ed1da1c"}, - {file = "kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07b29089b7ba090b6f1a669f1411f27221c3662b3a1b7010e67b59bb5a6f10b"}, - {file = "kiwisolver-1.4.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:65ea09a5a3faadd59c2ce96dc7bf0f364986a315949dc6374f04396b0d60e09b"}, - {file = "kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e"}, + {file = "kiwisolver-1.4.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b4b4d74bda2b8ebf4da5bd42af11d02d04428b2c32846e4c2c93219df8a7987b"}, + {file = "kiwisolver-1.4.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fb3b8132019ea572f4611d770991000d7f58127560c4889729248eb5852a102f"}, + {file = "kiwisolver-1.4.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:84fd60810829c27ae375114cd379da1fa65e6918e1da405f356a775d49a62bcf"}, + {file = "kiwisolver-1.4.9-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b78efa4c6e804ecdf727e580dbb9cba85624d2e1c6b5cb059c66290063bd99a9"}, + {file = "kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4efec7bcf21671db6a3294ff301d2fc861c31faa3c8740d1a94689234d1b415"}, + {file = "kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:90f47e70293fc3688b71271100a1a5453aa9944a81d27ff779c108372cf5567b"}, + {file = "kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8fdca1def57a2e88ef339de1737a1449d6dbf5fab184c54a1fca01d541317154"}, + {file = "kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9cf554f21be770f5111a1690d42313e140355e687e05cf82cb23d0a721a64a48"}, + {file = "kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fc1795ac5cd0510207482c3d1d3ed781143383b8cfd36f5c645f3897ce066220"}, + {file = "kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ccd09f20ccdbbd341b21a67ab50a119b64a403b09288c27481575105283c1586"}, + {file = "kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:540c7c72324d864406a009d72f5d6856f49693db95d1fbb46cf86febef873634"}, + {file = "kiwisolver-1.4.9-cp310-cp310-win_amd64.whl", hash = "sha256:ede8c6d533bc6601a47ad4046080d36b8fc99f81e6f1c17b0ac3c2dc91ac7611"}, + {file = "kiwisolver-1.4.9-cp310-cp310-win_arm64.whl", hash = "sha256:7b4da0d01ac866a57dd61ac258c5607b4cd677f63abaec7b148354d2b2cdd536"}, + {file = "kiwisolver-1.4.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eb14a5da6dc7642b0f3a18f13654847cd8b7a2550e2645a5bda677862b03ba16"}, + {file = "kiwisolver-1.4.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:39a219e1c81ae3b103643d2aedb90f1ef22650deb266ff12a19e7773f3e5f089"}, + {file = "kiwisolver-1.4.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2405a7d98604b87f3fc28b1716783534b1b4b8510d8142adca34ee0bc3c87543"}, + {file = "kiwisolver-1.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dc1ae486f9abcef254b5618dfb4113dd49f94c68e3e027d03cf0143f3f772b61"}, + {file = "kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a1f570ce4d62d718dce3f179ee78dac3b545ac16c0c04bb363b7607a949c0d1"}, + {file = "kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb27e7b78d716c591e88e0a09a2139c6577865d7f2e152488c2cc6257f460872"}, + {file = "kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:15163165efc2f627eb9687ea5f3a28137217d217ac4024893d753f46bce9de26"}, + {file = "kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bdee92c56a71d2b24c33a7d4c2856bd6419d017e08caa7802d2963870e315028"}, + {file = "kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:412f287c55a6f54b0650bd9b6dce5aceddb95864a1a90c87af16979d37c89771"}, + {file = "kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2c93f00dcba2eea70af2be5f11a830a742fe6b579a1d4e00f47760ef13be247a"}, + {file = "kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f117e1a089d9411663a3207ba874f31be9ac8eaa5b533787024dc07aeb74f464"}, + {file = "kiwisolver-1.4.9-cp311-cp311-win_amd64.whl", hash = "sha256:be6a04e6c79819c9a8c2373317d19a96048e5a3f90bec587787e86a1153883c2"}, + {file = "kiwisolver-1.4.9-cp311-cp311-win_arm64.whl", hash = "sha256:0ae37737256ba2de764ddc12aed4956460277f00c4996d51a197e72f62f5eec7"}, + {file = "kiwisolver-1.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999"}, + {file = "kiwisolver-1.4.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2"}, + {file = "kiwisolver-1.4.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14"}, + {file = "kiwisolver-1.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04"}, + {file = "kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752"}, + {file = "kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77"}, + {file = "kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198"}, + {file = "kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d"}, + {file = "kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab"}, + {file = "kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2"}, + {file = "kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145"}, + {file = "kiwisolver-1.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54"}, + {file = "kiwisolver-1.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60"}, + {file = "kiwisolver-1.4.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8"}, + {file = "kiwisolver-1.4.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2"}, + {file = "kiwisolver-1.4.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f"}, + {file = "kiwisolver-1.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b67e6efbf68e077dd71d1a6b37e43e1a99d0bff1a3d51867d45ee8908b931098"}, + {file = "kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5656aa670507437af0207645273ccdfee4f14bacd7f7c67a4306d0dcaeaf6eed"}, + {file = "kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bfc08add558155345129c7803b3671cf195e6a56e7a12f3dde7c57d9b417f525"}, + {file = "kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:40092754720b174e6ccf9e845d0d8c7d8e12c3d71e7fc35f55f3813e96376f78"}, + {file = "kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:497d05f29a1300d14e02e6441cf0f5ee81c1ff5a304b0d9fb77423974684e08b"}, + {file = "kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdd1a81a1860476eb41ac4bc1e07b3f07259e6d55bbf739b79c8aaedcf512799"}, + {file = "kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e6b93f13371d341afee3be9f7c5964e3fe61d5fa30f6a30eb49856935dfe4fc3"}, + {file = "kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d75aa530ccfaa593da12834b86a0724f58bff12706659baa9227c2ccaa06264c"}, + {file = "kiwisolver-1.4.9-cp313-cp313-win_amd64.whl", hash = "sha256:dd0a578400839256df88c16abddf9ba14813ec5f21362e1fe65022e00c883d4d"}, + {file = "kiwisolver-1.4.9-cp313-cp313-win_arm64.whl", hash = "sha256:d4188e73af84ca82468f09cadc5ac4db578109e52acb4518d8154698d3a87ca2"}, + {file = "kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:5a0f2724dfd4e3b3ac5a82436a8e6fd16baa7d507117e4279b660fe8ca38a3a1"}, + {file = "kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1b11d6a633e4ed84fc0ddafd4ebfd8ea49b3f25082c04ad12b8315c11d504dc1"}, + {file = "kiwisolver-1.4.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61874cdb0a36016354853593cffc38e56fc9ca5aa97d2c05d3dcf6922cd55a11"}, + {file = "kiwisolver-1.4.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:60c439763a969a6af93b4881db0eed8fadf93ee98e18cbc35bc8da868d0c4f0c"}, + {file = "kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92a2f997387a1b79a75e7803aa7ded2cfbe2823852ccf1ba3bcf613b62ae3197"}, + {file = "kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a31d512c812daea6d8b3be3b2bfcbeb091dbb09177706569bcfc6240dcf8b41c"}, + {file = "kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:52a15b0f35dad39862d376df10c5230155243a2c1a436e39eb55623ccbd68185"}, + {file = "kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a30fd6fdef1430fd9e1ba7b3398b5ee4e2887783917a687d86ba69985fb08748"}, + {file = "kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cc9617b46837c6468197b5945e196ee9ca43057bb7d9d1ae688101e4e1dddf64"}, + {file = "kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:0ab74e19f6a2b027ea4f845a78827969af45ce790e6cb3e1ebab71bdf9f215ff"}, + {file = "kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dba5ee5d3981160c28d5490f0d1b7ed730c22470ff7f6cc26cfcfaacb9896a07"}, + {file = "kiwisolver-1.4.9-cp313-cp313t-win_arm64.whl", hash = "sha256:0749fd8f4218ad2e851e11cc4dc05c7cbc0cbc4267bdfdb31782e65aace4ee9c"}, + {file = "kiwisolver-1.4.9-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:9928fe1eb816d11ae170885a74d074f57af3a0d65777ca47e9aeb854a1fba386"}, + {file = "kiwisolver-1.4.9-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d0005b053977e7b43388ddec89fa567f43d4f6d5c2c0affe57de5ebf290dc552"}, + {file = "kiwisolver-1.4.9-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2635d352d67458b66fd0667c14cb1d4145e9560d503219034a18a87e971ce4f3"}, + {file = "kiwisolver-1.4.9-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:767c23ad1c58c9e827b649a9ab7809fd5fd9db266a9cf02b0e926ddc2c680d58"}, + {file = "kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72d0eb9fba308b8311685c2268cf7d0a0639a6cd027d8128659f72bdd8a024b4"}, + {file = "kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f68e4f3eeca8fb22cc3d731f9715a13b652795ef657a13df1ad0c7dc0e9731df"}, + {file = "kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d84cd4061ae292d8ac367b2c3fa3aad11cb8625a95d135fe93f286f914f3f5a6"}, + {file = "kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a60ea74330b91bd22a29638940d115df9dc00af5035a9a2a6ad9399ffb4ceca5"}, + {file = "kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ce6a3a4e106cf35c2d9c4fa17c05ce0b180db622736845d4315519397a77beaf"}, + {file = "kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:77937e5e2a38a7b48eef0585114fe7930346993a88060d0bf886086d2aa49ef5"}, + {file = "kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:24c175051354f4a28c5d6a31c93906dc653e2bf234e8a4bbfb964892078898ce"}, + {file = "kiwisolver-1.4.9-cp314-cp314-win_amd64.whl", hash = "sha256:0763515d4df10edf6d06a3c19734e2566368980d21ebec439f33f9eb936c07b7"}, + {file = "kiwisolver-1.4.9-cp314-cp314-win_arm64.whl", hash = "sha256:0e4e2bf29574a6a7b7f6cb5fa69293b9f96c928949ac4a53ba3f525dffb87f9c"}, + {file = "kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d976bbb382b202f71c67f77b0ac11244021cfa3f7dfd9e562eefcea2df711548"}, + {file = "kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2489e4e5d7ef9a1c300a5e0196e43d9c739f066ef23270607d45aba368b91f2d"}, + {file = "kiwisolver-1.4.9-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e2ea9f7ab7fbf18fffb1b5434ce7c69a07582f7acc7717720f1d69f3e806f90c"}, + {file = "kiwisolver-1.4.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b34e51affded8faee0dfdb705416153819d8ea9250bbbf7ea1b249bdeb5f1122"}, + {file = "kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8aacd3d4b33b772542b2e01beb50187536967b514b00003bdda7589722d2a64"}, + {file = "kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7cf974dd4e35fa315563ac99d6287a1024e4dc2077b8a7d7cd3d2fb65d283134"}, + {file = "kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:85bd218b5ecfbee8c8a82e121802dcb519a86044c9c3b2e4aef02fa05c6da370"}, + {file = "kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0856e241c2d3df4efef7c04a1e46b1936b6120c9bcf36dd216e3acd84bc4fb21"}, + {file = "kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9af39d6551f97d31a4deebeac6f45b156f9755ddc59c07b402c148f5dbb6482a"}, + {file = "kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:bb4ae2b57fc1d8cbd1cf7b1d9913803681ffa903e7488012be5b76dedf49297f"}, + {file = "kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:aedff62918805fb62d43a4aa2ecd4482c380dc76cd31bd7c8878588a61bd0369"}, + {file = "kiwisolver-1.4.9-cp314-cp314t-win_amd64.whl", hash = "sha256:1fa333e8b2ce4d9660f2cda9c0e1b6bafcfb2457a9d259faa82289e73ec24891"}, + {file = "kiwisolver-1.4.9-cp314-cp314t-win_arm64.whl", hash = "sha256:4a48a2ce79d65d363597ef7b567ce3d14d68783d2b2263d98db3d9477805ba32"}, + {file = "kiwisolver-1.4.9-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4d1d9e582ad4d63062d34077a9a1e9f3c34088a2ec5135b1f7190c07cf366527"}, + {file = "kiwisolver-1.4.9-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:deed0c7258ceb4c44ad5ec7d9918f9f14fd05b2be86378d86cf50e63d1e7b771"}, + {file = "kiwisolver-1.4.9-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a590506f303f512dff6b7f75fd2fd18e16943efee932008fe7140e5fa91d80e"}, + {file = "kiwisolver-1.4.9-pp310-pypy310_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e09c2279a4d01f099f52d5c4b3d9e208e91edcbd1a175c9662a8b16e000fece9"}, + {file = "kiwisolver-1.4.9-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c9e7cdf45d594ee04d5be1b24dd9d49f3d1590959b2271fb30b5ca2b262c00fb"}, + {file = "kiwisolver-1.4.9-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:720e05574713db64c356e86732c0f3c5252818d05f9df320f0ad8380641acea5"}, + {file = "kiwisolver-1.4.9-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:17680d737d5335b552994a2008fab4c851bcd7de33094a82067ef3a576ff02fa"}, + {file = "kiwisolver-1.4.9-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:85b5352f94e490c028926ea567fc569c52ec79ce131dadb968d3853e809518c2"}, + {file = "kiwisolver-1.4.9-pp311-pypy311_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:464415881e4801295659462c49461a24fb107c140de781d55518c4b80cb6790f"}, + {file = "kiwisolver-1.4.9-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:fb940820c63a9590d31d88b815e7a3aa5915cad3ce735ab45f0c730b39547de1"}, + {file = "kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d"}, ] [[package]] name = "lark" -version = "1.2.2" +version = "1.3.0" description = "a modern parsing library" optional = false python-versions = ">=3.8" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "lark-1.2.2-py3-none-any.whl", hash = "sha256:c2276486b02f0f1b90be155f2c8ba4a8e194d42775786db622faccd652d8e80c"}, - {file = "lark-1.2.2.tar.gz", hash = "sha256:ca807d0162cd16cef15a8feecb862d7319e7a09bdb13aef927968e45040fed80"}, + {file = "lark-1.3.0-py3-none-any.whl", hash = "sha256:80661f261fb2584a9828a097a2432efd575af27d20be0fd35d17f0fe37253831"}, + {file = "lark-1.3.0.tar.gz", hash = "sha256:9a3839d0ca5e1faf7cfa3460e420e859b66bcbde05b634e73c369c8244c5fa48"}, ] [package.extras] @@ -2216,74 +2410,102 @@ files = [ [[package]] name = "markupsafe" -version = "3.0.2" +version = "3.0.3" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, - {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, + {file = "markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559"}, + {file = "markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419"}, + {file = "markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695"}, + {file = "markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591"}, + {file = "markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c"}, + {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f"}, + {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6"}, + {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1"}, + {file = "markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa"}, + {file = "markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8"}, + {file = "markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1"}, + {file = "markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad"}, + {file = "markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a"}, + {file = "markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50"}, + {file = "markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf"}, + {file = "markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f"}, + {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a"}, + {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115"}, + {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a"}, + {file = "markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19"}, + {file = "markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01"}, + {file = "markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c"}, + {file = "markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e"}, + {file = "markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce"}, + {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d"}, + {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d"}, + {file = "markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a"}, + {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b"}, + {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f"}, + {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b"}, + {file = "markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d"}, + {file = "markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c"}, + {file = "markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f"}, + {file = "markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795"}, + {file = "markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219"}, + {file = "markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6"}, + {file = "markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676"}, + {file = "markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9"}, + {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1"}, + {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc"}, + {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12"}, + {file = "markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed"}, + {file = "markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5"}, + {file = "markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485"}, + {file = "markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73"}, + {file = "markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37"}, + {file = "markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19"}, + {file = "markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025"}, + {file = "markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6"}, + {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f"}, + {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb"}, + {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009"}, + {file = "markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354"}, + {file = "markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218"}, + {file = "markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287"}, + {file = "markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe"}, + {file = "markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026"}, + {file = "markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737"}, + {file = "markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97"}, + {file = "markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d"}, + {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda"}, + {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf"}, + {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe"}, + {file = "markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9"}, + {file = "markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581"}, + {file = "markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4"}, + {file = "markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab"}, + {file = "markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175"}, + {file = "markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634"}, + {file = "markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50"}, + {file = "markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e"}, + {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5"}, + {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523"}, + {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc"}, + {file = "markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d"}, + {file = "markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9"}, + {file = "markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa"}, + {file = "markupsafe-3.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15d939a21d546304880945ca1ecb8a039db6b4dc49b2c5a400387cdae6a62e26"}, + {file = "markupsafe-3.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc"}, + {file = "markupsafe-3.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f4b68347f8c5eab4a13419215bdfd7f8c9b19f2b25520968adfad23eb0ce60c"}, + {file = "markupsafe-3.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8fc20152abba6b83724d7ff268c249fa196d8259ff481f3b1476383f8f24e42"}, + {file = "markupsafe-3.0.3-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:949b8d66bc381ee8b007cd945914c721d9aba8e27f71959d750a46f7c282b20b"}, + {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:3537e01efc9d4dccdf77221fb1cb3b8e1a38d5428920e0657ce299b20324d758"}, + {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:591ae9f2a647529ca990bc681daebdd52c8791ff06c2bfa05b65163e28102ef2"}, + {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a320721ab5a1aba0a233739394eb907f8c8da5c98c9181d1161e77a0c8e36f2d"}, + {file = "markupsafe-3.0.3-cp39-cp39-win32.whl", hash = "sha256:df2449253ef108a379b8b5d6b43f4b1a8e81a061d6537becd5582fba5f9196d7"}, + {file = "markupsafe-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:7c3fb7d25180895632e5d3148dbdc29ea38ccb7fd210aa27acbd1201a1902c6e"}, + {file = "markupsafe-3.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:38664109c14ffc9e7437e86b4dceb442b0096dfe3541d7864d9cbe1da4cf36c8"}, + {file = "markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698"}, ] [[package]] @@ -2358,47 +2580,68 @@ python-dateutil = ">=2.7" [[package]] name = "matplotlib" -version = "3.10.3" +version = "3.10.6" description = "Python plotting package" optional = false python-versions = ">=3.10" groups = ["examples"] markers = "python_version >= \"3.12\"" files = [ - {file = "matplotlib-3.10.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:213fadd6348d106ca7db99e113f1bea1e65e383c3ba76e8556ba4a3054b65ae7"}, - {file = "matplotlib-3.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3bec61cb8221f0ca6313889308326e7bb303d0d302c5cc9e523b2f2e6c73deb"}, - {file = "matplotlib-3.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c21ae75651c0231b3ba014b6d5e08fb969c40cdb5a011e33e99ed0c9ea86ecb"}, - {file = "matplotlib-3.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a49e39755580b08e30e3620efc659330eac5d6534ab7eae50fa5e31f53ee4e30"}, - {file = "matplotlib-3.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cf4636203e1190871d3a73664dea03d26fb019b66692cbfd642faafdad6208e8"}, - {file = "matplotlib-3.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:fd5641a9bb9d55f4dd2afe897a53b537c834b9012684c8444cc105895c8c16fd"}, - {file = "matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8"}, - {file = "matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d"}, - {file = "matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049"}, - {file = "matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b"}, - {file = "matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220"}, - {file = "matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1"}, - {file = "matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea"}, - {file = "matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4"}, - {file = "matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee"}, - {file = "matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a"}, - {file = "matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7"}, - {file = "matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05"}, - {file = "matplotlib-3.10.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9f2efccc8dcf2b86fc4ee849eea5dcaecedd0773b30f47980dc0cbeabf26ec84"}, - {file = "matplotlib-3.10.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3ddbba06a6c126e3301c3d272a99dcbe7f6c24c14024e80307ff03791a5f294e"}, - {file = "matplotlib-3.10.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748302b33ae9326995b238f606e9ed840bf5886ebafcb233775d946aa8107a15"}, - {file = "matplotlib-3.10.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a80fcccbef63302c0efd78042ea3c2436104c5b1a4d3ae20f864593696364ac7"}, - {file = "matplotlib-3.10.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:55e46cbfe1f8586adb34f7587c3e4f7dedc59d5226719faf6cb54fc24f2fd52d"}, - {file = "matplotlib-3.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:151d89cb8d33cb23345cd12490c76fd5d18a56581a16d950b48c6ff19bb2ab93"}, - {file = "matplotlib-3.10.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c26dd9834e74d164d06433dc7be5d75a1e9890b926b3e57e74fa446e1a62c3e2"}, - {file = "matplotlib-3.10.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:24853dad5b8c84c8c2390fc31ce4858b6df504156893292ce8092d190ef8151d"}, - {file = "matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68f7878214d369d7d4215e2a9075fef743be38fa401d32e6020bab2dfabaa566"}, - {file = "matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6929fc618cb6db9cb75086f73b3219bbb25920cb24cee2ea7a12b04971a4158"}, - {file = "matplotlib-3.10.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c7818292a5cc372a2dc4c795e5c356942eb8350b98ef913f7fda51fe175ac5d"}, - {file = "matplotlib-3.10.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4f23ffe95c5667ef8a2b56eea9b53db7f43910fa4a2d5472ae0f72b64deab4d5"}, - {file = "matplotlib-3.10.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:86ab63d66bbc83fdb6733471d3bff40897c1e9921cba112accd748eee4bce5e4"}, - {file = "matplotlib-3.10.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a48f9c08bf7444b5d2391a83e75edb464ccda3c380384b36532a0962593a1751"}, - {file = "matplotlib-3.10.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb73d8aa75a237457988f9765e4dfe1c0d2453c5ca4eabc897d4309672c8e014"}, - {file = "matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0"}, + {file = "matplotlib-3.10.6-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:bc7316c306d97463a9866b89d5cc217824e799fa0de346c8f68f4f3d27c8693d"}, + {file = "matplotlib-3.10.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d00932b0d160ef03f59f9c0e16d1e3ac89646f7785165ce6ad40c842db16cc2e"}, + {file = "matplotlib-3.10.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8fa4c43d6bfdbfec09c733bca8667de11bfa4970e8324c471f3a3632a0301c15"}, + {file = "matplotlib-3.10.6-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ea117a9c1627acaa04dbf36265691921b999cbf515a015298e54e1a12c3af837"}, + {file = "matplotlib-3.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:08fc803293b4e1694ee325896030de97f74c141ccff0be886bb5915269247676"}, + {file = "matplotlib-3.10.6-cp310-cp310-win_amd64.whl", hash = "sha256:2adf92d9b7527fbfb8818e050260f0ebaa460f79d61546374ce73506c9421d09"}, + {file = "matplotlib-3.10.6-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:905b60d1cb0ee604ce65b297b61cf8be9f4e6cfecf95a3fe1c388b5266bc8f4f"}, + {file = "matplotlib-3.10.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7bac38d816637343e53d7185d0c66677ff30ffb131044a81898b5792c956ba76"}, + {file = "matplotlib-3.10.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:942a8de2b5bfff1de31d95722f702e2966b8a7e31f4e68f7cd963c7cd8861cf6"}, + {file = "matplotlib-3.10.6-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a3276c85370bc0dfca051ec65c5817d1e0f8f5ce1b7787528ec8ed2d524bbc2f"}, + {file = "matplotlib-3.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9df5851b219225731f564e4b9e7f2ac1e13c9e6481f941b5631a0f8e2d9387ce"}, + {file = "matplotlib-3.10.6-cp311-cp311-win_amd64.whl", hash = "sha256:abb5d9478625dd9c9eb51a06d39aae71eda749ae9b3138afb23eb38824026c7e"}, + {file = "matplotlib-3.10.6-cp311-cp311-win_arm64.whl", hash = "sha256:886f989ccfae63659183173bb3fced7fd65e9eb793c3cc21c273add368536951"}, + {file = "matplotlib-3.10.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:31ca662df6a80bd426f871105fdd69db7543e28e73a9f2afe80de7e531eb2347"}, + {file = "matplotlib-3.10.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1678bb61d897bb4ac4757b5ecfb02bfb3fddf7f808000fb81e09c510712fda75"}, + {file = "matplotlib-3.10.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:56cd2d20842f58c03d2d6e6c1f1cf5548ad6f66b91e1e48f814e4fb5abd1cb95"}, + {file = "matplotlib-3.10.6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:662df55604a2f9a45435566d6e2660e41efe83cd94f4288dfbf1e6d1eae4b0bb"}, + {file = "matplotlib-3.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:08f141d55148cd1fc870c3387d70ca4df16dee10e909b3b038782bd4bda6ea07"}, + {file = "matplotlib-3.10.6-cp312-cp312-win_amd64.whl", hash = "sha256:590f5925c2d650b5c9d813c5b3b5fc53f2929c3f8ef463e4ecfa7e052044fb2b"}, + {file = "matplotlib-3.10.6-cp312-cp312-win_arm64.whl", hash = "sha256:f44c8d264a71609c79a78d50349e724f5d5fc3684ead7c2a473665ee63d868aa"}, + {file = "matplotlib-3.10.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:819e409653c1106c8deaf62e6de6b8611449c2cd9939acb0d7d4e57a3d95cc7a"}, + {file = "matplotlib-3.10.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:59c8ac8382fefb9cb71308dde16a7c487432f5255d8f1fd32473523abecfecdf"}, + {file = "matplotlib-3.10.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:84e82d9e0fd70c70bc55739defbd8055c54300750cbacf4740c9673a24d6933a"}, + {file = "matplotlib-3.10.6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:25f7a3eb42d6c1c56e89eacd495661fc815ffc08d9da750bca766771c0fd9110"}, + {file = "matplotlib-3.10.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f9c862d91ec0b7842920a4cfdaaec29662195301914ea54c33e01f1a28d014b2"}, + {file = "matplotlib-3.10.6-cp313-cp313-win_amd64.whl", hash = "sha256:1b53bd6337eba483e2e7d29c5ab10eee644bc3a2491ec67cc55f7b44583ffb18"}, + {file = "matplotlib-3.10.6-cp313-cp313-win_arm64.whl", hash = "sha256:cbd5eb50b7058b2892ce45c2f4e92557f395c9991f5c886d1bb74a1582e70fd6"}, + {file = "matplotlib-3.10.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:acc86dd6e0e695c095001a7fccff158c49e45e0758fdf5dcdbb0103318b59c9f"}, + {file = "matplotlib-3.10.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e228cd2ffb8f88b7d0b29e37f68ca9aaf83e33821f24a5ccc4f082dd8396bc27"}, + {file = "matplotlib-3.10.6-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:658bc91894adeab669cf4bb4a186d049948262987e80f0857216387d7435d833"}, + {file = "matplotlib-3.10.6-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8913b7474f6dd83ac444c9459c91f7f0f2859e839f41d642691b104e0af056aa"}, + {file = "matplotlib-3.10.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:091cea22e059b89f6d7d1a18e2c33a7376c26eee60e401d92a4d6726c4e12706"}, + {file = "matplotlib-3.10.6-cp313-cp313t-win_amd64.whl", hash = "sha256:491e25e02a23d7207629d942c666924a6b61e007a48177fdd231a0097b7f507e"}, + {file = "matplotlib-3.10.6-cp313-cp313t-win_arm64.whl", hash = "sha256:3d80d60d4e54cda462e2cd9a086d85cd9f20943ead92f575ce86885a43a565d5"}, + {file = "matplotlib-3.10.6-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:70aaf890ce1d0efd482df969b28a5b30ea0b891224bb315810a3940f67182899"}, + {file = "matplotlib-3.10.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1565aae810ab79cb72e402b22facfa6501365e73ebab70a0fdfb98488d2c3c0c"}, + {file = "matplotlib-3.10.6-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3b23315a01981689aa4e1a179dbf6ef9fbd17143c3eea77548c2ecfb0499438"}, + {file = "matplotlib-3.10.6-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:30fdd37edf41a4e6785f9b37969de57aea770696cb637d9946eb37470c94a453"}, + {file = "matplotlib-3.10.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:bc31e693da1c08012c764b053e702c1855378e04102238e6a5ee6a7117c53a47"}, + {file = "matplotlib-3.10.6-cp314-cp314-win_amd64.whl", hash = "sha256:05be9bdaa8b242bc6ff96330d18c52f1fc59c6fb3a4dd411d953d67e7e1baf98"}, + {file = "matplotlib-3.10.6-cp314-cp314-win_arm64.whl", hash = "sha256:f56a0d1ab05d34c628592435781d185cd99630bdfd76822cd686fb5a0aecd43a"}, + {file = "matplotlib-3.10.6-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:94f0b4cacb23763b64b5dace50d5b7bfe98710fed5f0cef5c08135a03399d98b"}, + {file = "matplotlib-3.10.6-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:cc332891306b9fb39462673d8225d1b824c89783fee82840a709f96714f17a5c"}, + {file = "matplotlib-3.10.6-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee1d607b3fb1590deb04b69f02ea1d53ed0b0bf75b2b1a5745f269afcbd3cdd3"}, + {file = "matplotlib-3.10.6-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:376a624a218116461696b27b2bbf7a8945053e6d799f6502fc03226d077807bf"}, + {file = "matplotlib-3.10.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:83847b47f6524c34b4f2d3ce726bb0541c48c8e7692729865c3df75bfa0f495a"}, + {file = "matplotlib-3.10.6-cp314-cp314t-win_amd64.whl", hash = "sha256:c7e0518e0d223683532a07f4b512e2e0729b62674f1b3a1a69869f98e6b1c7e3"}, + {file = "matplotlib-3.10.6-cp314-cp314t-win_arm64.whl", hash = "sha256:4dd83e029f5b4801eeb87c64efd80e732452781c16a9cf7415b7b63ec8f374d7"}, + {file = "matplotlib-3.10.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:13fcd07ccf17e354398358e0307a1f53f5325dca22982556ddb9c52837b5af41"}, + {file = "matplotlib-3.10.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:470fc846d59d1406e34fa4c32ba371039cd12c2fe86801159a965956f2575bd1"}, + {file = "matplotlib-3.10.6-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f7173f8551b88f4ef810a94adae3128c2530e0d07529f7141be7f8d8c365f051"}, + {file = "matplotlib-3.10.6-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f2d684c3204fa62421bbf770ddfebc6b50130f9cad65531eeba19236d73bb488"}, + {file = "matplotlib-3.10.6-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:6f4a69196e663a41d12a728fab8751177215357906436804217d6d9cf0d4d6cf"}, + {file = "matplotlib-3.10.6-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d6ca6ef03dfd269f4ead566ec6f3fb9becf8dab146fb999022ed85ee9f6b3eb"}, + {file = "matplotlib-3.10.6.tar.gz", hash = "sha256:ec01b645840dd1996df21ee37f208cd8ba57644779fa20464010638013d3203c"}, ] [package.dependencies] @@ -2432,14 +2675,14 @@ traitlets = "*" [[package]] name = "mistune" -version = "3.1.3" +version = "3.1.4" description = "A sane and fast Markdown parser with useful plugins and renderers" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9"}, - {file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0"}, + {file = "mistune-3.1.4-py3-none-any.whl", hash = "sha256:93691da911e5d9d2e23bc54472892aff676df27a75274962ff9edc210364266d"}, + {file = "mistune-3.1.4.tar.gz", hash = "sha256:b5a7f801d389f724ec702840c11d8fc48f2b33519102fc7ee739e8177b672164"}, ] [package.dependencies] @@ -2508,45 +2751,51 @@ reports = ["lxml"] [[package]] name = "mypy" -version = "1.17.0" +version = "1.18.2" description = "Optional static typing for Python" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "mypy-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8e08de6138043108b3b18f09d3f817a4783912e48828ab397ecf183135d84d6"}, - {file = "mypy-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce4a17920ec144647d448fc43725b5873548b1aae6c603225626747ededf582d"}, - {file = "mypy-1.17.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ff25d151cc057fdddb1cb1881ef36e9c41fa2a5e78d8dd71bee6e4dcd2bc05b"}, - {file = "mypy-1.17.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93468cf29aa9a132bceb103bd8475f78cacde2b1b9a94fd978d50d4bdf616c9a"}, - {file = "mypy-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:98189382b310f16343151f65dd7e6867386d3e35f7878c45cfa11383d175d91f"}, - {file = "mypy-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:c004135a300ab06a045c1c0d8e3f10215e71d7b4f5bb9a42ab80236364429937"}, - {file = "mypy-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9d4fe5c72fd262d9c2c91c1117d16aac555e05f5beb2bae6a755274c6eec42be"}, - {file = "mypy-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96b196e5c16f41b4f7736840e8455958e832871990c7ba26bf58175e357ed61"}, - {file = "mypy-1.17.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73a0ff2dd10337ceb521c080d4147755ee302dcde6e1a913babd59473904615f"}, - {file = "mypy-1.17.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24cfcc1179c4447854e9e406d3af0f77736d631ec87d31c6281ecd5025df625d"}, - {file = "mypy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c56f180ff6430e6373db7a1d569317675b0a451caf5fef6ce4ab365f5f2f6c3"}, - {file = "mypy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:eafaf8b9252734400f9b77df98b4eee3d2eecab16104680d51341c75702cad70"}, - {file = "mypy-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f986f1cab8dbec39ba6e0eaa42d4d3ac6686516a5d3dccd64be095db05ebc6bb"}, - {file = "mypy-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:51e455a54d199dd6e931cd7ea987d061c2afbaf0960f7f66deef47c90d1b304d"}, - {file = "mypy-1.17.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3204d773bab5ff4ebbd1f8efa11b498027cd57017c003ae970f310e5b96be8d8"}, - {file = "mypy-1.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1051df7ec0886fa246a530ae917c473491e9a0ba6938cfd0ec2abc1076495c3e"}, - {file = "mypy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f773c6d14dcc108a5b141b4456b0871df638eb411a89cd1c0c001fc4a9d08fc8"}, - {file = "mypy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:1619a485fd0e9c959b943c7b519ed26b712de3002d7de43154a489a2d0fd817d"}, - {file = "mypy-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c41aa59211e49d717d92b3bb1238c06d387c9325d3122085113c79118bebb06"}, - {file = "mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e69db1fb65b3114f98c753e3930a00514f5b68794ba80590eb02090d54a5d4a"}, - {file = "mypy-1.17.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:03ba330b76710f83d6ac500053f7727270b6b8553b0423348ffb3af6f2f7b889"}, - {file = "mypy-1.17.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:037bc0f0b124ce46bfde955c647f3e395c6174476a968c0f22c95a8d2f589bba"}, - {file = "mypy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c38876106cb6132259683632b287238858bd58de267d80defb6f418e9ee50658"}, - {file = "mypy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:d30ba01c0f151998f367506fab31c2ac4527e6a7b2690107c7a7f9e3cb419a9c"}, - {file = "mypy-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:63e751f1b5ab51d6f3d219fe3a2fe4523eaa387d854ad06906c63883fde5b1ab"}, - {file = "mypy-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fb09d05e0f1c329a36dcd30e27564a3555717cde87301fae4fb542402ddfad"}, - {file = "mypy-1.17.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b72c34ce05ac3a1361ae2ebb50757fb6e3624032d91488d93544e9f82db0ed6c"}, - {file = "mypy-1.17.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:434ad499ad8dde8b2f6391ddfa982f41cb07ccda8e3c67781b1bfd4e5f9450a8"}, - {file = "mypy-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f105f61a5eff52e137fd73bee32958b2add9d9f0a856f17314018646af838e97"}, - {file = "mypy-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:ba06254a5a22729853209550d80f94e28690d5530c661f9416a68ac097b13fc4"}, - {file = "mypy-1.17.0-py3-none-any.whl", hash = "sha256:15d9d0018237ab058e5de3d8fce61b6fa72cc59cc78fd91f1b474bce12abf496"}, - {file = "mypy-1.17.0.tar.gz", hash = "sha256:e5d7ccc08ba089c06e2f5629c660388ef1fee708444f1dee0b9203fa031dee03"}, + {file = "mypy-1.18.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c1eab0cf6294dafe397c261a75f96dc2c31bffe3b944faa24db5def4e2b0f77c"}, + {file = "mypy-1.18.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a780ca61fc239e4865968ebc5240bb3bf610ef59ac398de9a7421b54e4a207e"}, + {file = "mypy-1.18.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:448acd386266989ef11662ce3c8011fd2a7b632e0ec7d61a98edd8e27472225b"}, + {file = "mypy-1.18.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f9e171c465ad3901dc652643ee4bffa8e9fef4d7d0eece23b428908c77a76a66"}, + {file = "mypy-1.18.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:592ec214750bc00741af1f80cbf96b5013d81486b7bb24cb052382c19e40b428"}, + {file = "mypy-1.18.2-cp310-cp310-win_amd64.whl", hash = "sha256:7fb95f97199ea11769ebe3638c29b550b5221e997c63b14ef93d2e971606ebed"}, + {file = "mypy-1.18.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:807d9315ab9d464125aa9fcf6d84fde6e1dc67da0b6f80e7405506b8ac72bc7f"}, + {file = "mypy-1.18.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:776bb00de1778caf4db739c6e83919c1d85a448f71979b6a0edd774ea8399341"}, + {file = "mypy-1.18.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1379451880512ffce14505493bd9fe469e0697543717298242574882cf8cdb8d"}, + {file = "mypy-1.18.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1331eb7fd110d60c24999893320967594ff84c38ac6d19e0a76c5fd809a84c86"}, + {file = "mypy-1.18.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3ca30b50a51e7ba93b00422e486cbb124f1c56a535e20eff7b2d6ab72b3b2e37"}, + {file = "mypy-1.18.2-cp311-cp311-win_amd64.whl", hash = "sha256:664dc726e67fa54e14536f6e1224bcfce1d9e5ac02426d2326e2bb4e081d1ce8"}, + {file = "mypy-1.18.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:33eca32dd124b29400c31d7cf784e795b050ace0e1f91b8dc035672725617e34"}, + {file = "mypy-1.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3c47adf30d65e89b2dcd2fa32f3aeb5e94ca970d2c15fcb25e297871c8e4764"}, + {file = "mypy-1.18.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d6c838e831a062f5f29d11c9057c6009f60cb294fea33a98422688181fe2893"}, + {file = "mypy-1.18.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01199871b6110a2ce984bde85acd481232d17413868c9807e95c1b0739a58914"}, + {file = "mypy-1.18.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a2afc0fa0b0e91b4599ddfe0f91e2c26c2b5a5ab263737e998d6817874c5f7c8"}, + {file = "mypy-1.18.2-cp312-cp312-win_amd64.whl", hash = "sha256:d8068d0afe682c7c4897c0f7ce84ea77f6de953262b12d07038f4d296d547074"}, + {file = "mypy-1.18.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:07b8b0f580ca6d289e69209ec9d3911b4a26e5abfde32228a288eb79df129fcc"}, + {file = "mypy-1.18.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ed4482847168439651d3feee5833ccedbf6657e964572706a2adb1f7fa4dfe2e"}, + {file = "mypy-1.18.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3ad2afadd1e9fea5cf99a45a822346971ede8685cc581ed9cd4d42eaf940986"}, + {file = "mypy-1.18.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a431a6f1ef14cf8c144c6b14793a23ec4eae3db28277c358136e79d7d062f62d"}, + {file = "mypy-1.18.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7ab28cc197f1dd77a67e1c6f35cd1f8e8b73ed2217e4fc005f9e6a504e46e7ba"}, + {file = "mypy-1.18.2-cp313-cp313-win_amd64.whl", hash = "sha256:0e2785a84b34a72ba55fb5daf079a1003a34c05b22238da94fcae2bbe46f3544"}, + {file = "mypy-1.18.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:62f0e1e988ad41c2a110edde6c398383a889d95b36b3e60bcf155f5164c4fdce"}, + {file = "mypy-1.18.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8795a039bab805ff0c1dfdb8cd3344642c2b99b8e439d057aba30850b8d3423d"}, + {file = "mypy-1.18.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ca1e64b24a700ab5ce10133f7ccd956a04715463d30498e64ea8715236f9c9c"}, + {file = "mypy-1.18.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d924eef3795cc89fecf6bedc6ed32b33ac13e8321344f6ddbf8ee89f706c05cb"}, + {file = "mypy-1.18.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20c02215a080e3a2be3aa50506c67242df1c151eaba0dcbc1e4e557922a26075"}, + {file = "mypy-1.18.2-cp314-cp314-win_amd64.whl", hash = "sha256:749b5f83198f1ca64345603118a6f01a4e99ad4bf9d103ddc5a3200cc4614adf"}, + {file = "mypy-1.18.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:25a9c8fb67b00599f839cf472713f54249a62efd53a54b565eb61956a7e3296b"}, + {file = "mypy-1.18.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2b9c7e284ee20e7598d6f42e13ca40b4928e6957ed6813d1ab6348aa3f47133"}, + {file = "mypy-1.18.2-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d6985ed057513e344e43a26cc1cd815c7a94602fb6a3130a34798625bc2f07b6"}, + {file = "mypy-1.18.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22f27105f1525ec024b5c630c0b9f36d5c1cc4d447d61fe51ff4bd60633f47ac"}, + {file = "mypy-1.18.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:030c52d0ea8144e721e49b1f68391e39553d7451f0c3f8a7565b59e19fcb608b"}, + {file = "mypy-1.18.2-cp39-cp39-win_amd64.whl", hash = "sha256:aa5e07ac1a60a253445797e42b8b2963c9675563a94f11291ab40718b016a7a0"}, + {file = "mypy-1.18.2-py3-none-any.whl", hash = "sha256:22a1748707dd62b58d2ae53562ffc4d7f8bcc727e8ac7cbc69c053ddc874d47e"}, + {file = "mypy-1.18.2.tar.gz", hash = "sha256:06a398102a5f203d7477b2923dda3634c36727fa5c237d8f859ef90c42a9924b"}, ] [package.dependencies] @@ -2720,20 +2969,20 @@ test = ["importlib-resources (>=5.0) ; python_version < \"3.10\"", "ipykernel", [[package]] name = "notebook" -version = "7.4.4" +version = "7.4.7" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" optional = false python-versions = ">=3.8" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "notebook-7.4.4-py3-none-any.whl", hash = "sha256:32840f7f777b6bff79bb101159336e9b332bdbfba1495b8739e34d1d65cbc1c0"}, - {file = "notebook-7.4.4.tar.gz", hash = "sha256:392fd501e266f2fb3466c6fcd3331163a2184968cb5c5accf90292e01dfe528c"}, + {file = "notebook-7.4.7-py3-none-any.whl", hash = "sha256:362b7c95527f7dd3c4c84d410b782872fd9c734fb2524c11dd92758527b6eda6"}, + {file = "notebook-7.4.7.tar.gz", hash = "sha256:3f0a04027dfcee8a876de48fba13ab77ec8c12f72f848a222ed7f5081b9e342a"}, ] [package.dependencies] jupyter-server = ">=2.4.0,<3" -jupyterlab = ">=4.4.4,<4.5" +jupyterlab = ">=4.4.9,<4.5" jupyterlab-server = ">=2.27.1,<3" notebook-shim = ">=0.2,<0.3" tornado = ">=6.2.0" @@ -2802,64 +3051,87 @@ files = [ [[package]] name = "numpy" -version = "2.3.1" +version = "2.3.3" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.11" groups = ["main", "examples"] markers = "python_version >= \"3.12\"" files = [ - {file = "numpy-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ea9e48336a402551f52cd8f593343699003d2353daa4b72ce8d34f66b722070"}, - {file = "numpy-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ccb7336eaf0e77c1635b232c141846493a588ec9ea777a7c24d7166bb8533ae"}, - {file = "numpy-2.3.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0bb3a4a61e1d327e035275d2a993c96fa786e4913aa089843e6a2d9dd205c66a"}, - {file = "numpy-2.3.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:e344eb79dab01f1e838ebb67aab09965fb271d6da6b00adda26328ac27d4a66e"}, - {file = "numpy-2.3.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:467db865b392168ceb1ef1ffa6f5a86e62468c43e0cfb4ab6da667ede10e58db"}, - {file = "numpy-2.3.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:afed2ce4a84f6b0fc6c1ce734ff368cbf5a5e24e8954a338f3bdffa0718adffb"}, - {file = "numpy-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0025048b3c1557a20bc80d06fdeb8cc7fc193721484cca82b2cfa072fec71a93"}, - {file = "numpy-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a5ee121b60aa509679b682819c602579e1df14a5b07fe95671c8849aad8f2115"}, - {file = "numpy-2.3.1-cp311-cp311-win32.whl", hash = "sha256:a8b740f5579ae4585831b3cf0e3b0425c667274f82a484866d2adf9570539369"}, - {file = "numpy-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4580adadc53311b163444f877e0789f1c8861e2698f6b2a4ca852fda154f3ff"}, - {file = "numpy-2.3.1-cp311-cp311-win_arm64.whl", hash = "sha256:ec0bdafa906f95adc9a0c6f26a4871fa753f25caaa0e032578a30457bff0af6a"}, - {file = "numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d"}, - {file = "numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29"}, - {file = "numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc"}, - {file = "numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943"}, - {file = "numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25"}, - {file = "numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660"}, - {file = "numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952"}, - {file = "numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77"}, - {file = "numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab"}, - {file = "numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76"}, - {file = "numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30"}, - {file = "numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8"}, - {file = "numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e"}, - {file = "numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0"}, - {file = "numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d"}, - {file = "numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1"}, - {file = "numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1"}, - {file = "numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0"}, - {file = "numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8"}, - {file = "numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8"}, - {file = "numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42"}, - {file = "numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e"}, - {file = "numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8"}, - {file = "numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb"}, - {file = "numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee"}, - {file = "numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992"}, - {file = "numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c"}, - {file = "numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48"}, - {file = "numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee"}, - {file = "numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280"}, - {file = "numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e"}, - {file = "numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc"}, - {file = "numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244"}, - {file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ad506d4b09e684394c42c966ec1527f6ebc25da7f4da4b1b056606ffe446b8a3"}, - {file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:ebb8603d45bc86bbd5edb0d63e52c5fd9e7945d3a503b77e486bd88dde67a19b"}, - {file = "numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:15aa4c392ac396e2ad3d0a2680c0f0dee420f9fed14eef09bdb9450ee6dcb7b7"}, - {file = "numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c6e0bf9d1a2f50d2b65a7cf56db37c095af17b59f6c132396f7c6d5dd76484df"}, - {file = "numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:eabd7e8740d494ce2b4ea0ff05afa1b7b291e978c0ae075487c51e8bd93c0c68"}, - {file = "numpy-2.3.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:e610832418a2bc09d974cc9fecebfa51e9532d6190223bc5ef6a7402ebf3b5cb"}, - {file = "numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b"}, + {file = "numpy-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ffc4f5caba7dfcbe944ed674b7eef683c7e94874046454bb79ed7ee0236f59d"}, + {file = "numpy-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7e946c7170858a0295f79a60214424caac2ffdb0063d4d79cb681f9aa0aa569"}, + {file = "numpy-2.3.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:cd4260f64bc794c3390a63bf0728220dd1a68170c169088a1e0dfa2fde1be12f"}, + {file = "numpy-2.3.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:f0ddb4b96a87b6728df9362135e764eac3cfa674499943ebc44ce96c478ab125"}, + {file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:afd07d377f478344ec6ca2b8d4ca08ae8bd44706763d1efb56397de606393f48"}, + {file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc92a5dedcc53857249ca51ef29f5e5f2f8c513e22cfb90faeb20343b8c6f7a6"}, + {file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7af05ed4dc19f308e1d9fc759f36f21921eb7bbfc82843eeec6b2a2863a0aefa"}, + {file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:433bf137e338677cebdd5beac0199ac84712ad9d630b74eceeb759eaa45ddf30"}, + {file = "numpy-2.3.3-cp311-cp311-win32.whl", hash = "sha256:eb63d443d7b4ffd1e873f8155260d7f58e7e4b095961b01c91062935c2491e57"}, + {file = "numpy-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:ec9d249840f6a565f58d8f913bccac2444235025bbb13e9a4681783572ee3caa"}, + {file = "numpy-2.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:74c2a948d02f88c11a3c075d9733f1ae67d97c6bdb97f2bb542f980458b257e7"}, + {file = "numpy-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cfdd09f9c84a1a934cde1eec2267f0a43a7cd44b2cca4ff95b7c0d14d144b0bf"}, + {file = "numpy-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb32e3cf0f762aee47ad1ddc6672988f7f27045b0783c887190545baba73aa25"}, + {file = "numpy-2.3.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396b254daeb0a57b1fe0ecb5e3cff6fa79a380fa97c8f7781a6d08cd429418fe"}, + {file = "numpy-2.3.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:067e3d7159a5d8f8a0b46ee11148fc35ca9b21f61e3c49fbd0a027450e65a33b"}, + {file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c02d0629d25d426585fb2e45a66154081b9fa677bc92a881ff1d216bc9919a8"}, + {file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9192da52b9745f7f0766531dcfa978b7763916f158bb63bdb8a1eca0068ab20"}, + {file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cd7de500a5b66319db419dc3c345244404a164beae0d0937283b907d8152e6ea"}, + {file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:93d4962d8f82af58f0b2eb85daaf1b3ca23fe0a85d0be8f1f2b7bb46034e56d7"}, + {file = "numpy-2.3.3-cp312-cp312-win32.whl", hash = "sha256:5534ed6b92f9b7dca6c0a19d6df12d41c68b991cef051d108f6dbff3babc4ebf"}, + {file = "numpy-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:497d7cad08e7092dba36e3d296fe4c97708c93daf26643a1ae4b03f6294d30eb"}, + {file = "numpy-2.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:ca0309a18d4dfea6fc6262a66d06c26cfe4640c3926ceec90e57791a82b6eee5"}, + {file = "numpy-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f5415fb78995644253370985342cd03572ef8620b934da27d77377a2285955bf"}, + {file = "numpy-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d00de139a3324e26ed5b95870ce63be7ec7352171bc69a4cf1f157a48e3eb6b7"}, + {file = "numpy-2.3.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9dc13c6a5829610cc07422bc74d3ac083bd8323f14e2827d992f9e52e22cd6a6"}, + {file = "numpy-2.3.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:d79715d95f1894771eb4e60fb23f065663b2298f7d22945d66877aadf33d00c7"}, + {file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:952cfd0748514ea7c3afc729a0fc639e61655ce4c55ab9acfab14bda4f402b4c"}, + {file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5b83648633d46f77039c29078751f80da65aa64d5622a3cd62aaef9d835b6c93"}, + {file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b001bae8cea1c7dfdb2ae2b017ed0a6f2102d7a70059df1e338e307a4c78a8ae"}, + {file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e9aced64054739037d42fb84c54dd38b81ee238816c948c8f3ed134665dcd86"}, + {file = "numpy-2.3.3-cp313-cp313-win32.whl", hash = "sha256:9591e1221db3f37751e6442850429b3aabf7026d3b05542d102944ca7f00c8a8"}, + {file = "numpy-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f0dadeb302887f07431910f67a14d57209ed91130be0adea2f9793f1a4f817cf"}, + {file = "numpy-2.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:3c7cf302ac6e0b76a64c4aecf1a09e51abd9b01fc7feee80f6c43e3ab1b1dbc5"}, + {file = "numpy-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:eda59e44957d272846bb407aad19f89dc6f58fecf3504bd144f4c5cf81a7eacc"}, + {file = "numpy-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:823d04112bc85ef5c4fda73ba24e6096c8f869931405a80aa8b0e604510a26bc"}, + {file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:40051003e03db4041aa325da2a0971ba41cf65714e65d296397cc0e32de6018b"}, + {file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ee9086235dd6ab7ae75aba5662f582a81ced49f0f1c6de4260a78d8f2d91a19"}, + {file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94fcaa68757c3e2e668ddadeaa86ab05499a70725811e582b6a9858dd472fb30"}, + {file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da1a74b90e7483d6ce5244053399a614b1d6b7bc30a60d2f570e5071f8959d3e"}, + {file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2990adf06d1ecee3b3dcbb4977dfab6e9f09807598d647f04d385d29e7a3c3d3"}, + {file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ed635ff692483b8e3f0fcaa8e7eb8a75ee71aa6d975388224f70821421800cea"}, + {file = "numpy-2.3.3-cp313-cp313t-win32.whl", hash = "sha256:a333b4ed33d8dc2b373cc955ca57babc00cd6f9009991d9edc5ddbc1bac36bcd"}, + {file = "numpy-2.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4384a169c4d8f97195980815d6fcad04933a7e1ab3b530921c3fef7a1c63426d"}, + {file = "numpy-2.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:75370986cc0bc66f4ce5110ad35aae6d182cc4ce6433c40ad151f53690130bf1"}, + {file = "numpy-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cd052f1fa6a78dee696b58a914b7229ecfa41f0a6d96dc663c1220a55e137593"}, + {file = "numpy-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:414a97499480067d305fcac9716c29cf4d0d76db6ebf0bf3cbce666677f12652"}, + {file = "numpy-2.3.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:50a5fe69f135f88a2be9b6ca0481a68a136f6febe1916e4920e12f1a34e708a7"}, + {file = "numpy-2.3.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:b912f2ed2b67a129e6a601e9d93d4fa37bef67e54cac442a2f588a54afe5c67a"}, + {file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9e318ee0596d76d4cb3d78535dc005fa60e5ea348cd131a51e99d0bdbe0b54fe"}, + {file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce020080e4a52426202bdb6f7691c65bb55e49f261f31a8f506c9f6bc7450421"}, + {file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e6687dc183aa55dae4a705b35f9c0f8cb178bcaa2f029b241ac5356221d5c021"}, + {file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d8f3b1080782469fdc1718c4ed1d22549b5fb12af0d57d35e992158a772a37cf"}, + {file = "numpy-2.3.3-cp314-cp314-win32.whl", hash = "sha256:cb248499b0bc3be66ebd6578b83e5acacf1d6cb2a77f2248ce0e40fbec5a76d0"}, + {file = "numpy-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:691808c2b26b0f002a032c73255d0bd89751425f379f7bcd22d140db593a96e8"}, + {file = "numpy-2.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:9ad12e976ca7b10f1774b03615a2a4bab8addce37ecc77394d8e986927dc0dfe"}, + {file = "numpy-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9cc48e09feb11e1db00b320e9d30a4151f7369afb96bd0e48d942d09da3a0d00"}, + {file = "numpy-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:901bf6123879b7f251d3631967fd574690734236075082078e0571977c6a8e6a"}, + {file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:7f025652034199c301049296b59fa7d52c7e625017cae4c75d8662e377bf487d"}, + {file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:533ca5f6d325c80b6007d4d7fb1984c303553534191024ec6a524a4c92a5935a"}, + {file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0edd58682a399824633b66885d699d7de982800053acf20be1eaa46d92009c54"}, + {file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:367ad5d8fbec5d9296d18478804a530f1191e24ab4d75ab408346ae88045d25e"}, + {file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8f6ac61a217437946a1fa48d24c47c91a0c4f725237871117dea264982128097"}, + {file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:179a42101b845a816d464b6fe9a845dfaf308fdfc7925387195570789bb2c970"}, + {file = "numpy-2.3.3-cp314-cp314t-win32.whl", hash = "sha256:1250c5d3d2562ec4174bce2e3a1523041595f9b651065e4a4473f5f48a6bc8a5"}, + {file = "numpy-2.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:b37a0b2e5935409daebe82c1e42274d30d9dd355852529eab91dab8dcca7419f"}, + {file = "numpy-2.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:78c9f6560dc7e6b3990e32df7ea1a50bbd0e2a111e05209963f5ddcab7073b0b"}, + {file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1e02c7159791cd481e1e6d5ddd766b62a4d5acf8df4d4d1afe35ee9c5c33a41e"}, + {file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:dca2d0fc80b3893ae72197b39f69d55a3cd8b17ea1b50aa4c62de82419936150"}, + {file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:99683cbe0658f8271b333a1b1b4bb3173750ad59c0c61f5bbdc5b318918fffe3"}, + {file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:d9d537a39cc9de668e5cd0e25affb17aec17b577c6b3ae8a3d866b479fbe88d0"}, + {file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8596ba2f8af5f93b01d97563832686d20206d303024777f6dfc2e7c7c3f1850e"}, + {file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1ec5615b05369925bd1125f27df33f3b6c8bc10d788d5999ecd8769a1fa04db"}, + {file = "numpy-2.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:2e267c7da5bf7309670523896df97f93f6e469fb931161f483cd6882b3b1a5dc"}, + {file = "numpy-2.3.3.tar.gz", hash = "sha256:ddc7c39727ba62b80dfdbedf400d1c10ddfa8eefbd7ec8dcb118be8b56d31029"}, ] [[package]] @@ -2869,6 +3141,7 @@ description = "A decorator to automatically detect mismatch when overriding a me optional = false python-versions = ">=3.6" groups = ["dev"] +markers = "python_version <= \"3.11\"" files = [ {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, @@ -2900,14 +3173,14 @@ files = [ [[package]] name = "parso" -version = "0.8.4" +version = "0.8.5" description = "A Python Parser" optional = false python-versions = ">=3.6" groups = ["dev"] files = [ - {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, - {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, + {file = "parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887"}, + {file = "parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a"}, ] [package.extras] @@ -3213,21 +3486,21 @@ type = ["mypy (>=1.11.2)"] [[package]] name = "platformdirs" -version = "4.3.8" +version = "4.5.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"}, - {file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc"}, + {file = "platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3"}, + {file = "platformdirs-4.5.0.tar.gz", hash = "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312"}, ] [package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.14.1)"] +docs = ["furo (>=2025.9.25)", "proselint (>=0.14)", "sphinx (>=8.2.3)", "sphinx-autodoc-typehints (>=3.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.4.2)", "pytest-cov (>=7)", "pytest-mock (>=3.15.1)"] +type = ["mypy (>=1.18.2)"] [[package]] name = "pluggy" @@ -3318,15 +3591,15 @@ twisted = ["twisted"] [[package]] name = "prometheus-client" -version = "0.22.1" +version = "0.23.1" description = "Python client for the Prometheus monitoring system." optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094"}, - {file = "prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28"}, + {file = "prometheus_client-0.23.1-py3-none-any.whl", hash = "sha256:dd1913e6e76b59cfe44e7a4b83e01afc9873c1bdfd2ed8739f1e76aeca115f99"}, + {file = "prometheus_client-0.23.1.tar.gz", hash = "sha256:6ae8f9081eaaaf153a2e959d2e6c4f4fb57b12ef76c8c7980202f1e57b48b2ce"}, ] [package.extras] @@ -3334,14 +3607,14 @@ twisted = ["twisted"] [[package]] name = "prompt-toolkit" -version = "3.0.51" +version = "3.0.52" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07"}, - {file = "prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed"}, + {file = "prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955"}, + {file = "prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855"}, ] [package.dependencies] @@ -3349,27 +3622,26 @@ wcwidth = "*" [[package]] name = "psutil" -version = "7.0.0" -description = "Cross-platform lib for process and system monitoring in Python. NOTE: the syntax of this script MUST be kept compatible with Python 2.7." +version = "7.1.0" +description = "Cross-platform lib for process and system monitoring." optional = false python-versions = ">=3.6" groups = ["dev"] files = [ - {file = "psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25"}, - {file = "psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da"}, - {file = "psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91"}, - {file = "psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34"}, - {file = "psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993"}, - {file = "psutil-7.0.0-cp36-cp36m-win32.whl", hash = "sha256:84df4eb63e16849689f76b1ffcb36db7b8de703d1bc1fe41773db487621b6c17"}, - {file = "psutil-7.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1e744154a6580bc968a0195fd25e80432d3afec619daf145b9e5ba16cc1d688e"}, - {file = "psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99"}, - {file = "psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553"}, - {file = "psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456"}, + {file = "psutil-7.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:76168cef4397494250e9f4e73eb3752b146de1dd950040b29186d0cce1d5ca13"}, + {file = "psutil-7.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:5d007560c8c372efdff9e4579c2846d71de737e4605f611437255e81efcca2c5"}, + {file = "psutil-7.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22e4454970b32472ce7deaa45d045b34d3648ce478e26a04c7e858a0a6e75ff3"}, + {file = "psutil-7.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c70e113920d51e89f212dd7be06219a9b88014e63a4cec69b684c327bc474e3"}, + {file = "psutil-7.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d4a113425c037300de3ac8b331637293da9be9713855c4fc9d2d97436d7259d"}, + {file = "psutil-7.1.0-cp37-abi3-win32.whl", hash = "sha256:09ad740870c8d219ed8daae0ad3b726d3bf9a028a198e7f3080f6a1888b99bca"}, + {file = "psutil-7.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:57f5e987c36d3146c0dd2528cd42151cf96cd359b9d67cfff836995cc5df9a3d"}, + {file = "psutil-7.1.0-cp37-abi3-win_arm64.whl", hash = "sha256:6937cb68133e7c97b6cc9649a570c9a18ba0efebed46d8c5dae4c07fa1b67a07"}, + {file = "psutil-7.1.0.tar.gz", hash = "sha256:655708b3c069387c8b77b072fc429a57d0e214221d01c0a772df7dfedcb3bcd2"}, ] [package.extras] -dev = ["abi3audit", "black (==24.10.0)", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest", "pytest-cov", "pytest-xdist", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] -test = ["pytest", "pytest-xdist", "setuptools"] +dev = ["abi3audit", "black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pyreadline ; os_name == \"nt\"", "pytest", "pytest-cov", "pytest-instafail", "pytest-subtests", "pytest-xdist", "pywin32 ; os_name == \"nt\" and platform_python_implementation != \"PyPy\"", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel", "wheel ; os_name == \"nt\" and platform_python_implementation != \"PyPy\"", "wmi ; os_name == \"nt\" and platform_python_implementation != \"PyPy\""] +test = ["pytest", "pytest-instafail", "pytest-subtests", "pytest-xdist", "pywin32 ; os_name == \"nt\" and platform_python_implementation != \"PyPy\"", "setuptools", "wheel ; os_name == \"nt\" and platform_python_implementation != \"PyPy\"", "wmi ; os_name == \"nt\" and platform_python_implementation != \"PyPy\""] [[package]] name = "ptyprocess" @@ -3401,14 +3673,15 @@ tests = ["pytest"] [[package]] name = "pycparser" -version = "2.22" +version = "2.23" description = "C parser in Python" optional = false python-versions = ">=3.8" groups = ["dev"] +markers = "implementation_name != \"PyPy\" or python_version <= \"3.11\"" files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, + {file = "pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934"}, + {file = "pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2"}, ] [[package]] @@ -3444,15 +3717,15 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pyparsing" -version = "3.2.3" -description = "pyparsing module - Classes and methods to define and execute parsing grammars" +version = "3.2.5" +description = "pyparsing - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.9" groups = ["examples"] markers = "python_version >= \"3.12\"" files = [ - {file = "pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf"}, - {file = "pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be"}, + {file = "pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e"}, + {file = "pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6"}, ] [package.extras] @@ -3498,14 +3771,14 @@ six = ">=1.5" [[package]] name = "python-json-logger" -version = "3.3.0" +version = "4.0.0" description = "JSON Log Formatter for the Python Logging Package" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7"}, - {file = "python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84"}, + {file = "python_json_logger-4.0.0-py3-none-any.whl", hash = "sha256:af09c9daf6a813aa4cc7180395f50f2a9e5fa056034c9953aec92e381c5ba1e2"}, + {file = "python_json_logger-4.0.0.tar.gz", hash = "sha256:f58e68eb46e1faed27e0f574a55a0455eecd7b8a5b88b85a784519ba3cff047f"}, ] [package.dependencies] @@ -3577,172 +3850,207 @@ files = [ [[package]] name = "pywinpty" -version = "2.0.15" +version = "3.0.2" description = "Pseudo terminal support for Windows from Python." optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version >= \"3.12\" and os_name == \"nt\"" files = [ - {file = "pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e"}, - {file = "pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca"}, - {file = "pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc"}, - {file = "pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408"}, - {file = "pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901"}, - {file = "pywinpty-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:d261cd88fcd358cfb48a7ca0700db3e1c088c9c10403c9ebc0d8a8b57aa6a117"}, - {file = "pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2"}, + {file = "pywinpty-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:65db57fd3387d71e8372b6a54269cbcd0f6dfa6d4616a29e0af749ec19f5c558"}, + {file = "pywinpty-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:327790d70e4c841ebd9d0f295a780177149aeb405bca44c7115a3de5c2054b23"}, + {file = "pywinpty-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:99fdd9b455f0ad6419aba6731a7a0d2f88ced83c3c94a80ff9533d95fa8d8a9e"}, + {file = "pywinpty-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:18f78b81e4cfee6aabe7ea8688441d30247b73e52cd9657138015c5f4ee13a51"}, + {file = "pywinpty-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:663383ecfab7fc382cc97ea5c4f7f0bb32c2f889259855df6ea34e5df42d305b"}, + {file = "pywinpty-3.0.2-cp314-cp314-win_amd64.whl", hash = "sha256:28297cecc37bee9f24d8889e47231972d6e9e84f7b668909de54f36ca785029a"}, + {file = "pywinpty-3.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:34b55ae9a1b671fe3eae071d86618110538e8eaad18fcb1531c0830b91a82767"}, + {file = "pywinpty-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:3962daf801bc38dd4de872108c424b5338c9a46c6efca5761854cd66370a9022"}, + {file = "pywinpty-3.0.2.tar.gz", hash = "sha256:1505cc4cb248af42cb6285a65c9c2086ee9e7e574078ee60933d5d7fa86fb004"}, ] [[package]] name = "pyyaml" -version = "6.0.2" +version = "6.0.3" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" groups = ["main", "dev"] 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"}, + {file = "PyYAML-6.0.3-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:efd7b85f94a6f21e4932043973a7ba2613b059c4a000551892ac9f1d11f5baf3"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22ba7cfcad58ef3ecddc7ed1db3409af68d023b7f940da23c6c2a1890976eda6"}, + {file = "PyYAML-6.0.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6344df0d5755a2c9a276d4473ae6b90647e216ab4757f8426893b5dd2ac3f369"}, + {file = "PyYAML-6.0.3-cp38-cp38-win32.whl", hash = "sha256:3ff07ec89bae51176c0549bc4c63aa6202991da2d9a6129d7aef7f1407d3f295"}, + {file = "PyYAML-6.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:5cf4e27da7e3fbed4d6c3d8e797387aaad68102272f8f9752883bc32d61cb87b"}, + {file = "pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b"}, + {file = "pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b"}, + {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0"}, + {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69"}, + {file = "pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e"}, + {file = "pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c"}, + {file = "pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e"}, + {file = "pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d"}, + {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a"}, + {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4"}, + {file = "pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b"}, + {file = "pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf"}, + {file = "pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196"}, + {file = "pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc"}, + {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e"}, + {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea"}, + {file = "pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5"}, + {file = "pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b"}, + {file = "pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd"}, + {file = "pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8"}, + {file = "pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6"}, + {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6"}, + {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be"}, + {file = "pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26"}, + {file = "pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c"}, + {file = "pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb"}, + {file = "pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac"}, + {file = "pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5"}, + {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764"}, + {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35"}, + {file = "pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac"}, + {file = "pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3"}, + {file = "pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3"}, + {file = "pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c"}, + {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065"}, + {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65"}, + {file = "pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9"}, + {file = "pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b"}, + {file = "pyyaml-6.0.3-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da"}, + {file = "pyyaml-6.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a"}, + {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926"}, + {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7"}, + {file = "pyyaml-6.0.3-cp39-cp39-win32.whl", hash = "sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0"}, + {file = "pyyaml-6.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007"}, + {file = "pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f"}, ] [[package]] name = "pyzmq" -version = "27.0.0" +version = "27.1.0" description = "Python bindings for 0MQ" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "pyzmq-27.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:b973ee650e8f442ce482c1d99ca7ab537c69098d53a3d046676a484fd710c87a"}, - {file = "pyzmq-27.0.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:661942bc7cd0223d569d808f2e5696d9cc120acc73bf3e88a1f1be7ab648a7e4"}, - {file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50360fb2a056ffd16e5f4177eee67f1dd1017332ea53fb095fe7b5bf29c70246"}, - {file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf209a6dc4b420ed32a7093642843cbf8703ed0a7d86c16c0b98af46762ebefb"}, - {file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c2dace4a7041cca2fba5357a2d7c97c5effdf52f63a1ef252cfa496875a3762d"}, - {file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:63af72b2955fc77caf0a77444baa2431fcabb4370219da38e1a9f8d12aaebe28"}, - {file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e8c4adce8e37e75c4215297d7745551b8dcfa5f728f23ce09bf4e678a9399413"}, - {file = "pyzmq-27.0.0-cp310-cp310-win32.whl", hash = "sha256:5d5ef4718ecab24f785794e0e7536436698b459bfbc19a1650ef55280119d93b"}, - {file = "pyzmq-27.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:e40609380480b3d12c30f841323f42451c755b8fece84235236f5fe5ffca8c1c"}, - {file = "pyzmq-27.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6b0397b0be277b46762956f576e04dc06ced265759e8c2ff41a0ee1aa0064198"}, - {file = "pyzmq-27.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:21457825249b2a53834fa969c69713f8b5a79583689387a5e7aed880963ac564"}, - {file = "pyzmq-27.0.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1958947983fef513e6e98eff9cb487b60bf14f588dc0e6bf35fa13751d2c8251"}, - {file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0dc628b5493f9a8cd9844b8bee9732ef587ab00002157c9329e4fc0ef4d3afa"}, - {file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7bbe9e1ed2c8d3da736a15694d87c12493e54cc9dc9790796f0321794bbc91f"}, - {file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dc1091f59143b471d19eb64f54bae4f54bcf2a466ffb66fe45d94d8d734eb495"}, - {file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7011ade88c8e535cf140f8d1a59428676fbbce7c6e54fefce58bf117aefb6667"}, - {file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c386339d7e3f064213aede5d03d054b237937fbca6dd2197ac8cf3b25a6b14e"}, - {file = "pyzmq-27.0.0-cp311-cp311-win32.whl", hash = "sha256:0546a720c1f407b2172cb04b6b094a78773491497e3644863cf5c96c42df8cff"}, - {file = "pyzmq-27.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:15f39d50bd6c9091c67315ceb878a4f531957b121d2a05ebd077eb35ddc5efed"}, - {file = "pyzmq-27.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c5817641eebb391a2268c27fecd4162448e03538387093cdbd8bf3510c316b38"}, - {file = "pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52"}, - {file = "pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3"}, - {file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152"}, - {file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22"}, - {file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371"}, - {file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d"}, - {file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be"}, - {file = "pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4"}, - {file = "pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371"}, - {file = "pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e"}, - {file = "pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688"}, - {file = "pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38"}, - {file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a"}, - {file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9"}, - {file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d"}, - {file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44"}, - {file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef"}, - {file = "pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad"}, - {file = "pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f"}, - {file = "pyzmq-27.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:f4162dbbd9c5c84fb930a36f290b08c93e35fce020d768a16fc8891a2f72bab8"}, - {file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4e7d0a8d460fba526cc047333bdcbf172a159b8bd6be8c3eb63a416ff9ba1477"}, - {file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:29f44e3c26b9783816ba9ce274110435d8f5b19bbd82f7a6c7612bb1452a3597"}, - {file = "pyzmq-27.0.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e435540fa1da54667f0026cf1e8407fe6d8a11f1010b7f06b0b17214ebfcf5e"}, - {file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:51f5726de3532b8222e569990c8aa34664faa97038304644679a51d906e60c6e"}, - {file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:42c7555123679637c99205b1aa9e8f7d90fe29d4c243c719e347d4852545216c"}, - {file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a979b7cf9e33d86c4949df527a3018767e5f53bc3b02adf14d4d8db1db63ccc0"}, - {file = "pyzmq-27.0.0-cp38-cp38-win32.whl", hash = "sha256:26b72c5ae20bf59061c3570db835edb81d1e0706ff141747055591c4b41193f8"}, - {file = "pyzmq-27.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:55a0155b148fe0428285a30922f7213539aa84329a5ad828bca4bbbc665c70a4"}, - {file = "pyzmq-27.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:100f6e5052ba42b2533011d34a018a5ace34f8cac67cb03cfa37c8bdae0ca617"}, - {file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:bf6c6b061efd00404b9750e2cfbd9507492c8d4b3721ded76cb03786131be2ed"}, - {file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ee05728c0b0b2484a9fc20466fa776fffb65d95f7317a3419985b8c908563861"}, - {file = "pyzmq-27.0.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7cdf07fe0a557b131366f80727ec8ccc4b70d89f1e3f920d94a594d598d754f0"}, - {file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:90252fa2ff3a104219db1f5ced7032a7b5fc82d7c8d2fec2b9a3e6fd4e25576b"}, - {file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ea6d441c513bf18c578c73c323acf7b4184507fc244762193aa3a871333c9045"}, - {file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ae2b34bcfaae20c064948a4113bf8709eee89fd08317eb293ae4ebd69b4d9740"}, - {file = "pyzmq-27.0.0-cp39-cp39-win32.whl", hash = "sha256:5b10bd6f008937705cf6e7bf8b6ece5ca055991e3eb130bca8023e20b86aa9a3"}, - {file = "pyzmq-27.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:00387d12a8af4b24883895f7e6b9495dc20a66027b696536edac35cb988c38f3"}, - {file = "pyzmq-27.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:4c19d39c04c29a6619adfeb19e3735c421b3bfee082f320662f52e59c47202ba"}, - {file = "pyzmq-27.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:656c1866505a5735d0660b7da6d7147174bbf59d4975fc2b7f09f43c9bc25745"}, - {file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:74175b9e12779382432dd1d1f5960ebe7465d36649b98a06c6b26be24d173fab"}, - {file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8c6de908465697a8708e4d6843a1e884f567962fc61eb1706856545141d0cbb"}, - {file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c644aaacc01d0df5c7072826df45e67301f191c55f68d7b2916d83a9ddc1b551"}, - {file = "pyzmq-27.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:10f70c1d9a446a85013a36871a296007f6fe4232b530aa254baf9da3f8328bc0"}, - {file = "pyzmq-27.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd1dc59763effd1576f8368047c9c31468fce0af89d76b5067641137506792ae"}, - {file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:60e8cc82d968174650c1860d7b716366caab9973787a1c060cf8043130f7d0f7"}, - {file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:14fe7aaac86e4e93ea779a821967360c781d7ac5115b3f1a171ced77065a0174"}, - {file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6ad0562d4e6abb785be3e4dd68599c41be821b521da38c402bc9ab2a8e7ebc7e"}, - {file = "pyzmq-27.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:9df43a2459cd3a3563404c1456b2c4c69564daa7dbaf15724c09821a3329ce46"}, - {file = "pyzmq-27.0.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8c86ea8fe85e2eb0ffa00b53192c401477d5252f6dd1db2e2ed21c1c30d17e5e"}, - {file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:c45fee3968834cd291a13da5fac128b696c9592a9493a0f7ce0b47fa03cc574d"}, - {file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cae73bb6898c4e045fbed5024cb587e4110fddb66f6163bcab5f81f9d4b9c496"}, - {file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:26d542258c7a1f35a9cff3d887687d3235006134b0ac1c62a6fe1ad3ac10440e"}, - {file = "pyzmq-27.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:04cd50ef3b28e35ced65740fb9956a5b3f77a6ff32fcd887e3210433f437dd0f"}, - {file = "pyzmq-27.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:39ddd3ba0a641f01d8f13a3cfd4c4924eb58e660d8afe87e9061d6e8ca6f7ac3"}, - {file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:8ca7e6a0388dd9e1180b14728051068f4efe83e0d2de058b5ff92c63f399a73f"}, - {file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2524c40891be6a3106885a3935d58452dd83eb7a5742a33cc780a1ad4c49dec0"}, - {file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a56e3e5bd2d62a01744fd2f1ce21d760c7c65f030e9522738d75932a14ab62a"}, - {file = "pyzmq-27.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:096af9e133fec3a72108ddefba1e42985cb3639e9de52cfd336b6fc23aa083e9"}, - {file = "pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf"}, + {file = "pyzmq-27.1.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:508e23ec9bc44c0005c4946ea013d9317ae00ac67778bd47519fdf5a0e930ff4"}, + {file = "pyzmq-27.1.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:507b6f430bdcf0ee48c0d30e734ea89ce5567fd7b8a0f0044a369c176aa44556"}, + {file = "pyzmq-27.1.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf7b38f9fd7b81cb6d9391b2946382c8237fd814075c6aa9c3b746d53076023b"}, + {file = "pyzmq-27.1.0-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03ff0b279b40d687691a6217c12242ee71f0fba28bf8626ff50e3ef0f4410e1e"}, + {file = "pyzmq-27.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:677e744fee605753eac48198b15a2124016c009a11056f93807000ab11ce6526"}, + {file = "pyzmq-27.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dd2fec2b13137416a1c5648b7009499bcc8fea78154cd888855fa32514f3dad1"}, + {file = "pyzmq-27.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:08e90bb4b57603b84eab1d0ca05b3bbb10f60c1839dc471fc1c9e1507bef3386"}, + {file = "pyzmq-27.1.0-cp310-cp310-win32.whl", hash = "sha256:a5b42d7a0658b515319148875fcb782bbf118dd41c671b62dae33666c2213bda"}, + {file = "pyzmq-27.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:c0bb87227430ee3aefcc0ade2088100e528d5d3298a0a715a64f3d04c60ba02f"}, + {file = "pyzmq-27.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:9a916f76c2ab8d045b19f2286851a38e9ac94ea91faf65bd64735924522a8b32"}, + {file = "pyzmq-27.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:226b091818d461a3bef763805e75685e478ac17e9008f49fce2d3e52b3d58b86"}, + {file = "pyzmq-27.1.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:0790a0161c281ca9723f804871b4027f2e8b5a528d357c8952d08cd1a9c15581"}, + {file = "pyzmq-27.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c895a6f35476b0c3a54e3eb6ccf41bf3018de937016e6e18748317f25d4e925f"}, + {file = "pyzmq-27.1.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bbf8d3630bf96550b3be8e1fc0fea5cbdc8d5466c1192887bd94869da17a63e"}, + {file = "pyzmq-27.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15c8bd0fe0dabf808e2d7a681398c4e5ded70a551ab47482067a572c054c8e2e"}, + {file = "pyzmq-27.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bafcb3dd171b4ae9f19ee6380dfc71ce0390fefaf26b504c0e5f628d7c8c54f2"}, + {file = "pyzmq-27.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e829529fcaa09937189178115c49c504e69289abd39967cd8a4c215761373394"}, + {file = "pyzmq-27.1.0-cp311-cp311-win32.whl", hash = "sha256:6df079c47d5902af6db298ec92151db82ecb557af663098b92f2508c398bb54f"}, + {file = "pyzmq-27.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:190cbf120fbc0fc4957b56866830def56628934a9d112aec0e2507aa6a032b97"}, + {file = "pyzmq-27.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:eca6b47df11a132d1745eb3b5b5e557a7dae2c303277aa0e69c6ba91b8736e07"}, + {file = "pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc"}, + {file = "pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113"}, + {file = "pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233"}, + {file = "pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31"}, + {file = "pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28"}, + {file = "pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856"}, + {file = "pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496"}, + {file = "pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd"}, + {file = "pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf"}, + {file = "pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f"}, + {file = "pyzmq-27.1.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5"}, + {file = "pyzmq-27.1.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6"}, + {file = "pyzmq-27.1.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7"}, + {file = "pyzmq-27.1.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05"}, + {file = "pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9"}, + {file = "pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128"}, + {file = "pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39"}, + {file = "pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97"}, + {file = "pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db"}, + {file = "pyzmq-27.1.0-cp313-cp313t-win32.whl", hash = "sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c"}, + {file = "pyzmq-27.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2"}, + {file = "pyzmq-27.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e"}, + {file = "pyzmq-27.1.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ce980af330231615756acd5154f29813d553ea555485ae712c491cd483df6b7a"}, + {file = "pyzmq-27.1.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1779be8c549e54a1c38f805e56d2a2e5c009d26de10921d7d51cfd1c8d4632ea"}, + {file = "pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7200bb0f03345515df50d99d3db206a0a6bee1955fbb8c453c76f5bf0e08fb96"}, + {file = "pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01c0e07d558b06a60773744ea6251f769cd79a41a97d11b8bf4ab8f034b0424d"}, + {file = "pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:80d834abee71f65253c91540445d37c4c561e293ba6e741b992f20a105d69146"}, + {file = "pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:544b4e3b7198dde4a62b8ff6685e9802a9a1ebf47e77478a5eb88eca2a82f2fd"}, + {file = "pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cedc4c68178e59a4046f97eca31b148ddcf51e88677de1ef4e78cf06c5376c9a"}, + {file = "pyzmq-27.1.0-cp314-cp314t-win32.whl", hash = "sha256:1f0b2a577fd770aa6f053211a55d1c47901f4d537389a034c690291485e5fe92"}, + {file = "pyzmq-27.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:19c9468ae0437f8074af379e986c5d3d7d7bfe033506af442e8c879732bedbe0"}, + {file = "pyzmq-27.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7"}, + {file = "pyzmq-27.1.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:18339186c0ed0ce5835f2656cdfb32203125917711af64da64dbaa3d949e5a1b"}, + {file = "pyzmq-27.1.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:753d56fba8f70962cd8295fb3edb40b9b16deaa882dd2b5a3a2039f9ff7625aa"}, + {file = "pyzmq-27.1.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b721c05d932e5ad9ff9344f708c96b9e1a485418c6618d765fca95d4daacfbef"}, + {file = "pyzmq-27.1.0-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7be883ff3d722e6085ee3f4afc057a50f7f2e0c72d289fd54df5706b4e3d3a50"}, + {file = "pyzmq-27.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:b2e592db3a93128daf567de9650a2f3859017b3f7a66bc4ed6e4779d6034976f"}, + {file = "pyzmq-27.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ad68808a61cbfbbae7ba26d6233f2a4aa3b221de379ce9ee468aa7a83b9c36b0"}, + {file = "pyzmq-27.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:e2687c2d230e8d8584fbea433c24382edfeda0c60627aca3446aa5e58d5d1831"}, + {file = "pyzmq-27.1.0-cp38-cp38-win32.whl", hash = "sha256:a1aa0ee920fb3825d6c825ae3f6c508403b905b698b6460408ebd5bb04bbb312"}, + {file = "pyzmq-27.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:df7cd397ece96cf20a76fae705d40efbab217d217897a5053267cd88a700c266"}, + {file = "pyzmq-27.1.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:96c71c32fff75957db6ae33cd961439f386505c6e6b377370af9b24a1ef9eafb"}, + {file = "pyzmq-27.1.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:49d3980544447f6bd2968b6ac913ab963a49dcaa2d4a2990041f16057b04c429"}, + {file = "pyzmq-27.1.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:849ca054d81aa1c175c49484afaaa5db0622092b5eccb2055f9f3bb8f703782d"}, + {file = "pyzmq-27.1.0-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3970778e74cb7f85934d2b926b9900e92bfe597e62267d7499acc39c9c28e345"}, + {file = "pyzmq-27.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:da96ecdcf7d3919c3be2de91a8c513c186f6762aa6cf7c01087ed74fad7f0968"}, + {file = "pyzmq-27.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:9541c444cfe1b1c0156c5c86ece2bb926c7079a18e7b47b0b1b3b1b875e5d098"}, + {file = "pyzmq-27.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e30a74a39b93e2e1591b58eb1acef4902be27c957a8720b0e368f579b82dc22f"}, + {file = "pyzmq-27.1.0-cp39-cp39-win32.whl", hash = "sha256:b1267823d72d1e40701dcba7edc45fd17f71be1285557b7fe668887150a14b78"}, + {file = "pyzmq-27.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0c996ded912812a2fcd7ab6574f4ad3edc27cb6510349431e4930d4196ade7db"}, + {file = "pyzmq-27.1.0-cp39-cp39-win_arm64.whl", hash = "sha256:346e9ba4198177a07e7706050f35d733e08c1c1f8ceacd5eb6389d653579ffbc"}, + {file = "pyzmq-27.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c17e03cbc9312bee223864f1a2b13a99522e0dc9f7c5df0177cd45210ac286e6"}, + {file = "pyzmq-27.1.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:f328d01128373cb6763823b2b4e7f73bdf767834268c565151eacb3b7a392f90"}, + {file = "pyzmq-27.1.0-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c1790386614232e1b3a40a958454bdd42c6d1811837b15ddbb052a032a43f62"}, + {file = "pyzmq-27.1.0-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:448f9cb54eb0cee4732b46584f2710c8bc178b0e5371d9e4fc8125201e413a74"}, + {file = "pyzmq-27.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:05b12f2d32112bf8c95ef2e74ec4f1d4beb01f8b5e703b38537f8849f92cb9ba"}, + {file = "pyzmq-27.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:18770c8d3563715387139060d37859c02ce40718d1faf299abddcdcc6a649066"}, + {file = "pyzmq-27.1.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ac25465d42f92e990f8d8b0546b01c391ad431c3bf447683fdc40565941d0604"}, + {file = "pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53b40f8ae006f2734ee7608d59ed661419f087521edbfc2149c3932e9c14808c"}, + {file = "pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f605d884e7c8be8fe1aa94e0a783bf3f591b84c24e4bc4f3e7564c82ac25e271"}, + {file = "pyzmq-27.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c9f7f6e13dff2e44a6afeaf2cf54cee5929ad64afaf4d40b50f93c58fc687355"}, + {file = "pyzmq-27.1.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:50081a4e98472ba9f5a02850014b4c9b629da6710f8f14f3b15897c666a28f1b"}, + {file = "pyzmq-27.1.0-pp38-pypy38_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:510869f9df36ab97f89f4cff9d002a89ac554c7ac9cadd87d444aa4cf66abd27"}, + {file = "pyzmq-27.1.0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1f8426a01b1c4098a750973c37131cf585f61c7911d735f729935a0c701b68d3"}, + {file = "pyzmq-27.1.0-pp38-pypy38_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:726b6a502f2e34c6d2ada5e702929586d3ac948a4dbbb7fed9854ec8c0466027"}, + {file = "pyzmq-27.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:bd67e7c8f4654bef471c0b1ca6614af0b5202a790723a58b79d9584dc8022a78"}, + {file = "pyzmq-27.1.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:722ea791aa233ac0a819fc2c475e1292c76930b31f1d828cb61073e2fe5e208f"}, + {file = "pyzmq-27.1.0-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:01f9437501886d3a1dd4b02ef59fb8cc384fa718ce066d52f175ee49dd5b7ed8"}, + {file = "pyzmq-27.1.0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4a19387a3dddcc762bfd2f570d14e2395b2c9701329b266f83dd87a2b3cbd381"}, + {file = "pyzmq-27.1.0-pp39-pypy39_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c618fbcd069e3a29dcd221739cacde52edcc681f041907867e0f5cc7e85f172"}, + {file = "pyzmq-27.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ff8d114d14ac671d88c89b9224c63d6c4e5a613fe8acd5594ce53d752a3aafe9"}, + {file = "pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540"}, ] [package.dependencies] @@ -3790,6 +4098,7 @@ description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" groups = ["dev"] +markers = "python_version <= \"3.11\"" files = [ {file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"}, {file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"}, @@ -3805,6 +4114,29 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] +[[package]] +name = "requests" +version = "2.32.5" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +markers = "python_version >= \"3.12\"" +files = [ + {file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"}, + {file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset_normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + [[package]] name = "rfc3339-validator" version = "0.1.4" @@ -3967,157 +4299,168 @@ files = [ [[package]] name = "rpds-py" -version = "0.26.0" +version = "0.27.1" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "rpds_py-0.26.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4c70c70f9169692b36307a95f3d8c0a9fcd79f7b4a383aad5eaa0e9718b79b37"}, - {file = "rpds_py-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:777c62479d12395bfb932944e61e915741e364c843afc3196b694db3d669fcd0"}, - {file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec671691e72dff75817386aa02d81e708b5a7ec0dec6669ec05213ff6b77e1bd"}, - {file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a1cb5d6ce81379401bbb7f6dbe3d56de537fb8235979843f0d53bc2e9815a79"}, - {file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f789e32fa1fb6a7bf890e0124e7b42d1e60d28ebff57fe806719abb75f0e9a3"}, - {file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c55b0a669976cf258afd718de3d9ad1b7d1fe0a91cd1ab36f38b03d4d4aeaaf"}, - {file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70d9ec912802ecfd6cd390dadb34a9578b04f9bcb8e863d0a7598ba5e9e7ccc"}, - {file = "rpds_py-0.26.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3021933c2cb7def39d927b9862292e0f4c75a13d7de70eb0ab06efed4c508c19"}, - {file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a7898b6ca3b7d6659e55cdac825a2e58c638cbf335cde41f4619e290dd0ad11"}, - {file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:12bff2ad9447188377f1b2794772f91fe68bb4bbfa5a39d7941fbebdbf8c500f"}, - {file = "rpds_py-0.26.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:191aa858f7d4902e975d4cf2f2d9243816c91e9605070aeb09c0a800d187e323"}, - {file = "rpds_py-0.26.0-cp310-cp310-win32.whl", hash = "sha256:b37a04d9f52cb76b6b78f35109b513f6519efb481d8ca4c321f6a3b9580b3f45"}, - {file = "rpds_py-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:38721d4c9edd3eb6670437d8d5e2070063f305bfa2d5aa4278c51cedcd508a84"}, - {file = "rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed"}, - {file = "rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0"}, - {file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1"}, - {file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7"}, - {file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6"}, - {file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e"}, - {file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d"}, - {file = "rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3"}, - {file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107"}, - {file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a"}, - {file = "rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318"}, - {file = "rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a"}, - {file = "rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03"}, - {file = "rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41"}, - {file = "rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d"}, - {file = "rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136"}, - {file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582"}, - {file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e"}, - {file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15"}, - {file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8"}, - {file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a"}, - {file = "rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323"}, - {file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158"}, - {file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3"}, - {file = "rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2"}, - {file = "rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44"}, - {file = "rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c"}, - {file = "rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8"}, - {file = "rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d"}, - {file = "rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1"}, - {file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e"}, - {file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1"}, - {file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9"}, - {file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7"}, - {file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04"}, - {file = "rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1"}, - {file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9"}, - {file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9"}, - {file = "rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba"}, - {file = "rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b"}, - {file = "rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5"}, - {file = "rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256"}, - {file = "rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618"}, - {file = "rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35"}, - {file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f"}, - {file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83"}, - {file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1"}, - {file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8"}, - {file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f"}, - {file = "rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed"}, - {file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632"}, - {file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c"}, - {file = "rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0"}, - {file = "rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9"}, - {file = "rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9"}, - {file = "rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a"}, - {file = "rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf"}, - {file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12"}, - {file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20"}, - {file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331"}, - {file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f"}, - {file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246"}, - {file = "rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387"}, - {file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af"}, - {file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33"}, - {file = "rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953"}, - {file = "rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9"}, - {file = "rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37"}, - {file = "rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867"}, - {file = "rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da"}, - {file = "rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7"}, - {file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad"}, - {file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d"}, - {file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca"}, - {file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19"}, - {file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8"}, - {file = "rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b"}, - {file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a"}, - {file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170"}, - {file = "rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e"}, - {file = "rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f"}, - {file = "rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7"}, - {file = "rpds_py-0.26.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:7a48af25d9b3c15684059d0d1fc0bc30e8eee5ca521030e2bffddcab5be40226"}, - {file = "rpds_py-0.26.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c71c2f6bf36e61ee5c47b2b9b5d47e4d1baad6426bfed9eea3e858fc6ee8806"}, - {file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d815d48b1804ed7867b539236b6dd62997850ca1c91cad187f2ddb1b7bbef19"}, - {file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84cfbd4d4d2cdeb2be61a057a258d26b22877266dd905809e94172dff01a42ae"}, - {file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbaa70553ca116c77717f513e08815aec458e6b69a028d4028d403b3bc84ff37"}, - {file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39bfea47c375f379d8e87ab4bb9eb2c836e4f2069f0f65731d85e55d74666387"}, - {file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1533b7eb683fb5f38c1d68a3c78f5fdd8f1412fa6b9bf03b40f450785a0ab915"}, - {file = "rpds_py-0.26.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5ab0ee51f560d179b057555b4f601b7df909ed31312d301b99f8b9fc6028284"}, - {file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e5162afc9e0d1f9cae3b577d9c29ddbab3505ab39012cb794d94a005825bde21"}, - {file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:43f10b007033f359bc3fa9cd5e6c1e76723f056ffa9a6b5c117cc35720a80292"}, - {file = "rpds_py-0.26.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e3730a48e5622e598293eee0762b09cff34dd3f271530f47b0894891281f051d"}, - {file = "rpds_py-0.26.0-cp39-cp39-win32.whl", hash = "sha256:4b1f66eb81eab2e0ff5775a3a312e5e2e16bf758f7b06be82fb0d04078c7ac51"}, - {file = "rpds_py-0.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:519067e29f67b5c90e64fb1a6b6e9d2ec0ba28705c51956637bac23a2f4ddae1"}, - {file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0909c5234543ada2515c05dc08595b08d621ba919629e94427e8e03539c958"}, - {file = "rpds_py-0.26.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c1fb0cda2abcc0ac62f64e2ea4b4e64c57dfd6b885e693095460c61bde7bb18e"}, - {file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d142d2d6cf9b31c12aa4878d82ed3b2324226270b89b676ac62ccd7df52d08"}, - {file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a547e21c5610b7e9093d870be50682a6a6cf180d6da0f42c47c306073bfdbbf6"}, - {file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:35e9a70a0f335371275cdcd08bc5b8051ac494dd58bff3bbfb421038220dc871"}, - {file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dfa6115c6def37905344d56fb54c03afc49104e2ca473d5dedec0f6606913b4"}, - {file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:313cfcd6af1a55a286a3c9a25f64af6d0e46cf60bc5798f1db152d97a216ff6f"}, - {file = "rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f7bf2496fa563c046d05e4d232d7b7fd61346e2402052064b773e5c378bf6f73"}, - {file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:aa81873e2c8c5aa616ab8e017a481a96742fdf9313c40f14338ca7dbf50cb55f"}, - {file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:68ffcf982715f5b5b7686bdd349ff75d422e8f22551000c24b30eaa1b7f7ae84"}, - {file = "rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6188de70e190847bb6db3dc3981cbadff87d27d6fe9b4f0e18726d55795cee9b"}, - {file = "rpds_py-0.26.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1c962145c7473723df9722ba4c058de12eb5ebedcb4e27e7d902920aa3831ee8"}, - {file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674"}, - {file = "rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696"}, - {file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb"}, - {file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88"}, - {file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8"}, - {file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5"}, - {file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7"}, - {file = "rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b"}, - {file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb"}, - {file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0"}, - {file = "rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c"}, - {file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a90a13408a7a856b87be8a9f008fff53c5080eea4e4180f6c2e546e4a972fb5d"}, - {file = "rpds_py-0.26.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ac51b65e8dc76cf4949419c54c5528adb24fc721df722fd452e5fbc236f5c40"}, - {file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59b2093224a18c6508d95cfdeba8db9cbfd6f3494e94793b58972933fcee4c6d"}, - {file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f01a5d6444a3258b00dc07b6ea4733e26f8072b788bef750baa37b370266137"}, - {file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6e2c12160c72aeda9d1283e612f68804621f448145a210f1bf1d79151c47090"}, - {file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb28c1f569f8d33b2b5dcd05d0e6ef7005d8639c54c2f0be824f05aedf715255"}, - {file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1766b5724c3f779317d5321664a343c07773c8c5fd1532e4039e6cc7d1a815be"}, - {file = "rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b6d9e5a2ed9c4988c8f9b28b3bc0e3e5b1aaa10c28d210a594ff3a8c02742daf"}, - {file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b5f7a446ddaf6ca0fad9a5535b56fbfc29998bf0e0b450d174bbec0d600e1d72"}, - {file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:eed5ac260dd545fbc20da5f4f15e7efe36a55e0e7cf706e4ec005b491a9546a0"}, - {file = "rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:582462833ba7cee52e968b0341b85e392ae53d44c0f9af6a5927c80e539a8b67"}, - {file = "rpds_py-0.26.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:69a607203441e07e9a8a529cff1d5b73f6a160f22db1097211e6212a68567d11"}, - {file = "rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0"}, + {file = "rpds_py-0.27.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:68afeec26d42ab3b47e541b272166a0b4400313946871cba3ed3a4fc0cab1cef"}, + {file = "rpds_py-0.27.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74e5b2f7bb6fa38b1b10546d27acbacf2a022a8b5543efb06cfebc72a59c85be"}, + {file = "rpds_py-0.27.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9024de74731df54546fab0bfbcdb49fae19159ecaecfc8f37c18d2c7e2c0bd61"}, + {file = "rpds_py-0.27.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:31d3ebadefcd73b73928ed0b2fd696f7fefda8629229f81929ac9c1854d0cffb"}, + {file = "rpds_py-0.27.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2e7f8f169d775dd9092a1743768d771f1d1300453ddfe6325ae3ab5332b4657"}, + {file = "rpds_py-0.27.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d905d16f77eb6ab2e324e09bfa277b4c8e5e6b8a78a3e7ff8f3cdf773b4c013"}, + {file = "rpds_py-0.27.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50c946f048209e6362e22576baea09193809f87687a95a8db24e5fbdb307b93a"}, + {file = "rpds_py-0.27.1-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:3deab27804d65cd8289eb814c2c0e807c4b9d9916c9225e363cb0cf875eb67c1"}, + {file = "rpds_py-0.27.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8b61097f7488de4be8244c89915da8ed212832ccf1e7c7753a25a394bf9b1f10"}, + {file = "rpds_py-0.27.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a3f29aba6e2d7d90528d3c792555a93497fe6538aa65eb675b44505be747808"}, + {file = "rpds_py-0.27.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dd6cd0485b7d347304067153a6dc1d73f7d4fd995a396ef32a24d24b8ac63ac8"}, + {file = "rpds_py-0.27.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6f4461bf931108c9fa226ffb0e257c1b18dc2d44cd72b125bec50ee0ab1248a9"}, + {file = "rpds_py-0.27.1-cp310-cp310-win32.whl", hash = "sha256:ee5422d7fb21f6a00c1901bf6559c49fee13a5159d0288320737bbf6585bd3e4"}, + {file = "rpds_py-0.27.1-cp310-cp310-win_amd64.whl", hash = "sha256:3e039aabf6d5f83c745d5f9a0a381d031e9ed871967c0a5c38d201aca41f3ba1"}, + {file = "rpds_py-0.27.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:be898f271f851f68b318872ce6ebebbc62f303b654e43bf72683dbdc25b7c881"}, + {file = "rpds_py-0.27.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:62ac3d4e3e07b58ee0ddecd71d6ce3b1637de2d373501412df395a0ec5f9beb5"}, + {file = "rpds_py-0.27.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4708c5c0ceb2d034f9991623631d3d23cb16e65c83736ea020cdbe28d57c0a0e"}, + {file = "rpds_py-0.27.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:abfa1171a9952d2e0002aba2ad3780820b00cc3d9c98c6630f2e93271501f66c"}, + {file = "rpds_py-0.27.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b507d19f817ebaca79574b16eb2ae412e5c0835542c93fe9983f1e432aca195"}, + {file = "rpds_py-0.27.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:168b025f8fd8d8d10957405f3fdcef3dc20f5982d398f90851f4abc58c566c52"}, + {file = "rpds_py-0.27.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb56c6210ef77caa58e16e8c17d35c63fe3f5b60fd9ba9d424470c3400bcf9ed"}, + {file = "rpds_py-0.27.1-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:d252f2d8ca0195faa707f8eb9368955760880b2b42a8ee16d382bf5dd807f89a"}, + {file = "rpds_py-0.27.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6e5e54da1e74b91dbc7996b56640f79b195d5925c2b78efaa8c5d53e1d88edde"}, + {file = "rpds_py-0.27.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ffce0481cc6e95e5b3f0a47ee17ffbd234399e6d532f394c8dce320c3b089c21"}, + {file = "rpds_py-0.27.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a205fdfe55c90c2cd8e540ca9ceba65cbe6629b443bc05db1f590a3db8189ff9"}, + {file = "rpds_py-0.27.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:689fb5200a749db0415b092972e8eba85847c23885c8543a8b0f5c009b1a5948"}, + {file = "rpds_py-0.27.1-cp311-cp311-win32.whl", hash = "sha256:3182af66048c00a075010bc7f4860f33913528a4b6fc09094a6e7598e462fe39"}, + {file = "rpds_py-0.27.1-cp311-cp311-win_amd64.whl", hash = "sha256:b4938466c6b257b2f5c4ff98acd8128ec36b5059e5c8f8372d79316b1c36bb15"}, + {file = "rpds_py-0.27.1-cp311-cp311-win_arm64.whl", hash = "sha256:2f57af9b4d0793e53266ee4325535a31ba48e2f875da81a9177c9926dfa60746"}, + {file = "rpds_py-0.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ae2775c1973e3c30316892737b91f9283f9908e3cc7625b9331271eaaed7dc90"}, + {file = "rpds_py-0.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2643400120f55c8a96f7c9d858f7be0c88d383cd4653ae2cf0d0c88f668073e5"}, + {file = "rpds_py-0.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16323f674c089b0360674a4abd28d5042947d54ba620f72514d69be4ff64845e"}, + {file = "rpds_py-0.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a1f4814b65eacac94a00fc9a526e3fdafd78e439469644032032d0d63de4881"}, + {file = "rpds_py-0.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ba32c16b064267b22f1850a34051121d423b6f7338a12b9459550eb2096e7ec"}, + {file = "rpds_py-0.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5c20f33fd10485b80f65e800bbe5f6785af510b9f4056c5a3c612ebc83ba6cb"}, + {file = "rpds_py-0.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:466bfe65bd932da36ff279ddd92de56b042f2266d752719beb97b08526268ec5"}, + {file = "rpds_py-0.27.1-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:41e532bbdcb57c92ba3be62c42e9f096431b4cf478da9bc3bc6ce5c38ab7ba7a"}, + {file = "rpds_py-0.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f149826d742b406579466283769a8ea448eed82a789af0ed17b0cd5770433444"}, + {file = "rpds_py-0.27.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:80c60cfb5310677bd67cb1e85a1e8eb52e12529545441b43e6f14d90b878775a"}, + {file = "rpds_py-0.27.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7ee6521b9baf06085f62ba9c7a3e5becffbc32480d2f1b351559c001c38ce4c1"}, + {file = "rpds_py-0.27.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a512c8263249a9d68cac08b05dd59d2b3f2061d99b322813cbcc14c3c7421998"}, + {file = "rpds_py-0.27.1-cp312-cp312-win32.whl", hash = "sha256:819064fa048ba01b6dadc5116f3ac48610435ac9a0058bbde98e569f9e785c39"}, + {file = "rpds_py-0.27.1-cp312-cp312-win_amd64.whl", hash = "sha256:d9199717881f13c32c4046a15f024971a3b78ad4ea029e8da6b86e5aa9cf4594"}, + {file = "rpds_py-0.27.1-cp312-cp312-win_arm64.whl", hash = "sha256:33aa65b97826a0e885ef6e278fbd934e98cdcfed80b63946025f01e2f5b29502"}, + {file = "rpds_py-0.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e4b9fcfbc021633863a37e92571d6f91851fa656f0180246e84cbd8b3f6b329b"}, + {file = "rpds_py-0.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1441811a96eadca93c517d08df75de45e5ffe68aa3089924f963c782c4b898cf"}, + {file = "rpds_py-0.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55266dafa22e672f5a4f65019015f90336ed31c6383bd53f5e7826d21a0e0b83"}, + {file = "rpds_py-0.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d78827d7ac08627ea2c8e02c9e5b41180ea5ea1f747e9db0915e3adf36b62dcf"}, + {file = "rpds_py-0.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae92443798a40a92dc5f0b01d8a7c93adde0c4dc965310a29ae7c64d72b9fad2"}, + {file = "rpds_py-0.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c46c9dd2403b66a2a3b9720ec4b74d4ab49d4fabf9f03dfdce2d42af913fe8d0"}, + {file = "rpds_py-0.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2efe4eb1d01b7f5f1939f4ef30ecea6c6b3521eec451fb93191bf84b2a522418"}, + {file = "rpds_py-0.27.1-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:15d3b4d83582d10c601f481eca29c3f138d44c92187d197aff663a269197c02d"}, + {file = "rpds_py-0.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4ed2e16abbc982a169d30d1a420274a709949e2cbdef119fe2ec9d870b42f274"}, + {file = "rpds_py-0.27.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a75f305c9b013289121ec0f1181931975df78738cdf650093e6b86d74aa7d8dd"}, + {file = "rpds_py-0.27.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:67ce7620704745881a3d4b0ada80ab4d99df390838839921f99e63c474f82cf2"}, + {file = "rpds_py-0.27.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d992ac10eb86d9b6f369647b6a3f412fc0075cfd5d799530e84d335e440a002"}, + {file = "rpds_py-0.27.1-cp313-cp313-win32.whl", hash = "sha256:4f75e4bd8ab8db624e02c8e2fc4063021b58becdbe6df793a8111d9343aec1e3"}, + {file = "rpds_py-0.27.1-cp313-cp313-win_amd64.whl", hash = "sha256:f9025faafc62ed0b75a53e541895ca272815bec18abe2249ff6501c8f2e12b83"}, + {file = "rpds_py-0.27.1-cp313-cp313-win_arm64.whl", hash = "sha256:ed10dc32829e7d222b7d3b93136d25a406ba9788f6a7ebf6809092da1f4d279d"}, + {file = "rpds_py-0.27.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:92022bbbad0d4426e616815b16bc4127f83c9a74940e1ccf3cfe0b387aba0228"}, + {file = "rpds_py-0.27.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:47162fdab9407ec3f160805ac3e154df042e577dd53341745fc7fb3f625e6d92"}, + {file = "rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb89bec23fddc489e5d78b550a7b773557c9ab58b7946154a10a6f7a214a48b2"}, + {file = "rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e48af21883ded2b3e9eb48cb7880ad8598b31ab752ff3be6457001d78f416723"}, + {file = "rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6f5b7bd8e219ed50299e58551a410b64daafb5017d54bbe822e003856f06a802"}, + {file = "rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08f1e20bccf73b08d12d804d6e1c22ca5530e71659e6673bce31a6bb71c1e73f"}, + {file = "rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dc5dceeaefcc96dc192e3a80bbe1d6c410c469e97bdd47494a7d930987f18b2"}, + {file = "rpds_py-0.27.1-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:d76f9cc8665acdc0c9177043746775aa7babbf479b5520b78ae4002d889f5c21"}, + {file = "rpds_py-0.27.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:134fae0e36022edad8290a6661edf40c023562964efea0cc0ec7f5d392d2aaef"}, + {file = "rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb11a4f1b2b63337cfd3b4d110af778a59aae51c81d195768e353d8b52f88081"}, + {file = "rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:13e608ac9f50a0ed4faec0e90ece76ae33b34c0e8656e3dceb9a7db994c692cd"}, + {file = "rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dd2135527aa40f061350c3f8f89da2644de26cd73e4de458e79606384f4f68e7"}, + {file = "rpds_py-0.27.1-cp313-cp313t-win32.whl", hash = "sha256:3020724ade63fe320a972e2ffd93b5623227e684315adce194941167fee02688"}, + {file = "rpds_py-0.27.1-cp313-cp313t-win_amd64.whl", hash = "sha256:8ee50c3e41739886606388ba3ab3ee2aae9f35fb23f833091833255a31740797"}, + {file = "rpds_py-0.27.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:acb9aafccaae278f449d9c713b64a9e68662e7799dbd5859e2c6b3c67b56d334"}, + {file = "rpds_py-0.27.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:b7fb801aa7f845ddf601c49630deeeccde7ce10065561d92729bfe81bd21fb33"}, + {file = "rpds_py-0.27.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe0dd05afb46597b9a2e11c351e5e4283c741237e7f617ffb3252780cca9336a"}, + {file = "rpds_py-0.27.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b6dfb0e058adb12d8b1d1b25f686e94ffa65d9995a5157afe99743bf7369d62b"}, + {file = "rpds_py-0.27.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed090ccd235f6fa8bb5861684567f0a83e04f52dfc2e5c05f2e4b1309fcf85e7"}, + {file = "rpds_py-0.27.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf876e79763eecf3e7356f157540d6a093cef395b65514f17a356f62af6cc136"}, + {file = "rpds_py-0.27.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12ed005216a51b1d6e2b02a7bd31885fe317e45897de81d86dcce7d74618ffff"}, + {file = "rpds_py-0.27.1-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:ee4308f409a40e50593c7e3bb8cbe0b4d4c66d1674a316324f0c2f5383b486f9"}, + {file = "rpds_py-0.27.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0b08d152555acf1f455154d498ca855618c1378ec810646fcd7c76416ac6dc60"}, + {file = "rpds_py-0.27.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:dce51c828941973a5684d458214d3a36fcd28da3e1875d659388f4f9f12cc33e"}, + {file = "rpds_py-0.27.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:c1476d6f29eb81aa4151c9a31219b03f1f798dc43d8af1250a870735516a1212"}, + {file = "rpds_py-0.27.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:3ce0cac322b0d69b63c9cdb895ee1b65805ec9ffad37639f291dd79467bee675"}, + {file = "rpds_py-0.27.1-cp314-cp314-win32.whl", hash = "sha256:dfbfac137d2a3d0725758cd141f878bf4329ba25e34979797c89474a89a8a3a3"}, + {file = "rpds_py-0.27.1-cp314-cp314-win_amd64.whl", hash = "sha256:a6e57b0abfe7cc513450fcf529eb486b6e4d3f8aee83e92eb5f1ef848218d456"}, + {file = "rpds_py-0.27.1-cp314-cp314-win_arm64.whl", hash = "sha256:faf8d146f3d476abfee026c4ae3bdd9ca14236ae4e4c310cbd1cf75ba33d24a3"}, + {file = "rpds_py-0.27.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:ba81d2b56b6d4911ce735aad0a1d4495e808b8ee4dc58715998741a26874e7c2"}, + {file = "rpds_py-0.27.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:84f7d509870098de0e864cad0102711c1e24e9b1a50ee713b65928adb22269e4"}, + {file = "rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9e960fc78fecd1100539f14132425e1d5fe44ecb9239f8f27f079962021523e"}, + {file = "rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:62f85b665cedab1a503747617393573995dac4600ff51869d69ad2f39eb5e817"}, + {file = "rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fed467af29776f6556250c9ed85ea5a4dd121ab56a5f8b206e3e7a4c551e48ec"}, + {file = "rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2729615f9d430af0ae6b36cf042cb55c0936408d543fb691e1a9e36648fd35a"}, + {file = "rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b207d881a9aef7ba753d69c123a35d96ca7cb808056998f6b9e8747321f03b8"}, + {file = "rpds_py-0.27.1-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:639fd5efec029f99b79ae47e5d7e00ad8a773da899b6309f6786ecaf22948c48"}, + {file = "rpds_py-0.27.1-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fecc80cb2a90e28af8a9b366edacf33d7a91cbfe4c2c4544ea1246e949cfebeb"}, + {file = "rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42a89282d711711d0a62d6f57d81aa43a1368686c45bc1c46b7f079d55692734"}, + {file = "rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:cf9931f14223de59551ab9d38ed18d92f14f055a5f78c1d8ad6493f735021bbb"}, + {file = "rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f39f58a27cc6e59f432b568ed8429c7e1641324fbe38131de852cd77b2d534b0"}, + {file = "rpds_py-0.27.1-cp314-cp314t-win32.whl", hash = "sha256:d5fa0ee122dc09e23607a28e6d7b150da16c662e66409bbe85230e4c85bb528a"}, + {file = "rpds_py-0.27.1-cp314-cp314t-win_amd64.whl", hash = "sha256:6567d2bb951e21232c2f660c24cf3470bb96de56cdcb3f071a83feeaff8a2772"}, + {file = "rpds_py-0.27.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c918c65ec2e42c2a78d19f18c553d77319119bf43aa9e2edf7fb78d624355527"}, + {file = "rpds_py-0.27.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1fea2b1a922c47c51fd07d656324531adc787e415c8b116530a1d29c0516c62d"}, + {file = "rpds_py-0.27.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbf94c58e8e0cd6b6f38d8de67acae41b3a515c26169366ab58bdca4a6883bb8"}, + {file = "rpds_py-0.27.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c2a8fed130ce946d5c585eddc7c8eeef0051f58ac80a8ee43bd17835c144c2cc"}, + {file = "rpds_py-0.27.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:037a2361db72ee98d829bc2c5b7cc55598ae0a5e0ec1823a56ea99374cfd73c1"}, + {file = "rpds_py-0.27.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5281ed1cc1d49882f9997981c88df1a22e140ab41df19071222f7e5fc4e72125"}, + {file = "rpds_py-0.27.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fd50659a069c15eef8aa3d64bbef0d69fd27bb4a50c9ab4f17f83a16cbf8905"}, + {file = "rpds_py-0.27.1-cp39-cp39-manylinux_2_31_riscv64.whl", hash = "sha256:c4b676c4ae3921649a15d28ed10025548e9b561ded473aa413af749503c6737e"}, + {file = "rpds_py-0.27.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:079bc583a26db831a985c5257797b2b5d3affb0386e7ff886256762f82113b5e"}, + {file = "rpds_py-0.27.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4e44099bd522cba71a2c6b97f68e19f40e7d85399de899d66cdb67b32d7cb786"}, + {file = "rpds_py-0.27.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e202e6d4188e53c6661af813b46c37ca2c45e497fc558bacc1a7630ec2695aec"}, + {file = "rpds_py-0.27.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f41f814b8eaa48768d1bb551591f6ba45f87ac76899453e8ccd41dba1289b04b"}, + {file = "rpds_py-0.27.1-cp39-cp39-win32.whl", hash = "sha256:9e71f5a087ead99563c11fdaceee83ee982fd39cf67601f4fd66cb386336ee52"}, + {file = "rpds_py-0.27.1-cp39-cp39-win_amd64.whl", hash = "sha256:71108900c9c3c8590697244b9519017a400d9ba26a36c48381b3f64743a44aab"}, + {file = "rpds_py-0.27.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7ba22cb9693df986033b91ae1d7a979bc399237d45fccf875b76f62bb9e52ddf"}, + {file = "rpds_py-0.27.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5b640501be9288c77738b5492b3fd3abc4ba95c50c2e41273c8a1459f08298d3"}, + {file = "rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb08b65b93e0c6dd70aac7f7890a9c0938d5ec71d5cb32d45cf844fb8ae47636"}, + {file = "rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d7ff07d696a7a38152ebdb8212ca9e5baab56656749f3d6004b34ab726b550b8"}, + {file = "rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fb7c72262deae25366e3b6c0c0ba46007967aea15d1eea746e44ddba8ec58dcc"}, + {file = "rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b002cab05d6339716b03a4a3a2ce26737f6231d7b523f339fa061d53368c9d8"}, + {file = "rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23f6b69d1c26c4704fec01311963a41d7de3ee0570a84ebde4d544e5a1859ffc"}, + {file = "rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:530064db9146b247351f2a0250b8f00b289accea4596a033e94be2389977de71"}, + {file = "rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7b90b0496570bd6b0321724a330d8b545827c4df2034b6ddfc5f5275f55da2ad"}, + {file = "rpds_py-0.27.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:879b0e14a2da6a1102a3fc8af580fc1ead37e6d6692a781bd8c83da37429b5ab"}, + {file = "rpds_py-0.27.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:0d807710df3b5faa66c731afa162ea29717ab3be17bdc15f90f2d9f183da4059"}, + {file = "rpds_py-0.27.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:3adc388fc3afb6540aec081fa59e6e0d3908722771aa1e37ffe22b220a436f0b"}, + {file = "rpds_py-0.27.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c796c0c1cc68cb08b0284db4229f5af76168172670c74908fdbd4b7d7f515819"}, + {file = "rpds_py-0.27.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cdfe4bb2f9fe7458b7453ad3c33e726d6d1c7c0a72960bcc23800d77384e42df"}, + {file = "rpds_py-0.27.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:8fabb8fd848a5f75a2324e4a84501ee3a5e3c78d8603f83475441866e60b94a3"}, + {file = "rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eda8719d598f2f7f3e0f885cba8646644b55a187762bec091fa14a2b819746a9"}, + {file = "rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c64d07e95606ec402a0a1c511fe003873fa6af630bda59bac77fac8b4318ebc"}, + {file = "rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93a2ed40de81bcff59aabebb626562d48332f3d028ca2036f1d23cbb52750be4"}, + {file = "rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:387ce8c44ae94e0ec50532d9cb0edce17311024c9794eb196b90e1058aadeb66"}, + {file = "rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aaf94f812c95b5e60ebaf8bfb1898a7d7cb9c1af5744d4a67fa47796e0465d4e"}, + {file = "rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:4848ca84d6ded9b58e474dfdbad4b8bfb450344c0551ddc8d958bf4b36aa837c"}, + {file = "rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2bde09cbcf2248b73c7c323be49b280180ff39fadcfe04e7b6f54a678d02a7cf"}, + {file = "rpds_py-0.27.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:94c44ee01fd21c9058f124d2d4f0c9dc7634bec93cd4b38eefc385dabe71acbf"}, + {file = "rpds_py-0.27.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:df8b74962e35c9249425d90144e721eed198e6555a0e22a563d29fe4486b51f6"}, + {file = "rpds_py-0.27.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:dc23e6820e3b40847e2f4a7726462ba0cf53089512abe9ee16318c366494c17a"}, + {file = "rpds_py-0.27.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:aa8933159edc50be265ed22b401125c9eebff3171f570258854dbce3ecd55475"}, + {file = "rpds_py-0.27.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a50431bf02583e21bf273c71b89d710e7a710ad5e39c725b14e685610555926f"}, + {file = "rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78af06ddc7fe5cc0e967085a9115accee665fb912c22a3f54bad70cc65b05fe6"}, + {file = "rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:70d0738ef8fee13c003b100c2fbd667ec4f133468109b3472d249231108283a3"}, + {file = "rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2f6fd8a1cea5bbe599b6e78a6e5ee08db434fc8ffea51ff201c8765679698b3"}, + {file = "rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8177002868d1426305bb5de1e138161c2ec9eb2d939be38291d7c431c4712df8"}, + {file = "rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:008b839781d6c9bf3b6a8984d1d8e56f0ec46dc56df61fd669c49b58ae800400"}, + {file = "rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:a55b9132bb1ade6c734ddd2759c8dc132aa63687d259e725221f106b83a0e485"}, + {file = "rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a46fdec0083a26415f11d5f236b79fa1291c32aaa4a17684d82f7017a1f818b1"}, + {file = "rpds_py-0.27.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:8a63b640a7845f2bdd232eb0d0a4a2dd939bcdd6c57e6bb134526487f3160ec5"}, + {file = "rpds_py-0.27.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7e32721e5d4922deaaf963469d795d5bde6093207c52fec719bd22e5d1bedbc4"}, + {file = "rpds_py-0.27.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:2c426b99a068601b5f4623573df7a7c3d72e87533a2dd2253353a03e7502566c"}, + {file = "rpds_py-0.27.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4fc9b7fe29478824361ead6e14e4f5aed570d477e06088826537e202d25fe859"}, + {file = "rpds_py-0.27.1.tar.gz", hash = "sha256:26a1c73171d10b7acccbded82bf6a586ab8203601e565badc74bbbf8bc5a10f8"}, ] [[package]] @@ -4189,50 +4532,74 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo [[package]] name = "scipy" -version = "1.16.0" +version = "1.16.2" description = "Fundamental algorithms for scientific computing in Python" optional = false python-versions = ">=3.11" groups = ["main"] markers = "python_version >= \"3.12\"" files = [ - {file = "scipy-1.16.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:deec06d831b8f6b5fb0b652433be6a09db29e996368ce5911faf673e78d20085"}, - {file = "scipy-1.16.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d30c0fe579bb901c61ab4bb7f3eeb7281f0d4c4a7b52dbf563c89da4fd2949be"}, - {file = "scipy-1.16.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:b2243561b45257f7391d0f49972fca90d46b79b8dbcb9b2cb0f9df928d370ad4"}, - {file = "scipy-1.16.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:e6d7dfc148135e9712d87c5f7e4f2ddc1304d1582cb3a7d698bbadedb61c7afd"}, - {file = "scipy-1.16.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:90452f6a9f3fe5a2cf3748e7be14f9cc7d9b124dce19667b54f5b429d680d539"}, - {file = "scipy-1.16.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a2f0bf2f58031c8701a8b601df41701d2a7be17c7ffac0a4816aeba89c4cdac8"}, - {file = "scipy-1.16.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6c4abb4c11fc0b857474241b812ce69ffa6464b4bd8f4ecb786cf240367a36a7"}, - {file = "scipy-1.16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b370f8f6ac6ef99815b0d5c9f02e7ade77b33007d74802efc8316c8db98fd11e"}, - {file = "scipy-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:a16ba90847249bedce8aa404a83fb8334b825ec4a8e742ce6012a7a5e639f95c"}, - {file = "scipy-1.16.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:7eb6bd33cef4afb9fa5f1fb25df8feeb1e52d94f21a44f1d17805b41b1da3180"}, - {file = "scipy-1.16.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:1dbc8fdba23e4d80394ddfab7a56808e3e6489176d559c6c71935b11a2d59db1"}, - {file = "scipy-1.16.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:7dcf42c380e1e3737b343dec21095c9a9ad3f9cbe06f9c05830b44b1786c9e90"}, - {file = "scipy-1.16.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:26ec28675f4a9d41587266084c626b02899db373717d9312fa96ab17ca1ae94d"}, - {file = "scipy-1.16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:952358b7e58bd3197cfbd2f2f2ba829f258404bdf5db59514b515a8fe7a36c52"}, - {file = "scipy-1.16.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:03931b4e870c6fef5b5c0970d52c9f6ddd8c8d3e934a98f09308377eba6f3824"}, - {file = "scipy-1.16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:512c4f4f85912767c351a0306824ccca6fd91307a9f4318efe8fdbd9d30562ef"}, - {file = "scipy-1.16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e69f798847e9add03d512eaf5081a9a5c9a98757d12e52e6186ed9681247a1ac"}, - {file = "scipy-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:adf9b1999323ba335adc5d1dc7add4781cb5a4b0ef1e98b79768c05c796c4e49"}, - {file = "scipy-1.16.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:e9f414cbe9ca289a73e0cc92e33a6a791469b6619c240aa32ee18abdce8ab451"}, - {file = "scipy-1.16.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:bbba55fb97ba3cdef9b1ee973f06b09d518c0c7c66a009c729c7d1592be1935e"}, - {file = "scipy-1.16.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:58e0d4354eacb6004e7aa1cd350e5514bd0270acaa8d5b36c0627bb3bb486974"}, - {file = "scipy-1.16.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:75b2094ec975c80efc273567436e16bb794660509c12c6a31eb5c195cbf4b6dc"}, - {file = "scipy-1.16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6b65d232157a380fdd11a560e7e21cde34fdb69d65c09cb87f6cc024ee376351"}, - {file = "scipy-1.16.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1d8747f7736accd39289943f7fe53a8333be7f15a82eea08e4afe47d79568c32"}, - {file = "scipy-1.16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eb9f147a1b8529bb7fec2a85cf4cf42bdfadf9e83535c309a11fdae598c88e8b"}, - {file = "scipy-1.16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d2b83c37edbfa837a8923d19c749c1935ad3d41cf196006a24ed44dba2ec4358"}, - {file = "scipy-1.16.0-cp313-cp313-win_amd64.whl", hash = "sha256:79a3c13d43c95aa80b87328a46031cf52508cf5f4df2767602c984ed1d3c6bbe"}, - {file = "scipy-1.16.0-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:f91b87e1689f0370690e8470916fe1b2308e5b2061317ff76977c8f836452a47"}, - {file = "scipy-1.16.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:88a6ca658fb94640079e7a50b2ad3b67e33ef0f40e70bdb7dc22017dae73ac08"}, - {file = "scipy-1.16.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:ae902626972f1bd7e4e86f58fd72322d7f4ec7b0cfc17b15d4b7006efc385176"}, - {file = "scipy-1.16.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:8cb824c1fc75ef29893bc32b3ddd7b11cf9ab13c1127fe26413a05953b8c32ed"}, - {file = "scipy-1.16.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:de2db7250ff6514366a9709c2cba35cb6d08498e961cba20d7cff98a7ee88938"}, - {file = "scipy-1.16.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e85800274edf4db8dd2e4e93034f92d1b05c9421220e7ded9988b16976f849c1"}, - {file = "scipy-1.16.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4f720300a3024c237ace1cb11f9a84c38beb19616ba7c4cdcd771047a10a1706"}, - {file = "scipy-1.16.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:aad603e9339ddb676409b104c48a027e9916ce0d2838830691f39552b38a352e"}, - {file = "scipy-1.16.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f56296fefca67ba605fd74d12f7bd23636267731a72cb3947963e76b8c0a25db"}, - {file = "scipy-1.16.0.tar.gz", hash = "sha256:b5ef54021e832869c8cfb03bc3bf20366cbcd426e02a58e8a58d7584dfbb8f62"}, + {file = "scipy-1.16.2-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:6ab88ea43a57da1af33292ebd04b417e8e2eaf9d5aa05700be8d6e1b6501cd92"}, + {file = "scipy-1.16.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:c95e96c7305c96ede73a7389f46ccd6c659c4da5ef1b2789466baeaed3622b6e"}, + {file = "scipy-1.16.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:87eb178db04ece7c698220d523c170125dbffebb7af0345e66c3554f6f60c173"}, + {file = "scipy-1.16.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:4e409eac067dcee96a57fbcf424c13f428037827ec7ee3cb671ff525ca4fc34d"}, + {file = "scipy-1.16.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e574be127bb760f0dad24ff6e217c80213d153058372362ccb9555a10fc5e8d2"}, + {file = "scipy-1.16.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f5db5ba6188d698ba7abab982ad6973265b74bb40a1efe1821b58c87f73892b9"}, + {file = "scipy-1.16.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec6e74c4e884104ae006d34110677bfe0098203a3fec2f3faf349f4cb05165e3"}, + {file = "scipy-1.16.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:912f46667d2d3834bc3d57361f854226475f695eb08c08a904aadb1c936b6a88"}, + {file = "scipy-1.16.2-cp311-cp311-win_amd64.whl", hash = "sha256:91e9e8a37befa5a69e9cacbe0bcb79ae5afb4a0b130fd6db6ee6cc0d491695fa"}, + {file = "scipy-1.16.2-cp311-cp311-win_arm64.whl", hash = "sha256:f3bf75a6dcecab62afde4d1f973f1692be013110cad5338007927db8da73249c"}, + {file = "scipy-1.16.2-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:89d6c100fa5c48472047632e06f0876b3c4931aac1f4291afc81a3644316bb0d"}, + {file = "scipy-1.16.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ca748936cd579d3f01928b30a17dc474550b01272d8046e3e1ee593f23620371"}, + {file = "scipy-1.16.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:fac4f8ce2ddb40e2e3d0f7ec36d2a1e7f92559a2471e59aec37bd8d9de01fec0"}, + {file = "scipy-1.16.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:033570f1dcefd79547a88e18bccacff025c8c647a330381064f561d43b821232"}, + {file = "scipy-1.16.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ea3421209bf00c8a5ef2227de496601087d8f638a2363ee09af059bd70976dc1"}, + {file = "scipy-1.16.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f66bd07ba6f84cd4a380b41d1bf3c59ea488b590a2ff96744845163309ee8e2f"}, + {file = "scipy-1.16.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e9feab931bd2aea4a23388c962df6468af3d808ddf2d40f94a81c5dc38f32ef"}, + {file = "scipy-1.16.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:03dfc75e52f72cf23ec2ced468645321407faad8f0fe7b1f5b49264adbc29cb1"}, + {file = "scipy-1.16.2-cp312-cp312-win_amd64.whl", hash = "sha256:0ce54e07bbb394b417457409a64fd015be623f36e330ac49306433ffe04bc97e"}, + {file = "scipy-1.16.2-cp312-cp312-win_arm64.whl", hash = "sha256:2a8ffaa4ac0df81a0b94577b18ee079f13fecdb924df3328fc44a7dc5ac46851"}, + {file = "scipy-1.16.2-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:84f7bf944b43e20b8a894f5fe593976926744f6c185bacfcbdfbb62736b5cc70"}, + {file = "scipy-1.16.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:5c39026d12edc826a1ef2ad35ad1e6d7f087f934bb868fc43fa3049c8b8508f9"}, + {file = "scipy-1.16.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e52729ffd45b68777c5319560014d6fd251294200625d9d70fd8626516fc49f5"}, + {file = "scipy-1.16.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:024dd4a118cccec09ca3209b7e8e614931a6ffb804b2a601839499cb88bdf925"}, + {file = "scipy-1.16.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7a5dc7ee9c33019973a470556081b0fd3c9f4c44019191039f9769183141a4d9"}, + {file = "scipy-1.16.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c2275ff105e508942f99d4e3bc56b6ef5e4b3c0af970386ca56b777608ce95b7"}, + {file = "scipy-1.16.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:af80196eaa84f033e48444d2e0786ec47d328ba00c71e4299b602235ffef9acb"}, + {file = "scipy-1.16.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9fb1eb735fe3d6ed1f89918224e3385fbf6f9e23757cacc35f9c78d3b712dd6e"}, + {file = "scipy-1.16.2-cp313-cp313-win_amd64.whl", hash = "sha256:fda714cf45ba43c9d3bae8f2585c777f64e3f89a2e073b668b32ede412d8f52c"}, + {file = "scipy-1.16.2-cp313-cp313-win_arm64.whl", hash = "sha256:2f5350da923ccfd0b00e07c3e5cfb316c1c0d6c1d864c07a72d092e9f20db104"}, + {file = "scipy-1.16.2-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:53d8d2ee29b925344c13bda64ab51785f016b1b9617849dac10897f0701b20c1"}, + {file = "scipy-1.16.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:9e05e33657efb4c6a9d23bd8300101536abd99c85cca82da0bffff8d8764d08a"}, + {file = "scipy-1.16.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:7fe65b36036357003b3ef9d37547abeefaa353b237e989c21027b8ed62b12d4f"}, + {file = "scipy-1.16.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6406d2ac6d40b861cccf57f49592f9779071655e9f75cd4f977fa0bdd09cb2e4"}, + {file = "scipy-1.16.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ff4dc42bd321991fbf611c23fc35912d690f731c9914bf3af8f417e64aca0f21"}, + {file = "scipy-1.16.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:654324826654d4d9133e10675325708fb954bc84dae6e9ad0a52e75c6b1a01d7"}, + {file = "scipy-1.16.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:63870a84cd15c44e65220eaed2dac0e8f8b26bbb991456a033c1d9abfe8a94f8"}, + {file = "scipy-1.16.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:fa01f0f6a3050fa6a9771a95d5faccc8e2f5a92b4a2e5440a0fa7264a2398472"}, + {file = "scipy-1.16.2-cp313-cp313t-win_amd64.whl", hash = "sha256:116296e89fba96f76353a8579820c2512f6e55835d3fad7780fece04367de351"}, + {file = "scipy-1.16.2-cp313-cp313t-win_arm64.whl", hash = "sha256:98e22834650be81d42982360382b43b17f7ba95e0e6993e2a4f5b9ad9283a94d"}, + {file = "scipy-1.16.2-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:567e77755019bb7461513c87f02bb73fb65b11f049aaaa8ca17cfaa5a5c45d77"}, + {file = "scipy-1.16.2-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:17d9bb346194e8967296621208fcdfd39b55498ef7d2f376884d5ac47cec1a70"}, + {file = "scipy-1.16.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:0a17541827a9b78b777d33b623a6dcfe2ef4a25806204d08ead0768f4e529a88"}, + {file = "scipy-1.16.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:d7d4c6ba016ffc0f9568d012f5f1eb77ddd99412aea121e6fa8b4c3b7cbad91f"}, + {file = "scipy-1.16.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9702c4c023227785c779cba2e1d6f7635dbb5b2e0936cdd3a4ecb98d78fd41eb"}, + {file = "scipy-1.16.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d1cdf0ac28948d225decdefcc45ad7dd91716c29ab56ef32f8e0d50657dffcc7"}, + {file = "scipy-1.16.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:70327d6aa572a17c2941cdfb20673f82e536e91850a2e4cb0c5b858b690e1548"}, + {file = "scipy-1.16.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5221c0b2a4b58aa7c4ed0387d360fd90ee9086d383bb34d9f2789fafddc8a936"}, + {file = "scipy-1.16.2-cp314-cp314-win_amd64.whl", hash = "sha256:f5a85d7b2b708025af08f060a496dd261055b617d776fc05a1a1cc69e09fe9ff"}, + {file = "scipy-1.16.2-cp314-cp314-win_arm64.whl", hash = "sha256:2cc73a33305b4b24556957d5857d6253ce1e2dcd67fa0ff46d87d1670b3e1e1d"}, + {file = "scipy-1.16.2-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:9ea2a3fed83065d77367775d689401a703d0f697420719ee10c0780bcab594d8"}, + {file = "scipy-1.16.2-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:7280d926f11ca945c3ef92ba960fa924e1465f8d07ce3a9923080363390624c4"}, + {file = "scipy-1.16.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:8afae1756f6a1fe04636407ef7dbece33d826a5d462b74f3d0eb82deabefd831"}, + {file = "scipy-1.16.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:5c66511f29aa8d233388e7416a3f20d5cae7a2744d5cee2ecd38c081f4e861b3"}, + {file = "scipy-1.16.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:efe6305aeaa0e96b0ccca5ff647a43737d9a092064a3894e46c414db84bc54ac"}, + {file = "scipy-1.16.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f3a337d9ae06a1e8d655ee9d8ecb835ea5ddcdcbd8d23012afa055ab014f374"}, + {file = "scipy-1.16.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bab3605795d269067d8ce78a910220262711b753de8913d3deeaedb5dded3bb6"}, + {file = "scipy-1.16.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b0348d8ddb55be2a844c518cd8cc8deeeb8aeba707cf834db5758fc89b476a2c"}, + {file = "scipy-1.16.2-cp314-cp314t-win_amd64.whl", hash = "sha256:26284797e38b8a75e14ea6631d29bda11e76ceaa6ddb6fdebbfe4c4d90faf2f9"}, + {file = "scipy-1.16.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d2a4472c231328d4de38d5f1f68fdd6d28a615138f842580a8a321b5845cf779"}, + {file = "scipy-1.16.2.tar.gz", hash = "sha256:af029b153d243a80afb6eabe40b0a07f8e35c9adc269c019f364ad747f826a6b"}, ] [package.dependencies] @@ -4241,7 +4608,7 @@ numpy = ">=1.25.2,<2.6" [package.extras] dev = ["cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy (==1.10.0)", "pycodestyle", "pydevtool", "rich-click", "ruff (>=0.0.292)", "types-psutil", "typing_extensions"] doc = ["intersphinx_registry", "jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.19.1)", "jupytext", "linkify-it-py", "matplotlib (>=3.5)", "myst-nb (>=1.2.0)", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0,<8.2.0)", "sphinx-copybutton", "sphinx-design (>=0.4.0)"] -test = ["Cython", "array-api-strict (>=2.3.1)", "asv", "gmpy2", "hypothesis (>=6.30)", "meson", "mpmath", "ninja ; sys_platform != \"emscripten\"", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +test = ["Cython", "array-api-strict (>=2.3.1)", "asv", "gmpy2", "hypothesis (>=6.30)", "meson", "mpmath", "ninja ; sys_platform != \"emscripten\"", "pooch", "pytest (>=8.0.0)", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "send2trash" @@ -4335,11 +4702,25 @@ description = "A modern CSS selector implementation for Beautiful Soup." optional = false python-versions = ">=3.8" groups = ["dev"] +markers = "python_version <= \"3.11\"" files = [ {file = "soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4"}, {file = "soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a"}, ] +[[package]] +name = "soupsieve" +version = "2.8" +description = "A modern CSS selector implementation for Beautiful Soup." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +markers = "python_version >= \"3.12\"" +files = [ + {file = "soupsieve-2.8-py3-none-any.whl", hash = "sha256:0cc76456a30e20f5d7f2e14a98a4ae2ee4e5abdc7c5ea0aafe795f344bc7984c"}, + {file = "soupsieve-2.8.tar.gz", hash = "sha256:e2dd4a40a628cb5f28f6d4b0db8800b8f581b65bb380b97de22ba5ca8d72572f"}, +] + [[package]] name = "stack-data" version = "0.6.3" @@ -4515,25 +4896,25 @@ files = [ [[package]] name = "tornado" -version = "6.5.1" +version = "6.5.2" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7"}, - {file = "tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6"}, - {file = "tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888"}, - {file = "tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331"}, - {file = "tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e"}, - {file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401"}, - {file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692"}, - {file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a"}, - {file = "tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365"}, - {file = "tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b"}, - {file = "tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7"}, - {file = "tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c"}, + {file = "tornado-6.5.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:2436822940d37cde62771cff8774f4f00b3c8024fe482e16ca8387b8a2724db6"}, + {file = "tornado-6.5.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:583a52c7aa94ee046854ba81d9ebb6c81ec0fd30386d96f7640c96dad45a03ef"}, + {file = "tornado-6.5.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0fe179f28d597deab2842b86ed4060deec7388f1fd9c1b4a41adf8af058907e"}, + {file = "tornado-6.5.2-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b186e85d1e3536d69583d2298423744740986018e393d0321df7340e71898882"}, + {file = "tornado-6.5.2-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e792706668c87709709c18b353da1f7662317b563ff69f00bab83595940c7108"}, + {file = "tornado-6.5.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:06ceb1300fd70cb20e43b1ad8aaee0266e69e7ced38fa910ad2e03285009ce7c"}, + {file = "tornado-6.5.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:74db443e0f5251be86cbf37929f84d8c20c27a355dd452a5cfa2aada0d001ec4"}, + {file = "tornado-6.5.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b5e735ab2889d7ed33b32a459cac490eda71a1ba6857b0118de476ab6c366c04"}, + {file = "tornado-6.5.2-cp39-abi3-win32.whl", hash = "sha256:c6f29e94d9b37a95013bb669616352ddb82e3bfe8326fccee50583caebc8a5f0"}, + {file = "tornado-6.5.2-cp39-abi3-win_amd64.whl", hash = "sha256:e56a5af51cc30dd2cae649429af65ca2f6571da29504a07995175df14c18f35f"}, + {file = "tornado-6.5.2-cp39-abi3-win_arm64.whl", hash = "sha256:d6c33dc3672e3a1f3618eb63b7ef4683a7688e7b9e6e8f0d9aa5726360a004af"}, + {file = "tornado-6.5.2.tar.gz", hash = "sha256:ab53c8f9a0fa351e2c0741284e06c7a45da86afb544133201c5cc8578eb076a0"}, ] [[package]] @@ -4589,15 +4970,15 @@ files = [ [[package]] name = "types-python-dateutil" -version = "2.9.0.20250708" +version = "2.9.0.20251008" description = "Typing stubs for python-dateutil" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "types_python_dateutil-2.9.0.20250708-py3-none-any.whl", hash = "sha256:4d6d0cc1cc4d24a2dc3816024e502564094497b713f7befda4d5bc7a8e3fd21f"}, - {file = "types_python_dateutil-2.9.0.20250708.tar.gz", hash = "sha256:ccdbd75dab2d6c9696c350579f34cffe2c281e4c5f27a585b2a2438dd1d5c8ab"}, + {file = "types_python_dateutil-2.9.0.20251008-py3-none-any.whl", hash = "sha256:b9a5232c8921cf7661b29c163ccc56055c418ab2c6eabe8f917cbcc73a4c4157"}, + {file = "types_python_dateutil-2.9.0.20251008.tar.gz", hash = "sha256:c3826289c170c93ebd8360c3485311187df740166dbab9dd3b792e69f2bc1f9c"}, ] [[package]] @@ -4615,15 +4996,15 @@ files = [ [[package]] name = "typing-extensions" -version = "4.14.1" +version = "4.15.0" description = "Backported and Experimental Type Hints for Python 3.9+" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76"}, - {file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36"}, + {file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}, + {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}, ] [[package]] @@ -4651,8 +5032,8 @@ figures = ["dualitic @ git+https://github.com/jaimeliew1/Dualitic.git", "ipykern [package.source] type = "git" url = "https://github.com/Howland-Lab/Unified-Momentum-Model.git" -reference = "HEAD" -resolved_reference = "ebbfd35978a9a0855962501450960ec70b032bf2" +reference = "sg/curled_wave_dev" +resolved_reference = "d48a62e8bbc8e16cc0fd8b0463f0d2861e034704" [[package]] name = "uri-template" @@ -4709,14 +5090,14 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "wcwidth" -version = "0.2.13" +version = "0.2.14" description = "Measures the displayed width of unicode strings in a terminal" optional = false -python-versions = "*" +python-versions = ">=3.6" groups = ["dev"] files = [ - {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, - {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, + {file = "wcwidth-0.2.14-py2.py3-none-any.whl", hash = "sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1"}, + {file = "wcwidth-0.2.14.tar.gz", hash = "sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605"}, ] [[package]] @@ -4768,6 +5149,7 @@ description = "WebSocket client for Python with low level API options" optional = false python-versions = ">=3.8" groups = ["dev"] +markers = "python_version <= \"3.11\"" 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"}, @@ -4778,6 +5160,24 @@ docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] optional = ["python-socks", "wsaccel"] test = ["websockets"] +[[package]] +name = "websocket-client" +version = "1.9.0" +description = "WebSocket client for Python with low level API options" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +markers = "python_version >= \"3.12\"" +files = [ + {file = "websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef"}, + {file = "websocket_client-1.9.0.tar.gz", hash = "sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98"}, +] + +[package.extras] +docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx_rtd_theme (>=1.1.0)"] +optional = ["python-socks", "wsaccel"] +test = ["pytest", "websockets"] + [[package]] name = "widgetsnbextension" version = "4.0.14" @@ -4814,4 +5214,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = "^3.8" -content-hash = "17b60b7f0f84b1543ebe4b7a60a1d2f82c598c22c88d20bcce764e657d644611" +content-hash = "2712c9679bfd6da3d38d01cceddf5b9d91371a3410ff496e5a3aab55c518113a" diff --git a/pyproject.toml b/pyproject.toml index e362900..2d62bdd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ packages = [{ include = "MITRotor" }] python = "^3.8" numpy = ">=1.16.5" scipy = ">=1.6" -unified-momentum-model = {git = "https://github.com/Howland-Lab/Unified-Momentum-Model.git"} +unified-momentum-model = {git = "https://github.com/Howland-Lab/Unified-Momentum-Model.git", branch = "sg/curled_wave_dev"} pyyaml = "^6.0.1" [tool.poetry.group.dev.dependencies] From 356b16a7b55c29816d20c1700a50207f4858d1f9 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Thu, 16 Oct 2025 18:01:06 -0400 Subject: [PATCH 02/26] Initial addition of tilt argument --- MITRotor/Aerodynamics.py | 8 +++++ MITRotor/BEMSolver.py | 30 +++++++++------- MITRotor/Geometry.py | 4 +-- MITRotor/Momentum.py | 62 ++++++++++++++++++++++----------- MITRotor/TangentialInduction.py | 4 +++ MITRotor/TipLoss.py | 3 ++ 6 files changed, 77 insertions(+), 34 deletions(-) diff --git a/MITRotor/Aerodynamics.py b/MITRotor/Aerodynamics.py index 00d3c62..3803bc9 100644 --- a/MITRotor/Aerodynamics.py +++ b/MITRotor/Aerodynamics.py @@ -133,6 +133,7 @@ def __call__( geom: BEMGeometry, U: ArrayLike, wdir: ArrayLike, + tilt: float = 0, ) -> AerodynamicProperties: """ Performs the aerodynamic calculations in a blade-element code. @@ -147,6 +148,7 @@ def __call__( geom (BEMGeometry): Blade element geometry object. U (ArrayLike): Inflow velocity on polar grid. wdir (ArrayLike): Inflow direction on polar grid. + tilt (float): Rotor tilt angle [rad]. Returns: AerodynamicProperties: Calculated aerodynamic properties stored in AerodynamicProperties object. @@ -167,6 +169,7 @@ def __call__( geom: BEMGeometry, U: ArrayLike, wdir: ArrayLike, + tilt: float = 0.0, ) -> AerodynamicProperties: """ Performs the aerodynamic calculations in a blade-element code using the @@ -184,11 +187,14 @@ def __call__( geom (BEMGeometry): Blade element geometry object. U (ArrayLike): Inflow velocity on polar grid. wdir (ArrayLike): Inflow direction on polar grid. + tilt (float): Rotor tilt angle [rad]. Returns: AerodynamicProperties: Calculated aerodynamic properties stored in AerodynamicProperties object. """ + if tilt != 0: + raise ValueError("Tilt not supported by the KraghAerodynamics model. Use DefaultAerodynamics.") local_yaw = wdir - yaw Vax = ( @@ -240,6 +246,7 @@ def __call__( geom: BEMGeometry, U: ArrayLike, wdir: ArrayLike, + tilt: float = 0.0, ) -> AerodynamicProperties: """ Performs the aerodynamic calculations in a blade-element code using the @@ -261,6 +268,7 @@ def __call__( AerodynamicProperties: Calculated aerodynamic properties stored in AerodynamicProperties object. """ + # TODO: add in tilt!! local_yaw = -yaw Vax = U * ((1 - an) * np.cos(local_yaw)) diff --git a/MITRotor/BEMSolver.py b/MITRotor/BEMSolver.py index 42817a7..bdaa713 100644 --- a/MITRotor/BEMSolver.py +++ b/MITRotor/BEMSolver.py @@ -43,6 +43,8 @@ class BEMSolution: niter: int u4: float v4: float + tilt: float = 0.0 + w4: float = 0 def a(self, grid: Literal["sector", "annulus", "rotor"] = "rotor"): return average(self.geom, self.aero_props.an, grid) @@ -123,6 +125,7 @@ def Ct_corr(self, grid: Literal["sector", "annulus", "rotor"] = "rotor"): return average(self.geom, _Ct, grid=grid) def Ctprime(self, grid: Literal["sector", "annulus", "rotor"] = "rotor"): + # TODO add in tilt Ctprime = self.Ct(grid="sector") / ((1 - self.a(grid="sector")) ** 2 * np.cos(self.yaw) ** 2) return average(self.geom, Ctprime, grid=grid) @@ -162,12 +165,12 @@ def __init__( def __call__(self, pitch: float, tsr: float, yaw: float) -> BEMSolution: ... - def sample_points(self, yaw: float = 0.0) -> tuple[ArrayLike, ArrayLike, ArrayLike]: - X, Y, Z = self.geometry.cartesian(yaw) + def sample_points(self, yaw: float = 0.0, tilt: float = 0.0) -> tuple[ArrayLike, ArrayLike, ArrayLike]: + X, Y, Z = self.geometry.cartesian(yaw, tilt) return X, Y, Z def initial_guess( - self, pitch: float, tsr: float, yaw: float = 0.0, U: ArrayLike = 1.0, wdir: ArrayLike = 0.0 + self, pitch: float, tsr: float, yaw: float = 0.0, tilt: float = 0.0, U: ArrayLike = 1.0, wdir: ArrayLike = 0.0 ) -> Tuple[ArrayLike, ...]: a = (1 / 3) * np.ones(self.geometry.shape) aprime = np.zeros(self.geometry.shape) @@ -182,6 +185,7 @@ def residual( yaw: ArrayLike = 0.0, U: ArrayLike = None, wdir: ArrayLike = None, + tilt: ArrayLike = 0.0, ) -> Tuple[ArrayLike, ...]: an, aprime = x U = np.ones(self.geometry.shape) if U is None else U @@ -196,21 +200,23 @@ def residual( rotor=self.rotor, geom=self.geometry, U=U, - wdir=wdir) + wdir=wdir, + tilt = tilt, + ) - aero_props.F = self.tiploss_model(aero_props, pitch, tsr, yaw, self.rotor, self.geometry) - e_an = self.momentum_model(aero_props, pitch, tsr, yaw, self.rotor, self.geometry) - an - e_aprime = self.tangential_induction_model(aero_props, pitch, tsr, yaw, self.rotor, self.geometry) - aprime + aero_props.F = self.tiploss_model(aero_props, pitch, tsr, yaw, self.rotor, self.geometry, tilt = tilt) + e_an = self.momentum_model(aero_props, pitch, tsr, yaw, self.rotor, self.geometry, tilt = tilt) - an + e_aprime = self.tangential_induction_model(aero_props, pitch, tsr, yaw, self.rotor, self.geometry, tilt = tilt) - aprime return e_an, e_aprime - def post_process(self, result: FixedPointIterationResult, pitch, tsr, yaw, U=None, wdir=None) -> BEMSolution: + def post_process(self, result: FixedPointIterationResult, pitch, tsr, yaw, U=None, wdir=None, tilt: float = 0.0) -> BEMSolution: U = np.ones(self.geometry.shape) if U is None else U wdir = np.zeros(self.geometry.shape) if wdir is None else wdir an, aprime = result.x - aero_props = self.aerodynamic_model(an, aprime, pitch, tsr, yaw, self.rotor, self.geometry, U, wdir) - aero_props.F = self.tiploss_model(aero_props, pitch, tsr, yaw, self.rotor, self.geometry) + aero_props = self.aerodynamic_model(an, aprime, pitch, tsr, yaw, self.rotor, self.geometry, U, wdir, tilt = tilt) + aero_props.F = self.tiploss_model(aero_props, pitch, tsr, yaw, self.rotor, self.geometry, tilt = tilt) avg_Ct = average(self.geometry, aero_props.C_x) - u4,v4 = self.momentum_model.compute_initial_wake_velocities(avg_Ct, yaw) + u4,v4,w4 = self.momentum_model.compute_initial_wake_velocities(avg_Ct, yaw, tilt = tilt) - return BEMSolution(pitch, tsr, yaw, aero_props, self.geometry, result.converged, result.niter, u4, v4) + return BEMSolution(pitch, tsr, yaw, aero_props, self.geometry, result.converged, result.niter, u4, v4, tilt = tilt, w4 = w4) diff --git a/MITRotor/Geometry.py b/MITRotor/Geometry.py index 50ef511..9efd32a 100644 --- a/MITRotor/Geometry.py +++ b/MITRotor/Geometry.py @@ -27,12 +27,12 @@ def dmu(self): def dtheta(self): return self.theta[1] - self.theta[0] - def cartesian(self, yaw: float) -> Tuple[ArrayLike, ...]: + def cartesian(self, yaw: float, tilt: float) -> Tuple[ArrayLike, ...]: """ Returns the grid point locations in cartesian coordinates nondimensionialized by rotor radius. Origin is located at hub center. - Note: effect of yaw angle on grid points is not yet implemented. + Note: effect of yaw and tilt anglea on grid points is not yet implemented. """ # Probable sign error here. X = np.zeros_like(self.mu_mesh) diff --git a/MITRotor/Momentum.py b/MITRotor/Momentum.py index c8a46dd..ee59a9d 100644 --- a/MITRotor/Momentum.py +++ b/MITRotor/Momentum.py @@ -30,15 +30,16 @@ def __call__( yaw: float, rotor: "RotorDefinition", geom: "BEMGeometry", + tilt: float = 0.0, ) -> ArrayLike: ... @abstractmethod - def compute_induction(self, Cx: ArrayLike, yaw: float) -> ArrayLike: + def compute_induction(self, Cx: ArrayLike, yaw: float, tilt:float = 0) -> ArrayLike: ... @abstractmethod - def compute_initial_wake_velocities(self, Ct: float, yaw: float) -> ArrayLike: + def compute_initial_wake_velocities(self, Ct: float, yaw: float, tilt: float = 0.0) -> ArrayLike: ... @@ -51,6 +52,7 @@ def _func_rotor( yaw: float, rotor: "RotorDefinition", geom: "BEMGeometry", + tilt: float = 0.0, ) -> ArrayLike: rotor_avg_axial_force = ( @@ -61,7 +63,7 @@ def _func_rotor( ) ) - return self.compute_induction(rotor_avg_axial_force, yaw) + return self.compute_induction(rotor_avg_axial_force, yaw, tilt = tilt) @@ -73,6 +75,7 @@ def _func_annulus( yaw: float, rotor: "RotorDefinition", geom: "BEMGeometry", + tilt: float = 0.0, ) -> ArrayLike: annulus_avg_axial_force = ( @@ -83,7 +86,7 @@ def _func_annulus( )[:, None] * np.ones(geom.shape) - return self.compute_induction(annulus_avg_axial_force, yaw) + return self.compute_induction(annulus_avg_axial_force, yaw, tilt = tilt) def _func_sector( self, @@ -93,10 +96,11 @@ def _func_sector( yaw: float, rotor: "RotorDefinition", geom: "BEMGeometry", + tilt: float = 0.0, ) -> ArrayLike: axial_force = np.clip(aero_props.C_x_corr, 0, 1.69) - return self.compute_induction(axial_force, yaw) + return self.compute_induction(axial_force, yaw, tilt = tilt) def __call__( self, @@ -106,8 +110,9 @@ def __call__( yaw: float, rotor: "RotorDefinition", geom: "BEMGeometry", + tilt: float = 0.0, ) -> ArrayLike: - an = self._func(aero_props, pitch, tsr, yaw, rotor, geom) + an = self._func(aero_props, pitch, tsr, yaw, rotor, geom, tilt = tilt) return np.clip(an, 0, 1) @@ -115,10 +120,14 @@ class ConstantInduction(MomentumModel): def __init__(self, a = 1/3): self.a = a - def compute_induction(self, Cx, yaw) -> ArrayLike: + def compute_induction(self, Cx, yaw, tilt = 0) -> ArrayLike: + if tilt != 0: + raise ValueError("Tilt not supported by the Madsen momentum model. Use UMM.") return self.a * np.ones_like(yaw) - def compute_initial_wake_velocities(self, Ct: float, yaw: float) -> ArrayLike: + def compute_initial_wake_velocities(self, Ct: float, yaw: float, tilt: float = 0.0) -> ArrayLike: + if tilt != 0: + raise ValueError("Tilt not supported by the Madsen momentum model. Use UMM.") u4 = 1 - 2 * self.a v4 = - (1/4) * Ct * np.sin(yaw) return u4, v4 @@ -136,10 +145,14 @@ def __init__(self, averaging: Literal["sector", "annulus", "rotor"] = "rotor"): raise ValueError(f"Averaging method {averaging} not found for ClassicalMomentum model.") self.averaging = averaging - def compute_induction(self, Cx, yaw): + def compute_induction(self, Cx, yaw, tilt = 0): + if tilt != 0: + raise ValueError("Tilt not supported by the Madsen momentum model. Use UMM.") return 0.5 * (1 - np.sqrt(1 - Cx)) - def compute_initial_wake_velocities(self, Ct: float, yaw: float) -> ArrayLike: + def compute_initial_wake_velocities(self, Ct: float, yaw: float, tilt: float = 0.0) -> ArrayLike: + if tilt != 0: + raise ValueError("Tilt not supported by the Madsen momentum model. Use UMM.") u4 = np.sqrt(1 - Ct) v4 = - (1/4) * Ct * np.sin(yaw) return u4, v4 @@ -168,7 +181,9 @@ def __init__( raise ValueError(f"Averaging method {averaging} not found for HeckMomentum model.") self.averaging = averaging - def compute_induction(self, Cx: ArrayLike, yaw: float) -> ArrayLike: + def compute_induction(self, Cx: ArrayLike, yaw: float, tilt: float = 0.0) -> ArrayLike: + if tilt != 0: + raise ValueError("Tilt not supported by the Madsen momentum model for BEM. Use UMM.") Ctc = 4 * self.ac * (1 - self.ac) / (1 + 0.25 * (1 - self.ac) ** 2 * np.sin(yaw) ** 2) slope = (16 * (1 - self.ac) ** 2 * np.sin(yaw) ** 2 - 128 * self.ac + 64) / ( (1 - self.ac) ** 2 * np.sin(yaw) ** 2 + 4 @@ -190,7 +205,9 @@ def compute_induction(self, Cx: ArrayLike, yaw: float) -> ArrayLike: return a - def compute_initial_wake_velocities(self, Ct: float, yaw: float) -> ArrayLike: + def compute_initial_wake_velocities(self, Ct: float, yaw: float, tilt: float = 0.0) -> ArrayLike: + if tilt != 0: + raise ValueError("Tilt not supported by the Heck momentum model for BEM. Use UMM.") a = self.compute_induction(Ct, yaw) u4 = 1 - Ct /(2 * (1 - a)) v4 = - (1/4) * Ct * np.sin(yaw) @@ -219,13 +236,13 @@ def __init__(self, averaging: Literal["sector", "annulus", "rotor"] = "rotor", b self.model_Ct = UMM.ThrustBasedUnified(beta=beta) - def compute_induction(self, Cx: ArrayLike, yaw: float) -> ArrayLike: - sol = self.model_Ct(Cx, yaw) + def compute_induction(self, Cx: ArrayLike, yaw: float, tilt: float = 0.0) -> ArrayLike: + sol = self.model_Ct(Cx, yaw, tilt = tilt) return sol.an - def compute_initial_wake_velocities(self, Ct: float, yaw: float) -> ArrayLike: - sol = self.model_Ct(Ct, yaw) - return sol.u4, sol.v4 + def compute_initial_wake_velocities(self, Ct: float, yaw: float, tilt: float = 0.0) -> ArrayLike: + sol = self.model_Ct(Ct, yaw, tilt = tilt) + return sol.u4, sol.v4, sol.w4 class MadsenMomentum(MomentumModel): @@ -248,7 +265,9 @@ def __init__(self, self.cosine_exponent = cosine_exponent - def compute_induction(self, Cx: ArrayLike, yaw: float) -> ArrayLike: + def compute_induction(self, Cx: ArrayLike, yaw: float, tilt: float = 0.0) -> ArrayLike: + if tilt != 0: + raise ValueError("Tilt not supported by the Madsen momentum model. Use UMM.") if self.cosine_exponent: Ct = Cx / (np.cos(yaw)**2) else: @@ -257,7 +276,10 @@ def compute_induction(self, Cx: ArrayLike, yaw: float) -> ArrayLike: an = Ct**3 * 0.0883 + Ct**2 * 0.0586 + Ct * 0.2460 return an - def compute_initial_wake_velocities(self, Ct: float, yaw: float) -> ArrayLike: + def compute_initial_wake_velocities(self, Ct: float, yaw: float, tilt: float = 0.0) -> ArrayLike: + if tilt != 0: + raise ValueError("Tilt not supported by the Madsen momentum model. Use UMM.") u4 = np.sqrt(1 - Ct) v4 = - (1/4) * Ct * np.sin(yaw) - return u4, v4 + w4 = 0.0 + return u4, v4, w4 diff --git a/MITRotor/TangentialInduction.py b/MITRotor/TangentialInduction.py index a7128a9..f3a3505 100644 --- a/MITRotor/TangentialInduction.py +++ b/MITRotor/TangentialInduction.py @@ -23,6 +23,7 @@ def __call__( yaw: float, rotor: RotorDefinition, geom: BEMGeometry, + tilt: float = 0.0, ) -> ArrayLike: ... @@ -36,6 +37,7 @@ def __call__( yaw: float, rotor: RotorDefinition, geom: BEMGeometry, + tilt: float = 0.0, ) -> ArrayLike: return np.zeros_like(aero_props.an) @@ -49,6 +51,7 @@ def __call__( yaw: float, rotor: RotorDefinition, geom: BEMGeometry, + tilt: float = 0.0, ) -> ArrayLike: @@ -56,5 +59,6 @@ def __call__( np.clip(aero_props.C_tau_corr, -2, 2) / (4 * np.maximum(geom.mu_mesh, 0.1) ** 2 * tsr * (1 - aero_props.an) * np.cos(yaw)) ) + # TODO: add in effects of tilt return aprime diff --git a/MITRotor/TipLoss.py b/MITRotor/TipLoss.py index 86f2dcd..9470520 100644 --- a/MITRotor/TipLoss.py +++ b/MITRotor/TipLoss.py @@ -20,6 +20,7 @@ def __call__( yaw: float, rotor: "RotorDefinition", geometry: "BEMGeometry", + tilt: float = 0.0, ) -> ArrayLike: ... @@ -33,6 +34,7 @@ def __call__( yaw: float, rotor: "RotorDefinition", geometry: "BEMGeometry", + tilt: float = 0.0, ): return np.ones_like(geometry.mu_mesh) @@ -49,6 +51,7 @@ def __call__( yaw: float, rotor: "RotorDefinition", geometry: "BEMGeometry", + tilt: float = 0.0, ): phi = aero_props.phi R_hub = rotor.hub_radius / rotor.R From bc58968f4d5eef4e9e9480f0148e1536dfca52ce Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Fri, 17 Oct 2025 15:24:07 -0400 Subject: [PATCH 03/26] Added in tilt effects --- MITRotor/Aerodynamics.py | 9 +++++---- MITRotor/BEMSolver.py | 5 +++-- MITRotor/TangentialInduction.py | 7 +++---- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/MITRotor/Aerodynamics.py b/MITRotor/Aerodynamics.py index 3803bc9..224b6e9 100644 --- a/MITRotor/Aerodynamics.py +++ b/MITRotor/Aerodynamics.py @@ -8,6 +8,7 @@ from .RotorDefinition import RotorDefinition from .Geometry import BEMGeometry +from UnifiedMomentumModel.Utilities.Geometry import calc_eff_yaw __all__ = [ "AerodynamicModel", @@ -268,15 +269,15 @@ def __call__( AerodynamicProperties: Calculated aerodynamic properties stored in AerodynamicProperties object. """ - # TODO: add in tilt!! local_yaw = -yaw - - Vax = U * ((1 - an) * np.cos(local_yaw)) + # rotate to a yaw-only frame that includes tilt + eff_yaw = calc_eff_yaw(local_yaw, tilt) + Vax = U * ((1 - an) * np.cos(eff_yaw)) Vtan = ( (1 + aprime) * tsr * geom.mu_mesh - U * (1 - an) * np.cos(geom.theta_mesh) - * np.sin(local_yaw) + * np.sin(eff_yaw) ) phi = np.arctan2(Vax, Vtan) diff --git a/MITRotor/BEMSolver.py b/MITRotor/BEMSolver.py index bdaa713..a8f1a8f 100644 --- a/MITRotor/BEMSolver.py +++ b/MITRotor/BEMSolver.py @@ -11,6 +11,7 @@ from .Geometry import BEMGeometry from .RotorDefinition import RotorDefinition from .TangentialInduction import DefaultTangentialInduction, TangentialInductionModel +from UnifiedMomentumModel.Utilities.Geometry import calc_eff_yaw def average(geometry: BEMGeometry, value: ArrayLike, grid: Literal["sector", "annulus", "rotor"] = "rotor"): @@ -125,8 +126,8 @@ def Ct_corr(self, grid: Literal["sector", "annulus", "rotor"] = "rotor"): return average(self.geom, _Ct, grid=grid) def Ctprime(self, grid: Literal["sector", "annulus", "rotor"] = "rotor"): - # TODO add in tilt - Ctprime = self.Ct(grid="sector") / ((1 - self.a(grid="sector")) ** 2 * np.cos(self.yaw) ** 2) + eff_yaw = calc_eff_yaw(self.yaw, self.tilt) + Ctprime = self.Ct(grid="sector") / ((1 - self.a(grid="sector")) ** 2 * np.cos(eff_yaw) ** 2) return average(self.geom, Ctprime, grid=grid) diff --git a/MITRotor/TangentialInduction.py b/MITRotor/TangentialInduction.py index f3a3505..cd493ec 100644 --- a/MITRotor/TangentialInduction.py +++ b/MITRotor/TangentialInduction.py @@ -5,6 +5,7 @@ from .Aerodynamics import AerodynamicProperties from .Geometry import BEMGeometry from .RotorDefinition import RotorDefinition +from UnifiedMomentumModel.Utilities.Geometry import calc_eff_yaw __all__ = [ "TangentialInductionModel", @@ -53,12 +54,10 @@ def __call__( geom: BEMGeometry, tilt: float = 0.0, ) -> ArrayLike: - - + eff_yaw = calc_eff_yaw(yaw, tilt) aprime = ( np.clip(aero_props.C_tau_corr, -2, 2) - / (4 * np.maximum(geom.mu_mesh, 0.1) ** 2 * tsr * (1 - aero_props.an) * np.cos(yaw)) + / (4 * np.maximum(geom.mu_mesh, 0.1) ** 2 * tsr * (1 - aero_props.an) * np.cos(eff_yaw)) ) - # TODO: add in effects of tilt return aprime From 4f2cec164d83f0b3e5a681a2186116f8465e8a66 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Fri, 17 Oct 2025 15:40:13 -0400 Subject: [PATCH 04/26] All existing tests pass --- MITRotor/Momentum.py | 9 ++++++--- tests/test_geometry.py | 2 +- tests/test_momentum.py | 22 ++++++++++++++++------ 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/MITRotor/Momentum.py b/MITRotor/Momentum.py index ee59a9d..73c5311 100644 --- a/MITRotor/Momentum.py +++ b/MITRotor/Momentum.py @@ -130,7 +130,8 @@ def compute_initial_wake_velocities(self, Ct: float, yaw: float, tilt: float = 0 raise ValueError("Tilt not supported by the Madsen momentum model. Use UMM.") u4 = 1 - 2 * self.a v4 = - (1/4) * Ct * np.sin(yaw) - return u4, v4 + w4 = 0.0 + return u4, v4, w4 class ClassicalMomentum(MomentumModel): @@ -155,7 +156,8 @@ def compute_initial_wake_velocities(self, Ct: float, yaw: float, tilt: float = 0 raise ValueError("Tilt not supported by the Madsen momentum model. Use UMM.") u4 = np.sqrt(1 - Ct) v4 = - (1/4) * Ct * np.sin(yaw) - return u4, v4 + w4 = 0.0 + return u4, v4, w4 @@ -211,7 +213,8 @@ def compute_initial_wake_velocities(self, Ct: float, yaw: float, tilt: float = 0 a = self.compute_induction(Ct, yaw) u4 = 1 - Ct /(2 * (1 - a)) v4 = - (1/4) * Ct * np.sin(yaw) - return u4, v4 + w4 = 0.0 + return u4, v4, w4 class UnifiedMomentum(MomentumModel): diff --git a/tests/test_geometry.py b/tests/test_geometry.py index 06689df..a16812a 100644 --- a/tests/test_geometry.py +++ b/tests/test_geometry.py @@ -24,7 +24,7 @@ def test_delta(): def test_cartesian(): geom = Geometry.BEMGeometry(10, 20) - X, Y, Z = geom.cartesian(0) + X, Y, Z = geom.cartesian(0, 0) assert X.shape == geom.shape assert Y.shape == geom.shape diff --git a/tests/test_momentum.py b/tests/test_momentum.py index 5a691ea..07e4527 100644 --- a/tests/test_momentum.py +++ b/tests/test_momentum.py @@ -34,8 +34,8 @@ def test_scalar(self): def test_scalar_yawed(self): model = HeckMomentum() - u4_no_yaw, v4_no_yaw = model.compute_initial_wake_velocities(8 / 9, 0.0) - u4_yaw, v4_yaw = model.compute_initial_wake_velocities(8 / 9, 0.2) + u4_no_yaw, v4_no_yaw, _ = model.compute_initial_wake_velocities(8 / 9, 0.0) + u4_yaw, v4_yaw, _ = model.compute_initial_wake_velocities(8 / 9, 0.2) assert u4_no_yaw > u4_yaw assert np.abs(v4_yaw) > np.abs(v4_no_yaw) @@ -69,10 +69,19 @@ def test_scalar(self): def test_scalar_yawed(self): model = UnifiedMomentum() - u4_no_yaw, v4_no_yaw = model.compute_initial_wake_velocities(8 / 9, 0.0) - u4_yaw, v4_yaw = model.compute_initial_wake_velocities(8 / 9, 0.2) + u4_no_yaw, v4_no_yaw, w4_no_yaw = model.compute_initial_wake_velocities(8 / 9, yaw = 0.0, tilt = 0.0) + u4_yaw, v4_yaw, w4_yaw = model.compute_initial_wake_velocities(8 / 9, yaw = 0.2, tilt = 0.0) assert u4_no_yaw > u4_yaw assert np.abs(v4_yaw) > np.abs(v4_no_yaw) + assert w4_no_yaw == w4_yaw + + def test_scalar_tilted(self): + model = UnifiedMomentum() + u4_no_tilt, v4_no_tilt, w4_no_tilt = model.compute_initial_wake_velocities(8 / 9, yaw = 0.0, tilt = 0.0) + u4_tilt, v4_tilt, w4_tilt = model.compute_initial_wake_velocities(8 / 9, yaw = 0.0, tilt = 0.2) + assert u4_no_tilt > u4_tilt + assert np.abs(w4_tilt) > np.abs(w4_no_tilt) + assert v4_no_tilt == v4_tilt def test_edge(self): model = UnifiedMomentum() @@ -115,7 +124,8 @@ def test_vector(self): def test_types(model): CT_float, yaw_float = 8 / 9, np.deg2rad(20) an = model.compute_induction(CT_float, yaw_float) - u4, v4 = model.compute_initial_wake_velocities(CT_float, yaw_float) + u4, v4, w4 = model.compute_initial_wake_velocities(CT_float, yaw_float) assert isinstance(an, float) assert isinstance(u4, float) - assert isinstance(v4, float) \ No newline at end of file + assert isinstance(v4, float) + assert isinstance(w4, float) \ No newline at end of file From 1b0141fa079e84edd09c1152b8936f31f451b8e3 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Fri, 17 Oct 2025 16:39:24 -0400 Subject: [PATCH 05/26] Add more in-depth tests of yaw/tilt equivalence --- tests/test_bem.py | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/tests/test_bem.py b/tests/test_bem.py index 771cf30..d5e4b7d 100644 --- a/tests/test_bem.py +++ b/tests/test_bem.py @@ -1,5 +1,7 @@ -from MITRotor import BEM, IEA15MW - +from MITRotor import BEM, IEA15MW, UnifiedMomentum +from UnifiedMomentumModel.Utilities.Geometry import calc_eff_yaw +import numpy as np +from pytest import approx def test_IEA15MW(): IEA15MW() @@ -35,3 +37,34 @@ def test_BEM_solve(): # Check power coefficient is positive and less than Betz limit. assert (sol.Cp() > 0) and (sol.Cp() < 16 / 27) + +def test_model_yaw_tilt_comparison(): + pitch, tsr = np.deg2rad(0), 7.0 + rotor = IEA15MW() + momentum_model = UnifiedMomentum() + bem = BEM(rotor=rotor, momentum_model=momentum_model) + for (yaw, tilt) in [(1, 1), (1, -1), (-1, 1), (-1, -1)]: + eff_angle = calc_eff_yaw(yaw, tilt) + yaw_sol = bem(pitch, tsr, yaw = eff_angle, tilt = 0.0) + tilt_sol = bem(pitch, tsr, yaw = 0.0, tilt = eff_angle) + yaw_tilt_sol = bem(pitch, tsr, yaw = yaw, tilt = tilt) + # check that yaw and tilt solutions are equivalent up to a -90 degree rotation + atol = 1e-4 + assert np.isclose(yaw_sol.u4, tilt_sol.u4, atol = atol) + assert np.isclose(np.abs(yaw_sol.v4), np.abs(tilt_sol.w4), atol = atol) + assert yaw_sol.w4 == 0 and tilt_sol.v4 == 0 + assert yaw_tilt_sol.v4 != 0 and yaw_tilt_sol.w4 != 0 + assert np.sign(yaw) == np.sign(-1 * yaw_tilt_sol.v4) + assert np.sign(tilt) == np.sign(yaw_tilt_sol.w4) + assert np.isclose(np.linalg.norm([yaw_tilt_sol.u4, yaw_tilt_sol.v4, yaw_tilt_sol.w4]), np.linalg.norm([yaw_sol.u4, yaw_sol.v4, yaw_sol.w4]), atol = atol) + assert np.isclose(yaw_sol.Cp(), tilt_sol.Cp(), atol = atol) + assert np.isclose(yaw_sol.Cp(), yaw_tilt_sol.Cp(), atol = atol) + assert np.isclose(yaw_sol.Ct(), tilt_sol.Ct(), atol = atol) + assert np.isclose(yaw_sol.Ct(), yaw_tilt_sol.Ct(), atol = atol) + assert np.isclose(yaw_sol.Cl(), tilt_sol.Cl(), atol = atol) + assert np.isclose(yaw_sol.Cd(), yaw_tilt_sol.Cd(), atol = atol) + assert np.isclose(yaw_sol.aoa(), tilt_sol.aoa(), atol = atol) + assert np.isclose(yaw_sol.aoa(), yaw_tilt_sol.aoa(), atol = atol) + + +test_model_yaw_tilt_comparison() \ No newline at end of file From 3daf1547f7c5c0aac2235caa595bbd06bb9c1ca5 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Fri, 17 Oct 2025 16:52:26 -0400 Subject: [PATCH 06/26] Reset umm branch to main --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 2d62bdd..e362900 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ packages = [{ include = "MITRotor" }] python = "^3.8" numpy = ">=1.16.5" scipy = ">=1.6" -unified-momentum-model = {git = "https://github.com/Howland-Lab/Unified-Momentum-Model.git", branch = "sg/curled_wave_dev"} +unified-momentum-model = {git = "https://github.com/Howland-Lab/Unified-Momentum-Model.git"} pyyaml = "^6.0.1" [tool.poetry.group.dev.dependencies] From 21c06550674832b6168a93811fce7685235b3bbc Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Fri, 24 Oct 2025 17:03:04 -0400 Subject: [PATCH 07/26] Added in yaw default value --- MITRotor/BEMSolver.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/MITRotor/BEMSolver.py b/MITRotor/BEMSolver.py index a8f1a8f..0ce44ad 100644 --- a/MITRotor/BEMSolver.py +++ b/MITRotor/BEMSolver.py @@ -3,7 +3,6 @@ import numpy as np from numpy.typing import ArrayLike -from UnifiedMomentumModel.Momentum import Heck from UnifiedMomentumModel.Utilities.FixedPointIteration import FixedPointIterationResult, adaptivefixedpointiteration from . import Momentum, TipLoss @@ -163,7 +162,7 @@ def __init__( # self._solidity = self.rotor.solidity(self.geometry.mu) - def __call__(self, pitch: float, tsr: float, yaw: float) -> BEMSolution: + def __call__(self, pitch: float, tsr: float, yaw: float = 0) -> BEMSolution: ... def sample_points(self, yaw: float = 0.0, tilt: float = 0.0) -> tuple[ArrayLike, ArrayLike, ArrayLike]: @@ -211,7 +210,7 @@ def residual( return e_an, e_aprime - def post_process(self, result: FixedPointIterationResult, pitch, tsr, yaw, U=None, wdir=None, tilt: float = 0.0) -> BEMSolution: + def post_process(self, result: FixedPointIterationResult, pitch, tsr, yaw = 0, U=None, wdir=None, tilt = 0.0) -> BEMSolution: U = np.ones(self.geometry.shape) if U is None else U wdir = np.zeros(self.geometry.shape) if wdir is None else wdir an, aprime = result.x From 52d9966e01ff3ba3e578054248d60d13e57d249d Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Fri, 24 Oct 2025 17:08:48 -0400 Subject: [PATCH 08/26] Try removing call --- MITRotor/BEMSolver.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/MITRotor/BEMSolver.py b/MITRotor/BEMSolver.py index 0ce44ad..e4f1d7a 100644 --- a/MITRotor/BEMSolver.py +++ b/MITRotor/BEMSolver.py @@ -162,9 +162,6 @@ def __init__( # self._solidity = self.rotor.solidity(self.geometry.mu) - def __call__(self, pitch: float, tsr: float, yaw: float = 0) -> BEMSolution: - ... - def sample_points(self, yaw: float = 0.0, tilt: float = 0.0) -> tuple[ArrayLike, ArrayLike, ArrayLike]: X, Y, Z = self.geometry.cartesian(yaw, tilt) return X, Y, Z From 59ac6630259f10713c7fb1dd56414bc9b77cf9fa Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Fri, 24 Oct 2025 17:19:09 -0400 Subject: [PATCH 09/26] Make yaw a keyword --- MITRotor/BEMSolver.py | 4 +--- MITRotor/Momentum.py | 4 ++-- examples/example_01_basic_BEM.py | 12 +++++++++++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/MITRotor/BEMSolver.py b/MITRotor/BEMSolver.py index e4f1d7a..5469abf 100644 --- a/MITRotor/BEMSolver.py +++ b/MITRotor/BEMSolver.py @@ -166,9 +166,7 @@ def sample_points(self, yaw: float = 0.0, tilt: float = 0.0) -> tuple[ArrayLike, X, Y, Z = self.geometry.cartesian(yaw, tilt) return X, Y, Z - def initial_guess( - self, pitch: float, tsr: float, yaw: float = 0.0, tilt: float = 0.0, U: ArrayLike = 1.0, wdir: ArrayLike = 0.0 - ) -> Tuple[ArrayLike, ...]: + def initial_guess(self, *args, **kwargs) -> Tuple[ArrayLike, ...]: a = (1 / 3) * np.ones(self.geometry.shape) aprime = np.zeros(self.geometry.shape) diff --git a/MITRotor/Momentum.py b/MITRotor/Momentum.py index 73c5311..f48a6c3 100644 --- a/MITRotor/Momentum.py +++ b/MITRotor/Momentum.py @@ -240,11 +240,11 @@ def __init__(self, averaging: Literal["sector", "annulus", "rotor"] = "rotor", b self.model_Ct = UMM.ThrustBasedUnified(beta=beta) def compute_induction(self, Cx: ArrayLike, yaw: float, tilt: float = 0.0) -> ArrayLike: - sol = self.model_Ct(Cx, yaw, tilt = tilt) + sol = self.model_Ct(Cx, yaw = yaw, tilt = tilt) return sol.an def compute_initial_wake_velocities(self, Ct: float, yaw: float, tilt: float = 0.0) -> ArrayLike: - sol = self.model_Ct(Ct, yaw, tilt = tilt) + sol = self.model_Ct(Ct, yaw = yaw, tilt = tilt) return sol.u4, sol.v4, sol.w4 diff --git a/examples/example_01_basic_BEM.py b/examples/example_01_basic_BEM.py index 0d0168c..8155698 100644 --- a/examples/example_01_basic_BEM.py +++ b/examples/example_01_basic_BEM.py @@ -1,8 +1,18 @@ import numpy as np -from MITRotor import BEM, IEA10MW +from MITRotor import BEM, IEA10MW, UnifiedMomentum, IEA15MW if __name__ == "__main__": + rotor_model=BEM(IEA15MW(), momentum_model= UnifiedMomentum(averaging = "rotor")) + pitch = 0 + tsr = 7 + yaw = 0 + tilt = 0 + REWS = np.float64(0.9999800001000003) + wdir = np.zeros((10, 20)) + Us = np.ones((10, 20)) + rotor_model(pitch, tsr, yaw = yaw, tilt = tilt, U = Us / REWS, wdir = wdir) + # Initialize rotor using the IEA10MW reference wind turbine model. rotor = IEA10MW() bem = BEM(rotor=rotor) From 7bc784529110b7e3c17ebac30b3a2deaed927034 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Sat, 25 Oct 2025 13:18:40 -0400 Subject: [PATCH 10/26] Update updated UMM model for testing --- poetry.lock | 1224 +++++++++++++++++++++++++----------------------- pyproject.toml | 2 +- 2 files changed, 649 insertions(+), 577 deletions(-) diff --git a/poetry.lock b/poetry.lock index d5ebdd6..e66b6dd 100644 --- a/poetry.lock +++ b/poetry.lock @@ -157,23 +157,24 @@ cffi = [ [[package]] name = "arrow" -version = "1.3.0" +version = "1.4.0" description = "Better dates & times for Python" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, - {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, + {file = "arrow-1.4.0-py3-none-any.whl", hash = "sha256:749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205"}, + {file = "arrow-1.4.0.tar.gz", hash = "sha256:ed0cc050e98001b8779e84d461b0098c4ac597e88704a655582b21d116e526d7"}, ] [package.dependencies] +"backports.zoneinfo" = {version = "0.2.1", markers = "python_version < \"3.9\""} python-dateutil = ">=2.7.0" -types-python-dateutil = ">=2.8.10" +tzdata = {version = "*", markers = "python_version >= \"3.9\""} [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.*)"] +test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2025.2)", "simplejson (==3.*)"] [[package]] name = "asttokens" @@ -285,6 +286,36 @@ files = [ {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, ] +[[package]] +name = "backports-zoneinfo" +version = "0.2.1" +description = "Backport of the standard library zoneinfo module" +optional = false +python-versions = ">=3.6" +groups = ["dev"] +markers = "python_version == \"3.8\"" +files = [ + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"}, + {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, +] + +[package.extras] +tzdata = ["tzdata"] + [[package]] name = "beautifulsoup4" version = "4.14.2" @@ -591,91 +622,125 @@ pycparser = {version = "*", markers = "implementation_name != \"PyPy\""} [[package]] name = "charset-normalizer" -version = "3.4.3" +version = "3.4.4" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-win32.whl", hash = "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f"}, - {file = "charset_normalizer-3.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0f2be7e0cf7754b9a30eb01f4295cc3d4358a479843b31f328afd210e2c7598c"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c60e092517a73c632ec38e290eba714e9627abe9d301c8c8a12ec32c314a2a4b"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:252098c8c7a873e17dd696ed98bbe91dbacd571da4b87df3736768efa7a792e4"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3653fad4fe3ed447a596ae8638b437f827234f01a8cd801842e43f3d0a6b281b"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8999f965f922ae054125286faf9f11bc6932184b93011d138925a1773830bbe9"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d95bfb53c211b57198bb91c46dd5a2d8018b3af446583aab40074bf7988401cb"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:5b413b0b1bfd94dbf4023ad6945889f374cd24e3f62de58d6bb102c4d9ae534a"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:b5e3b2d152e74e100a9e9573837aba24aab611d39428ded46f4e4022ea7d1942"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a2d08ac246bb48479170408d6c19f6385fa743e7157d716e144cad849b2dd94b"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-win32.whl", hash = "sha256:ec557499516fc90fd374bf2e32349a2887a876fbf162c160e3c01b6849eaf557"}, - {file = "charset_normalizer-3.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:5d8d01eac18c423815ed4f4a2ec3b439d654e55ee4ad610e153cf02faf67ea40"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-win32.whl", hash = "sha256:16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432"}, - {file = "charset_normalizer-3.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca"}, - {file = "charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a"}, - {file = "charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-win32.whl", hash = "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d"}, + {file = "charset_normalizer-3.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-win32.whl", hash = "sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa"}, + {file = "charset_normalizer-3.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-win32.whl", hash = "sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966"}, + {file = "charset_normalizer-3.4.4-cp39-cp39-win_arm64.whl", hash = "sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50"}, + {file = "charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f"}, + {file = "charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a"}, ] [[package]] @@ -1278,14 +1343,14 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "idna" -version = "3.10" +version = "3.11" description = "Internationalized Domain Names in Applications (IDNA)" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, + {file = "idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea"}, + {file = "idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902"}, ] [package.extras] @@ -1347,11 +1412,25 @@ description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.8" groups = ["dev"] +markers = "python_version <= \"3.11\"" files = [ {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, ] +[[package]] +name = "iniconfig" +version = "2.3.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.10" +groups = ["dev"] +markers = "python_version >= \"3.12\"" +files = [ + {file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"}, + {file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"}, +] + [[package]] name = "ipykernel" version = "6.29.5" @@ -1389,15 +1468,15 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio [[package]] name = "ipykernel" -version = "6.30.1" +version = "6.31.0" description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "ipykernel-6.30.1-py3-none-any.whl", hash = "sha256:aa6b9fb93dca949069d8b85b6c79b2518e32ac583ae9c7d37c51d119e18b3fb4"}, - {file = "ipykernel-6.30.1.tar.gz", hash = "sha256:6abb270161896402e76b91394fcdce5d1be5d45f456671e5080572f8505be39b"}, + {file = "ipykernel-6.31.0-py3-none-any.whl", hash = "sha256:abe5386f6ced727a70e0eb0cf1da801fa7c5fa6ff82147747d5a0406cd8c94af"}, + {file = "ipykernel-6.31.0.tar.gz", hash = "sha256:2372ce8bc1ff4f34e58cafed3a0feb2194b91fc7cad0fc72e79e47b45ee9e8f6"}, ] [package.dependencies] @@ -1777,6 +1856,7 @@ description = "Jupyter core package. A base package on which Jupyter projects re optional = false python-versions = ">=3.8" groups = ["dev"] +markers = "python_version <= \"3.11\"" files = [ {file = "jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0"}, {file = "jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941"}, @@ -1791,6 +1871,27 @@ traitlets = ">=5.3" docs = ["intersphinx-registry", "myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-spelling", "traitlets"] test = ["ipykernel", "pre-commit", "pytest (<9)", "pytest-cov", "pytest-timeout"] +[[package]] +name = "jupyter-core" +version = "5.9.1" +description = "Jupyter core package. A base package on which Jupyter projects rely." +optional = false +python-versions = ">=3.10" +groups = ["dev"] +markers = "python_version >= \"3.12\"" +files = [ + {file = "jupyter_core-5.9.1-py3-none-any.whl", hash = "sha256:ebf87fdc6073d142e114c72c9e29a9d7ca03fad818c5d300ce2adc1fb0743407"}, + {file = "jupyter_core-5.9.1.tar.gz", hash = "sha256:4d09aaff303b9566c3ce657f580bd089ff5c91f5f89cf7d8846c3cdf465b5508"}, +] + +[package.dependencies] +platformdirs = ">=2.5" +traitlets = ">=5.3" + +[package.extras] +docs = ["intersphinx-registry", "myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest (<9)", "pytest-cov", "pytest-timeout"] + [[package]] name = "jupyter-events" version = "0.10.0" @@ -1997,15 +2098,15 @@ upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)" [[package]] name = "jupyterlab" -version = "4.4.9" +version = "4.4.10" description = "JupyterLab computational environment" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "jupyterlab-4.4.9-py3-none-any.whl", hash = "sha256:394c902827350c017430a8370b9f40c03c098773084bc53930145c146d3d2cb2"}, - {file = "jupyterlab-4.4.9.tar.gz", hash = "sha256:ea55aca8269909016d5fde2dc09b97128bc931230183fe7e2920ede5154ad9c2"}, + {file = "jupyterlab-4.4.10-py3-none-any.whl", hash = "sha256:65939ab4c8dcd0c42185c2d0d1a9d60b254dc8c46fc4fdb286b63c51e9358e07"}, + {file = "jupyterlab-4.4.10.tar.gz", hash = "sha256:521c017508af4e1d6d9d8a9d90f47a11c61197ad63b2178342489de42540a615"}, ] [package.dependencies] @@ -2044,14 +2145,14 @@ files = [ [[package]] name = "jupyterlab-server" -version = "2.27.3" +version = "2.28.0" description = "A set of server components for JupyterLab and JupyterLab like applications." optional = false python-versions = ">=3.8" groups = ["dev"] 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"}, + {file = "jupyterlab_server-2.28.0-py3-none-any.whl", hash = "sha256:e4355b148fdcf34d312bbbc80f22467d6d20460e8b8736bf235577dd18506968"}, + {file = "jupyterlab_server-2.28.0.tar.gz", hash = "sha256:35baa81898b15f93573e2deca50d11ac0ae407ebb688299d3a5213265033712c"}, ] [package.dependencies] @@ -2580,68 +2681,68 @@ python-dateutil = ">=2.7" [[package]] name = "matplotlib" -version = "3.10.6" +version = "3.10.7" description = "Python plotting package" optional = false python-versions = ">=3.10" groups = ["examples"] markers = "python_version >= \"3.12\"" files = [ - {file = "matplotlib-3.10.6-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:bc7316c306d97463a9866b89d5cc217824e799fa0de346c8f68f4f3d27c8693d"}, - {file = "matplotlib-3.10.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d00932b0d160ef03f59f9c0e16d1e3ac89646f7785165ce6ad40c842db16cc2e"}, - {file = "matplotlib-3.10.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8fa4c43d6bfdbfec09c733bca8667de11bfa4970e8324c471f3a3632a0301c15"}, - {file = "matplotlib-3.10.6-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ea117a9c1627acaa04dbf36265691921b999cbf515a015298e54e1a12c3af837"}, - {file = "matplotlib-3.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:08fc803293b4e1694ee325896030de97f74c141ccff0be886bb5915269247676"}, - {file = "matplotlib-3.10.6-cp310-cp310-win_amd64.whl", hash = "sha256:2adf92d9b7527fbfb8818e050260f0ebaa460f79d61546374ce73506c9421d09"}, - {file = "matplotlib-3.10.6-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:905b60d1cb0ee604ce65b297b61cf8be9f4e6cfecf95a3fe1c388b5266bc8f4f"}, - {file = "matplotlib-3.10.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7bac38d816637343e53d7185d0c66677ff30ffb131044a81898b5792c956ba76"}, - {file = "matplotlib-3.10.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:942a8de2b5bfff1de31d95722f702e2966b8a7e31f4e68f7cd963c7cd8861cf6"}, - {file = "matplotlib-3.10.6-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a3276c85370bc0dfca051ec65c5817d1e0f8f5ce1b7787528ec8ed2d524bbc2f"}, - {file = "matplotlib-3.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9df5851b219225731f564e4b9e7f2ac1e13c9e6481f941b5631a0f8e2d9387ce"}, - {file = "matplotlib-3.10.6-cp311-cp311-win_amd64.whl", hash = "sha256:abb5d9478625dd9c9eb51a06d39aae71eda749ae9b3138afb23eb38824026c7e"}, - {file = "matplotlib-3.10.6-cp311-cp311-win_arm64.whl", hash = "sha256:886f989ccfae63659183173bb3fced7fd65e9eb793c3cc21c273add368536951"}, - {file = "matplotlib-3.10.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:31ca662df6a80bd426f871105fdd69db7543e28e73a9f2afe80de7e531eb2347"}, - {file = "matplotlib-3.10.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1678bb61d897bb4ac4757b5ecfb02bfb3fddf7f808000fb81e09c510712fda75"}, - {file = "matplotlib-3.10.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:56cd2d20842f58c03d2d6e6c1f1cf5548ad6f66b91e1e48f814e4fb5abd1cb95"}, - {file = "matplotlib-3.10.6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:662df55604a2f9a45435566d6e2660e41efe83cd94f4288dfbf1e6d1eae4b0bb"}, - {file = "matplotlib-3.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:08f141d55148cd1fc870c3387d70ca4df16dee10e909b3b038782bd4bda6ea07"}, - {file = "matplotlib-3.10.6-cp312-cp312-win_amd64.whl", hash = "sha256:590f5925c2d650b5c9d813c5b3b5fc53f2929c3f8ef463e4ecfa7e052044fb2b"}, - {file = "matplotlib-3.10.6-cp312-cp312-win_arm64.whl", hash = "sha256:f44c8d264a71609c79a78d50349e724f5d5fc3684ead7c2a473665ee63d868aa"}, - {file = "matplotlib-3.10.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:819e409653c1106c8deaf62e6de6b8611449c2cd9939acb0d7d4e57a3d95cc7a"}, - {file = "matplotlib-3.10.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:59c8ac8382fefb9cb71308dde16a7c487432f5255d8f1fd32473523abecfecdf"}, - {file = "matplotlib-3.10.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:84e82d9e0fd70c70bc55739defbd8055c54300750cbacf4740c9673a24d6933a"}, - {file = "matplotlib-3.10.6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:25f7a3eb42d6c1c56e89eacd495661fc815ffc08d9da750bca766771c0fd9110"}, - {file = "matplotlib-3.10.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f9c862d91ec0b7842920a4cfdaaec29662195301914ea54c33e01f1a28d014b2"}, - {file = "matplotlib-3.10.6-cp313-cp313-win_amd64.whl", hash = "sha256:1b53bd6337eba483e2e7d29c5ab10eee644bc3a2491ec67cc55f7b44583ffb18"}, - {file = "matplotlib-3.10.6-cp313-cp313-win_arm64.whl", hash = "sha256:cbd5eb50b7058b2892ce45c2f4e92557f395c9991f5c886d1bb74a1582e70fd6"}, - {file = "matplotlib-3.10.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:acc86dd6e0e695c095001a7fccff158c49e45e0758fdf5dcdbb0103318b59c9f"}, - {file = "matplotlib-3.10.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e228cd2ffb8f88b7d0b29e37f68ca9aaf83e33821f24a5ccc4f082dd8396bc27"}, - {file = "matplotlib-3.10.6-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:658bc91894adeab669cf4bb4a186d049948262987e80f0857216387d7435d833"}, - {file = "matplotlib-3.10.6-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8913b7474f6dd83ac444c9459c91f7f0f2859e839f41d642691b104e0af056aa"}, - {file = "matplotlib-3.10.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:091cea22e059b89f6d7d1a18e2c33a7376c26eee60e401d92a4d6726c4e12706"}, - {file = "matplotlib-3.10.6-cp313-cp313t-win_amd64.whl", hash = "sha256:491e25e02a23d7207629d942c666924a6b61e007a48177fdd231a0097b7f507e"}, - {file = "matplotlib-3.10.6-cp313-cp313t-win_arm64.whl", hash = "sha256:3d80d60d4e54cda462e2cd9a086d85cd9f20943ead92f575ce86885a43a565d5"}, - {file = "matplotlib-3.10.6-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:70aaf890ce1d0efd482df969b28a5b30ea0b891224bb315810a3940f67182899"}, - {file = "matplotlib-3.10.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1565aae810ab79cb72e402b22facfa6501365e73ebab70a0fdfb98488d2c3c0c"}, - {file = "matplotlib-3.10.6-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3b23315a01981689aa4e1a179dbf6ef9fbd17143c3eea77548c2ecfb0499438"}, - {file = "matplotlib-3.10.6-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:30fdd37edf41a4e6785f9b37969de57aea770696cb637d9946eb37470c94a453"}, - {file = "matplotlib-3.10.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:bc31e693da1c08012c764b053e702c1855378e04102238e6a5ee6a7117c53a47"}, - {file = "matplotlib-3.10.6-cp314-cp314-win_amd64.whl", hash = "sha256:05be9bdaa8b242bc6ff96330d18c52f1fc59c6fb3a4dd411d953d67e7e1baf98"}, - {file = "matplotlib-3.10.6-cp314-cp314-win_arm64.whl", hash = "sha256:f56a0d1ab05d34c628592435781d185cd99630bdfd76822cd686fb5a0aecd43a"}, - {file = "matplotlib-3.10.6-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:94f0b4cacb23763b64b5dace50d5b7bfe98710fed5f0cef5c08135a03399d98b"}, - {file = "matplotlib-3.10.6-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:cc332891306b9fb39462673d8225d1b824c89783fee82840a709f96714f17a5c"}, - {file = "matplotlib-3.10.6-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee1d607b3fb1590deb04b69f02ea1d53ed0b0bf75b2b1a5745f269afcbd3cdd3"}, - {file = "matplotlib-3.10.6-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:376a624a218116461696b27b2bbf7a8945053e6d799f6502fc03226d077807bf"}, - {file = "matplotlib-3.10.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:83847b47f6524c34b4f2d3ce726bb0541c48c8e7692729865c3df75bfa0f495a"}, - {file = "matplotlib-3.10.6-cp314-cp314t-win_amd64.whl", hash = "sha256:c7e0518e0d223683532a07f4b512e2e0729b62674f1b3a1a69869f98e6b1c7e3"}, - {file = "matplotlib-3.10.6-cp314-cp314t-win_arm64.whl", hash = "sha256:4dd83e029f5b4801eeb87c64efd80e732452781c16a9cf7415b7b63ec8f374d7"}, - {file = "matplotlib-3.10.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:13fcd07ccf17e354398358e0307a1f53f5325dca22982556ddb9c52837b5af41"}, - {file = "matplotlib-3.10.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:470fc846d59d1406e34fa4c32ba371039cd12c2fe86801159a965956f2575bd1"}, - {file = "matplotlib-3.10.6-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f7173f8551b88f4ef810a94adae3128c2530e0d07529f7141be7f8d8c365f051"}, - {file = "matplotlib-3.10.6-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f2d684c3204fa62421bbf770ddfebc6b50130f9cad65531eeba19236d73bb488"}, - {file = "matplotlib-3.10.6-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:6f4a69196e663a41d12a728fab8751177215357906436804217d6d9cf0d4d6cf"}, - {file = "matplotlib-3.10.6-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d6ca6ef03dfd269f4ead566ec6f3fb9becf8dab146fb999022ed85ee9f6b3eb"}, - {file = "matplotlib-3.10.6.tar.gz", hash = "sha256:ec01b645840dd1996df21ee37f208cd8ba57644779fa20464010638013d3203c"}, + {file = "matplotlib-3.10.7-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:7ac81eee3b7c266dd92cee1cd658407b16c57eed08c7421fa354ed68234de380"}, + {file = "matplotlib-3.10.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:667ecd5d8d37813a845053d8f5bf110b534c3c9f30e69ebd25d4701385935a6d"}, + {file = "matplotlib-3.10.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc1c51b846aca49a5a8b44fbba6a92d583a35c64590ad9e1e950dc88940a4297"}, + {file = "matplotlib-3.10.7-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a11c2e9e72e7de09b7b72e62f3df23317c888299c875e2b778abf1eda8c0a42"}, + {file = "matplotlib-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f19410b486fdd139885ace124e57f938c1e6a3210ea13dd29cab58f5d4bc12c7"}, + {file = "matplotlib-3.10.7-cp310-cp310-win_amd64.whl", hash = "sha256:b498e9e4022f93de2d5a37615200ca01297ceebbb56fe4c833f46862a490f9e3"}, + {file = "matplotlib-3.10.7-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:53b492410a6cd66c7a471de6c924f6ede976e963c0f3097a3b7abfadddc67d0a"}, + {file = "matplotlib-3.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d9749313deb729f08207718d29c86246beb2ea3fdba753595b55901dee5d2fd6"}, + {file = "matplotlib-3.10.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2222c7ba2cbde7fe63032769f6eb7e83ab3227f47d997a8453377709b7fe3a5a"}, + {file = "matplotlib-3.10.7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e91f61a064c92c307c5a9dc8c05dc9f8a68f0a3be199d9a002a0622e13f874a1"}, + {file = "matplotlib-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6f1851eab59ca082c95df5a500106bad73672645625e04538b3ad0f69471ffcc"}, + {file = "matplotlib-3.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:6516ce375109c60ceec579e699524e9d504cd7578506f01150f7a6bc174a775e"}, + {file = "matplotlib-3.10.7-cp311-cp311-win_arm64.whl", hash = "sha256:b172db79759f5f9bc13ef1c3ef8b9ee7b37b0247f987fbbbdaa15e4f87fd46a9"}, + {file = "matplotlib-3.10.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a0edb7209e21840e8361e91ea84ea676658aa93edd5f8762793dec77a4a6748"}, + {file = "matplotlib-3.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c380371d3c23e0eadf8ebff114445b9f970aff2010198d498d4ab4c3b41eea4f"}, + {file = "matplotlib-3.10.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d5f256d49fea31f40f166a5e3131235a5d2f4b7f44520b1cf0baf1ce568ccff0"}, + {file = "matplotlib-3.10.7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11ae579ac83cdf3fb72573bb89f70e0534de05266728740d478f0f818983c695"}, + {file = "matplotlib-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4c14b6acd16cddc3569a2d515cfdd81c7a68ac5639b76548cfc1a9e48b20eb65"}, + {file = "matplotlib-3.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:0d8c32b7ea6fb80b1aeff5a2ceb3fb9778e2759e899d9beff75584714afcc5ee"}, + {file = "matplotlib-3.10.7-cp312-cp312-win_arm64.whl", hash = "sha256:5f3f6d315dcc176ba7ca6e74c7768fb7e4cf566c49cb143f6bc257b62e634ed8"}, + {file = "matplotlib-3.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1d9d3713a237970569156cfb4de7533b7c4eacdd61789726f444f96a0d28f57f"}, + {file = "matplotlib-3.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:37a1fea41153dd6ee061d21ab69c9cf2cf543160b1b85d89cd3d2e2a7902ca4c"}, + {file = "matplotlib-3.10.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b3c4ea4948d93c9c29dc01c0c23eef66f2101bf75158c291b88de6525c55c3d1"}, + {file = "matplotlib-3.10.7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22df30ffaa89f6643206cf13877191c63a50e8f800b038bc39bee9d2d4957632"}, + {file = "matplotlib-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b69676845a0a66f9da30e87f48be36734d6748024b525ec4710be40194282c84"}, + {file = "matplotlib-3.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:744991e0cc863dd669c8dc9136ca4e6e0082be2070b9d793cbd64bec872a6815"}, + {file = "matplotlib-3.10.7-cp313-cp313-win_arm64.whl", hash = "sha256:fba2974df0bf8ce3c995fa84b79cde38326e0f7b5409e7a3a481c1141340bcf7"}, + {file = "matplotlib-3.10.7-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:932c55d1fa7af4423422cb6a492a31cbcbdbe68fd1a9a3f545aa5e7a143b5355"}, + {file = "matplotlib-3.10.7-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e38c2d581d62ee729a6e144c47a71b3f42fb4187508dbbf4fe71d5612c3433b"}, + {file = "matplotlib-3.10.7-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:786656bb13c237bbcebcd402f65f44dd61ead60ee3deb045af429d889c8dbc67"}, + {file = "matplotlib-3.10.7-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09d7945a70ea43bf9248f4b6582734c2fe726723204a76eca233f24cffc7ef67"}, + {file = "matplotlib-3.10.7-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d0b181e9fa8daf1d9f2d4c547527b167cb8838fc587deabca7b5c01f97199e84"}, + {file = "matplotlib-3.10.7-cp313-cp313t-win_amd64.whl", hash = "sha256:31963603041634ce1a96053047b40961f7a29eb8f9a62e80cc2c0427aa1d22a2"}, + {file = "matplotlib-3.10.7-cp313-cp313t-win_arm64.whl", hash = "sha256:aebed7b50aa6ac698c90f60f854b47e48cd2252b30510e7a1feddaf5a3f72cbf"}, + {file = "matplotlib-3.10.7-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d883460c43e8c6b173fef244a2341f7f7c0e9725c7fe68306e8e44ed9c8fb100"}, + {file = "matplotlib-3.10.7-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:07124afcf7a6504eafcb8ce94091c5898bbdd351519a1beb5c45f7a38c67e77f"}, + {file = "matplotlib-3.10.7-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c17398b709a6cce3d9fdb1595c33e356d91c098cd9486cb2cc21ea2ea418e715"}, + {file = "matplotlib-3.10.7-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7146d64f561498764561e9cd0ed64fcf582e570fc519e6f521e2d0cfd43365e1"}, + {file = "matplotlib-3.10.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:90ad854c0a435da3104c01e2c6f0028d7e719b690998a2333d7218db80950722"}, + {file = "matplotlib-3.10.7-cp314-cp314-win_amd64.whl", hash = "sha256:4645fc5d9d20ffa3a39361fcdbcec731382763b623b72627806bf251b6388866"}, + {file = "matplotlib-3.10.7-cp314-cp314-win_arm64.whl", hash = "sha256:9257be2f2a03415f9105c486d304a321168e61ad450f6153d77c69504ad764bb"}, + {file = "matplotlib-3.10.7-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1e4bbad66c177a8fdfa53972e5ef8be72a5f27e6a607cec0d8579abd0f3102b1"}, + {file = "matplotlib-3.10.7-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d8eb7194b084b12feb19142262165832fc6ee879b945491d1c3d4660748020c4"}, + {file = "matplotlib-3.10.7-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4d41379b05528091f00e1728004f9a8d7191260f3862178b88e8fd770206318"}, + {file = "matplotlib-3.10.7-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4a74f79fafb2e177f240579bc83f0b60f82cc47d2f1d260f422a0627207008ca"}, + {file = "matplotlib-3.10.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:702590829c30aada1e8cef0568ddbffa77ca747b4d6e36c6d173f66e301f89cc"}, + {file = "matplotlib-3.10.7-cp314-cp314t-win_amd64.whl", hash = "sha256:f79d5de970fc90cd5591f60053aecfce1fcd736e0303d9f0bf86be649fa68fb8"}, + {file = "matplotlib-3.10.7-cp314-cp314t-win_arm64.whl", hash = "sha256:cb783436e47fcf82064baca52ce748af71725d0352e1d31564cbe9c95df92b9c"}, + {file = "matplotlib-3.10.7-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5c09cf8f2793f81368f49f118b6f9f937456362bee282eac575cca7f84cda537"}, + {file = "matplotlib-3.10.7-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:de66744b2bb88d5cd27e80dfc2ec9f0517d0a46d204ff98fe9e5f2864eb67657"}, + {file = "matplotlib-3.10.7-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:53cc80662dd197ece414dd5b66e07370201515a3eaf52e7c518c68c16814773b"}, + {file = "matplotlib-3.10.7-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:15112bcbaef211bd663fa935ec33313b948e214454d949b723998a43357b17b0"}, + {file = "matplotlib-3.10.7-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d2a959c640cdeecdd2ec3136e8ea0441da59bcaf58d67e9c590740addba2cb68"}, + {file = "matplotlib-3.10.7-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3886e47f64611046bc1db523a09dd0a0a6bed6081e6f90e13806dd1d1d1b5e91"}, + {file = "matplotlib-3.10.7.tar.gz", hash = "sha256:a06ba7e2a2ef9131c79c49e63dad355d2d878413a0376c1727c8b9335ff731c7"}, ] [package.dependencies] @@ -2652,7 +2753,7 @@ kiwisolver = ">=1.3.1" numpy = ">=1.23" packaging = ">=20.0" pillow = ">=8" -pyparsing = ">=2.3.1" +pyparsing = ">=3" python-dateutil = ">=2.7" [package.extras] @@ -2665,6 +2766,7 @@ description = "Inline Matplotlib backend for Jupyter" optional = false python-versions = ">=3.8" groups = ["dev"] +markers = "python_version <= \"3.11\"" 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"}, @@ -2673,6 +2775,25 @@ files = [ [package.dependencies] traitlets = "*" +[[package]] +name = "matplotlib-inline" +version = "0.2.1" +description = "Inline Matplotlib backend for Jupyter" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +markers = "python_version >= \"3.12\"" +files = [ + {file = "matplotlib_inline-0.2.1-py3-none-any.whl", hash = "sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76"}, + {file = "matplotlib_inline-0.2.1.tar.gz", hash = "sha256:e1ee949c340d771fc39e241ea75683deb94762c8fa5f2927ec57c83c4dffa9fe"}, +] + +[package.dependencies] +traitlets = "*" + +[package.extras] +test = ["flake8", "nbdime", "nbval", "notebook", "pytest"] + [[package]] name = "mistune" version = "3.1.4" @@ -3051,87 +3172,87 @@ files = [ [[package]] name = "numpy" -version = "2.3.3" +version = "2.3.4" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.11" groups = ["main", "examples"] markers = "python_version >= \"3.12\"" files = [ - {file = "numpy-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ffc4f5caba7dfcbe944ed674b7eef683c7e94874046454bb79ed7ee0236f59d"}, - {file = "numpy-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7e946c7170858a0295f79a60214424caac2ffdb0063d4d79cb681f9aa0aa569"}, - {file = "numpy-2.3.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:cd4260f64bc794c3390a63bf0728220dd1a68170c169088a1e0dfa2fde1be12f"}, - {file = "numpy-2.3.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:f0ddb4b96a87b6728df9362135e764eac3cfa674499943ebc44ce96c478ab125"}, - {file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:afd07d377f478344ec6ca2b8d4ca08ae8bd44706763d1efb56397de606393f48"}, - {file = "numpy-2.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc92a5dedcc53857249ca51ef29f5e5f2f8c513e22cfb90faeb20343b8c6f7a6"}, - {file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7af05ed4dc19f308e1d9fc759f36f21921eb7bbfc82843eeec6b2a2863a0aefa"}, - {file = "numpy-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:433bf137e338677cebdd5beac0199ac84712ad9d630b74eceeb759eaa45ddf30"}, - {file = "numpy-2.3.3-cp311-cp311-win32.whl", hash = "sha256:eb63d443d7b4ffd1e873f8155260d7f58e7e4b095961b01c91062935c2491e57"}, - {file = "numpy-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:ec9d249840f6a565f58d8f913bccac2444235025bbb13e9a4681783572ee3caa"}, - {file = "numpy-2.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:74c2a948d02f88c11a3c075d9733f1ae67d97c6bdb97f2bb542f980458b257e7"}, - {file = "numpy-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cfdd09f9c84a1a934cde1eec2267f0a43a7cd44b2cca4ff95b7c0d14d144b0bf"}, - {file = "numpy-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb32e3cf0f762aee47ad1ddc6672988f7f27045b0783c887190545baba73aa25"}, - {file = "numpy-2.3.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396b254daeb0a57b1fe0ecb5e3cff6fa79a380fa97c8f7781a6d08cd429418fe"}, - {file = "numpy-2.3.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:067e3d7159a5d8f8a0b46ee11148fc35ca9b21f61e3c49fbd0a027450e65a33b"}, - {file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c02d0629d25d426585fb2e45a66154081b9fa677bc92a881ff1d216bc9919a8"}, - {file = "numpy-2.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9192da52b9745f7f0766531dcfa978b7763916f158bb63bdb8a1eca0068ab20"}, - {file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cd7de500a5b66319db419dc3c345244404a164beae0d0937283b907d8152e6ea"}, - {file = "numpy-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:93d4962d8f82af58f0b2eb85daaf1b3ca23fe0a85d0be8f1f2b7bb46034e56d7"}, - {file = "numpy-2.3.3-cp312-cp312-win32.whl", hash = "sha256:5534ed6b92f9b7dca6c0a19d6df12d41c68b991cef051d108f6dbff3babc4ebf"}, - {file = "numpy-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:497d7cad08e7092dba36e3d296fe4c97708c93daf26643a1ae4b03f6294d30eb"}, - {file = "numpy-2.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:ca0309a18d4dfea6fc6262a66d06c26cfe4640c3926ceec90e57791a82b6eee5"}, - {file = "numpy-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f5415fb78995644253370985342cd03572ef8620b934da27d77377a2285955bf"}, - {file = "numpy-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d00de139a3324e26ed5b95870ce63be7ec7352171bc69a4cf1f157a48e3eb6b7"}, - {file = "numpy-2.3.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9dc13c6a5829610cc07422bc74d3ac083bd8323f14e2827d992f9e52e22cd6a6"}, - {file = "numpy-2.3.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:d79715d95f1894771eb4e60fb23f065663b2298f7d22945d66877aadf33d00c7"}, - {file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:952cfd0748514ea7c3afc729a0fc639e61655ce4c55ab9acfab14bda4f402b4c"}, - {file = "numpy-2.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5b83648633d46f77039c29078751f80da65aa64d5622a3cd62aaef9d835b6c93"}, - {file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b001bae8cea1c7dfdb2ae2b017ed0a6f2102d7a70059df1e338e307a4c78a8ae"}, - {file = "numpy-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e9aced64054739037d42fb84c54dd38b81ee238816c948c8f3ed134665dcd86"}, - {file = "numpy-2.3.3-cp313-cp313-win32.whl", hash = "sha256:9591e1221db3f37751e6442850429b3aabf7026d3b05542d102944ca7f00c8a8"}, - {file = "numpy-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f0dadeb302887f07431910f67a14d57209ed91130be0adea2f9793f1a4f817cf"}, - {file = "numpy-2.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:3c7cf302ac6e0b76a64c4aecf1a09e51abd9b01fc7feee80f6c43e3ab1b1dbc5"}, - {file = "numpy-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:eda59e44957d272846bb407aad19f89dc6f58fecf3504bd144f4c5cf81a7eacc"}, - {file = "numpy-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:823d04112bc85ef5c4fda73ba24e6096c8f869931405a80aa8b0e604510a26bc"}, - {file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:40051003e03db4041aa325da2a0971ba41cf65714e65d296397cc0e32de6018b"}, - {file = "numpy-2.3.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ee9086235dd6ab7ae75aba5662f582a81ced49f0f1c6de4260a78d8f2d91a19"}, - {file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94fcaa68757c3e2e668ddadeaa86ab05499a70725811e582b6a9858dd472fb30"}, - {file = "numpy-2.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da1a74b90e7483d6ce5244053399a614b1d6b7bc30a60d2f570e5071f8959d3e"}, - {file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2990adf06d1ecee3b3dcbb4977dfab6e9f09807598d647f04d385d29e7a3c3d3"}, - {file = "numpy-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ed635ff692483b8e3f0fcaa8e7eb8a75ee71aa6d975388224f70821421800cea"}, - {file = "numpy-2.3.3-cp313-cp313t-win32.whl", hash = "sha256:a333b4ed33d8dc2b373cc955ca57babc00cd6f9009991d9edc5ddbc1bac36bcd"}, - {file = "numpy-2.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4384a169c4d8f97195980815d6fcad04933a7e1ab3b530921c3fef7a1c63426d"}, - {file = "numpy-2.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:75370986cc0bc66f4ce5110ad35aae6d182cc4ce6433c40ad151f53690130bf1"}, - {file = "numpy-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cd052f1fa6a78dee696b58a914b7229ecfa41f0a6d96dc663c1220a55e137593"}, - {file = "numpy-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:414a97499480067d305fcac9716c29cf4d0d76db6ebf0bf3cbce666677f12652"}, - {file = "numpy-2.3.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:50a5fe69f135f88a2be9b6ca0481a68a136f6febe1916e4920e12f1a34e708a7"}, - {file = "numpy-2.3.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:b912f2ed2b67a129e6a601e9d93d4fa37bef67e54cac442a2f588a54afe5c67a"}, - {file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9e318ee0596d76d4cb3d78535dc005fa60e5ea348cd131a51e99d0bdbe0b54fe"}, - {file = "numpy-2.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce020080e4a52426202bdb6f7691c65bb55e49f261f31a8f506c9f6bc7450421"}, - {file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e6687dc183aa55dae4a705b35f9c0f8cb178bcaa2f029b241ac5356221d5c021"}, - {file = "numpy-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d8f3b1080782469fdc1718c4ed1d22549b5fb12af0d57d35e992158a772a37cf"}, - {file = "numpy-2.3.3-cp314-cp314-win32.whl", hash = "sha256:cb248499b0bc3be66ebd6578b83e5acacf1d6cb2a77f2248ce0e40fbec5a76d0"}, - {file = "numpy-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:691808c2b26b0f002a032c73255d0bd89751425f379f7bcd22d140db593a96e8"}, - {file = "numpy-2.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:9ad12e976ca7b10f1774b03615a2a4bab8addce37ecc77394d8e986927dc0dfe"}, - {file = "numpy-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9cc48e09feb11e1db00b320e9d30a4151f7369afb96bd0e48d942d09da3a0d00"}, - {file = "numpy-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:901bf6123879b7f251d3631967fd574690734236075082078e0571977c6a8e6a"}, - {file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:7f025652034199c301049296b59fa7d52c7e625017cae4c75d8662e377bf487d"}, - {file = "numpy-2.3.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:533ca5f6d325c80b6007d4d7fb1984c303553534191024ec6a524a4c92a5935a"}, - {file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0edd58682a399824633b66885d699d7de982800053acf20be1eaa46d92009c54"}, - {file = "numpy-2.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:367ad5d8fbec5d9296d18478804a530f1191e24ab4d75ab408346ae88045d25e"}, - {file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8f6ac61a217437946a1fa48d24c47c91a0c4f725237871117dea264982128097"}, - {file = "numpy-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:179a42101b845a816d464b6fe9a845dfaf308fdfc7925387195570789bb2c970"}, - {file = "numpy-2.3.3-cp314-cp314t-win32.whl", hash = "sha256:1250c5d3d2562ec4174bce2e3a1523041595f9b651065e4a4473f5f48a6bc8a5"}, - {file = "numpy-2.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:b37a0b2e5935409daebe82c1e42274d30d9dd355852529eab91dab8dcca7419f"}, - {file = "numpy-2.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:78c9f6560dc7e6b3990e32df7ea1a50bbd0e2a111e05209963f5ddcab7073b0b"}, - {file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1e02c7159791cd481e1e6d5ddd766b62a4d5acf8df4d4d1afe35ee9c5c33a41e"}, - {file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:dca2d0fc80b3893ae72197b39f69d55a3cd8b17ea1b50aa4c62de82419936150"}, - {file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:99683cbe0658f8271b333a1b1b4bb3173750ad59c0c61f5bbdc5b318918fffe3"}, - {file = "numpy-2.3.3-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:d9d537a39cc9de668e5cd0e25affb17aec17b577c6b3ae8a3d866b479fbe88d0"}, - {file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8596ba2f8af5f93b01d97563832686d20206d303024777f6dfc2e7c7c3f1850e"}, - {file = "numpy-2.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1ec5615b05369925bd1125f27df33f3b6c8bc10d788d5999ecd8769a1fa04db"}, - {file = "numpy-2.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:2e267c7da5bf7309670523896df97f93f6e469fb931161f483cd6882b3b1a5dc"}, - {file = "numpy-2.3.3.tar.gz", hash = "sha256:ddc7c39727ba62b80dfdbedf400d1c10ddfa8eefbd7ec8dcb118be8b56d31029"}, + {file = "numpy-2.3.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e78aecd2800b32e8347ce49316d3eaf04aed849cd5b38e0af39f829a4e59f5eb"}, + {file = "numpy-2.3.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7fd09cc5d65bda1e79432859c40978010622112e9194e581e3415a3eccc7f43f"}, + {file = "numpy-2.3.4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:1b219560ae2c1de48ead517d085bc2d05b9433f8e49d0955c82e8cd37bd7bf36"}, + {file = "numpy-2.3.4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:bafa7d87d4c99752d07815ed7a2c0964f8ab311eb8168f41b910bd01d15b6032"}, + {file = "numpy-2.3.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36dc13af226aeab72b7abad501d370d606326a0029b9f435eacb3b8c94b8a8b7"}, + {file = "numpy-2.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a7b2f9a18b5ff9824a6af80de4f37f4ec3c2aab05ef08f51c77a093f5b89adda"}, + {file = "numpy-2.3.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9984bd645a8db6ca15d850ff996856d8762c51a2239225288f08f9050ca240a0"}, + {file = "numpy-2.3.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:64c5825affc76942973a70acf438a8ab618dbd692b84cd5ec40a0a0509edc09a"}, + {file = "numpy-2.3.4-cp311-cp311-win32.whl", hash = "sha256:ed759bf7a70342f7817d88376eb7142fab9fef8320d6019ef87fae05a99874e1"}, + {file = "numpy-2.3.4-cp311-cp311-win_amd64.whl", hash = "sha256:faba246fb30ea2a526c2e9645f61612341de1a83fb1e0c5edf4ddda5a9c10996"}, + {file = "numpy-2.3.4-cp311-cp311-win_arm64.whl", hash = "sha256:4c01835e718bcebe80394fd0ac66c07cbb90147ebbdad3dcecd3f25de2ae7e2c"}, + {file = "numpy-2.3.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ef1b5a3e808bc40827b5fa2c8196151a4c5abe110e1726949d7abddfe5c7ae11"}, + {file = "numpy-2.3.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c2f91f496a87235c6aaf6d3f3d89b17dba64996abadccb289f48456cff931ca9"}, + {file = "numpy-2.3.4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f77e5b3d3da652b474cc80a14084927a5e86a5eccf54ca8ca5cbd697bf7f2667"}, + {file = "numpy-2.3.4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8ab1c5f5ee40d6e01cbe96de5863e39b215a4d24e7d007cad56c7184fdf4aeef"}, + {file = "numpy-2.3.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:77b84453f3adcb994ddbd0d1c5d11db2d6bda1a2b7fd5ac5bd4649d6f5dc682e"}, + {file = "numpy-2.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4121c5beb58a7f9e6dfdee612cb24f4df5cd4db6e8261d7f4d7450a997a65d6a"}, + {file = "numpy-2.3.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:65611ecbb00ac9846efe04db15cbe6186f562f6bb7e5e05f077e53a599225d16"}, + {file = "numpy-2.3.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dabc42f9c6577bcc13001b8810d300fe814b4cfbe8a92c873f269484594f9786"}, + {file = "numpy-2.3.4-cp312-cp312-win32.whl", hash = "sha256:a49d797192a8d950ca59ee2d0337a4d804f713bb5c3c50e8db26d49666e351dc"}, + {file = "numpy-2.3.4-cp312-cp312-win_amd64.whl", hash = "sha256:985f1e46358f06c2a09921e8921e2c98168ed4ae12ccd6e5e87a4f1857923f32"}, + {file = "numpy-2.3.4-cp312-cp312-win_arm64.whl", hash = "sha256:4635239814149e06e2cb9db3dd584b2fa64316c96f10656983b8026a82e6e4db"}, + {file = "numpy-2.3.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c090d4860032b857d94144d1a9976b8e36709e40386db289aaf6672de2a81966"}, + {file = "numpy-2.3.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a13fc473b6db0be619e45f11f9e81260f7302f8d180c49a22b6e6120022596b3"}, + {file = "numpy-2.3.4-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:3634093d0b428e6c32c3a69b78e554f0cd20ee420dcad5a9f3b2a63762ce4197"}, + {file = "numpy-2.3.4-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:043885b4f7e6e232d7df4f51ffdef8c36320ee9d5f227b380ea636722c7ed12e"}, + {file = "numpy-2.3.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4ee6a571d1e4f0ea6d5f22d6e5fbd6ed1dc2b18542848e1e7301bd190500c9d7"}, + {file = "numpy-2.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fc8a63918b04b8571789688b2780ab2b4a33ab44bfe8ccea36d3eba51228c953"}, + {file = "numpy-2.3.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:40cc556d5abbc54aabe2b1ae287042d7bdb80c08edede19f0c0afb36ae586f37"}, + {file = "numpy-2.3.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ecb63014bb7f4ce653f8be7f1df8cbc6093a5a2811211770f6606cc92b5a78fd"}, + {file = "numpy-2.3.4-cp313-cp313-win32.whl", hash = "sha256:e8370eb6925bb8c1c4264fec52b0384b44f675f191df91cbe0140ec9f0955646"}, + {file = "numpy-2.3.4-cp313-cp313-win_amd64.whl", hash = "sha256:56209416e81a7893036eea03abcb91c130643eb14233b2515c90dcac963fe99d"}, + {file = "numpy-2.3.4-cp313-cp313-win_arm64.whl", hash = "sha256:a700a4031bc0fd6936e78a752eefb79092cecad2599ea9c8039c548bc097f9bc"}, + {file = "numpy-2.3.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:86966db35c4040fdca64f0816a1c1dd8dbd027d90fca5a57e00e1ca4cd41b879"}, + {file = "numpy-2.3.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:838f045478638b26c375ee96ea89464d38428c69170360b23a1a50fa4baa3562"}, + {file = "numpy-2.3.4-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d7315ed1dab0286adca467377c8381cd748f3dc92235f22a7dfc42745644a96a"}, + {file = "numpy-2.3.4-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:84f01a4d18b2cc4ade1814a08e5f3c907b079c847051d720fad15ce37aa930b6"}, + {file = "numpy-2.3.4-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:817e719a868f0dacde4abdfc5c1910b301877970195db9ab6a5e2c4bd5b121f7"}, + {file = "numpy-2.3.4-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85e071da78d92a214212cacea81c6da557cab307f2c34b5f85b628e94803f9c0"}, + {file = "numpy-2.3.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2ec646892819370cf3558f518797f16597b4e4669894a2ba712caccc9da53f1f"}, + {file = "numpy-2.3.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:035796aaaddfe2f9664b9a9372f089cfc88bd795a67bd1bfe15e6e770934cf64"}, + {file = "numpy-2.3.4-cp313-cp313t-win32.whl", hash = "sha256:fea80f4f4cf83b54c3a051f2f727870ee51e22f0248d3114b8e755d160b38cfb"}, + {file = "numpy-2.3.4-cp313-cp313t-win_amd64.whl", hash = "sha256:15eea9f306b98e0be91eb344a94c0e630689ef302e10c2ce5f7e11905c704f9c"}, + {file = "numpy-2.3.4-cp313-cp313t-win_arm64.whl", hash = "sha256:b6c231c9c2fadbae4011ca5e7e83e12dc4a5072f1a1d85a0a7b3ed754d145a40"}, + {file = "numpy-2.3.4-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:81c3e6d8c97295a7360d367f9f8553973651b76907988bb6066376bc2252f24e"}, + {file = "numpy-2.3.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:7c26b0b2bf58009ed1f38a641f3db4be8d960a417ca96d14e5b06df1506d41ff"}, + {file = "numpy-2.3.4-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:62b2198c438058a20b6704351b35a1d7db881812d8512d67a69c9de1f18ca05f"}, + {file = "numpy-2.3.4-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:9d729d60f8d53a7361707f4b68a9663c968882dd4f09e0d58c044c8bf5faee7b"}, + {file = "numpy-2.3.4-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bd0c630cf256b0a7fd9d0a11c9413b42fef5101219ce6ed5a09624f5a65392c7"}, + {file = "numpy-2.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d5e081bc082825f8b139f9e9fe42942cb4054524598aaeb177ff476cc76d09d2"}, + {file = "numpy-2.3.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:15fb27364ed84114438fff8aaf998c9e19adbeba08c0b75409f8c452a8692c52"}, + {file = "numpy-2.3.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:85d9fb2d8cd998c84d13a79a09cc0c1091648e848e4e6249b0ccd7f6b487fa26"}, + {file = "numpy-2.3.4-cp314-cp314-win32.whl", hash = "sha256:e73d63fd04e3a9d6bc187f5455d81abfad05660b212c8804bf3b407e984cd2bc"}, + {file = "numpy-2.3.4-cp314-cp314-win_amd64.whl", hash = "sha256:3da3491cee49cf16157e70f607c03a217ea6647b1cea4819c4f48e53d49139b9"}, + {file = "numpy-2.3.4-cp314-cp314-win_arm64.whl", hash = "sha256:6d9cd732068e8288dbe2717177320723ccec4fb064123f0caf9bbd90ab5be868"}, + {file = "numpy-2.3.4-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:22758999b256b595cf0b1d102b133bb61866ba5ceecf15f759623b64c020c9ec"}, + {file = "numpy-2.3.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9cb177bc55b010b19798dc5497d540dea67fd13a8d9e882b2dae71de0cf09eb3"}, + {file = "numpy-2.3.4-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:0f2bcc76f1e05e5ab58893407c63d90b2029908fa41f9f1cc51eecce936c3365"}, + {file = "numpy-2.3.4-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:8dc20bde86802df2ed8397a08d793da0ad7a5fd4ea3ac85d757bf5dd4ad7c252"}, + {file = "numpy-2.3.4-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e199c087e2aa71c8f9ce1cb7a8e10677dc12457e7cc1be4798632da37c3e86e"}, + {file = "numpy-2.3.4-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85597b2d25ddf655495e2363fe044b0ae999b75bc4d630dc0d886484b03a5eb0"}, + {file = "numpy-2.3.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:04a69abe45b49c5955923cf2c407843d1c85013b424ae8a560bba16c92fe44a0"}, + {file = "numpy-2.3.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e1708fac43ef8b419c975926ce1eaf793b0c13b7356cfab6ab0dc34c0a02ac0f"}, + {file = "numpy-2.3.4-cp314-cp314t-win32.whl", hash = "sha256:863e3b5f4d9915aaf1b8ec79ae560ad21f0b8d5e3adc31e73126491bb86dee1d"}, + {file = "numpy-2.3.4-cp314-cp314t-win_amd64.whl", hash = "sha256:962064de37b9aef801d33bc579690f8bfe6c5e70e29b61783f60bcba838a14d6"}, + {file = "numpy-2.3.4-cp314-cp314t-win_arm64.whl", hash = "sha256:8b5a9a39c45d852b62693d9b3f3e0fe052541f804296ff401a72a1b60edafb29"}, + {file = "numpy-2.3.4-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6e274603039f924c0fe5cb73438fa9246699c78a6df1bd3decef9ae592ae1c05"}, + {file = "numpy-2.3.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d149aee5c72176d9ddbc6803aef9c0f6d2ceeea7626574fc68518da5476fa346"}, + {file = "numpy-2.3.4-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:6d34ed9db9e6395bb6cd33286035f73a59b058169733a9db9f85e650b88df37e"}, + {file = "numpy-2.3.4-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:fdebe771ca06bb8d6abce84e51dca9f7921fe6ad34a0c914541b063e9a68928b"}, + {file = "numpy-2.3.4-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:957e92defe6c08211eb77902253b14fe5b480ebc5112bc741fd5e9cd0608f847"}, + {file = "numpy-2.3.4-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13b9062e4f5c7ee5c7e5be96f29ba71bc5a37fed3d1d77c37390ae00724d296d"}, + {file = "numpy-2.3.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:81b3a59793523e552c4a96109dde028aa4448ae06ccac5a76ff6532a85558a7f"}, + {file = "numpy-2.3.4.tar.gz", hash = "sha256:a7d018bfedb375a8d979ac758b120ba846a7fe764911a64465fd87b8729f4a6a"}, ] [[package]] @@ -3329,128 +3450,112 @@ xmp = ["defusedxml"] [[package]] name = "pillow" -version = "11.3.0" -description = "Python Imaging Library (Fork)" +version = "12.0.0" +description = "Python Imaging Library (fork)" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["examples"] markers = "python_version >= \"3.12\"" files = [ - {file = "pillow-11.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1b9c17fd4ace828b3003dfd1e30bff24863e0eb59b535e8f80194d9cc7ecf860"}, - {file = "pillow-11.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:65dc69160114cdd0ca0f35cb434633c75e8e7fad4cf855177a05bf38678f73ad"}, - {file = "pillow-11.3.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7107195ddc914f656c7fc8e4a5e1c25f32e9236ea3ea860f257b0436011fddd0"}, - {file = "pillow-11.3.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc3e831b563b3114baac7ec2ee86819eb03caa1a2cef0b481a5675b59c4fe23b"}, - {file = "pillow-11.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f1f182ebd2303acf8c380a54f615ec883322593320a9b00438eb842c1f37ae50"}, - {file = "pillow-11.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4445fa62e15936a028672fd48c4c11a66d641d2c05726c7ec1f8ba6a572036ae"}, - {file = "pillow-11.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:71f511f6b3b91dd543282477be45a033e4845a40278fa8dcdbfdb07109bf18f9"}, - {file = "pillow-11.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:040a5b691b0713e1f6cbe222e0f4f74cd233421e105850ae3b3c0ceda520f42e"}, - {file = "pillow-11.3.0-cp310-cp310-win32.whl", hash = "sha256:89bd777bc6624fe4115e9fac3352c79ed60f3bb18651420635f26e643e3dd1f6"}, - {file = "pillow-11.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:19d2ff547c75b8e3ff46f4d9ef969a06c30ab2d4263a9e287733aa8b2429ce8f"}, - {file = "pillow-11.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:819931d25e57b513242859ce1876c58c59dc31587847bf74cfe06b2e0cb22d2f"}, - {file = "pillow-11.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1cd110edf822773368b396281a2293aeb91c90a2db00d78ea43e7e861631b722"}, - {file = "pillow-11.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c412fddd1b77a75aa904615ebaa6001f169b26fd467b4be93aded278266b288"}, - {file = "pillow-11.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1aa4de119a0ecac0a34a9c8bde33f34022e2e8f99104e47a3ca392fd60e37d"}, - {file = "pillow-11.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:91da1d88226663594e3f6b4b8c3c8d85bd504117d043740a8e0ec449087cc494"}, - {file = "pillow-11.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:643f189248837533073c405ec2f0bb250ba54598cf80e8c1e043381a60632f58"}, - {file = "pillow-11.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:106064daa23a745510dabce1d84f29137a37224831d88eb4ce94bb187b1d7e5f"}, - {file = "pillow-11.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cd8ff254faf15591e724dc7c4ddb6bf4793efcbe13802a4ae3e863cd300b493e"}, - {file = "pillow-11.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:932c754c2d51ad2b2271fd01c3d121daaa35e27efae2a616f77bf164bc0b3e94"}, - {file = "pillow-11.3.0-cp311-cp311-win32.whl", hash = "sha256:b4b8f3efc8d530a1544e5962bd6b403d5f7fe8b9e08227c6b255f98ad82b4ba0"}, - {file = "pillow-11.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:1a992e86b0dd7aeb1f053cd506508c0999d710a8f07b4c791c63843fc6a807ac"}, - {file = "pillow-11.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:30807c931ff7c095620fe04448e2c2fc673fcbb1ffe2a7da3fb39613489b1ddd"}, - {file = "pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4"}, - {file = "pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69"}, - {file = "pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d"}, - {file = "pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6"}, - {file = "pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7"}, - {file = "pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024"}, - {file = "pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809"}, - {file = "pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d"}, - {file = "pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149"}, - {file = "pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d"}, - {file = "pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542"}, - {file = "pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd"}, - {file = "pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8"}, - {file = "pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f"}, - {file = "pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c"}, - {file = "pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd"}, - {file = "pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e"}, - {file = "pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1"}, - {file = "pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805"}, - {file = "pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8"}, - {file = "pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2"}, - {file = "pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b"}, - {file = "pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3"}, - {file = "pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51"}, - {file = "pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580"}, - {file = "pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e"}, - {file = "pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d"}, - {file = "pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced"}, - {file = "pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c"}, - {file = "pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8"}, - {file = "pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59"}, - {file = "pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe"}, - {file = "pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c"}, - {file = "pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788"}, - {file = "pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31"}, - {file = "pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e"}, - {file = "pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12"}, - {file = "pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a"}, - {file = "pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632"}, - {file = "pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673"}, - {file = "pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027"}, - {file = "pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77"}, - {file = "pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874"}, - {file = "pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a"}, - {file = "pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214"}, - {file = "pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635"}, - {file = "pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6"}, - {file = "pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae"}, - {file = "pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653"}, - {file = "pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6"}, - {file = "pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36"}, - {file = "pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b"}, - {file = "pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477"}, - {file = "pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50"}, - {file = "pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b"}, - {file = "pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12"}, - {file = "pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db"}, - {file = "pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa"}, - {file = "pillow-11.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:48d254f8a4c776de343051023eb61ffe818299eeac478da55227d96e241de53f"}, - {file = "pillow-11.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7aee118e30a4cf54fdd873bd3a29de51e29105ab11f9aad8c32123f58c8f8081"}, - {file = "pillow-11.3.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:23cff760a9049c502721bdb743a7cb3e03365fafcdfc2ef9784610714166e5a4"}, - {file = "pillow-11.3.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6359a3bc43f57d5b375d1ad54a0074318a0844d11b76abccf478c37c986d3cfc"}, - {file = "pillow-11.3.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:092c80c76635f5ecb10f3f83d76716165c96f5229addbd1ec2bdbbda7d496e06"}, - {file = "pillow-11.3.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cadc9e0ea0a2431124cde7e1697106471fc4c1da01530e679b2391c37d3fbb3a"}, - {file = "pillow-11.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6a418691000f2a418c9135a7cf0d797c1bb7d9a485e61fe8e7722845b95ef978"}, - {file = "pillow-11.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:97afb3a00b65cc0804d1c7abddbf090a81eaac02768af58cbdcaaa0a931e0b6d"}, - {file = "pillow-11.3.0-cp39-cp39-win32.whl", hash = "sha256:ea944117a7974ae78059fcc1800e5d3295172bb97035c0c1d9345fca1419da71"}, - {file = "pillow-11.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:e5c5858ad8ec655450a7c7df532e9842cf8df7cc349df7225c60d5d348c8aada"}, - {file = "pillow-11.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:6abdbfd3aea42be05702a8dd98832329c167ee84400a1d1f61ab11437f1717eb"}, - {file = "pillow-11.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3cee80663f29e3843b68199b9d6f4f54bd1d4a6b59bdd91bceefc51238bcb967"}, - {file = "pillow-11.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b5f56c3f344f2ccaf0dd875d3e180f631dc60a51b314295a3e681fe8cf851fbe"}, - {file = "pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e67d793d180c9df62f1f40aee3accca4829d3794c95098887edc18af4b8b780c"}, - {file = "pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d000f46e2917c705e9fb93a3606ee4a819d1e3aa7a9b442f6444f07e77cf5e25"}, - {file = "pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:527b37216b6ac3a12d7838dc3bd75208ec57c1c6d11ef01902266a5a0c14fc27"}, - {file = "pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:be5463ac478b623b9dd3937afd7fb7ab3d79dd290a28e2b6df292dc75063eb8a"}, - {file = "pillow-11.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8dc70ca24c110503e16918a658b869019126ecfe03109b754c402daff12b3d9f"}, - {file = "pillow-11.3.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7c8ec7a017ad1bd562f93dbd8505763e688d388cde6e4a010ae1486916e713e6"}, - {file = "pillow-11.3.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9ab6ae226de48019caa8074894544af5b53a117ccb9d3b3dcb2871464c829438"}, - {file = "pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe27fb049cdcca11f11a7bfda64043c37b30e6b91f10cb5bab275806c32f6ab3"}, - {file = "pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:465b9e8844e3c3519a983d58b80be3f668e2a7a5db97f2784e7079fbc9f9822c"}, - {file = "pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5418b53c0d59b3824d05e029669efa023bbef0f3e92e75ec8428f3799487f361"}, - {file = "pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:504b6f59505f08ae014f724b6207ff6222662aab5cc9542577fb084ed0676ac7"}, - {file = "pillow-11.3.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c84d689db21a1c397d001aa08241044aa2069e7587b398c8cc63020390b1c1b8"}, - {file = "pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523"}, + {file = "pillow-12.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:3adfb466bbc544b926d50fe8f4a4e6abd8c6bffd28a26177594e6e9b2b76572b"}, + {file = "pillow-12.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1ac11e8ea4f611c3c0147424eae514028b5e9077dd99ab91e1bd7bc33ff145e1"}, + {file = "pillow-12.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d49e2314c373f4c2b39446fb1a45ed333c850e09d0c59ac79b72eb3b95397363"}, + {file = "pillow-12.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c7b2a63fd6d5246349f3d3f37b14430d73ee7e8173154461785e43036ffa96ca"}, + {file = "pillow-12.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d64317d2587c70324b79861babb9c09f71fbb780bad212018874b2c013d8600e"}, + {file = "pillow-12.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d77153e14b709fd8b8af6f66a3afbb9ed6e9fc5ccf0b6b7e1ced7b036a228782"}, + {file = "pillow-12.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:32ed80ea8a90ee3e6fa08c21e2e091bba6eda8eccc83dbc34c95169507a91f10"}, + {file = "pillow-12.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c828a1ae702fc712978bda0320ba1b9893d99be0badf2647f693cc01cf0f04fa"}, + {file = "pillow-12.0.0-cp310-cp310-win32.whl", hash = "sha256:bd87e140e45399c818fac4247880b9ce719e4783d767e030a883a970be632275"}, + {file = "pillow-12.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:455247ac8a4cfb7b9bc45b7e432d10421aea9fc2e74d285ba4072688a74c2e9d"}, + {file = "pillow-12.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6ace95230bfb7cd79ef66caa064bbe2f2a1e63d93471c3a2e1f1348d9f22d6b7"}, + {file = "pillow-12.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0fd00cac9c03256c8b2ff58f162ebcd2587ad3e1f2e397eab718c47e24d231cc"}, + {file = "pillow-12.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3475b96f5908b3b16c47533daaa87380c491357d197564e0ba34ae75c0f3257"}, + {file = "pillow-12.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:110486b79f2d112cf6add83b28b627e369219388f64ef2f960fef9ebaf54c642"}, + {file = "pillow-12.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5269cc1caeedb67e6f7269a42014f381f45e2e7cd42d834ede3c703a1d915fe3"}, + {file = "pillow-12.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa5129de4e174daccbc59d0a3b6d20eaf24417d59851c07ebb37aeb02947987c"}, + {file = "pillow-12.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bee2a6db3a7242ea309aa7ee8e2780726fed67ff4e5b40169f2c940e7eb09227"}, + {file = "pillow-12.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:90387104ee8400a7b4598253b4c406f8958f59fcf983a6cea2b50d59f7d63d0b"}, + {file = "pillow-12.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bc91a56697869546d1b8f0a3ff35224557ae7f881050e99f615e0119bf934b4e"}, + {file = "pillow-12.0.0-cp311-cp311-win32.whl", hash = "sha256:27f95b12453d165099c84f8a8bfdfd46b9e4bda9e0e4b65f0635430027f55739"}, + {file = "pillow-12.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:b583dc9070312190192631373c6c8ed277254aa6e6084b74bdd0a6d3b221608e"}, + {file = "pillow-12.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:759de84a33be3b178a64c8ba28ad5c135900359e85fb662bc6e403ad4407791d"}, + {file = "pillow-12.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53561a4ddc36facb432fae7a9d8afbfaf94795414f5cdc5fc52f28c1dca90371"}, + {file = "pillow-12.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:71db6b4c1653045dacc1585c1b0d184004f0d7e694c7b34ac165ca70c0838082"}, + {file = "pillow-12.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2fa5f0b6716fc88f11380b88b31fe591a06c6315e955c096c35715788b339e3f"}, + {file = "pillow-12.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:82240051c6ca513c616f7f9da06e871f61bfd7805f566275841af15015b8f98d"}, + {file = "pillow-12.0.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55f818bd74fe2f11d4d7cbc65880a843c4075e0ac7226bc1a23261dbea531953"}, + {file = "pillow-12.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b87843e225e74576437fd5b6a4c2205d422754f84a06942cfaf1dc32243e45a8"}, + {file = "pillow-12.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c607c90ba67533e1b2355b821fef6764d1dd2cbe26b8c1005ae84f7aea25ff79"}, + {file = "pillow-12.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:21f241bdd5080a15bc86d3466a9f6074a9c2c2b314100dd896ac81ee6db2f1ba"}, + {file = "pillow-12.0.0-cp312-cp312-win32.whl", hash = "sha256:dd333073e0cacdc3089525c7df7d39b211bcdf31fc2824e49d01c6b6187b07d0"}, + {file = "pillow-12.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9fe611163f6303d1619bbcb653540a4d60f9e55e622d60a3108be0d5b441017a"}, + {file = "pillow-12.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:7dfb439562f234f7d57b1ac6bc8fe7f838a4bd49c79230e0f6a1da93e82f1fad"}, + {file = "pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:0869154a2d0546545cde61d1789a6524319fc1897d9ee31218eae7a60ccc5643"}, + {file = "pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:a7921c5a6d31b3d756ec980f2f47c0cfdbce0fc48c22a39347a895f41f4a6ea4"}, + {file = "pillow-12.0.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:1ee80a59f6ce048ae13cda1abf7fbd2a34ab9ee7d401c46be3ca685d1999a399"}, + {file = "pillow-12.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c50f36a62a22d350c96e49ad02d0da41dbd17ddc2e29750dbdba4323f85eb4a5"}, + {file = "pillow-12.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5193fde9a5f23c331ea26d0cf171fbf67e3f247585f50c08b3e205c7aeb4589b"}, + {file = "pillow-12.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bde737cff1a975b70652b62d626f7785e0480918dece11e8fef3c0cf057351c3"}, + {file = "pillow-12.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a6597ff2b61d121172f5844b53f21467f7082f5fb385a9a29c01414463f93b07"}, + {file = "pillow-12.0.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b817e7035ea7f6b942c13aa03bb554fc44fea70838ea21f8eb31c638326584e"}, + {file = "pillow-12.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f4f1231b7dec408e8670264ce63e9c71409d9583dd21d32c163e25213ee2a344"}, + {file = "pillow-12.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e51b71417049ad6ab14c49608b4a24d8fb3fe605e5dfabfe523b58064dc3d27"}, + {file = "pillow-12.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d120c38a42c234dc9a8c5de7ceaaf899cf33561956acb4941653f8bdc657aa79"}, + {file = "pillow-12.0.0-cp313-cp313-win32.whl", hash = "sha256:4cc6b3b2efff105c6a1656cfe59da4fdde2cda9af1c5e0b58529b24525d0a098"}, + {file = "pillow-12.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:4cf7fed4b4580601c4345ceb5d4cbf5a980d030fd5ad07c4d2ec589f95f09905"}, + {file = "pillow-12.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:9f0b04c6b8584c2c193babcccc908b38ed29524b29dd464bc8801bf10d746a3a"}, + {file = "pillow-12.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7fa22993bac7b77b78cae22bad1e2a987ddf0d9015c63358032f84a53f23cdc3"}, + {file = "pillow-12.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f135c702ac42262573fe9714dfe99c944b4ba307af5eb507abef1667e2cbbced"}, + {file = "pillow-12.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c85de1136429c524e55cfa4e033b4a7940ac5c8ee4d9401cc2d1bf48154bbc7b"}, + {file = "pillow-12.0.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:38df9b4bfd3db902c9c2bd369bcacaf9d935b2fff73709429d95cc41554f7b3d"}, + {file = "pillow-12.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7d87ef5795da03d742bf49439f9ca4d027cde49c82c5371ba52464aee266699a"}, + {file = "pillow-12.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aff9e4d82d082ff9513bdd6acd4f5bd359f5b2c870907d2b0a9c5e10d40c88fe"}, + {file = "pillow-12.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:8d8ca2b210ada074d57fcee40c30446c9562e542fc46aedc19baf758a93532ee"}, + {file = "pillow-12.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:99a7f72fb6249302aa62245680754862a44179b545ded638cf1fef59befb57ef"}, + {file = "pillow-12.0.0-cp313-cp313t-win32.whl", hash = "sha256:4078242472387600b2ce8d93ade8899c12bf33fa89e55ec89fe126e9d6d5d9e9"}, + {file = "pillow-12.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2c54c1a783d6d60595d3514f0efe9b37c8808746a66920315bfd34a938d7994b"}, + {file = "pillow-12.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:26d9f7d2b604cd23aba3e9faf795787456ac25634d82cd060556998e39c6fa47"}, + {file = "pillow-12.0.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:beeae3f27f62308f1ddbcfb0690bf44b10732f2ef43758f169d5e9303165d3f9"}, + {file = "pillow-12.0.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:d4827615da15cd59784ce39d3388275ec093ae3ee8d7f0c089b76fa87af756c2"}, + {file = "pillow-12.0.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:3e42edad50b6909089750e65c91aa09aaf1e0a71310d383f11321b27c224ed8a"}, + {file = "pillow-12.0.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e5d8efac84c9afcb40914ab49ba063d94f5dbdf5066db4482c66a992f47a3a3b"}, + {file = "pillow-12.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:266cd5f2b63ff316d5a1bba46268e603c9caf5606d44f38c2873c380950576ad"}, + {file = "pillow-12.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:58eea5ebe51504057dd95c5b77d21700b77615ab0243d8152793dc00eb4faf01"}, + {file = "pillow-12.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f13711b1a5ba512d647a0e4ba79280d3a9a045aaf7e0cc6fbe96b91d4cdf6b0c"}, + {file = "pillow-12.0.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6846bd2d116ff42cba6b646edf5bf61d37e5cbd256425fa089fee4ff5c07a99e"}, + {file = "pillow-12.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c98fa880d695de164b4135a52fd2e9cd7b7c90a9d8ac5e9e443a24a95ef9248e"}, + {file = "pillow-12.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fa3ed2a29a9e9d2d488b4da81dcb54720ac3104a20bf0bd273f1e4648aff5af9"}, + {file = "pillow-12.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d034140032870024e6b9892c692fe2968493790dd57208b2c37e3fb35f6df3ab"}, + {file = "pillow-12.0.0-cp314-cp314-win32.whl", hash = "sha256:1b1b133e6e16105f524a8dec491e0586d072948ce15c9b914e41cdadd209052b"}, + {file = "pillow-12.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:8dc232e39d409036af549c86f24aed8273a40ffa459981146829a324e0848b4b"}, + {file = "pillow-12.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:d52610d51e265a51518692045e372a4c363056130d922a7351429ac9f27e70b0"}, + {file = "pillow-12.0.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1979f4566bb96c1e50a62d9831e2ea2d1211761e5662afc545fa766f996632f6"}, + {file = "pillow-12.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b2e4b27a6e15b04832fe9bf292b94b5ca156016bbc1ea9c2c20098a0320d6cf6"}, + {file = "pillow-12.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fb3096c30df99fd01c7bf8e544f392103d0795b9f98ba71a8054bcbf56b255f1"}, + {file = "pillow-12.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7438839e9e053ef79f7112c881cef684013855016f928b168b81ed5835f3e75e"}, + {file = "pillow-12.0.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d5c411a8eaa2299322b647cd932586b1427367fd3184ffbb8f7a219ea2041ca"}, + {file = "pillow-12.0.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d7e091d464ac59d2c7ad8e7e08105eaf9dafbc3883fd7265ffccc2baad6ac925"}, + {file = "pillow-12.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:792a2c0be4dcc18af9d4a2dfd8a11a17d5e25274a1062b0ec1c2d79c76f3e7f8"}, + {file = "pillow-12.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:afbefa430092f71a9593a99ab6a4e7538bc9eabbf7bf94f91510d3503943edc4"}, + {file = "pillow-12.0.0-cp314-cp314t-win32.whl", hash = "sha256:3830c769decf88f1289680a59d4f4c46c72573446352e2befec9a8512104fa52"}, + {file = "pillow-12.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:905b0365b210c73afb0ebe9101a32572152dfd1c144c7e28968a331b9217b94a"}, + {file = "pillow-12.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:99353a06902c2e43b43e8ff74ee65a7d90307d82370604746738a1e0661ccca7"}, + {file = "pillow-12.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b22bd8c974942477156be55a768f7aa37c46904c175be4e158b6a86e3a6b7ca8"}, + {file = "pillow-12.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:805ebf596939e48dbb2e4922a1d3852cfc25c38160751ce02da93058b48d252a"}, + {file = "pillow-12.0.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cae81479f77420d217def5f54b5b9d279804d17e982e0f2fa19b1d1e14ab5197"}, + {file = "pillow-12.0.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aeaefa96c768fc66818730b952a862235d68825c178f1b3ffd4efd7ad2edcb7c"}, + {file = "pillow-12.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09f2d0abef9e4e2f349305a4f8cc784a8a6c2f58a8c4892eea13b10a943bd26e"}, + {file = "pillow-12.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bdee52571a343d721fb2eb3b090a82d959ff37fc631e3f70422e0c2e029f3e76"}, + {file = "pillow-12.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:b290fd8aa38422444d4b50d579de197557f182ef1068b75f5aa8558638b8d0a5"}, + {file = "pillow-12.0.0.tar.gz", hash = "sha256:87d4f8125c9988bfbed67af47dd7a953e2fc7b0cc1e7800ec6d2080d490bb353"}, ] [package.extras] docs = ["furo", "olefile", "sphinx (>=8.2)", "sphinx-autobuild", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] fpx = ["olefile"] mic = ["olefile"] -test-arrow = ["pyarrow"] -tests = ["check-manifest", "coverage (>=7.4.2)", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "trove-classifiers (>=2024.10.12)"] -typing = ["typing-extensions ; python_version < \"3.10\""] +test-arrow = ["arro3-compute", "arro3-core", "nanoarrow", "pyarrow"] +tests = ["check-manifest", "coverage (>=7.4.2)", "defusedxml", "markdown2", "olefile", "packaging", "pyroma (>=5)", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "trove-classifiers (>=2024.10.12)"] xmp = ["defusedxml"] [[package]] @@ -3622,25 +3727,35 @@ wcwidth = "*" [[package]] name = "psutil" -version = "7.1.0" +version = "7.1.2" description = "Cross-platform lib for process and system monitoring." optional = false python-versions = ">=3.6" groups = ["dev"] files = [ - {file = "psutil-7.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:76168cef4397494250e9f4e73eb3752b146de1dd950040b29186d0cce1d5ca13"}, - {file = "psutil-7.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:5d007560c8c372efdff9e4579c2846d71de737e4605f611437255e81efcca2c5"}, - {file = "psutil-7.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22e4454970b32472ce7deaa45d045b34d3648ce478e26a04c7e858a0a6e75ff3"}, - {file = "psutil-7.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c70e113920d51e89f212dd7be06219a9b88014e63a4cec69b684c327bc474e3"}, - {file = "psutil-7.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d4a113425c037300de3ac8b331637293da9be9713855c4fc9d2d97436d7259d"}, - {file = "psutil-7.1.0-cp37-abi3-win32.whl", hash = "sha256:09ad740870c8d219ed8daae0ad3b726d3bf9a028a198e7f3080f6a1888b99bca"}, - {file = "psutil-7.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:57f5e987c36d3146c0dd2528cd42151cf96cd359b9d67cfff836995cc5df9a3d"}, - {file = "psutil-7.1.0-cp37-abi3-win_arm64.whl", hash = "sha256:6937cb68133e7c97b6cc9649a570c9a18ba0efebed46d8c5dae4c07fa1b67a07"}, - {file = "psutil-7.1.0.tar.gz", hash = "sha256:655708b3c069387c8b77b072fc429a57d0e214221d01c0a772df7dfedcb3bcd2"}, + {file = "psutil-7.1.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0cc5c6889b9871f231ed5455a9a02149e388fffcb30b607fb7a8896a6d95f22e"}, + {file = "psutil-7.1.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8e9e77a977208d84aa363a4a12e0f72189d58bbf4e46b49aae29a2c6e93ef206"}, + {file = "psutil-7.1.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7d9623a5e4164d2220ecceb071f4b333b3c78866141e8887c072129185f41278"}, + {file = "psutil-7.1.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:364b1c10fe4ed59c89ec49e5f1a70da353b27986fa8233b4b999df4742a5ee2f"}, + {file = "psutil-7.1.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f101ef84de7e05d41310e3ccbdd65a6dd1d9eed85e8aaf0758405d022308e204"}, + {file = "psutil-7.1.2-cp313-cp313t-win_arm64.whl", hash = "sha256:20c00824048a95de67f00afedc7b08b282aa08638585b0206a9fb51f28f1a165"}, + {file = "psutil-7.1.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:e09cfe92aa8e22b1ec5e2d394820cf86c5dff6367ac3242366485dfa874d43bc"}, + {file = "psutil-7.1.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:fa6342cf859c48b19df3e4aa170e4cfb64aadc50b11e06bb569c6c777b089c9e"}, + {file = "psutil-7.1.2-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:625977443498ee7d6c1e63e93bacca893fd759a66c5f635d05e05811d23fb5ee"}, + {file = "psutil-7.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a24bcd7b7f2918d934af0fb91859f621b873d6aa81267575e3655cd387572a7"}, + {file = "psutil-7.1.2-cp314-cp314t-win_amd64.whl", hash = "sha256:329f05610da6380982e6078b9d0881d9ab1e9a7eb7c02d833bfb7340aa634e31"}, + {file = "psutil-7.1.2-cp314-cp314t-win_arm64.whl", hash = "sha256:7b04c29e3c0c888e83ed4762b70f31e65c42673ea956cefa8ced0e31e185f582"}, + {file = "psutil-7.1.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c9ba5c19f2d46203ee8c152c7b01df6eec87d883cfd8ee1af2ef2727f6b0f814"}, + {file = "psutil-7.1.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:2a486030d2fe81bec023f703d3d155f4823a10a47c36784c84f1cc7f8d39bedb"}, + {file = "psutil-7.1.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3efd8fc791492e7808a51cb2b94889db7578bfaea22df931424f874468e389e3"}, + {file = "psutil-7.1.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e2aeb9b64f481b8eabfc633bd39e0016d4d8bbcd590d984af764d80bf0851b8a"}, + {file = "psutil-7.1.2-cp37-abi3-win_amd64.whl", hash = "sha256:8e17852114c4e7996fe9da4745c2bdef001ebbf2f260dec406290e66628bdb91"}, + {file = "psutil-7.1.2-cp37-abi3-win_arm64.whl", hash = "sha256:3e988455e61c240cc879cb62a008c2699231bf3e3d061d7fce4234463fd2abb4"}, + {file = "psutil-7.1.2.tar.gz", hash = "sha256:aa225cdde1335ff9684708ee8c72650f6598d5ed2114b9a7c5802030b1785018"}, ] [package.extras] -dev = ["abi3audit", "black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pyreadline ; os_name == \"nt\"", "pytest", "pytest-cov", "pytest-instafail", "pytest-subtests", "pytest-xdist", "pywin32 ; os_name == \"nt\" and platform_python_implementation != \"PyPy\"", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel", "wheel ; os_name == \"nt\" and platform_python_implementation != \"PyPy\"", "wmi ; os_name == \"nt\" and platform_python_implementation != \"PyPy\""] +dev = ["abi3audit", "black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pyreadline ; os_name == \"nt\"", "pytest", "pytest-cov", "pytest-instafail", "pytest-subtests", "pytest-xdist", "pywin32 ; os_name == \"nt\" and platform_python_implementation != \"PyPy\"", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "validate-pyproject[all]", "virtualenv", "vulture", "wheel", "wheel ; os_name == \"nt\" and platform_python_implementation != \"PyPy\"", "wmi ; os_name == \"nt\" and platform_python_implementation != \"PyPy\""] test = ["pytest", "pytest-instafail", "pytest-subtests", "pytest-xdist", "pywin32 ; os_name == \"nt\" and platform_python_implementation != \"PyPy\"", "setuptools", "wheel ; os_name == \"nt\" and platform_python_implementation != \"PyPy\"", "wmi ; os_name == \"nt\" and platform_python_implementation != \"PyPy\""] [[package]] @@ -3807,7 +3922,7 @@ description = "Python for Window Extensions" optional = false python-versions = "*" groups = ["dev"] -markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" +markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\" and python_version <= \"3.11\"" files = [ {file = "pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3"}, {file = "pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b"}, @@ -4075,15 +4190,15 @@ rpds-py = ">=0.7.0" [[package]] name = "referencing" -version = "0.36.2" +version = "0.37.0" description = "JSON Referencing + Python" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0"}, - {file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa"}, + {file = "referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231"}, + {file = "referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8"}, ] [package.dependencies] @@ -4299,168 +4414,128 @@ files = [ [[package]] name = "rpds-py" -version = "0.27.1" +version = "0.28.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "rpds_py-0.27.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:68afeec26d42ab3b47e541b272166a0b4400313946871cba3ed3a4fc0cab1cef"}, - {file = "rpds_py-0.27.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74e5b2f7bb6fa38b1b10546d27acbacf2a022a8b5543efb06cfebc72a59c85be"}, - {file = "rpds_py-0.27.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9024de74731df54546fab0bfbcdb49fae19159ecaecfc8f37c18d2c7e2c0bd61"}, - {file = "rpds_py-0.27.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:31d3ebadefcd73b73928ed0b2fd696f7fefda8629229f81929ac9c1854d0cffb"}, - {file = "rpds_py-0.27.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2e7f8f169d775dd9092a1743768d771f1d1300453ddfe6325ae3ab5332b4657"}, - {file = "rpds_py-0.27.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d905d16f77eb6ab2e324e09bfa277b4c8e5e6b8a78a3e7ff8f3cdf773b4c013"}, - {file = "rpds_py-0.27.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50c946f048209e6362e22576baea09193809f87687a95a8db24e5fbdb307b93a"}, - {file = "rpds_py-0.27.1-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:3deab27804d65cd8289eb814c2c0e807c4b9d9916c9225e363cb0cf875eb67c1"}, - {file = "rpds_py-0.27.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8b61097f7488de4be8244c89915da8ed212832ccf1e7c7753a25a394bf9b1f10"}, - {file = "rpds_py-0.27.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a3f29aba6e2d7d90528d3c792555a93497fe6538aa65eb675b44505be747808"}, - {file = "rpds_py-0.27.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dd6cd0485b7d347304067153a6dc1d73f7d4fd995a396ef32a24d24b8ac63ac8"}, - {file = "rpds_py-0.27.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6f4461bf931108c9fa226ffb0e257c1b18dc2d44cd72b125bec50ee0ab1248a9"}, - {file = "rpds_py-0.27.1-cp310-cp310-win32.whl", hash = "sha256:ee5422d7fb21f6a00c1901bf6559c49fee13a5159d0288320737bbf6585bd3e4"}, - {file = "rpds_py-0.27.1-cp310-cp310-win_amd64.whl", hash = "sha256:3e039aabf6d5f83c745d5f9a0a381d031e9ed871967c0a5c38d201aca41f3ba1"}, - {file = "rpds_py-0.27.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:be898f271f851f68b318872ce6ebebbc62f303b654e43bf72683dbdc25b7c881"}, - {file = "rpds_py-0.27.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:62ac3d4e3e07b58ee0ddecd71d6ce3b1637de2d373501412df395a0ec5f9beb5"}, - {file = "rpds_py-0.27.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4708c5c0ceb2d034f9991623631d3d23cb16e65c83736ea020cdbe28d57c0a0e"}, - {file = "rpds_py-0.27.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:abfa1171a9952d2e0002aba2ad3780820b00cc3d9c98c6630f2e93271501f66c"}, - {file = "rpds_py-0.27.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b507d19f817ebaca79574b16eb2ae412e5c0835542c93fe9983f1e432aca195"}, - {file = "rpds_py-0.27.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:168b025f8fd8d8d10957405f3fdcef3dc20f5982d398f90851f4abc58c566c52"}, - {file = "rpds_py-0.27.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb56c6210ef77caa58e16e8c17d35c63fe3f5b60fd9ba9d424470c3400bcf9ed"}, - {file = "rpds_py-0.27.1-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:d252f2d8ca0195faa707f8eb9368955760880b2b42a8ee16d382bf5dd807f89a"}, - {file = "rpds_py-0.27.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6e5e54da1e74b91dbc7996b56640f79b195d5925c2b78efaa8c5d53e1d88edde"}, - {file = "rpds_py-0.27.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ffce0481cc6e95e5b3f0a47ee17ffbd234399e6d532f394c8dce320c3b089c21"}, - {file = "rpds_py-0.27.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a205fdfe55c90c2cd8e540ca9ceba65cbe6629b443bc05db1f590a3db8189ff9"}, - {file = "rpds_py-0.27.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:689fb5200a749db0415b092972e8eba85847c23885c8543a8b0f5c009b1a5948"}, - {file = "rpds_py-0.27.1-cp311-cp311-win32.whl", hash = "sha256:3182af66048c00a075010bc7f4860f33913528a4b6fc09094a6e7598e462fe39"}, - {file = "rpds_py-0.27.1-cp311-cp311-win_amd64.whl", hash = "sha256:b4938466c6b257b2f5c4ff98acd8128ec36b5059e5c8f8372d79316b1c36bb15"}, - {file = "rpds_py-0.27.1-cp311-cp311-win_arm64.whl", hash = "sha256:2f57af9b4d0793e53266ee4325535a31ba48e2f875da81a9177c9926dfa60746"}, - {file = "rpds_py-0.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ae2775c1973e3c30316892737b91f9283f9908e3cc7625b9331271eaaed7dc90"}, - {file = "rpds_py-0.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2643400120f55c8a96f7c9d858f7be0c88d383cd4653ae2cf0d0c88f668073e5"}, - {file = "rpds_py-0.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16323f674c089b0360674a4abd28d5042947d54ba620f72514d69be4ff64845e"}, - {file = "rpds_py-0.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a1f4814b65eacac94a00fc9a526e3fdafd78e439469644032032d0d63de4881"}, - {file = "rpds_py-0.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ba32c16b064267b22f1850a34051121d423b6f7338a12b9459550eb2096e7ec"}, - {file = "rpds_py-0.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5c20f33fd10485b80f65e800bbe5f6785af510b9f4056c5a3c612ebc83ba6cb"}, - {file = "rpds_py-0.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:466bfe65bd932da36ff279ddd92de56b042f2266d752719beb97b08526268ec5"}, - {file = "rpds_py-0.27.1-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:41e532bbdcb57c92ba3be62c42e9f096431b4cf478da9bc3bc6ce5c38ab7ba7a"}, - {file = "rpds_py-0.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f149826d742b406579466283769a8ea448eed82a789af0ed17b0cd5770433444"}, - {file = "rpds_py-0.27.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:80c60cfb5310677bd67cb1e85a1e8eb52e12529545441b43e6f14d90b878775a"}, - {file = "rpds_py-0.27.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7ee6521b9baf06085f62ba9c7a3e5becffbc32480d2f1b351559c001c38ce4c1"}, - {file = "rpds_py-0.27.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a512c8263249a9d68cac08b05dd59d2b3f2061d99b322813cbcc14c3c7421998"}, - {file = "rpds_py-0.27.1-cp312-cp312-win32.whl", hash = "sha256:819064fa048ba01b6dadc5116f3ac48610435ac9a0058bbde98e569f9e785c39"}, - {file = "rpds_py-0.27.1-cp312-cp312-win_amd64.whl", hash = "sha256:d9199717881f13c32c4046a15f024971a3b78ad4ea029e8da6b86e5aa9cf4594"}, - {file = "rpds_py-0.27.1-cp312-cp312-win_arm64.whl", hash = "sha256:33aa65b97826a0e885ef6e278fbd934e98cdcfed80b63946025f01e2f5b29502"}, - {file = "rpds_py-0.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e4b9fcfbc021633863a37e92571d6f91851fa656f0180246e84cbd8b3f6b329b"}, - {file = "rpds_py-0.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1441811a96eadca93c517d08df75de45e5ffe68aa3089924f963c782c4b898cf"}, - {file = "rpds_py-0.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55266dafa22e672f5a4f65019015f90336ed31c6383bd53f5e7826d21a0e0b83"}, - {file = "rpds_py-0.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d78827d7ac08627ea2c8e02c9e5b41180ea5ea1f747e9db0915e3adf36b62dcf"}, - {file = "rpds_py-0.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae92443798a40a92dc5f0b01d8a7c93adde0c4dc965310a29ae7c64d72b9fad2"}, - {file = "rpds_py-0.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c46c9dd2403b66a2a3b9720ec4b74d4ab49d4fabf9f03dfdce2d42af913fe8d0"}, - {file = "rpds_py-0.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2efe4eb1d01b7f5f1939f4ef30ecea6c6b3521eec451fb93191bf84b2a522418"}, - {file = "rpds_py-0.27.1-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:15d3b4d83582d10c601f481eca29c3f138d44c92187d197aff663a269197c02d"}, - {file = "rpds_py-0.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4ed2e16abbc982a169d30d1a420274a709949e2cbdef119fe2ec9d870b42f274"}, - {file = "rpds_py-0.27.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a75f305c9b013289121ec0f1181931975df78738cdf650093e6b86d74aa7d8dd"}, - {file = "rpds_py-0.27.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:67ce7620704745881a3d4b0ada80ab4d99df390838839921f99e63c474f82cf2"}, - {file = "rpds_py-0.27.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d992ac10eb86d9b6f369647b6a3f412fc0075cfd5d799530e84d335e440a002"}, - {file = "rpds_py-0.27.1-cp313-cp313-win32.whl", hash = "sha256:4f75e4bd8ab8db624e02c8e2fc4063021b58becdbe6df793a8111d9343aec1e3"}, - {file = "rpds_py-0.27.1-cp313-cp313-win_amd64.whl", hash = "sha256:f9025faafc62ed0b75a53e541895ca272815bec18abe2249ff6501c8f2e12b83"}, - {file = "rpds_py-0.27.1-cp313-cp313-win_arm64.whl", hash = "sha256:ed10dc32829e7d222b7d3b93136d25a406ba9788f6a7ebf6809092da1f4d279d"}, - {file = "rpds_py-0.27.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:92022bbbad0d4426e616815b16bc4127f83c9a74940e1ccf3cfe0b387aba0228"}, - {file = "rpds_py-0.27.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:47162fdab9407ec3f160805ac3e154df042e577dd53341745fc7fb3f625e6d92"}, - {file = "rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb89bec23fddc489e5d78b550a7b773557c9ab58b7946154a10a6f7a214a48b2"}, - {file = "rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e48af21883ded2b3e9eb48cb7880ad8598b31ab752ff3be6457001d78f416723"}, - {file = "rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6f5b7bd8e219ed50299e58551a410b64daafb5017d54bbe822e003856f06a802"}, - {file = "rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08f1e20bccf73b08d12d804d6e1c22ca5530e71659e6673bce31a6bb71c1e73f"}, - {file = "rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dc5dceeaefcc96dc192e3a80bbe1d6c410c469e97bdd47494a7d930987f18b2"}, - {file = "rpds_py-0.27.1-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:d76f9cc8665acdc0c9177043746775aa7babbf479b5520b78ae4002d889f5c21"}, - {file = "rpds_py-0.27.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:134fae0e36022edad8290a6661edf40c023562964efea0cc0ec7f5d392d2aaef"}, - {file = "rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb11a4f1b2b63337cfd3b4d110af778a59aae51c81d195768e353d8b52f88081"}, - {file = "rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:13e608ac9f50a0ed4faec0e90ece76ae33b34c0e8656e3dceb9a7db994c692cd"}, - {file = "rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dd2135527aa40f061350c3f8f89da2644de26cd73e4de458e79606384f4f68e7"}, - {file = "rpds_py-0.27.1-cp313-cp313t-win32.whl", hash = "sha256:3020724ade63fe320a972e2ffd93b5623227e684315adce194941167fee02688"}, - {file = "rpds_py-0.27.1-cp313-cp313t-win_amd64.whl", hash = "sha256:8ee50c3e41739886606388ba3ab3ee2aae9f35fb23f833091833255a31740797"}, - {file = "rpds_py-0.27.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:acb9aafccaae278f449d9c713b64a9e68662e7799dbd5859e2c6b3c67b56d334"}, - {file = "rpds_py-0.27.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:b7fb801aa7f845ddf601c49630deeeccde7ce10065561d92729bfe81bd21fb33"}, - {file = "rpds_py-0.27.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe0dd05afb46597b9a2e11c351e5e4283c741237e7f617ffb3252780cca9336a"}, - {file = "rpds_py-0.27.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b6dfb0e058adb12d8b1d1b25f686e94ffa65d9995a5157afe99743bf7369d62b"}, - {file = "rpds_py-0.27.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed090ccd235f6fa8bb5861684567f0a83e04f52dfc2e5c05f2e4b1309fcf85e7"}, - {file = "rpds_py-0.27.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf876e79763eecf3e7356f157540d6a093cef395b65514f17a356f62af6cc136"}, - {file = "rpds_py-0.27.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12ed005216a51b1d6e2b02a7bd31885fe317e45897de81d86dcce7d74618ffff"}, - {file = "rpds_py-0.27.1-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:ee4308f409a40e50593c7e3bb8cbe0b4d4c66d1674a316324f0c2f5383b486f9"}, - {file = "rpds_py-0.27.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0b08d152555acf1f455154d498ca855618c1378ec810646fcd7c76416ac6dc60"}, - {file = "rpds_py-0.27.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:dce51c828941973a5684d458214d3a36fcd28da3e1875d659388f4f9f12cc33e"}, - {file = "rpds_py-0.27.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:c1476d6f29eb81aa4151c9a31219b03f1f798dc43d8af1250a870735516a1212"}, - {file = "rpds_py-0.27.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:3ce0cac322b0d69b63c9cdb895ee1b65805ec9ffad37639f291dd79467bee675"}, - {file = "rpds_py-0.27.1-cp314-cp314-win32.whl", hash = "sha256:dfbfac137d2a3d0725758cd141f878bf4329ba25e34979797c89474a89a8a3a3"}, - {file = "rpds_py-0.27.1-cp314-cp314-win_amd64.whl", hash = "sha256:a6e57b0abfe7cc513450fcf529eb486b6e4d3f8aee83e92eb5f1ef848218d456"}, - {file = "rpds_py-0.27.1-cp314-cp314-win_arm64.whl", hash = "sha256:faf8d146f3d476abfee026c4ae3bdd9ca14236ae4e4c310cbd1cf75ba33d24a3"}, - {file = "rpds_py-0.27.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:ba81d2b56b6d4911ce735aad0a1d4495e808b8ee4dc58715998741a26874e7c2"}, - {file = "rpds_py-0.27.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:84f7d509870098de0e864cad0102711c1e24e9b1a50ee713b65928adb22269e4"}, - {file = "rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9e960fc78fecd1100539f14132425e1d5fe44ecb9239f8f27f079962021523e"}, - {file = "rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:62f85b665cedab1a503747617393573995dac4600ff51869d69ad2f39eb5e817"}, - {file = "rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fed467af29776f6556250c9ed85ea5a4dd121ab56a5f8b206e3e7a4c551e48ec"}, - {file = "rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2729615f9d430af0ae6b36cf042cb55c0936408d543fb691e1a9e36648fd35a"}, - {file = "rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b207d881a9aef7ba753d69c123a35d96ca7cb808056998f6b9e8747321f03b8"}, - {file = "rpds_py-0.27.1-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:639fd5efec029f99b79ae47e5d7e00ad8a773da899b6309f6786ecaf22948c48"}, - {file = "rpds_py-0.27.1-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fecc80cb2a90e28af8a9b366edacf33d7a91cbfe4c2c4544ea1246e949cfebeb"}, - {file = "rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42a89282d711711d0a62d6f57d81aa43a1368686c45bc1c46b7f079d55692734"}, - {file = "rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:cf9931f14223de59551ab9d38ed18d92f14f055a5f78c1d8ad6493f735021bbb"}, - {file = "rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f39f58a27cc6e59f432b568ed8429c7e1641324fbe38131de852cd77b2d534b0"}, - {file = "rpds_py-0.27.1-cp314-cp314t-win32.whl", hash = "sha256:d5fa0ee122dc09e23607a28e6d7b150da16c662e66409bbe85230e4c85bb528a"}, - {file = "rpds_py-0.27.1-cp314-cp314t-win_amd64.whl", hash = "sha256:6567d2bb951e21232c2f660c24cf3470bb96de56cdcb3f071a83feeaff8a2772"}, - {file = "rpds_py-0.27.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c918c65ec2e42c2a78d19f18c553d77319119bf43aa9e2edf7fb78d624355527"}, - {file = "rpds_py-0.27.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1fea2b1a922c47c51fd07d656324531adc787e415c8b116530a1d29c0516c62d"}, - {file = "rpds_py-0.27.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbf94c58e8e0cd6b6f38d8de67acae41b3a515c26169366ab58bdca4a6883bb8"}, - {file = "rpds_py-0.27.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c2a8fed130ce946d5c585eddc7c8eeef0051f58ac80a8ee43bd17835c144c2cc"}, - {file = "rpds_py-0.27.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:037a2361db72ee98d829bc2c5b7cc55598ae0a5e0ec1823a56ea99374cfd73c1"}, - {file = "rpds_py-0.27.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5281ed1cc1d49882f9997981c88df1a22e140ab41df19071222f7e5fc4e72125"}, - {file = "rpds_py-0.27.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fd50659a069c15eef8aa3d64bbef0d69fd27bb4a50c9ab4f17f83a16cbf8905"}, - {file = "rpds_py-0.27.1-cp39-cp39-manylinux_2_31_riscv64.whl", hash = "sha256:c4b676c4ae3921649a15d28ed10025548e9b561ded473aa413af749503c6737e"}, - {file = "rpds_py-0.27.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:079bc583a26db831a985c5257797b2b5d3affb0386e7ff886256762f82113b5e"}, - {file = "rpds_py-0.27.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4e44099bd522cba71a2c6b97f68e19f40e7d85399de899d66cdb67b32d7cb786"}, - {file = "rpds_py-0.27.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e202e6d4188e53c6661af813b46c37ca2c45e497fc558bacc1a7630ec2695aec"}, - {file = "rpds_py-0.27.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f41f814b8eaa48768d1bb551591f6ba45f87ac76899453e8ccd41dba1289b04b"}, - {file = "rpds_py-0.27.1-cp39-cp39-win32.whl", hash = "sha256:9e71f5a087ead99563c11fdaceee83ee982fd39cf67601f4fd66cb386336ee52"}, - {file = "rpds_py-0.27.1-cp39-cp39-win_amd64.whl", hash = "sha256:71108900c9c3c8590697244b9519017a400d9ba26a36c48381b3f64743a44aab"}, - {file = "rpds_py-0.27.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7ba22cb9693df986033b91ae1d7a979bc399237d45fccf875b76f62bb9e52ddf"}, - {file = "rpds_py-0.27.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5b640501be9288c77738b5492b3fd3abc4ba95c50c2e41273c8a1459f08298d3"}, - {file = "rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb08b65b93e0c6dd70aac7f7890a9c0938d5ec71d5cb32d45cf844fb8ae47636"}, - {file = "rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d7ff07d696a7a38152ebdb8212ca9e5baab56656749f3d6004b34ab726b550b8"}, - {file = "rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fb7c72262deae25366e3b6c0c0ba46007967aea15d1eea746e44ddba8ec58dcc"}, - {file = "rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b002cab05d6339716b03a4a3a2ce26737f6231d7b523f339fa061d53368c9d8"}, - {file = "rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23f6b69d1c26c4704fec01311963a41d7de3ee0570a84ebde4d544e5a1859ffc"}, - {file = "rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:530064db9146b247351f2a0250b8f00b289accea4596a033e94be2389977de71"}, - {file = "rpds_py-0.27.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7b90b0496570bd6b0321724a330d8b545827c4df2034b6ddfc5f5275f55da2ad"}, - {file = "rpds_py-0.27.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:879b0e14a2da6a1102a3fc8af580fc1ead37e6d6692a781bd8c83da37429b5ab"}, - {file = "rpds_py-0.27.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:0d807710df3b5faa66c731afa162ea29717ab3be17bdc15f90f2d9f183da4059"}, - {file = "rpds_py-0.27.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:3adc388fc3afb6540aec081fa59e6e0d3908722771aa1e37ffe22b220a436f0b"}, - {file = "rpds_py-0.27.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c796c0c1cc68cb08b0284db4229f5af76168172670c74908fdbd4b7d7f515819"}, - {file = "rpds_py-0.27.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cdfe4bb2f9fe7458b7453ad3c33e726d6d1c7c0a72960bcc23800d77384e42df"}, - {file = "rpds_py-0.27.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:8fabb8fd848a5f75a2324e4a84501ee3a5e3c78d8603f83475441866e60b94a3"}, - {file = "rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eda8719d598f2f7f3e0f885cba8646644b55a187762bec091fa14a2b819746a9"}, - {file = "rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c64d07e95606ec402a0a1c511fe003873fa6af630bda59bac77fac8b4318ebc"}, - {file = "rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93a2ed40de81bcff59aabebb626562d48332f3d028ca2036f1d23cbb52750be4"}, - {file = "rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:387ce8c44ae94e0ec50532d9cb0edce17311024c9794eb196b90e1058aadeb66"}, - {file = "rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aaf94f812c95b5e60ebaf8bfb1898a7d7cb9c1af5744d4a67fa47796e0465d4e"}, - {file = "rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:4848ca84d6ded9b58e474dfdbad4b8bfb450344c0551ddc8d958bf4b36aa837c"}, - {file = "rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2bde09cbcf2248b73c7c323be49b280180ff39fadcfe04e7b6f54a678d02a7cf"}, - {file = "rpds_py-0.27.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:94c44ee01fd21c9058f124d2d4f0c9dc7634bec93cd4b38eefc385dabe71acbf"}, - {file = "rpds_py-0.27.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:df8b74962e35c9249425d90144e721eed198e6555a0e22a563d29fe4486b51f6"}, - {file = "rpds_py-0.27.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:dc23e6820e3b40847e2f4a7726462ba0cf53089512abe9ee16318c366494c17a"}, - {file = "rpds_py-0.27.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:aa8933159edc50be265ed22b401125c9eebff3171f570258854dbce3ecd55475"}, - {file = "rpds_py-0.27.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a50431bf02583e21bf273c71b89d710e7a710ad5e39c725b14e685610555926f"}, - {file = "rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78af06ddc7fe5cc0e967085a9115accee665fb912c22a3f54bad70cc65b05fe6"}, - {file = "rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:70d0738ef8fee13c003b100c2fbd667ec4f133468109b3472d249231108283a3"}, - {file = "rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2f6fd8a1cea5bbe599b6e78a6e5ee08db434fc8ffea51ff201c8765679698b3"}, - {file = "rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8177002868d1426305bb5de1e138161c2ec9eb2d939be38291d7c431c4712df8"}, - {file = "rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:008b839781d6c9bf3b6a8984d1d8e56f0ec46dc56df61fd669c49b58ae800400"}, - {file = "rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:a55b9132bb1ade6c734ddd2759c8dc132aa63687d259e725221f106b83a0e485"}, - {file = "rpds_py-0.27.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a46fdec0083a26415f11d5f236b79fa1291c32aaa4a17684d82f7017a1f818b1"}, - {file = "rpds_py-0.27.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:8a63b640a7845f2bdd232eb0d0a4a2dd939bcdd6c57e6bb134526487f3160ec5"}, - {file = "rpds_py-0.27.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7e32721e5d4922deaaf963469d795d5bde6093207c52fec719bd22e5d1bedbc4"}, - {file = "rpds_py-0.27.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:2c426b99a068601b5f4623573df7a7c3d72e87533a2dd2253353a03e7502566c"}, - {file = "rpds_py-0.27.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4fc9b7fe29478824361ead6e14e4f5aed570d477e06088826537e202d25fe859"}, - {file = "rpds_py-0.27.1.tar.gz", hash = "sha256:26a1c73171d10b7acccbded82bf6a586ab8203601e565badc74bbbf8bc5a10f8"}, + {file = "rpds_py-0.28.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:7b6013db815417eeb56b2d9d7324e64fcd4fa289caeee6e7a78b2e11fc9b438a"}, + {file = "rpds_py-0.28.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a4c6b05c685c0c03f80dabaeb73e74218c49deea965ca63f76a752807397207"}, + {file = "rpds_py-0.28.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4794c6c3fbe8f9ac87699b131a1f26e7b4abcf6d828da46a3a52648c7930eba"}, + {file = "rpds_py-0.28.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2e8456b6ee5527112ff2354dd9087b030e3429e43a74f480d4a5ca79d269fd85"}, + {file = "rpds_py-0.28.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:beb880a9ca0a117415f241f66d56025c02037f7c4efc6fe59b5b8454f1eaa50d"}, + {file = "rpds_py-0.28.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6897bebb118c44b38c9cb62a178e09f1593c949391b9a1a6fe777ccab5934ee7"}, + {file = "rpds_py-0.28.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1b553dd06e875249fd43efd727785efb57a53180e0fde321468222eabbeaafa"}, + {file = "rpds_py-0.28.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:f0b2044fdddeea5b05df832e50d2a06fe61023acb44d76978e1b060206a8a476"}, + {file = "rpds_py-0.28.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:05cf1e74900e8da73fa08cc76c74a03345e5a3e37691d07cfe2092d7d8e27b04"}, + {file = "rpds_py-0.28.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:efd489fec7c311dae25e94fe7eeda4b3d06be71c68f2cf2e8ef990ffcd2cd7e8"}, + {file = "rpds_py-0.28.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:ada7754a10faacd4f26067e62de52d6af93b6d9542f0df73c57b9771eb3ba9c4"}, + {file = "rpds_py-0.28.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c2a34fd26588949e1e7977cfcbb17a9a42c948c100cab890c6d8d823f0586457"}, + {file = "rpds_py-0.28.0-cp310-cp310-win32.whl", hash = "sha256:f9174471d6920cbc5e82a7822de8dfd4dcea86eb828b04fc8c6519a77b0ee51e"}, + {file = "rpds_py-0.28.0-cp310-cp310-win_amd64.whl", hash = "sha256:6e32dd207e2c4f8475257a3540ab8a93eff997abfa0a3fdb287cae0d6cd874b8"}, + {file = "rpds_py-0.28.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:03065002fd2e287725d95fbc69688e0c6daf6c6314ba38bdbaa3895418e09296"}, + {file = "rpds_py-0.28.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:28ea02215f262b6d078daec0b45344c89e161eab9526b0d898221d96fdda5f27"}, + {file = "rpds_py-0.28.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25dbade8fbf30bcc551cb352376c0ad64b067e4fc56f90e22ba70c3ce205988c"}, + {file = "rpds_py-0.28.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c03002f54cc855860bfdc3442928ffdca9081e73b5b382ed0b9e8efe6e5e205"}, + {file = "rpds_py-0.28.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9699fa7990368b22032baf2b2dce1f634388e4ffc03dfefaaac79f4695edc95"}, + {file = "rpds_py-0.28.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9b06fe1a75e05e0713f06ea0c89ecb6452210fd60e2f1b6ddc1067b990e08d9"}, + {file = "rpds_py-0.28.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9f83e7b326a3f9ec3ef84cda98fb0a74c7159f33e692032233046e7fd15da2"}, + {file = "rpds_py-0.28.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:0d3259ea9ad8743a75a43eb7819324cdab393263c91be86e2d1901ee65c314e0"}, + {file = "rpds_py-0.28.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a7548b345f66f6695943b4ef6afe33ccd3f1b638bd9afd0f730dd255c249c9e"}, + {file = "rpds_py-0.28.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c9a40040aa388b037eb39416710fbcce9443498d2eaab0b9b45ae988b53f5c67"}, + {file = "rpds_py-0.28.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8f60c7ea34e78c199acd0d3cda37a99be2c861dd2b8cf67399784f70c9f8e57d"}, + {file = "rpds_py-0.28.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1571ae4292649100d743b26d5f9c63503bb1fedf538a8f29a98dce2d5ba6b4e6"}, + {file = "rpds_py-0.28.0-cp311-cp311-win32.whl", hash = "sha256:5cfa9af45e7c1140af7321fa0bef25b386ee9faa8928c80dc3a5360971a29e8c"}, + {file = "rpds_py-0.28.0-cp311-cp311-win_amd64.whl", hash = "sha256:dd8d86b5d29d1b74100982424ba53e56033dc47720a6de9ba0259cf81d7cecaa"}, + {file = "rpds_py-0.28.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e27d3a5709cc2b3e013bf93679a849213c79ae0573f9b894b284b55e729e120"}, + {file = "rpds_py-0.28.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:6b4f28583a4f247ff60cd7bdda83db8c3f5b05a7a82ff20dd4b078571747708f"}, + {file = "rpds_py-0.28.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d678e91b610c29c4b3d52a2c148b641df2b4676ffe47c59f6388d58b99cdc424"}, + {file = "rpds_py-0.28.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e819e0e37a44a78e1383bf1970076e2ccc4dc8c2bbaa2f9bd1dc987e9afff628"}, + {file = "rpds_py-0.28.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5ee514e0f0523db5d3fb171f397c54875dbbd69760a414dccf9d4d7ad628b5bd"}, + {file = "rpds_py-0.28.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f3fa06d27fdcee47f07a39e02862da0100cb4982508f5ead53ec533cd5fe55e"}, + {file = "rpds_py-0.28.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:46959ef2e64f9e4a41fc89aa20dbca2b85531f9a72c21099a3360f35d10b0d5a"}, + {file = "rpds_py-0.28.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8455933b4bcd6e83fde3fefc987a023389c4b13f9a58c8d23e4b3f6d13f78c84"}, + {file = "rpds_py-0.28.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:ad50614a02c8c2962feebe6012b52f9802deec4263946cddea37aaf28dd25a66"}, + {file = "rpds_py-0.28.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e5deca01b271492553fdb6c7fd974659dce736a15bae5dad7ab8b93555bceb28"}, + {file = "rpds_py-0.28.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:735f8495a13159ce6a0d533f01e8674cec0c57038c920495f87dcb20b3ddb48a"}, + {file = "rpds_py-0.28.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:961ca621ff10d198bbe6ba4957decca61aa2a0c56695384c1d6b79bf61436df5"}, + {file = "rpds_py-0.28.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2374e16cc9131022e7d9a8f8d65d261d9ba55048c78f3b6e017971a4f5e6353c"}, + {file = "rpds_py-0.28.0-cp312-cp312-win32.whl", hash = "sha256:d15431e334fba488b081d47f30f091e5d03c18527c325386091f31718952fe08"}, + {file = "rpds_py-0.28.0-cp312-cp312-win_amd64.whl", hash = "sha256:a410542d61fc54710f750d3764380b53bf09e8c4edbf2f9141a82aa774a04f7c"}, + {file = "rpds_py-0.28.0-cp312-cp312-win_arm64.whl", hash = "sha256:1f0cfd1c69e2d14f8c892b893997fa9a60d890a0c8a603e88dca4955f26d1edd"}, + {file = "rpds_py-0.28.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e9e184408a0297086f880556b6168fa927d677716f83d3472ea333b42171ee3b"}, + {file = "rpds_py-0.28.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:edd267266a9b0448f33dc465a97cfc5d467594b600fe28e7fa2f36450e03053a"}, + {file = "rpds_py-0.28.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85beb8b3f45e4e32f6802fb6cd6b17f615ef6c6a52f265371fb916fae02814aa"}, + {file = "rpds_py-0.28.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d2412be8d00a1b895f8ad827cc2116455196e20ed994bb704bf138fe91a42724"}, + {file = "rpds_py-0.28.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cf128350d384b777da0e68796afdcebc2e9f63f0e9f242217754e647f6d32491"}, + {file = "rpds_py-0.28.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a2036d09b363aa36695d1cc1a97b36865597f4478470b0697b5ee9403f4fe399"}, + {file = "rpds_py-0.28.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8e1e9be4fa6305a16be628959188e4fd5cd6f1b0e724d63c6d8b2a8adf74ea6"}, + {file = "rpds_py-0.28.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:0a403460c9dd91a7f23fc3188de6d8977f1d9603a351d5db6cf20aaea95b538d"}, + {file = "rpds_py-0.28.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d7366b6553cdc805abcc512b849a519167db8f5e5c3472010cd1228b224265cb"}, + {file = "rpds_py-0.28.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5b43c6a3726efd50f18d8120ec0551241c38785b68952d240c45ea553912ac41"}, + {file = "rpds_py-0.28.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0cb7203c7bc69d7c1585ebb33a2e6074492d2fc21ad28a7b9d40457ac2a51ab7"}, + {file = "rpds_py-0.28.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7a52a5169c664dfb495882adc75c304ae1d50df552fbd68e100fdc719dee4ff9"}, + {file = "rpds_py-0.28.0-cp313-cp313-win32.whl", hash = "sha256:2e42456917b6687215b3e606ab46aa6bca040c77af7df9a08a6dcfe8a4d10ca5"}, + {file = "rpds_py-0.28.0-cp313-cp313-win_amd64.whl", hash = "sha256:e0a0311caedc8069d68fc2bf4c9019b58a2d5ce3cd7cb656c845f1615b577e1e"}, + {file = "rpds_py-0.28.0-cp313-cp313-win_arm64.whl", hash = "sha256:04c1b207ab8b581108801528d59ad80aa83bb170b35b0ddffb29c20e411acdc1"}, + {file = "rpds_py-0.28.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:f296ea3054e11fc58ad42e850e8b75c62d9a93a9f981ad04b2e5ae7d2186ff9c"}, + {file = "rpds_py-0.28.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5a7306c19b19005ad98468fcefeb7100b19c79fc23a5f24a12e06d91181193fa"}, + {file = "rpds_py-0.28.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5d9b86aa501fed9862a443c5c3116f6ead8bc9296185f369277c42542bd646b"}, + {file = "rpds_py-0.28.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e5bbc701eff140ba0e872691d573b3d5d30059ea26e5785acba9132d10c8c31d"}, + {file = "rpds_py-0.28.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a5690671cd672a45aa8616d7374fdf334a1b9c04a0cac3c854b1136e92374fe"}, + {file = "rpds_py-0.28.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9f1d92ecea4fa12f978a367c32a5375a1982834649cdb96539dcdc12e609ab1a"}, + {file = "rpds_py-0.28.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d252db6b1a78d0a3928b6190156042d54c93660ce4d98290d7b16b5296fb7cc"}, + {file = "rpds_py-0.28.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:d61b355c3275acb825f8777d6c4505f42b5007e357af500939d4a35b19177259"}, + {file = "rpds_py-0.28.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:acbe5e8b1026c0c580d0321c8aae4b0a1e1676861d48d6e8c6586625055b606a"}, + {file = "rpds_py-0.28.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:8aa23b6f0fc59b85b4c7d89ba2965af274346f738e8d9fc2455763602e62fd5f"}, + {file = "rpds_py-0.28.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7b14b0c680286958817c22d76fcbca4800ddacef6f678f3a7c79a1fe7067fe37"}, + {file = "rpds_py-0.28.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:bcf1d210dfee61a6c86551d67ee1031899c0fdbae88b2d44a569995d43797712"}, + {file = "rpds_py-0.28.0-cp313-cp313t-win32.whl", hash = "sha256:3aa4dc0fdab4a7029ac63959a3ccf4ed605fee048ba67ce89ca3168da34a1342"}, + {file = "rpds_py-0.28.0-cp313-cp313t-win_amd64.whl", hash = "sha256:7b7d9d83c942855e4fdcfa75d4f96f6b9e272d42fffcb72cd4bb2577db2e2907"}, + {file = "rpds_py-0.28.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:dcdcb890b3ada98a03f9f2bb108489cdc7580176cb73b4f2d789e9a1dac1d472"}, + {file = "rpds_py-0.28.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:f274f56a926ba2dc02976ca5b11c32855cbd5925534e57cfe1fda64e04d1add2"}, + {file = "rpds_py-0.28.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4fe0438ac4a29a520ea94c8c7f1754cdd8feb1bc490dfda1bfd990072363d527"}, + {file = "rpds_py-0.28.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a358a32dd3ae50e933347889b6af9a1bdf207ba5d1a3f34e1a38cd3540e6733"}, + {file = "rpds_py-0.28.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e80848a71c78aa328fefaba9c244d588a342c8e03bda518447b624ea64d1ff56"}, + {file = "rpds_py-0.28.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f586db2e209d54fe177e58e0bc4946bea5fb0102f150b1b2f13de03e1f0976f8"}, + {file = "rpds_py-0.28.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ae8ee156d6b586e4292491e885d41483136ab994e719a13458055bec14cf370"}, + {file = "rpds_py-0.28.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:a805e9b3973f7e27f7cab63a6b4f61d90f2e5557cff73b6e97cd5b8540276d3d"}, + {file = "rpds_py-0.28.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5d3fd16b6dc89c73a4da0b4ac8b12a7ecc75b2864b95c9e5afed8003cb50a728"}, + {file = "rpds_py-0.28.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:6796079e5d24fdaba6d49bda28e2c47347e89834678f2bc2c1b4fc1489c0fb01"}, + {file = "rpds_py-0.28.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:76500820c2af232435cbe215e3324c75b950a027134e044423f59f5b9a1ba515"}, + {file = "rpds_py-0.28.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:bbdc5640900a7dbf9dd707fe6388972f5bbd883633eb68b76591044cfe346f7e"}, + {file = "rpds_py-0.28.0-cp314-cp314-win32.whl", hash = "sha256:adc8aa88486857d2b35d75f0640b949759f79dc105f50aa2c27816b2e0dd749f"}, + {file = "rpds_py-0.28.0-cp314-cp314-win_amd64.whl", hash = "sha256:66e6fa8e075b58946e76a78e69e1a124a21d9a48a5b4766d15ba5b06869d1fa1"}, + {file = "rpds_py-0.28.0-cp314-cp314-win_arm64.whl", hash = "sha256:a6fe887c2c5c59413353b7c0caff25d0e566623501ccfff88957fa438a69377d"}, + {file = "rpds_py-0.28.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:7a69df082db13c7070f7b8b1f155fa9e687f1d6aefb7b0e3f7231653b79a067b"}, + {file = "rpds_py-0.28.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b1cde22f2c30ebb049a9e74c5374994157b9b70a16147d332f89c99c5960737a"}, + {file = "rpds_py-0.28.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5338742f6ba7a51012ea470bd4dc600a8c713c0c72adaa0977a1b1f4327d6592"}, + {file = "rpds_py-0.28.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e1460ebde1bcf6d496d80b191d854adedcc619f84ff17dc1c6d550f58c9efbba"}, + {file = "rpds_py-0.28.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e3eb248f2feba84c692579257a043a7699e28a77d86c77b032c1d9fbb3f0219c"}, + {file = "rpds_py-0.28.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3bbba5def70b16cd1c1d7255666aad3b290fbf8d0fe7f9f91abafb73611a91"}, + {file = "rpds_py-0.28.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3114f4db69ac5a1f32e7e4d1cbbe7c8f9cf8217f78e6e002cedf2d54c2a548ed"}, + {file = "rpds_py-0.28.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:4b0cb8a906b1a0196b863d460c0222fb8ad0f34041568da5620f9799b83ccf0b"}, + {file = "rpds_py-0.28.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cf681ac76a60b667106141e11a92a3330890257e6f559ca995fbb5265160b56e"}, + {file = "rpds_py-0.28.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1e8ee6413cfc677ce8898d9cde18cc3a60fc2ba756b0dec5b71eb6eb21c49fa1"}, + {file = "rpds_py-0.28.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:b3072b16904d0b5572a15eb9d31c1954e0d3227a585fc1351aa9878729099d6c"}, + {file = "rpds_py-0.28.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b670c30fd87a6aec281c3c9896d3bae4b205fd75d79d06dc87c2503717e46092"}, + {file = "rpds_py-0.28.0-cp314-cp314t-win32.whl", hash = "sha256:8014045a15b4d2b3476f0a287fcc93d4f823472d7d1308d47884ecac9e612be3"}, + {file = "rpds_py-0.28.0-cp314-cp314t-win_amd64.whl", hash = "sha256:7a4e59c90d9c27c561eb3160323634a9ff50b04e4f7820600a2beb0ac90db578"}, + {file = "rpds_py-0.28.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f5e7101145427087e493b9c9b959da68d357c28c562792300dd21a095118ed16"}, + {file = "rpds_py-0.28.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:31eb671150b9c62409a888850aaa8e6533635704fe2b78335f9aaf7ff81eec4d"}, + {file = "rpds_py-0.28.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48b55c1f64482f7d8bd39942f376bfdf2f6aec637ee8c805b5041e14eeb771db"}, + {file = "rpds_py-0.28.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:24743a7b372e9a76171f6b69c01aedf927e8ac3e16c474d9fe20d552a8cb45c7"}, + {file = "rpds_py-0.28.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:389c29045ee8bbb1627ea190b4976a310a295559eaf9f1464a1a6f2bf84dde78"}, + {file = "rpds_py-0.28.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23690b5827e643150cf7b49569679ec13fe9a610a15949ed48b85eb7f98f34ec"}, + {file = "rpds_py-0.28.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f0c9266c26580e7243ad0d72fc3e01d6b33866cfab5084a6da7576bcf1c4f72"}, + {file = "rpds_py-0.28.0-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:4c6c4db5d73d179746951486df97fd25e92396be07fc29ee8ff9a8f5afbdfb27"}, + {file = "rpds_py-0.28.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3b695a8fa799dd2cfdb4804b37096c5f6dba1ac7f48a7fbf6d0485bcd060316"}, + {file = "rpds_py-0.28.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:6aa1bfce3f83baf00d9c5fcdbba93a3ab79958b4c7d7d1f55e7fe68c20e63912"}, + {file = "rpds_py-0.28.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:7b0f9dceb221792b3ee6acb5438eb1f02b0cb2c247796a72b016dcc92c6de829"}, + {file = "rpds_py-0.28.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5d0145edba8abd3db0ab22b5300c99dc152f5c9021fab861be0f0544dc3cbc5f"}, + {file = "rpds_py-0.28.0.tar.gz", hash = "sha256:abd4df20485a0983e2ca334a216249b6186d6e3c1627e106651943dbdb791aea"}, ] [[package]] @@ -4831,45 +4906,55 @@ files = [ [[package]] name = "tomli" -version = "2.2.1" +version = "2.3.0" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" groups = ["dev"] markers = "python_version < \"3.11\"" files = [ - {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, - {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, - {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, - {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, - {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, - {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, - {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, - {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, - {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, - {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, + {file = "tomli-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88bd15eb972f3664f5ed4b57c1634a97153b4bac4479dcb6a495f41921eb7f45"}, + {file = "tomli-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:883b1c0d6398a6a9d29b508c331fa56adbcdff647f6ace4dfca0f50e90dfd0ba"}, + {file = "tomli-2.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d1381caf13ab9f300e30dd8feadb3de072aeb86f1d34a8569453ff32a7dea4bf"}, + {file = "tomli-2.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0e285d2649b78c0d9027570d4da3425bdb49830a6156121360b3f8511ea3441"}, + {file = "tomli-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a154a9ae14bfcf5d8917a59b51ffd5a3ac1fd149b71b47a3a104ca4edcfa845"}, + {file = "tomli-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:74bf8464ff93e413514fefd2be591c3b0b23231a77f901db1eb30d6f712fc42c"}, + {file = "tomli-2.3.0-cp311-cp311-win32.whl", hash = "sha256:00b5f5d95bbfc7d12f91ad8c593a1659b6387b43f054104cda404be6bda62456"}, + {file = "tomli-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:4dc4ce8483a5d429ab602f111a93a6ab1ed425eae3122032db7e9acf449451be"}, + {file = "tomli-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7d86942e56ded512a594786a5ba0a5e521d02529b3826e7761a05138341a2ac"}, + {file = "tomli-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:73ee0b47d4dad1c5e996e3cd33b8a76a50167ae5f96a2607cbe8cc773506ab22"}, + {file = "tomli-2.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:792262b94d5d0a466afb5bc63c7daa9d75520110971ee269152083270998316f"}, + {file = "tomli-2.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f195fe57ecceac95a66a75ac24d9d5fbc98ef0962e09b2eddec5d39375aae52"}, + {file = "tomli-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e31d432427dcbf4d86958c184b9bfd1e96b5b71f8eb17e6d02531f434fd335b8"}, + {file = "tomli-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b0882799624980785240ab732537fcfc372601015c00f7fc367c55308c186f6"}, + {file = "tomli-2.3.0-cp312-cp312-win32.whl", hash = "sha256:ff72b71b5d10d22ecb084d345fc26f42b5143c5533db5e2eaba7d2d335358876"}, + {file = "tomli-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:1cb4ed918939151a03f33d4242ccd0aa5f11b3547d0cf30f7c74a408a5b99878"}, + {file = "tomli-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5192f562738228945d7b13d4930baffda67b69425a7f0da96d360b0a3888136b"}, + {file = "tomli-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:be71c93a63d738597996be9528f4abe628d1adf5e6eb11607bc8fe1a510b5dae"}, + {file = "tomli-2.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4665508bcbac83a31ff8ab08f424b665200c0e1e645d2bd9ab3d3e557b6185b"}, + {file = "tomli-2.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4021923f97266babc6ccab9f5068642a0095faa0a51a246a6a02fccbb3514eaf"}, + {file = "tomli-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4ea38c40145a357d513bffad0ed869f13c1773716cf71ccaa83b0fa0cc4e42f"}, + {file = "tomli-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ad805ea85eda330dbad64c7ea7a4556259665bdf9d2672f5dccc740eb9d3ca05"}, + {file = "tomli-2.3.0-cp313-cp313-win32.whl", hash = "sha256:97d5eec30149fd3294270e889b4234023f2c69747e555a27bd708828353ab606"}, + {file = "tomli-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0c95ca56fbe89e065c6ead5b593ee64b84a26fca063b5d71a1122bf26e533999"}, + {file = "tomli-2.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cebc6fe843e0733ee827a282aca4999b596241195f43b4cc371d64fc6639da9e"}, + {file = "tomli-2.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4c2ef0244c75aba9355561272009d934953817c49f47d768070c3c94355c2aa3"}, + {file = "tomli-2.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c22a8bf253bacc0cf11f35ad9808b6cb75ada2631c2d97c971122583b129afbc"}, + {file = "tomli-2.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0eea8cc5c5e9f89c9b90c4896a8deefc74f518db5927d0e0e8d4a80953d774d0"}, + {file = "tomli-2.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b74a0e59ec5d15127acdabd75ea17726ac4c5178ae51b85bfe39c4f8a278e879"}, + {file = "tomli-2.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b5870b50c9db823c595983571d1296a6ff3e1b88f734a4c8f6fc6188397de005"}, + {file = "tomli-2.3.0-cp314-cp314-win32.whl", hash = "sha256:feb0dacc61170ed7ab602d3d972a58f14ee3ee60494292d384649a3dc38ef463"}, + {file = "tomli-2.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:b273fcbd7fc64dc3600c098e39136522650c49bca95df2d11cf3b626422392c8"}, + {file = "tomli-2.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:940d56ee0410fa17ee1f12b817b37a4d4e4dc4d27340863cc67236c74f582e77"}, + {file = "tomli-2.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f85209946d1fe94416debbb88d00eb92ce9cd5266775424ff81bc959e001acaf"}, + {file = "tomli-2.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a56212bdcce682e56b0aaf79e869ba5d15a6163f88d5451cbde388d48b13f530"}, + {file = "tomli-2.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5f3ffd1e098dfc032d4d3af5c0ac64f6d286d98bc148698356847b80fa4de1b"}, + {file = "tomli-2.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e01decd096b1530d97d5d85cb4dff4af2d8347bd35686654a004f8dea20fc67"}, + {file = "tomli-2.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8a35dd0e643bb2610f156cca8db95d213a90015c11fee76c946aa62b7ae7e02f"}, + {file = "tomli-2.3.0-cp314-cp314t-win32.whl", hash = "sha256:a1f7f282fe248311650081faafa5f4732bdbfef5d45fe3f2e702fbc6f2d496e0"}, + {file = "tomli-2.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:70a251f8d4ba2d9ac2542eecf008b3c8a9fc5c3f9f02c56a9d7952612be2fdba"}, + {file = "tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b"}, + {file = "tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549"}, ] [[package]] @@ -4955,32 +5040,6 @@ files = [ 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 = "types-python-dateutil" -version = "2.9.0.20241206" -description = "Typing stubs for python-dateutil" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -markers = "python_version <= \"3.11\"" -files = [ - {file = "types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53"}, - {file = "types_python_dateutil-2.9.0.20241206.tar.gz", hash = "sha256:18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb"}, -] - -[[package]] -name = "types-python-dateutil" -version = "2.9.0.20251008" -description = "Typing stubs for python-dateutil" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -markers = "python_version >= \"3.12\"" -files = [ - {file = "types_python_dateutil-2.9.0.20251008-py3-none-any.whl", hash = "sha256:b9a5232c8921cf7661b29c163ccc56055c418ab2c6eabe8f917cbcc73a4c4157"}, - {file = "types_python_dateutil-2.9.0.20251008.tar.gz", hash = "sha256:c3826289c170c93ebd8360c3485311187df740166dbab9dd3b792e69f2bc1f9c"}, -] - [[package]] name = "typing-extensions" version = "4.13.2" @@ -5007,9 +5066,22 @@ files = [ {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}, ] +[[package]] +name = "tzdata" +version = "2025.2" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +groups = ["dev"] +markers = "python_version >= \"3.9\"" +files = [ + {file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8"}, + {file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"}, +] + [[package]] name = "unified-momentum-model" -version = "0.3.0" +version = "0.4.1" description = "" optional = false python-versions = "^3.8" @@ -5033,7 +5105,7 @@ figures = ["dualitic @ git+https://github.com/jaimeliew1/Dualitic.git", "ipykern type = "git" url = "https://github.com/Howland-Lab/Unified-Momentum-Model.git" reference = "sg/curled_wave_dev" -resolved_reference = "d48a62e8bbc8e16cc0fd8b0463f0d2861e034704" +resolved_reference = "0dca2720b444cfc129e325a2e776e7249771e1ba" [[package]] name = "uri-template" diff --git a/pyproject.toml b/pyproject.toml index e362900..2d62bdd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ packages = [{ include = "MITRotor" }] python = "^3.8" numpy = ">=1.16.5" scipy = ">=1.6" -unified-momentum-model = {git = "https://github.com/Howland-Lab/Unified-Momentum-Model.git"} +unified-momentum-model = {git = "https://github.com/Howland-Lab/Unified-Momentum-Model.git", branch = "sg/curled_wave_dev"} pyyaml = "^6.0.1" [tool.poetry.group.dev.dependencies] From 06141a6bff9e6009235465712fa2b33c64c6cb98 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Sat, 25 Oct 2025 13:23:41 -0400 Subject: [PATCH 11/26] Remove explicit arguments in thust umm call --- MITRotor/Momentum.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/MITRotor/Momentum.py b/MITRotor/Momentum.py index f48a6c3..b68fcf0 100644 --- a/MITRotor/Momentum.py +++ b/MITRotor/Momentum.py @@ -239,12 +239,12 @@ def __init__(self, averaging: Literal["sector", "annulus", "rotor"] = "rotor", b self.model_Ct = UMM.ThrustBasedUnified(beta=beta) - def compute_induction(self, Cx: ArrayLike, yaw: float, tilt: float = 0.0) -> ArrayLike: - sol = self.model_Ct(Cx, yaw = yaw, tilt = tilt) + def compute_induction(self, *args, **kwargs) -> ArrayLike: + sol = self.model_Ct(*args, **kwargs) return sol.an - def compute_initial_wake_velocities(self, Ct: float, yaw: float, tilt: float = 0.0) -> ArrayLike: - sol = self.model_Ct(Ct, yaw = yaw, tilt = tilt) + def compute_initial_wake_velocities(self, *args, **kwargs) -> ArrayLike: + sol = self.model_Ct(*args, **kwargs) return sol.u4, sol.v4, sol.w4 From 3cc26b479050263de2856752646c9f37e29b4c5d Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Sat, 25 Oct 2025 16:32:23 -0400 Subject: [PATCH 12/26] Add momentum model check --- MITRotor/BEMSolver.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/MITRotor/BEMSolver.py b/MITRotor/BEMSolver.py index 5469abf..58ad653 100644 --- a/MITRotor/BEMSolver.py +++ b/MITRotor/BEMSolver.py @@ -153,12 +153,14 @@ def __init__( aerodynamic_model: Optional[AerodynamicModel] = None, ): self.rotor = rotor - self.geometry: BEMGeometry = geometry or BEMGeometry(Nr=10, Ntheta=20) self.aerodynamic_model = aerodynamic_model or DefaultAerodynamics() self.tiploss_model: TipLoss.TipLossModel = tiploss_model or TipLoss.PrandtlTipLoss(root_loss=True) - self.momentum_model: Momentum.MomentumModel = momentum_model or Momentum.HeckMomentum() self.tangential_induction_model = tangential_induction_model or DefaultTangentialInduction() + # need to pass in a momentum model from MITRotor - NOT from UMM + if momentum_model is not None and not isinstance(momentum_model, Momentum.MomentumModel): + raise TypeError(f"Expected MomentumModel from MITRotor or None, got {type(momentum_model).__name__}") + self.momentum_model: Momentum.MomentumModel = momentum_model or Momentum.HeckMomentum() # self._solidity = self.rotor.solidity(self.geometry.mu) From 3075fd6ab9603ea87d7009be74fa8fa390941e79 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Sat, 25 Oct 2025 17:42:27 -0400 Subject: [PATCH 13/26] Update decendencies --- poetry.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index e66b6dd..844bd72 100644 --- a/poetry.lock +++ b/poetry.lock @@ -5105,7 +5105,7 @@ figures = ["dualitic @ git+https://github.com/jaimeliew1/Dualitic.git", "ipykern type = "git" url = "https://github.com/Howland-Lab/Unified-Momentum-Model.git" reference = "sg/curled_wave_dev" -resolved_reference = "0dca2720b444cfc129e325a2e776e7249771e1ba" +resolved_reference = "67a0d3892230941888d4ab616900eeb9ead41d36" [[package]] name = "uri-template" From c5ac2b51dfbb5b98c29bf89b15ea47abebd73124 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Sat, 25 Oct 2025 22:15:55 -0400 Subject: [PATCH 14/26] Make yaw keyword and update error messages --- MITRotor/Momentum.py | 22 +++++++++++----------- poetry.lock | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/MITRotor/Momentum.py b/MITRotor/Momentum.py index b68fcf0..0bdf2a3 100644 --- a/MITRotor/Momentum.py +++ b/MITRotor/Momentum.py @@ -35,11 +35,11 @@ def __call__( ... @abstractmethod - def compute_induction(self, Cx: ArrayLike, yaw: float, tilt:float = 0) -> ArrayLike: + def compute_induction(self, Cx: ArrayLike, yaw: float = 0, tilt:float = 0) -> ArrayLike: ... @abstractmethod - def compute_initial_wake_velocities(self, Ct: float, yaw: float, tilt: float = 0.0) -> ArrayLike: + def compute_initial_wake_velocities(self, Ct: float, yaw: float = 0, tilt: float = 0.0) -> ArrayLike: ... @@ -63,7 +63,7 @@ def _func_rotor( ) ) - return self.compute_induction(rotor_avg_axial_force, yaw, tilt = tilt) + return self.compute_induction(rotor_avg_axial_force, yaw = yaw, tilt = tilt) @@ -86,7 +86,7 @@ def _func_annulus( )[:, None] * np.ones(geom.shape) - return self.compute_induction(annulus_avg_axial_force, yaw, tilt = tilt) + return self.compute_induction(annulus_avg_axial_force, yaw = yaw, tilt = tilt) def _func_sector( self, @@ -100,7 +100,7 @@ def _func_sector( ) -> ArrayLike: axial_force = np.clip(aero_props.C_x_corr, 0, 1.69) - return self.compute_induction(axial_force, yaw, tilt = tilt) + return self.compute_induction(axial_force, yaw = yaw, tilt = tilt) def __call__( self, @@ -122,12 +122,12 @@ def __init__(self, a = 1/3): def compute_induction(self, Cx, yaw, tilt = 0) -> ArrayLike: if tilt != 0: - raise ValueError("Tilt not supported by the Madsen momentum model. Use UMM.") + raise ValueError("Tilt not supported by the ConstantInduction momentum model. Use UMM.") return self.a * np.ones_like(yaw) def compute_initial_wake_velocities(self, Ct: float, yaw: float, tilt: float = 0.0) -> ArrayLike: if tilt != 0: - raise ValueError("Tilt not supported by the Madsen momentum model. Use UMM.") + raise ValueError("Tilt not supported by the ConstantInduction momentum model. Use UMM.") u4 = 1 - 2 * self.a v4 = - (1/4) * Ct * np.sin(yaw) w4 = 0.0 @@ -148,12 +148,12 @@ def __init__(self, averaging: Literal["sector", "annulus", "rotor"] = "rotor"): def compute_induction(self, Cx, yaw, tilt = 0): if tilt != 0: - raise ValueError("Tilt not supported by the Madsen momentum model. Use UMM.") + raise ValueError("Tilt not supported by the ClassicalMomentum momentum model. Use UMM.") return 0.5 * (1 - np.sqrt(1 - Cx)) def compute_initial_wake_velocities(self, Ct: float, yaw: float, tilt: float = 0.0) -> ArrayLike: if tilt != 0: - raise ValueError("Tilt not supported by the Madsen momentum model. Use UMM.") + raise ValueError("Tilt not supported by the ClassicalMomentum momentum model. Use UMM.") u4 = np.sqrt(1 - Ct) v4 = - (1/4) * Ct * np.sin(yaw) w4 = 0.0 @@ -185,7 +185,7 @@ def __init__( def compute_induction(self, Cx: ArrayLike, yaw: float, tilt: float = 0.0) -> ArrayLike: if tilt != 0: - raise ValueError("Tilt not supported by the Madsen momentum model for BEM. Use UMM.") + raise ValueError("Tilt not supported by the HeckMomentum model for BEM. Use UMM.") Ctc = 4 * self.ac * (1 - self.ac) / (1 + 0.25 * (1 - self.ac) ** 2 * np.sin(yaw) ** 2) slope = (16 * (1 - self.ac) ** 2 * np.sin(yaw) ** 2 - 128 * self.ac + 64) / ( (1 - self.ac) ** 2 * np.sin(yaw) ** 2 + 4 @@ -209,7 +209,7 @@ def compute_induction(self, Cx: ArrayLike, yaw: float, tilt: float = 0.0) -> Arr def compute_initial_wake_velocities(self, Ct: float, yaw: float, tilt: float = 0.0) -> ArrayLike: if tilt != 0: - raise ValueError("Tilt not supported by the Heck momentum model for BEM. Use UMM.") + raise ValueError("Tilt not supported by the HeckMomentum model for BEM. Use UMM.") a = self.compute_induction(Ct, yaw) u4 = 1 - Ct /(2 * (1 - a)) v4 = - (1/4) * Ct * np.sin(yaw) diff --git a/poetry.lock b/poetry.lock index 844bd72..04d8c52 100644 --- a/poetry.lock +++ b/poetry.lock @@ -5105,7 +5105,7 @@ figures = ["dualitic @ git+https://github.com/jaimeliew1/Dualitic.git", "ipykern type = "git" url = "https://github.com/Howland-Lab/Unified-Momentum-Model.git" reference = "sg/curled_wave_dev" -resolved_reference = "67a0d3892230941888d4ab616900eeb9ead41d36" +resolved_reference = "a049e786b1e24530d52cc81ef0a34998a2fd1a54" [[package]] name = "uri-template" From cda596578096284ec67846d9694b5a23fdcaec74 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Mon, 27 Oct 2025 22:13:53 -0400 Subject: [PATCH 15/26] Update UMM version --- poetry.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/poetry.lock b/poetry.lock index 04d8c52..c0c2239 100644 --- a/poetry.lock +++ b/poetry.lock @@ -411,15 +411,15 @@ css = ["tinycss2 (>=1.1.0,<1.3)"] [[package]] name = "bleach" -version = "6.2.0" +version = "6.3.0" description = "An easy safelist-based HTML-sanitizing tool." optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e"}, - {file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f"}, + {file = "bleach-6.3.0-py3-none-any.whl", hash = "sha256:fe10ec77c93ddf3d13a73b035abaac7a9f5e436513864ccdad516693213c65d6"}, + {file = "bleach-6.3.0.tar.gz", hash = "sha256:6f3b91b1c0a02bb9a78b5a454c92506aa0fdf197e1d5e114d2e00c6f64306d22"}, ] [package.dependencies] @@ -2421,15 +2421,15 @@ files = [ [[package]] name = "lark" -version = "1.3.0" +version = "1.3.1" description = "a modern parsing library" optional = false python-versions = ">=3.8" groups = ["dev"] markers = "python_version >= \"3.12\"" files = [ - {file = "lark-1.3.0-py3-none-any.whl", hash = "sha256:80661f261fb2584a9828a097a2432efd575af27d20be0fd35d17f0fe37253831"}, - {file = "lark-1.3.0.tar.gz", hash = "sha256:9a3839d0ca5e1faf7cfa3460e420e859b66bcbde05b634e73c369c8244c5fa48"}, + {file = "lark-1.3.1-py3-none-any.whl", hash = "sha256:c629b661023a014c37da873b4ff58a817398d12635d3bbb2c5a03be7fe5d1e12"}, + {file = "lark-1.3.1.tar.gz", hash = "sha256:b426a7a6d6d53189d318f2b6236ab5d6429eaf09259f1ca33eb716eed10d2905"}, ] [package.extras] @@ -5105,7 +5105,7 @@ figures = ["dualitic @ git+https://github.com/jaimeliew1/Dualitic.git", "ipykern type = "git" url = "https://github.com/Howland-Lab/Unified-Momentum-Model.git" reference = "sg/curled_wave_dev" -resolved_reference = "a049e786b1e24530d52cc81ef0a34998a2fd1a54" +resolved_reference = "c1448896cc66ba8dcb2a0e94e709ecc4f5a7b760" [[package]] name = "uri-template" From 718adaffdc362318e21f62f0073359afdb9b6162 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Tue, 28 Oct 2025 11:36:22 -0400 Subject: [PATCH 16/26] Small cleanups for PR --- MITRotor/Geometry.py | 2 +- examples/example_01_basic_BEM.py | 10 ---------- tests/test_bem.py | 5 +---- 3 files changed, 2 insertions(+), 15 deletions(-) diff --git a/MITRotor/Geometry.py b/MITRotor/Geometry.py index 9efd32a..09cac9d 100644 --- a/MITRotor/Geometry.py +++ b/MITRotor/Geometry.py @@ -32,7 +32,7 @@ def cartesian(self, yaw: float, tilt: float) -> Tuple[ArrayLike, ...]: Returns the grid point locations in cartesian coordinates nondimensionialized by rotor radius. Origin is located at hub center. - Note: effect of yaw and tilt anglea on grid points is not yet implemented. + Note: effect of yaw and tilt angles on grid points is not yet implemented. """ # Probable sign error here. X = np.zeros_like(self.mu_mesh) diff --git a/examples/example_01_basic_BEM.py b/examples/example_01_basic_BEM.py index 8155698..7c05989 100644 --- a/examples/example_01_basic_BEM.py +++ b/examples/example_01_basic_BEM.py @@ -3,16 +3,6 @@ from MITRotor import BEM, IEA10MW, UnifiedMomentum, IEA15MW if __name__ == "__main__": - rotor_model=BEM(IEA15MW(), momentum_model= UnifiedMomentum(averaging = "rotor")) - pitch = 0 - tsr = 7 - yaw = 0 - tilt = 0 - REWS = np.float64(0.9999800001000003) - wdir = np.zeros((10, 20)) - Us = np.ones((10, 20)) - rotor_model(pitch, tsr, yaw = yaw, tilt = tilt, U = Us / REWS, wdir = wdir) - # Initialize rotor using the IEA10MW reference wind turbine model. rotor = IEA10MW() bem = BEM(rotor=rotor) diff --git a/tests/test_bem.py b/tests/test_bem.py index d5e4b7d..aeb6f32 100644 --- a/tests/test_bem.py +++ b/tests/test_bem.py @@ -64,7 +64,4 @@ def test_model_yaw_tilt_comparison(): assert np.isclose(yaw_sol.Cl(), tilt_sol.Cl(), atol = atol) assert np.isclose(yaw_sol.Cd(), yaw_tilt_sol.Cd(), atol = atol) assert np.isclose(yaw_sol.aoa(), tilt_sol.aoa(), atol = atol) - assert np.isclose(yaw_sol.aoa(), yaw_tilt_sol.aoa(), atol = atol) - - -test_model_yaw_tilt_comparison() \ No newline at end of file + assert np.isclose(yaw_sol.aoa(), yaw_tilt_sol.aoa(), atol = atol) \ No newline at end of file From 6d08f59b60f4b4655971fb1bbe020d3f23e9729b Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Tue, 28 Oct 2025 15:17:00 -0400 Subject: [PATCH 17/26] Add in new example to explore rotor average values --- examples/example_04_aero_props_yaw_tilt.ipynb | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 examples/example_04_aero_props_yaw_tilt.ipynb diff --git a/examples/example_04_aero_props_yaw_tilt.ipynb b/examples/example_04_aero_props_yaw_tilt.ipynb new file mode 100644 index 0000000..293f3a1 --- /dev/null +++ b/examples/example_04_aero_props_yaw_tilt.ipynb @@ -0,0 +1,104 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 23, + "id": "d21f790b", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/sky/Library/Python/3.9/lib/python/site-packages/MITRotor/TipLoss.py:56: RuntimeWarning: divide by zero encountered in divide\n", + " rotor.N_blades / 2 * (1 - geometry.mu_mesh) / (np.maximum(geometry.mu_mesh, 0.0001) * np.abs(np.sin(phi)))\n", + "/Users/sky/Library/Python/3.9/lib/python/site-packages/MITRotor/TipLoss.py:62: RuntimeWarning: divide by zero encountered in divide\n", + " rotor.N_blades\n", + "/Users/sky/Library/Python/3.9/lib/python/site-packages/UnifiedMomentumModel/Momentum.py:184: RuntimeWarning: divide by zero encountered in divide\n", + " np.cos(yaw)\n", + "/Users/sky/Library/Python/3.9/lib/python/site-packages/UnifiedMomentumModel/Momentum.py:195: RuntimeWarning: invalid value encountered in divide\n", + " -dp / (0.5 * Ctprime * np.cos(yaw) ** 2)\n", + "/Users/sky/Library/Python/3.9/lib/python/site-packages/UnifiedMomentumModel/Momentum.py:196: RuntimeWarning: invalid value encountered in divide\n", + " + (1 - u4**2 - v4**2) / (Ctprime * np.cos(yaw) ** 2)\n", + "/Users/sky/Library/Python/3.9/lib/python/site-packages/UnifiedMomentumModel/Utilities/FixedPointIteration.py:56: RuntimeWarning: All-NaN axis encountered\n", + " max_resid = [np.nanmax(np.abs(_r)) for _r in residuals]\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from MITRotor import BEM, IEA15MW, UnifiedMomentum, IEA15MW\n", + "\n", + "\n", + "# Initialize rotor using the IEA10MW reference wind turbine model.\n", + "rotor = IEA15MW()\n", + "bem = BEM(rotor=rotor, momentum_model=UnifiedMomentum(averaging=\"sector\"))\n", + "\n", + "# solve BEM for a control set point.\n", + "pitch, tsr, misalignment = np.deg2rad(0), 7.0, np.deg2rad(30.0)\n", + "yaw_sol = bem(pitch, tsr, misalignment, 0)\n", + "tilt_sol = bem(pitch, tsr, 0, misalignment)\n", + "\n", + "idx = 5\n", + "mu_mesh = yaw_sol.geom.mu_mesh[:, idx]\n", + "theta_mesh = yaw_sol.geom.theta_mesh[:, idx]\n", + "Cax_yaw = yaw_sol.Cax(grid = \"sector\")[:, idx]\n", + "# Cax_tilt = tilt_sol.a(grid = \"sector\")[idx, :]\n", + "\n", + "plt.plot(mu_mesh, Cax_yaw, label = \"yaw\")\n", + "# plt.plot(theta_mesh, Cax_tilt, label = \"tilt\")\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "149a8a6c", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 219665a4172e9634015906d8cfda72c92a6211d5 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Tue, 28 Oct 2025 15:23:50 -0400 Subject: [PATCH 18/26] Updated example --- examples/example_04_aero.ipynb | 86 ++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 examples/example_04_aero.ipynb diff --git a/examples/example_04_aero.ipynb b/examples/example_04_aero.ipynb new file mode 100644 index 0000000..eb2d37a --- /dev/null +++ b/examples/example_04_aero.ipynb @@ -0,0 +1,86 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 11, + "id": "b84e9b55", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from MITRotor import BEM, IEA15MW, UnifiedMomentum, IEA15MW\n", + "\n", + "\n", + "# Initialize rotor using the IEA10MW reference wind turbine model.\n", + "rotor = IEA15MW()\n", + "bem = BEM(rotor=rotor, momentum_model=UnifiedMomentum(averaging=\"rotor\"))\n", + "\n", + "# solve BEM for a control set point.\n", + "pitch, tsr, misalignment = np.deg2rad(0), 7.0, np.deg2rad(30.0)\n", + "yaw_sol = bem(pitch, tsr, misalignment)\n", + "# tilt_sol = bem(pitch, tsr, 0, misalignment)\n", + "\n", + "idx = 5\n", + "mu_mesh = yaw_sol.geom.mu_mesh[idx, :]\n", + "theta_mesh = yaw_sol.geom.theta_mesh[idx, :]\n", + "Cax_yaw = yaw_sol.a(grid = \"sector\")[idx, :]\n", + "# Cax_tilt = tilt_sol.a(grid = \"sector\")[idx, :]\n", + "\n", + "plt.plot(theta_mesh, Cax_yaw, label = \"yaw\")\n", + "# plt.plot(theta_mesh, Cax_tilt, label = \"tilt\")\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "84b0d3ca", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From b31c686df69beb6a5c959f9f8d103b63d9940a76 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Tue, 28 Oct 2025 20:42:36 -0400 Subject: [PATCH 19/26] Update BEM calcualtions to have correct phase over the rotor based on tilt --- MITRotor/Aerodynamics.py | 11 +- MITRotor/BEMSolver.py | 13 +++ examples/example_04_aero.ipynb | 86 --------------- examples/example_04_aero_props_yaw_tilt.ipynb | 104 ------------------ .../example_04_yaw_tilt_rotor_comparison.py | 36 ++++++ tests/test_bem.py | 7 +- 6 files changed, 60 insertions(+), 197 deletions(-) delete mode 100644 examples/example_04_aero.ipynb delete mode 100644 examples/example_04_aero_props_yaw_tilt.ipynb create mode 100644 examples/example_04_yaw_tilt_rotor_comparison.py diff --git a/MITRotor/Aerodynamics.py b/MITRotor/Aerodynamics.py index 224b6e9..265872c 100644 --- a/MITRotor/Aerodynamics.py +++ b/MITRotor/Aerodynamics.py @@ -269,15 +269,14 @@ def __call__( AerodynamicProperties: Calculated aerodynamic properties stored in AerodynamicProperties object. """ - local_yaw = -yaw - # rotate to a yaw-only frame that includes tilt - eff_yaw = calc_eff_yaw(local_yaw, tilt) - Vax = U * ((1 - an) * np.cos(eff_yaw)) + # calculate values in "yaw-only" frame + local_yaw = -self.eff_yaw + Vax = U * ((1 - an) * np.cos(local_yaw)) Vtan = ( (1 + aprime) * tsr * geom.mu_mesh - U * (1 - an) - * np.cos(geom.theta_mesh) - * np.sin(eff_yaw) + * np.cos(self.eff_theta_mesh) + * np.sin(local_yaw) ) phi = np.arctan2(Vax, Vtan) diff --git a/MITRotor/BEMSolver.py b/MITRotor/BEMSolver.py index 58ad653..daea9bc 100644 --- a/MITRotor/BEMSolver.py +++ b/MITRotor/BEMSolver.py @@ -167,6 +167,19 @@ def __init__( def sample_points(self, yaw: float = 0.0, tilt: float = 0.0) -> tuple[ArrayLike, ArrayLike, ArrayLike]: X, Y, Z = self.geometry.cartesian(yaw, tilt) return X, Y, Z + + def pre_process(self, pitch, tsr, yaw = 0, tilt = 0, **kwargs): + # switch reference frame to a "yaw-only" frame where y' is aligned with the lateral wake + self.aerodynamic_model.eff_yaw = calc_eff_yaw(yaw, tilt) + if tilt == 0: + dtheta = 0 + elif yaw == 0: + dtheta = np.pi / 2 + else: # non-zero yaw and tilt + sin_eff = np.sin(self.aerodynamic_model.eff_yaw) + dtheta = np.arccos(np.sin(yaw) / sin_eff) + self.aerodynamic_model.eff_theta_mesh = self.geometry.theta_mesh + dtheta + return def initial_guess(self, *args, **kwargs) -> Tuple[ArrayLike, ...]: a = (1 / 3) * np.ones(self.geometry.shape) diff --git a/examples/example_04_aero.ipynb b/examples/example_04_aero.ipynb deleted file mode 100644 index eb2d37a..0000000 --- a/examples/example_04_aero.ipynb +++ /dev/null @@ -1,86 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 11, - "id": "b84e9b55", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkYAAAGdCAYAAAD3zLwdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABjUUlEQVR4nO3deVxU9f4/8NfMADOsI5vsAu4roiAkriVKZZm3TLPuxSztVtbNqK9mv1xu9c21rrcy/aaGdruulUp6Ly4oZka454K7uIAMmzJswsDM5/fHwBQhyihwZobX8/GYx+Ny5iwvziXnPZ/zPp8jE0IIEBERERHkUgcgIiIishQsjIiIiIhqsDAiIiIiqsHCiIiIiKgGCyMiIiKiGiyMiIiIiGqwMCIiIiKqwcKIiIiIqIad1AGsjcFgwPXr1+Hq6gqZTCZ1HCIiImoEIQRKSkrg7+8PubzhcSEWRma6fv06goKCpI5BRERE9+DatWsIDAxs8H0WRmZydXUFYDyxbm5uEqchIiKixiguLkZQUJDpc7whLIzMVHv5zM3NjYURERGRlblbGwybr4mIiIhqsDAiIiIiqsHCiIiIiKgGCyMiIiKiGiyMiIiIiGqwMCIiIiKqwcKIiIiIqAYLIyIiIqIaLIyIiIiIarAwIiIiIqrBwoiIiIioBgsjIiIiohp8iKyFWLHvEvJKKhHs6YRQT2cEeznDz00FufzOD7sjIiKyZiUVVbhSWI7MgjJcKSzD5cJyvPtoN3g4O0iSh4WRhfjh1+v4NUtbZ5mDnRzBHk4I9nRGiKcTQrycEeLpjBAvJ/ipHaFg0URERFZAe6vKVPRcLijD5cIyXKn534VlunrrP9MvCB7OHhIkZWFkMZ6LDkbf4GLTH8q1m+XQVRtwPq8U5/NK663voJAjyMMRoV7O9Qon/zYsmoiIqGVpy6twudBY9FwuKDf97yuF5bhxm+Ln97xcHBDi+dvnmY+bqoVS18fCyEKM7RdU5+dqvQE52oqaPzBjlX2lsAyZBWW4duMWdHoDLuaX4WJ+Wb192StkCPJwqvkjczIVTz393eDpomypX4mIiGyM3iBwMluLzIKyOpe+LheWoai86o7bersqjV/iPZ0R4mX8fKr9nHJV2bfQb3B3MiGEkDqENSkuLoZarYZWq4Wbm5skGfQGgRztLVNFbiyYjIXTlRvGkabbsVfI8ER4ACYPao8uvq4tnJqIiKxVua4aGw9lYeVPmbh6o7zB9XzclAj2dK7pla0pgmqKH2eltGMxjf38ZmFkJksojO7EYBDIKa7AlYLfqvjLBWW4mF9aZ3RpcGdvvDSoPQZ09IRMxstuRERUX15xBVanXcY3v1yF9pZxRMhVZYce/m6mkZ8QT2MvbLCnE5wcLPdCFAujZmLphdGdHL16Eyv2ZeK/J3NgqPl/vZufG14aHIrHwvxhr+DsDUREBJzLLcGKfZew+eh16PTGqxAhnk54cWAonooItOgCqCEsjJqJNRdGta4WluOr/ZnYcOgaynV6AICvmwoTB4RgfHQ7uFnQtV4iImoZQgikXSzEl/suIfVsvml5RLA7Jg9qj+Hdfaz6xh4WRs3EFgqjWkXlOvw7/SpW/XwZ+SWVAABnBwWeiWqHiQNCEOjuJHFCIiJqblV6A7Ydz8GXP15CRk4xAEAmAx7u4YtJg9ojIthd4oRNo7Gf3/d07WTJkiUICQmBSqVCdHQ0Dhw40OC6y5cvx6BBg+Du7g53d3fExsbWW18IgVmzZsHPzw+Ojo6IjY3F+fPnTe+npqZCJpPd9nXw4EHTehs2bEB4eDicnJwQHByMhQsX1suTmpqKvn37QqlUomPHjli1atW9nAKb0MbJAVMe7Iifpj+IhWPC0NnHBWU6PVb+lIkhC1Px+tqjOJ5VJHVMIiJqBsUVVfjyx4sYvGAPpq4/hoycYjjaKzChfzBS3x6KpX+OsJmiyBxmjxitX78e8fHxWLZsGaKjo7F48WJs3LgRZ8+eRdu2beut/9xzz2HAgAGIiYmBSqXC/PnzsWnTJpw6dQoBAQEAgPnz52Pu3LlYvXo1QkNDMXPmTJw4cQIZGRlQqVTQ6XS4ceNGnf3OnDkTKSkpuHjxImQyGf773/9i1KhR+OyzzzBixAicPn0akydPxrvvvovXXnsNAJCZmYmePXvi5ZdfxqRJk5CSkoKpU6di27ZtiIuLa9Tvb0sjRn8khMDec/lYsS8TP10oMC1/oL0HJg9qjwe7tOVM3EREVu560S0k7s/E2gPXUFpZDQDwclHi+ZhgPBcdDHeJZpxubs12KS06Ohr9+vXD559/DgAwGAwICgrC66+/jnfeeeeu2+v1eri7u+Pzzz9HfHw8hBDw9/fHW2+9hbfffhsAoNVq4ePjg1WrVuGZZ56pt4+qqioEBATg9ddfx8yZMwEAzz77LKqqqrBx40bTep999hkWLFiAq1evQiaTYfr06di2bRtOnjxpWueZZ55BUVERkpOTG/X723Jh9HunrmuxYl8mfvj1OqprOrU7eDtj8qD2GN0nACp7hcQJiYjIHCeztVi+7xK2Hs+Bvubf9U5tXTB5UHuMCve3+X/Xm+VSmk6nw+HDhxEbG/vbDuRyxMbGIi0trVH7KC8vR1VVFTw8jFN9Z2ZmQqPR1NmnWq1GdHR0g/tMSkpCYWEhJk6caFpWWVkJlaruTJmOjo7IysrClStXAABpaWl1jgMAcXFxd8xeWVmJ4uLiOq/WoIe/Gv8YF4590x/EXwe3h6vSDhfzy/DO9ycwcP5ufJpy/q4zmRIRkbQMBoE9Z/Iw/stf8NhnP2HLsevQGwRiOngicWI/bJ86GGP7Bdl8UWQOswqjgoIC6PV6+Pj41Fnu4+MDjUbTqH1Mnz4d/v7+pgKldjtz9rly5UrExcUhMDDQtCwuLg7ff/89UlJSYDAYcO7cOXz88ccAgJycHNOxbnec4uJi3Lp167bHmjt3LtRqtekVFBR02/VslZ/aETMe7YafZzyE90Z2Q0AbRxSU6vDJznOImZeC9zafQGZB/dm3iYhIOhVVeqw/eBUjFv+IiasOIu1SIRRyGUaH+2Pr6wOxZvIDbI9oQItORDBv3jysW7cOqamp9UZ3GisrKwvbt2/Hhg0b6iyfPHkyLl68iMceewxVVVVwc3PDG2+8gTlz5kAuv/f5eWbMmIGEhATTz8XFxa2uOAIAV5U9Jg1qjwkxIfjPiRws33cJJ7OL8c0vV/Hv9KsY3s0Hb43owhm1iYgkpKs2YPm+S0jcfxkFpca7jV2UdhgfFYTnB4QioI2jxAktn1mFkZeXFxQKBXJzc+ssz83Nha+v7x23XbRoEebNm4ddu3YhLCzMtLx2u9zcXPj5+dXZZ3h4eL39JCYmwtPTE6NGjaqzXCaTYf78+fjoo4+g0Wjg7e2NlJQUAED79u1Nx7pddjc3Nzg63v6PRalUQqnk88Vq2SvkeCI8AKN6++OXSzewYt8lpJzJw46MXOw7X4B/jAvHwz3v/LdARERN70aZDi//6zAOXDberOSvVmHigFCMiwri/HRmMGsoxcHBAREREaaCAzA2X6ekpKB///4NbrdgwQJ88MEHSE5ORmRkZJ33QkND4evrW2efxcXFSE9Pr7dPIQQSExMRHx8Pe/vb/5+sUCgQEBAABwcHrF27Fv3794e3tzcAoH///nWOAwA7d+68Y3a6PZlMhv4dPLHy+X7YlTAYgzp54VaVHi9/cxhL9lwAp8ciImo553NL8MSSn3Dg8g24Ku2w6One2DvtQUwe3J5FkbmEmdatWyeUSqVYtWqVyMjIEC+99JJo06aN0Gg0Qggh/vKXv4h33nnHtP68efOEg4OD+Pbbb0VOTo7pVVJSUmedNm3aiC1btojjx4+LJ554QoSGhopbt27VOfauXbsEAHH69Ol6ufLz88XSpUvF6dOnxdGjR8Xf/vY3oVKpRHp6ummdS5cuCScnJ/E///M/4vTp02LJkiVCoVCI5OTkRv/+Wq1WABBarbbR27QGVdV6MXvLSRE8fasInr5VTF13VNzSVUsdi4jI5u0+kyt6zkoWwdO3ikHzd4tzmmKpI1mkxn5+m10YCSHEZ599Jtq1ayccHBxEVFSU+OWXX0zvDRkyREyYMMH0c3BwsABQ7zV79mzTOgaDQcycOVP4+PgIpVIphg0bJs6ePVvvuOPHjxcxMTG3zZSfny8eeOAB4ezsLJycnMSwYcPq5Kq1Z88eER4eLhwcHET79u1FYmKiWb87C6M7+1faZdF+xjYRPH2r+NOSn0RecYXUkYiIbJLBYBAr910Soe8Yv5A+vexnUVhaKXUsi9XYz28+EsRMrWUeo/ux/0IBXvnmMIorqhHQxhErJkSimx/PFRFRU6nSGzBryymsPXAVADA2MhAfju4FBzs+DLwhzfpIEKI7GdDRC5unDEColzOyi25hzNKfsSsj9+4bEhHRXRWV6xC/8gDWHrgKmQx4b2Q3zH8qjEVRE+FZpGbR3tsFm18dgAEdPVGm02Pyvw7h//ZeZFM2EdF9uJhfitFL9iPtUiGcHRRYER+JSYPaQybjfERNhYURNRu1kz1WTYzCc9HtIAQw979n8D/fHkdltV7qaEREVmff+XyMXrIflwvLEdDGEd+9GoNh3XzuviGZhYURNSt7hRwfju6Jv4/qAbkM+PZwFv6y4gAKayYeIyKiu/tX2mU8n3gQJRXViAh2x5bXBqCrL3s3mwMLI2p2MpkME2JCkDgxCq5KOxy4fAOjv9iPc7klUkcjIrJo1XoDZm05iZlbTkFvEHiyTwDWTI6GlwsnHm4uLIyoxQzp7I3vX41BOw8nXLtxC09+8TP2nM2TOhYRkUXS3qrCxFUH8XWa8UHo0x7ugo/H9obSjg98bU4sjKhFdfJxxeYpAxAV6oHSymq8uOogVv6UyaZsIqLfuVxQhj99sR/7zhfA0V6BZX+OwKtDO7LJugWwMKIW5+HsgG9ejMbYyEAYBPDB1gy8u+kEdNUGqaMREUnu54sFeGLJflzKL4OfWoWNL/fnMyhbEAsjkoSDnRzznwrDeyO7QSYD1h64hviv0nGzTCd1NCIiyaw9cBXxKw9Ae6sKvYPaYMuUAegZoJY6VqvCwogkI5PJMGlQe6yIj4SzgwK/XLqBP32xHxfySqWORkTUovQGgfd/yMCM70+g2iDweG9/rH/pAbR1U0kdrdVhYUSSG9bNB9+9GoOANo64XFhec109X+pYREQtoqSiCi+uPoiv9mcCABKGd8anz4RDZc8maymwMCKL0NXXDVteG4CIYHeUVFTj+cSD+DrtstSxiIia1dXCcjz5xc9IPZsPlb0cS57ti78N68QmawmxMCKL4eWixJrJ0XiybwD0BoFZW05h5uaTqNazKZuIbM+BTOOcbufzSuHjpsSGv/bHyDA/qWO1eiyMyKIo7RT4+OnemP5wV8hkwL9+uYLnEw9CW14ldTQioiaz8dA1PLfiF9wo06FngBu2TBmIsMA2UscisDAiCySTyfDK0A5Y9ucIONor8NOFAvzpi/3IulkudTQiovsihMCCZONzI6v0Ao/28sXGv8bAV80ma0vBwogsVlwPX3z7Sn/4qVW4VFCGl785zAfQEpFV23goC1+kXgQA/O2hjvh8fF84OrDJ2pKwMCKL1sNfjW9fiYG7kz1OZhfjo22npY5ERHRPzmiKMXPLSQDA2yM6I2FEF8jlbLK2NCyMyOIFtHHEJ2PDAQCr067gPydypA1ERGSmsspqTPn3EVRWGzC4szdeHdpR6kjUABZGZBUe7NoWLw/pAACY/u1xXCkskzgREVHjCCHw3uaTuJhfBh83Jf4xtjdHiiwYCyOyGm+N6IzIYHeUVFZjypojqKhivxERWb4Nh65h09FsKOQyfDa+LzxdlFJHojtgYURWw14hx2fP9vmt3+g/7DciIst2RlOMWVtOATB+uYsK9ZA4Ed0NCyOyKn5qR3wyLhwA8HXaFWw7zn4jIrJMZZXVeLWmr2hIZ2+8PLiD1JGoEVgYkdV5sEtbvDK0pt/ou+O4XMB+IyKyLEII/L9NJ3Apvwy+bip8wr4iq8HCiKzSW8M7o1+IO0rZb0REFmj9wWvYfOy6sa/o2T7sK7IiLIzIKtkp5Ph0fB94ODvg1PVi/C/nNyIiC3E6pxizk4x9RW+P6IJ+IewrsiYsjMhq+akd8cnY3gCMz1Tbevy6xImIqLUr/d18RUO7eOOvg9tLHYnMxMKIrNrQLm3xak2/0TvfnWC/ERFJRgiBd78/gUsFZfBTq/DJ2HD2FVkhFkZk9RKGd0ZUiAdKa+4AYb8REUlh3cFrSPq1pq+o5lI/WR8WRmT1ft9vlJFTjA+3ZUgdiYhamYzrv/UV/U9cF0Syr8hqsTAim+CrVuEfNfMbffPLVfzwK/uNiKhllFZW47U1R6CrNuDBLt54aRD7iqwZCyOyGUM6e2PKg8Z+oxnfn0Am+42IqJn9sa/oY/YVWT0WRmRT3ow1Trlfe2cI+42IqDmtPfBbX9Hnz7KvyBawMCKbYqeQ47PxfeBZ02/0wVb2GxFR88i4Xow5Pxj7iqbFdUFEMPuKbAELI7I5Pm7GfiOZDPh3+lUksd+IiJpYSUUVptT0FT3UtS0ms6/IZrAwIps0uLM3pgztCACY8d1x9hsRUZMRQpj6GP3VKnz8NJ+DZktYGJHNmhrbCdGhHijT6Tm/ERE1mTUHrmLr8RzYyWX47Nm+cGdfkU1hYUQ2q3Z+I09nB5zOKcb77Dciovt06roWf//B+G/JtIe7ICLYXeJE1NRYGJFN+32/0Zr0q9hyLFvqSERkpUoqqjDl38a+omFd22LSQPYV2SIWRmTzBnf2xmsPGvuN3v3+BC7ll0qciIisTW1f0eXCcvirVVjEviKbxcKIWoWpsZ3xQHtjv9GUNUfZb0REZvl3OvuKWgsWRtQqKOQyfPpMH3i5GPuNansEiIju5mS21tSjOP3hruwrsnEsjKjVaPu7fqO1B9hvRER39/v5imK7tcWkQaFSR6JmxsKIWpVBnbzx+u/6jS6y34iIGiCEwDvfn8CVwnIEtHHEoqd7QyZjX5GtY2FErc4bv+834vxGRNSAb9KvYpupr6gP2jixr6g1uKfCaMmSJQgJCYFKpUJ0dDQOHDjQ4LrLly/HoEGD4O7uDnd3d8TGxtZbXwiBWbNmwc/PD46OjoiNjcX58+dN76empkImk932dfDgQdN627dvxwMPPABXV1d4e3vjqaeewuXLl++6H41Gcy+ngazU7/uNzmhK8PeaZx0REdU6ma3FBzW9iO880hV927GvqLUwuzBav349EhISMHv2bBw5cgS9e/dGXFwc8vLybrt+amoqxo8fjz179iAtLQ1BQUEYMWIEsrN/6+9YsGABPv30Uyxbtgzp6elwdnZGXFwcKioqAAAxMTHIycmp85o0aRJCQ0MRGRkJAMjMzMQTTzyBhx56CMeOHcP27dtRUFCAJ598sl6ms2fP1tlX27ZtzT0NZOXauqmweFyfmn6ja9h8lP1GRGRUXNtXpDf2Fb04kH1FrYowU1RUlJgyZYrpZ71eL/z9/cXcuXMbtX11dbVwdXUVq1evFkIIYTAYhK+vr1i4cKFpnaKiIqFUKsXatWtvuw+dTie8vb3F+++/b1q2ceNGYWdnJ/R6vWlZUlKSkMlkQqfTCSGE2LNnjwAgbt682ejf94+0Wq0AILRa7T3vgyzHxzvOiuDpW0W3mf8V126USR2HiCzAm+uPiuDpW0XM3BRxs6xS6jjURBr7+W3WiJFOp8Phw4cRGxtrWiaXyxEbG4u0tLRG7aO8vBxVVVXw8PAAYBzp0Wg0dfapVqsRHR3d4D6TkpJQWFiIiRMnmpZFRERALpcjMTERer0eWq0W//rXvxAbGwt7e/s624eHh8PPzw/Dhw/H/v3775i3srISxcXFdV5kO94Y1gn9QtxRrtPjn7vO330DIrJpGdeL8f0R4wjyp+PZV9QamVUYFRQUQK/Xw8fHp85yHx+fRvfpTJ8+Hf7+/qZCqHY7c/a5cuVKxMXFITAw0LQsNDQUO3bswLvvvgulUok2bdogKysLGzZsMK3j5+eHZcuW4bvvvsN3332HoKAgDB06FEeOHGkw79y5c6FWq02voKCgRv2eZB0UchnefbQbAOC7I1m8S42olftk51kAwGNhfpyvqJVq0bvS5s2bh3Xr1mHTpk1QqVT3tI+srCxs374dL774Yp3lGo0GkydPxoQJE3Dw4EHs3bsXDg4OGDNmDIQQAIAuXbrgr3/9KyIiIhATE4OvvvoKMTEx+Mc//tHg8WbMmAGtVmt6Xbt27Z5yk+Xq084dsd3awiCAf+w8J3UcIpLIkas3set0HuQy4M3hnaWOQxIxqzDy8vKCQqFAbm5uneW5ubnw9fW947aLFi3CvHnzsGPHDoSFhZmW127X2H0mJibC09MTo0aNqrN8yZIlUKvVWLBgAfr06YPBgwfjm2++QUpKCtLT0xvMFRUVhQsXLjT4vlKphJubW50X2Z6E4V0AAFuP5+B0Di+XErVGn+wwfjF6qm8gOni7SJyGpGJWYeTg4ICIiAikpKSYlhkMBqSkpKB///4NbrdgwQJ88MEHSE5ONt1FVis0NBS+vr519llcXIz09PR6+xRCIDExEfHx8fX6hsrLyyGX1/11FAqFKWNDjh07Bj8/vwbfp9ahu78bHgsz/h18vIOjRkStTdrFQvx0oQD2Chn+NqyT1HFIQmZfSktISMDy5cuxevVqnD59Gq+88grKyspMjdDx8fGYMWOGaf358+dj5syZ+OqrrxASEgKNRgONRoPSUmMvh0wmw9SpU/Hhhx8iKSkJJ06cQHx8PPz9/TF69Og6x969ezcyMzMxadKkerlGjhyJgwcP4v3338f58+dx5MgRTJw4EcHBwejTpw8AYPHixdiyZQsuXLiAkydPYurUqdi9ezemTJli7mkgG/Tm8M6Qy4Bdp3Nx9OpNqeMQUQsRQmDRDmNv0fiodgjycJI4EUnJztwNxo0bh/z8fMyaNQsajQbh4eFITk42NU9fvXq1zsjN0qVLodPpMGbMmDr7mT17NubMmQMAmDZtGsrKyvDSSy+hqKgIAwcORHJycr0+pJUrVyImJgZdu3atl+uhhx7CmjVrsGDBAixYsABOTk7o378/kpOT4ejoCMB4V91bb72F7OxsODk5ISwsDLt27cKDDz5o7mkgG9TB2wVP9Q3ExsNZ+HjHOXwzKVrqSETUAlLP5uPwlZtQ2cvxWs0jg6j1konazmRqlOLiYqjVami1WvYb2aBrN8rx0MepqNILrJ38APp38JQ6EhE1I4NB4PHPf8Kp68X46+D2mFFzlyrZnsZ+fvNZaUS/E+ThhPFR7QAAi3acBb83ENm25FManLpeDBelHV4e0kHqOGQBWBgR/cFrD3aE0k6Ow1duIvVsvtRxiKiZ6A0Cn9RM0fHiwFC4O3MyR2JhRFRPWzcVJsSEADCOGhkMHDUiskWbj2bjQl4p1I72eHEQn4dGRiyMiG7j5SEd4KK0w6nrxUg+1bhZ3YnIeuiqDVicYhwtenlIB7ip7O+yBbUWLIyIbsPD2QEv1DxR+5Od56DnqBGRTdlw6Bqu3bgFLxclJsQESx2HLAgLI6IGTBoUCrWjPS7klWLz0Wyp4xBRE6mo0uOz3caHRr/2YAc4OZg9cw3ZMBZGRA1wU9mb7lJZnHIOuuqGZ1AnIuvxzS9XkFtciYA2jhgf3U7qOGRhWBgR3cGEmGB4uShx7cYtbDjEBwgTWbvSymp8kXoRAPC3YR2htFNInIgsDQsjojtwcrDDaw8aR40+230eFVV6iRMR0f1I/CkTN8p0CPVyxlN9A6WOQxaIhRHRXYyPboeANo7ILa7EN79ckToOEd0jbXkVvtx3CQAwNbYT7BT8CKT6+FdBdBdKOwX+Nsz4/KQvUi+irLJa4kREdC++3HcRJRXV6OrrisfD/KWOQxaKhRFRIzzVNxChXs64UaZD4v5MqeMQkZkKSiuRuP8yACBheGfI5TJpA5HFYmFE1Ah2CjmmxnYCAPzfj5egLa+SOBERmeOLPRdRrtOjd1AbDO/uI3UcsmAsjIga6fEwf3T1dUVJRTW+3HdR6jhE1Eg52lv4Jt3YH/j2iM6QyThaRA1jYUTUSHK5DAnDOwMAEvdfRkFppcSJiKgxPk25AF21AdGhHhjY0UvqOGThWBgRmWF4dx/0DmqDcp0eX+zhqBGRpbtSWIaNNXOQ/U9cF44W0V2xMCIyg0wmw9sjjKNG36RfQY72lsSJiOhOFu86j2qDwNAu3ogM8ZA6DlkBFkZEZhrY0QvRoR7QVRvwacoFqeMQUQPO5ZZg8zHjcw7fGt5F4jRkLVgYEZlJJpPh7TjjP7IbD13DlcIyiRMR0e18suMchAAe7uGLXoFqqeOQlWBhRHQP+oV4YEhnb1QbBBbvOi91HCL6gxNZWiSf0kAmAxJqLn8TNQYLI6J79PYI46jR5mPZOJdbInEaIvq9RTvOAgBGhwegs4+rxGnImrAwIrpHvQLVeLiHL4QwDtkTkWU4ePkG9p7Lh51cZpqYlaixWBgR3YeEEZ0hkwHJpzQ4kaWVOg5RqyeEwMLtxtGipyODEOzpLHEisjYsjIjuQ2cfV4wODwDw29A9EUln3/kCHMi8AQc7uenhz0TmYGFEdJ+mxnaCnVyGvefycfDyDanjELVaQgjTF5Q/RwfDT+0ocSKyRiyMiO5TsKczno4MAgAs3H4WQgiJExG1TjsycnE8SwsnBwVefbCD1HHISrEwImoCfxvWEQ52chzIvIGfLhRIHYeo1TEYhOkmiIkDQuDlopQ4EVkrFkZETcBP7Yg/RwcDABZx1Iioxf1w/DrO5pbAVWWHlwZxtIjuHQsjoiby6oMd4OSgwK9ZWuzMyJU6DlGrUa03mCZa/evg9lA72UuciKwZCyOiJuLlosTEASEAgE92noPBwFEjopbw3ZEsZBaUwdPZARMHhEodh6wcCyOiJvTSoA5wVdnhjKYEPxy/LnUcIptXWa03Pcz5laEd4Ky0kzgRWTsWRkRNSO1kj78Obg8AWLzrPKr1BokTEdm2telXkV10C75uKvz5gWCp45ANYGFE1MQmDgiFp7MDMgvK8N2RLKnjENmscl01Pt9zEQDw+rCOUNkrJE5EtoCFEVETc1ba4ZWhxrtiPk25gMpqvcSJiGzT6p+voKC0Eu08nDC2Zi4xovvFwoioGfz5gWD4uCmRXXQLa9OvSh2HyOYUV1Rh2V7jaNEbwzrBXsGPM2oa/EsiagYqewVef8j4VO/P91xEua5a4kREtmXFvkxob1WhY1sXjO4TIHUcsiEsjIiaydjIIAR5OKKgtBKrf74idRwim3GjTIeV+y4BABKGd4ZCLpM4EdkSFkZEzcTBTo6pwzoDAL788SIqqthrRNQUEvdnokynRw9/Nzzcw1fqOGRjWBgRNaPRfQIQ0MYRN8urkHxSI3UcIqtXpTdg/cFrAIBXh3aEnKNF1MRYGBE1I4VchnH9jHfLrDnAJmyi+7X7TB7ySirh5eKA4d19pI5DNoiFEVEzGxsZBLkMOJB5AxfySqWOQ2TV1tZ8wRgTEQQHO36EUdPjXxVRM/NVq/BQV+M323UcNSK6Z1k3y7H3XD4A4Jl+nLeImgcLI6IW8Gy08R/x745ksQmb6B5tOHgNQgADO3ohxMtZ6jhko1gYEbWAIZ3bwl+tws3yKmw/xSZsInNV6w1Yf8jYdD0+qp3EaciW3VNhtGTJEoSEhEClUiE6OhoHDhxocN3ly5dj0KBBcHd3h7u7O2JjY+utL4TArFmz4OfnB0dHR8TGxuL8+fOm91NTUyGTyW77OnjwoGm97du344EHHoCrqyu8vb3x1FNP4fLly3WOlZqair59+0KpVKJjx45YtWrVvZwCIrMYm7CN/5iv5eU0IrPtOZuP3OJKeDqz6Zqal9mF0fr165GQkIDZs2fjyJEj6N27N+Li4pCXl3fb9VNTUzF+/Hjs2bMHaWlpCAoKwogRI5CdnW1aZ8GCBfj000+xbNkypKenw9nZGXFxcaioqAAAxMTEICcnp85r0qRJCA0NRWRkJAAgMzMTTzzxBB566CEcO3YM27dvR0FBAZ588knTcTIzMzFy5Eg8+OCDOHbsGKZOnYpJkyZh+/bt5p4GIrON7RcIuQz45dINXMpnEzaROUxN15GBbLqm5iXMFBUVJaZMmWL6Wa/XC39/fzF37txGbV9dXS1cXV3F6tWrhRBCGAwG4evrKxYuXGhap6ioSCiVSrF27drb7kOn0wlvb2/x/vvvm5Zt3LhR2NnZCb1eb1qWlJQkZDKZ0Ol0Qgghpk2bJnr06FFnX+PGjRNxcXGNyi6EEFqtVgAQWq220dsQ1Xpx1QERPH2r+N9tGVJHIbIaWTfLReg7W0Xw9K3iUn6p1HHISjX289usslun0+Hw4cOIjY01LZPL5YiNjUVaWlqj9lFeXo6qqip4eHgAMI7iaDSaOvtUq9WIjo5ucJ9JSUkoLCzExIkTTcsiIiIgl8uRmJgIvV4PrVaLf/3rX4iNjYW9vT0AIC0trc5xACAuLu6O2SsrK1FcXFznRXSvansjvj2chcpqNmETNcb6g9dgEEBMB0+EsumamplZhVFBQQH0ej18fOpe3/Xx8YFG07iG0unTp8Pf399UoNRuZ84+V65cibi4OAQGBpqWhYaGYseOHXj33XehVCrRpk0bZGVlYcOGDaZ1NBrNbY9TXFyMW7du3fZYc+fOhVqtNr2CgniLKN27IZ294adW4UaZDttP5Uodh8jiVesN2HCQTdfUclr0Qu28efOwbt06bNq0CSqV6p72kZWVhe3bt+PFF1+ss1yj0WDy5MmYMGECDh48iL1798LBwQFjxoyBEOKeM8+YMQNardb0unbt2j3vi8hOIcfYSGNxvTadTdhEd5N6Nh+a4gp4ODtgRA82XVPzszNnZS8vLygUCuTm1v2mm5ubC1/fOz/Ib9GiRZg3bx527dqFsLAw0/La7XJzc+Hn51dnn+Hh4fX2k5iYCE9PT4waNarO8iVLlkCtVmPBggWmZd988w2CgoKQnp6OBx54AL6+vrfN7ubmBkdHx9vmViqVUCqVd/zdiMwxtl8QPtt9HmmXCnEpvxTtvV2kjkRksX6b6ToQSjuFxGmoNTBrxMjBwQERERFISUkxLTMYDEhJSUH//v0b3G7BggX44IMPkJycbLqLrFZoaCh8fX3r7LO4uBjp6en19imEQGJiIuLj4019Q7XKy8shl9f9dRQKhSkjAPTv37/OcQBg586dd8xO1NQC2jhiaJe2AGB6GCYR1Xe96Bb2nDXe8cyZrqmlmH0pLSEhAcuXL8fq1atx+vRpvPLKKygrKzM1QsfHx2PGjBmm9efPn4+ZM2fiq6++QkhICDQaDTQaDUpLjbcry2QyTJ06FR9++CGSkpJw4sQJxMfHw9/fH6NHj65z7N27dyMzMxOTJk2ql2vkyJE4ePAg3n//fZw/fx5HjhzBxIkTERwcjD59+gAAXn75ZVy6dAnTpk3DmTNn8MUXX2DDhg148803zT0NRPeltldiI5uwiRq04ZCx6bp/e0+OrFLLuZdb3j777DPRrl074eDgIKKiosQvv/xiem/IkCFiwoQJpp+Dg4MFgHqv2bNnm9YxGAxi5syZwsfHRyiVSjFs2DBx9uzZescdP368iImJaTDX2rVrRZ8+fYSzs7Pw9vYWo0aNEqdPn66zzp49e0R4eLhwcHAQ7du3F4mJiWb97rxdn5pCVbVeRP3vThE8fav44ddsqeMQWZxqvUE88NEuETx9q9hyjP+N0P1r7Oe3TIj76ExuhYqLi6FWq6HVauHm5iZ1HLJin+w4i093X8CAjp7496QHpI5DZFF2n8nFC6sOwd3JHr+8O4z9RXTfGvv5zelDiSQyLqodZDJg/4VCXC4okzoOkUVZk27sv2PTNbU0FkZEEglo44ihnb0BAOvYhE1kotFWYPcZ4x3Ez3DuImphLIyIJPTbTNjXoKs2SJyGyDLUznQdHeqBDmy6phbGwohIQg91bYu2rkoUlOqwM4MzYRPpDQLrDxrnLno2mqNF1PJYGBFJyE4hx7ia+VlqJ7Ijas1+PJeP69oKtHGyR1yPO08cTNQcWBgRSWxsZBBkMuCnCwW4UsgmbGrd1tR8QXiqbyBU9my6ppbHwohIYkEeThjciU3YRMama+NM1+OjONM1SYOFEZEFMM2EfYhN2NR6bTx0DXqDQFSoBzq2dZU6DrVSLIyILMCwbm3hXdOEnXKaTdjU+ugNwjRi+ixv0ScJsTAisgD2CjnGRgYC+K3Hgqg12Xc+H9lFt6B2tMfDPdl0TdJhYURkIZ7pZ/yWvO98Aa7dKJc4DVHLWsuma7IQLIyILESQhxMGdfICwFv3qXXJLa7ArtNsuibLwMKIyII8VzOh3YZDWajSswmbWofaput+Ie7o5MOma5IWCyMiCzKsmw+8XJQoKK1kEza1CgaDwNoDxqbr8Wy6JgvAwojIgtRtwuacRmT79l0oQHbRLbip7PBoLz+p4xCxMCKyNL81YeezCZts3tp0Yz/dk2y6JgvBwojIwrTzNDZhC2F8yjiRrcorrsCumkvGfGAsWQoWRkQWqLbXYsOha2zCJpu18XAWqg0CkcHu6Myma7IQLIyILFBsNx94uTggr6TS9OwoIltiMAisO2i8jMama7IkLIyILJCDnRxjIozzuXBOI7JF+y8W4NoNY9P1yDA2XZPlYGFEZKGe6WcsjPaey0fWTTZhk22pLfjZdE2WhoURkYUK8XLGgI6ebMImm5NXUoEdp4xN189wpmuyMCyMiCxYbe/F+oPXUM0mbLIR39Y0Xfdt1wZdfd2kjkNUBwsjIgs2orsvPJ3ZhE22w2AQWMeZrsmCsTAismAOdnKMqZkJm03YZAt+vliIqzfK4aqyw2Nh/lLHIaqHhRGRhaudCTv1XD6yi25JnIbo/tQW+H/qEwBHBzZdk+VhYURk4UK9nBHTgU3YZP3ySyqx/ZQGAC+jkeViYURkBUwzYbMJm6zYd0eMTdd92rVBNz82XZNlYmFEZAVG9PCBh7MDNMUVSD2bL3UcIrMZm6450zVZPhZGRFZAaafAmAg2YZP1+uVSIS4XlsNVaYfHONM1WTAWRkRWonYm7D1n83CdTdhkZf5dU9CP7hMAJwc7idMQNYyFEZGVaO/tggfae8DAJmyyMgWlldjBpmuyEiyMiKyIqQn7EJuwyXp8dzgLVXqB3kFt0N2fTddk2VgYEVmRuB6+cHeyR462AnvPsQmbLJ8QwtQX9yyfi0ZWgIURkRVR2SvwVF82YZP1SKtpunZRcqZrsg4sjIiszPho4+W03WfykKNlEzZZtrU1z0V7Itwfzko2XZPlY2FEZGU6eLsgOtTYhL3hYJbUcYgaVFhaie0n2XRN1oWFEZEVerZm1Gj9wavQG4TEaYhu7/sj2dDpDegdqEbPALXUcYgahYURkRWK6+GLNk72uK6twI9swiYL9Puma44WkTVhYURkhX7fhL2GTdhkgdIzb+BSQRmcHRR4vDebrsl6sDAislLja2593n0mDxpthcRpiOpak24s2J/oE8Cma7IqLIyIrFTHtq6ICvGA3iCw4RBnwibLcaNMh+SaputneRmNrAwLIyIr9kzNqNF3R7IgBJuwyTJsPX4dOr0BPQPc2HRNVueeCqMlS5YgJCQEKpUK0dHROHDgQIPrLl++HIMGDYK7uzvc3d0RGxtbb30hBGbNmgU/Pz84OjoiNjYW58+fN72fmpoKmUx229fBgwcBAHPmzLnt+87Ozqb9rFq1qt77KpXqXk4BkUWI6+ELR3sFrhSW49csrdRxiAAAW45dBwD8qU+gxEmIzGd2YbR+/XokJCRg9uzZOHLkCHr37o24uDjk5eXddv3U1FSMHz8ee/bsQVpaGoKCgjBixAhkZ2eb1lmwYAE+/fRTLFu2DOnp6XB2dkZcXBwqKox9EzExMcjJyanzmjRpEkJDQxEZGQkAePvtt+ut0717dzz99NN18ri5udVZ58qVK+aeAiKL4ay0w/DuPgCAzUez77I2UfO7dqMch6/chFwGPB7mJ3UcIvMJM0VFRYkpU6aYftbr9cLf31/MnTu3UdtXV1cLV1dXsXr1aiGEEAaDQfj6+oqFCxea1ikqKhJKpVKsXbv2tvvQ6XTC29tbvP/++w0e59ixYwKA+PHHH03LEhMThVqtblTOhmi1WgFAaLXa+9oPUVNJOa0RwdO3iogPdoqqar3UcaiV+3z3eRE8fat4bvkvUkchqqOxn99mjRjpdDocPnwYsbGxpmVyuRyxsbFIS0tr1D7Ky8tRVVUFDw8PAEBmZiY0Gk2dfarVakRHRze4z6SkJBQWFmLixIkNHmfFihXo3LkzBg0aVGd5aWkpgoODERQUhCeeeAKnTp1qVG4iSzWokzfcnexRUFqJny8WSh2HWjEhhGnkclQ4b9En62RWYVRQUAC9Xg8fH586y318fKDRaBq1j+nTp8Pf399UCNVuZ84+V65cibi4OAQG3v76dUVFBf7973/jxRdfrLO8S5cu+Oqrr7BlyxZ88803MBgMiImJQVZWw49VqKysRHFxcZ0XkSWxV8jxaC/jJYva3g4iKZzOKcH5vFI42MnxcE9fqeMQ3ZMWvStt3rx5WLduHTZt2nTPTc9ZWVnYvn17vaLn9zZt2oSSkhJMmDChzvL+/fsjPj4e4eHhGDJkCL7//nt4e3vj//7v/xrc19y5c6FWq02voKCge8pN1JxG9wkAAGw/pUFFlV7iNNRabTlmHC0a1rUt3FT2EqchujdmFUZeXl5QKBTIzc2tszw3Nxe+vnf+drBo0SLMmzcPO3bsQFhYmGl57XaN3WdiYiI8PT0xatSoBo+1YsUKPPbYY/VGof7I3t4effr0wYULFxpcZ8aMGdBqtabXtWucL4YsT0Q7dwS0cURpZTVSTt/+Rgii5mQwCCT9ahyxfIKX0ciKmVUYOTg4ICIiAikpKaZlBoMBKSkp6N+/f4PbLViwAB988AGSk5NNd5HVCg0Nha+vb519FhcXIz09vd4+hRBITExEfHw87O1v/20kMzMTe/bsueOIUi29Xo8TJ07Az6/hOyeUSiXc3NzqvIgsjVwuM/V01H5rJ2pJBy7fQI62Aq4qOwzt0lbqOET3zOxLaQkJCVi+fDlWr16N06dP45VXXkFZWZmpETo+Ph4zZswwrT9//nzMnDkTX331FUJCQqDRaKDRaFBaWgoAkMlkmDp1Kj788EMkJSXhxIkTiI+Ph7+/P0aPHl3n2Lt370ZmZiYmTZrUYL6vvvoKfn5+eOSRR+q99/7772PHjh24dOkSjhw5gj//+c+4cuXKHfdHZC1qv6Wnns2HtrxK4jTU2tT2tz3S0xcqe4XEaYjundkPsBk3bhzy8/Mxa9YsaDQahIeHIzk52XTZ6urVq5DLf6u3li5dCp1OhzFjxtTZz+zZszFnzhwAwLRp01BWVoaXXnoJRUVFGDhwIJKTk+v1Ia1cuRIxMTHo2rXrbbMZDAasWrUKzz//PBSK+v9h3rx5E5MnT4ZGo4G7uzsiIiLw888/o3v37uaeBiKL09XXDV19XXFGU4L/nszBM3wUA7UQXbUB/zmRAwAYHR4gcRqi+yMTgs8RMEdxcTHUajW0Wi0vq5HF+SL1AhYkn8UD7T2w7qWGL28TNaWdGbmY/PUhtHVVIm3GMCjkMqkjEdXT2M9vPiuNyIaM6m28nJaeeQM52lsSp6HWYnNNX9uo3v4sisjqsTAisiGB7k7oF+IOIYAffuWcRtT8SiursSvDeFfxE7yMRjaAhRGRjan9cOJkj9QStp/UoLLagPbezugZwPYCsn4sjIhszKO9/GAnl+HU9WJcyCuROg7ZuC21cxf1DoBMxstoZP1YGBHZGA9nBwzp7A2Ao0bUvPJLKvHT+XwAnNSRbAcLIyIb9Ntkj9fBG0+puWw7fh0GAfQOaoMQL2ep4xA1CRZGRDZoeHcfODkocPVGOY5eK5I6DtmozTUjkqM5WkQ2hIURkQ1ycrDDiO7GSVe3HOUjQqjpXSksw7FrRZDLgJFhDT9WicjasDAislFP9DHenbb1eA6q9QaJ05CtSaoZLRrQ0QttXVV3WZvIerAwIrJRAzt6wcPZAYVlOvx0oUDqOGRDhBCmSR05dxHZGhZGRDbKXiHHYzWXOJJ4dxo1oVPXi3ExvwxKOznievhIHYeoSbEwIrJhtbdQbz+lwS2dXuI0ZCu21IwWxXbzgavKXuI0RE2LhRGRDevbzh2B7o4o0+mx63Su1HHIBugNAkm1kzrybjSyQSyMiGyYTCYzfXjVfssnuh/pmYXILa6Em8oOQ7p4Sx2HqMmxMCKycaNrmmNTz+bjZplO4jRk7Wr71UaG+UFpp5A4DVHTY2FEZOM6+biim58bqg0C/zmZI3UcsmKV1Xr854Txb2hUb96NRraJhRFRKzD6d48IIbpXqWfzUVxRDV83FaJDPaSOQ9QsWBgRtQKP9/aHTAYcyLyB60W3pI5DVqq2T21UuD/kcpnEaYiaBwsjolbAv40jokKM3/Br7ygiMkdJRRV2nc4DwLvRyLaxMCJqJWpnKOblNLoXySc10FUb0LGtC7r7uUkdh6jZsDAiaiUe7eULe4UMp3OKcS63ROo4ZGVMcxf19odMxstoZLtYGBG1Em2cHDCkc1sAnNOIzJNXUoH9Nc/b47PRyNaxMCJqRZ743d1pQgiJ05C12PprDgwC6NOuDdp5Okkdh6hZsTAiakViu/nA2UGBrJu3cOTqTanjkJWoHWEczdEiagVYGBG1Io4OCsT18AUAbD7KJmy6u8yCMvyapYVCLsPIMD+p4xA1OxZGRK3ME32M3/q3nchBld4gcRqydLWjRQM7esHLRSlxGqLmx8KIqJUZ0METXi4OuFGmw0/nC6SOQxZMCGF6NhrnLqLWgoURUStjp5DjsbDaJmzenUYNO5GtxaWCMqjs5RhRcwmWyNaxMCJqhUbVfPvfkZGLcl21xGnIUtVOBhrbzQcuSjuJ0xC1DBZGRK1Qn6A2aOfhhHKdHjszcqWOQxZIbxD4oWZSR96NRq0JCyOiVkgmk9WZ04joj365VIi8kkq0cbLH4M7eUschajEsjIhaqdrC6Mdz+bhRppM4DVmazUeN/WeP9vKDgx0/Kqj14F87USvVsa0revi7odogsO1EjtRxyIJUVOmRfFIDwPhsNKLWhIURUStW2zuSxLvT6Hf2nMlDSWU1/NUq9AvxkDoOUYtiYUTUij3e2x8yGXDw8k1k3SyXOg5ZiNq+s8fD/SGXyyROQ9SyWBgRtWK+ahUeCPUEACT9yiZsArS3qrD7TB4A3o1GrRMLI6JWznR3Gp+dRgC2n9RApzegs48Luvq6Sh2HqMWxMCJq5R7p6QcHhRxnc0twRlMsdRyS2OaafrMnwgMgk/EyGrU+LIyIWjm1kz2GdjHOU8M5jVq33OIKpF0qBACM4t1o1EqxMCIijO5Te3fadRgMQuI0JJUffr0OIYDIYHcEeThJHYdIEiyMiAgPdW0LF6Udsotu4fDVm1LHIYnUjhjW9p0RtUYsjIgIKnsFHu5pfHp67YzH1LpczC/FiWwt7OQyjAxjYUStFwsjIgLw2yjBthM50FUbJE5DLa12tGhQJy94ODtInIZIOiyMiAgAENPBC14uShSVV2Hf+Xyp41ALEkJgS83daLX9ZkSt1T0VRkuWLEFISAhUKhWio6Nx4MCBBtddvnw5Bg0aBHd3d7i7uyM2Nrbe+kIIzJo1C35+fnB0dERsbCzOnz9vej81NRUymey2r4MHDwIA5syZc9v3nZ2d6xxr48aN6Nq1K1QqFXr16oX//Oc/93IKiGyOQi7D4739APDutNbm1ywtrhSWw9FegdhuPlLHIZKU2YXR+vXrkZCQgNmzZ+PIkSPo3bs34uLikJeXd9v1U1NTMX78eOzZswdpaWkICgrCiBEjkJ39Wx/DggUL8Omnn2LZsmVIT0+Hs7Mz4uLiUFFRAQCIiYlBTk5OndekSZMQGhqKyMhIAMDbb79db53u3bvj6aefNh3n559/xvjx4/Hiiy/i6NGjGD16NEaPHo2TJ0+aexqIbFLtTMc7M3JRVlktcRpqKbV9ZSN6+MBZaSdxGiKJCTNFRUWJKVOmmH7W6/XC399fzJ07t1HbV1dXC1dXV7F69WohhBAGg0H4+vqKhQsXmtYpKioSSqVSrF279rb70Ol0wtvbW7z//vsNHufYsWMCgPjxxx9Ny8aOHStGjhxZZ73o6Gjx17/+tVHZhRBCq9UKAEKr1TZ6GyJrYTAYxJAFu0Xw9K1i05EsqeNQC6iq1ouID3aK4OlbRcppjdRxiJpNYz+/zRox0ul0OHz4MGJjY03L5HI5YmNjkZaW1qh9lJeXo6qqCh4exic2Z2ZmQqPR1NmnWq1GdHR0g/tMSkpCYWEhJk6c2OBxVqxYgc6dO2PQoEGmZWlpaXWOAwBxcXF3zF5ZWYni4uI6LyJbJZPJMKpm1Kh2BmSybT9fLERBaSXcnewxqJO31HGIJGdWYVRQUAC9Xg8fn7rXoH18fKDRaBq1j+nTp8Pf399UoNRuZ84+V65cibi4OAQGBt72/YqKCvz73//Giy++WGe5RqMxO/vcuXOhVqtNr6CgoDv/gkRWrvbutH3nC1BYWilxGmputf1kI8P8YK/g/ThELfpfwbx587Bu3Tps2rQJKpXqnvaRlZWF7du31yt6fm/Tpk0oKSnBhAkT7jWqyYwZM6DVak2va9eu3fc+iSxZB28X9ApQQ28Q2HYiR+o41IwqqvTYfsr4xfCJcN6NRgSYWRh5eXlBoVAgNze3zvLc3Fz4+vrecdtFixZh3rx52LFjB8LCwkzLa7dr7D4TExPh6emJUaNGNXisFStW4LHHHqs3OuTr62t2dqVSCTc3tzovIltXO2rEu9NsW8rpPJRWViOgjSMi2rlLHYfIIphVGDk4OCAiIgIpKSmmZQaDASkpKejfv3+D2y1YsAAffPABkpOTTXeR1QoNDYWvr2+dfRYXFyM9Pb3ePoUQSExMRHx8POzt7W97rMzMTOzZs+e2I0r9+/evcxwA2Llz5x2zE7VGj/f2h0wGHL5yE9dulEsdh5pJbR/ZqHB/yOUyidMQWQazL6UlJCRg+fLlWL16NU6fPo1XXnkFZWVlpkbo+Ph4zJgxw7T+/PnzMXPmTHz11VcICQmBRqOBRqNBaWkpAGOz59SpU/Hhhx8iKSkJJ06cQHx8PPz9/TF69Og6x969ezcyMzMxadKkBvN99dVX8PPzwyOPPFLvvTfeeAPJycn4+OOPcebMGcyZMweHDh3Ca6+9Zu5pILJpPm4qxHTwBAAk/cpRI1ukLa9C6lnjNCujeRmNyMTsCSvGjRuH/Px8zJo1CxqNBuHh4UhOTjZdtrp69Srk8t/qraVLl0Kn02HMmDF19jN79mzMmTMHADBt2jSUlZXhpZdeQlFREQYOHIjk5OR6fUgrV65ETEwMunbtettsBoMBq1atwvPPPw+FQlHv/ZiYGKxZswbvvfce3n33XXTq1AmbN29Gz549zT0NRDbvid4B2H+hEJuPZuPVoR0gk3FEwZb852QOqvQCXX1d0cXXVeo4RBZDJoQQUoewJsXFxVCr1dBqtew3IptWXFGFyA93QVdtwH/+Ngjd/fn3bkue+TINv1y6gekPd8UrQztIHYeo2TX285v3ZhLRbbmp7PFQl7YAgO+OZEmchprStRvlSM+8AQCmx8AQkRELIyJq0Nh+xrnCNh3NRmW1XuI01FQ2Hs6CEMDAjl4IdHeSOg6RRWFhREQNGtzJGz5uStwo02FXxu2fh0jWRW8Q2HjIOB/b2H6csJboj1gYEVGD7BRyPB1h/PBcd/CqxGmoKfx4Ph852gq0cbLHiO4+d9+AqJVhYUREdzQ20lgY/XShAFk3OaeRtdtw0DhaNDo8ACr7+nfvErV2LIyI6I7aeTohpoMnhAA2HmITtjUrKK3Ezgzj7P/jeBmN6LZYGBHRXdV+iH57OAt6A2f4sFabjmSj2iDQO1CNbn6cfoHodlgYEdFdxfXwhdrRHtlFt/DThQKp49A9EEKY+sTG9WsncRoiy8XCiIjuSmWvwOiaB8vW9qiQdTly9SYu5pfB0V7BuYuI7oCFERE1Su0ow44MDQpLKyVOQ+Zad8BY0I4M84Or6vYP4SYiFkZE1Ejd/d3QK0CNKr3ApqPZUschM5RUVGHr8RwAbLomuhsWRkTUaLUfqusPXgMfs2g9th7Pwa0qPdp7OyMy2F3qOEQWjYURETXaqHB/qOzlOJ9XiqPXiqSOQ420vqYvbFxkEGQymcRpiCwbCyMiajQ3lT0e7WVs3F1/gE3Y1uCspgTHrhXBTi7Dk30DpY5DZPFYGBGRWZ6pacL+4fh1lFZWS5yG7qZ2tGhYt7bwdlVKnIbI8rEwIiKz9AtxR3svZ5Tr9Nh2/LrUcegOKqv1+P6ocbbyZzh3EVGjsDAiIrPIZDLTU9nXcU4ji7YzIxdF5VXwdVNhcGdvqeMQWQUWRkRktif7BkAhl+Ho1SKcyy2ROg41oPYy2tORgVDI2XRN1BgsjIjIbG1dVRjWtS2A3z58ybJcu1FuenzL0xGcu4iosVgYEdE9qZ3TaNPRbFRW6yVOQ3+08XAWhAAGdPREO08nqeMQWQ0WRkR0T4Z09oaPmxI3ynTYlZEndRz6Hb1B4NtDNXMXsemayCwsjIjontgp5BgTYZwXZ/0hXk6zJPvO5+O6tgJqR3uM6O4jdRwiq8LCiIju2dhI4+W0fefzkXWzXOI0VGtDTaH6pz4BUNkrJE5DZF1YGBHRPQv2dEb/9p4QAvj2cJbUcQhAQWkldmbkAuADY4nuBQsjIrovz0QZP3w3HsqC3sAHy0pt05FsVOkFegeq0c3PTeo4RFaHhRER3Ze4Hr5QO9oju+gW9tfcHk7SEEKY+r3GcrSI6J6wMCKi+6KyV2B0uD8AzmkktSNXb+JCXikc7RUY1dtf6jhEVomFERHdt9pbwndkaFBYWilxmtartjB9tJcfXFX2Eqchsk4sjIjovnX3d0OvADWq9AKbjmZLHadVKq2sxtbjOQB+6/siIvOxMCKiJlF7B9T6g9cgBJuwW9rWX6+jXKdHe29nRAa7Sx2HyGqxMCKiJjEq3B8qeznO55Xi6LUiqeO0OutqLqONiwyCTMYHxhLdKxZGRNQk3FT2eLSXHwBg/QE2Ybeks5oSHLtWBDu5DE/2DZQ6DpFVY2FERE1mXM1M2D8cv47SymqJ07QetU3Xw7q1hberUuI0RNaNhRERNZmoUA+EejmjXKfHtuPXpY7TKlRW67HpqHHWcc50TXT/WBgRUZORyWSm56dxTqOWsTMjFzfLq+DrpsLgTt5SxyGyeiyMiKhJPRURAIVchiNXi3A+t0TqODavtgAdExEIOwX/SSe6X/yviIiaVFtXFR7q2hYAR42aW9bNcvxU8xiW2pE6Iro/LIyIqMk9U9Pr8v3RbFRW6yVOY7s2HsqCEEBMB0+083SSOg6RTWBhRERNbkhnb7R1VeJGmQ67MvKkjmOT9AaBjTUPjGXTNVHTYWFERE3OTiHH05HG+XRqn/ZOTeunCwW4rq2A2tEecT18pY5DZDNYGBFRs6jtedl3Ph9ZN8slTmN71h+8CgD4U58AqOwVEqchsh0sjIioWQR7OqN/e08IAXx7OEvqODalsLQSOzNyAbDpmqipsTAiomZT+5T3jYeyoDfwwbJNZdPRbFTpBcIC1eju7yZ1HCKbwsKIiJpNXA9fuKnskF10C/trbiun+yOEMD0wlqNFRE3vngqjJUuWICQkBCqVCtHR0Thw4ECD6y5fvhyDBg2Cu7s73N3dERsbW299IQRmzZoFPz8/ODo6IjY2FufPnze9n5qaCplMdtvXwYMH6+xn0aJF6Ny5M5RKJQICAvC///u/d92PRqO5l9NARHehslfgT30CAHBOo6Zy5GoRLuSVQmUvx6hwf6njENkcswuj9evXIyEhAbNnz8aRI0fQu3dvxMXFIS/v9rfkpqamYvz48dizZw/S0tIQFBSEESNGIDs727TOggUL8Omnn2LZsmVIT0+Hs7Mz4uLiUFFRAQCIiYlBTk5OndekSZMQGhqKyMhI037eeOMNrFixAosWLcKZM2eQlJSEqKioepnOnj1bZ19t27Y19zQQUSONrbmVfEeGBjfKdBKnsX61TdeP9vKDm8pe4jRENkiYKSoqSkyZMsX0s16vF/7+/mLu3LmN2r66ulq4urqK1atXCyGEMBgMwtfXVyxcuNC0TlFRkVAqlWLt2rW33YdOpxPe3t7i/fffNy3LyMgQdnZ24syZMw0ee8+ePQKAuHnzZqOy3o5WqxUAhFarved9ELU2j326TwRP3yqW/3hR6ihWraSiSnSb+V8RPH2rSL9UKHUcIqvS2M9vs0aMdDodDh8+jNjYWNMyuVyO2NhYpKWlNWof5eXlqKqqgoeHBwAgMzMTGo2mzj7VajWio6Mb3GdSUhIKCwsxceJE07IffvgB7du3x9atWxEaGoqQkBBMmjQJN27cqLd9eHg4/Pz8MHz4cOzfv/+OeSsrK1FcXFznRUTmqR012nDoGoRgE/a92vrrdZTr9Gjv5Yx+Ie5SxyGySWYVRgUFBdDr9fDx8amz3MfHp9F9OtOnT4e/v7+pEKrdzpx9rly5EnFxcQgMDDQtu3TpEq5cuYKNGzfi66+/xqpVq3D48GGMGTPGtI6fnx+WLVuG7777Dt999x2CgoIwdOhQHDlypMG8c+fOhVqtNr2CgtjsSGSuUb39obKX41xuKY5eK5I6jtWqnSxzbL8gyGQyidMQ2Sa7ljzYvHnzsG7dOqSmpkKlUt3TPrKysrB9+3Zs2LChznKDwYDKykp8/fXX6Ny5MwBjARUREYGzZ8+iS5cupletmJgYXLx4Ef/4xz/wr3/967bHmzFjBhISEkw/FxcXszgiMpPa0R6P9vTD90ezseHgNfRtx9EOc53LLcHRq0Wwk8vwZN8AqeMQ2SyzRoy8vLygUCiQm5tbZ3lubi58fe88Jf2iRYswb9487NixA2FhYabltds1dp+JiYnw9PTEqFGj6iz38/ODnZ2dqSgCgG7dugEArl692mCuqKgoXLhwocH3lUol3Nzc6ryIyHy1z/NK+vU6SiurJU5jfWrv6nuoa1u0db23L5ZEdHdmFUYODg6IiIhASkqKaZnBYEBKSgr69+/f4HYLFizABx98gOTk5Dp3kQFAaGgofH196+yzuLgY6enp9fYphEBiYiLi4+Nhb1/3bowBAwaguroaFy9eNC07d+4cACA4OLjBbMeOHYOfn98dfmsiagpRoR4I9XJGuU6PbcevSx3HqlRW6/H9EePs4bWTZhJR8zD7UlpCQgImTJiAyMhIREVFYfHixSgrKzM1QsfHxyMgIABz584FAMyfPx+zZs3CmjVrEBISYuobcnFxgYuLC2QyGaZOnYoPP/wQnTp1QmhoKGbOnAl/f3+MHj26zrF3796NzMxMTJo0qV6u2NhY9O3bFy+88AIWL14Mg8GAKVOmYPjw4aZRpMWLFyM0NBQ9evRARUUFVqxYgd27d2PHjh3mngYiMpNMJsPYyCDMTz6D9QevYVy/dlJHshq7MvJws7wKPm5KDO7kLXUcIptmdmE0btw45OfnY9asWdBoNAgPD0dycrKpefrq1auQy38biFq6dCl0Ol2dJmgAmD17NubMmQMAmDZtGsrKyvDSSy+hqKgIAwcORHJycr0+pJUrVyImJgZdu3atl0sul+OHH37A66+/jsGDB8PZ2RmPPPIIPv74Y9M6Op0Ob731FrKzs+Hk5ISwsDDs2rULDz74oLmngYjuwVMRAVi04yyOXC3C+dwSdPJxlTqSVVhXM3fR0xFBsFPwgQVEzUkmeO+sWYqLi6FWq6HVatlvRHQPJn99CDszcjFpYCjee6y71HEsXtbNcgxasAdCAD/+z4No5+kkdSQiq9TYz29+9SCiFvVMTRP290ezoas2SJzG8m08lAUhgJgOniyKiFoACyMialFDOnujrasSN8p02HU69+4btGJ6g8C3h41N17V39RFR82JhREQtyk4hx9ORxslZ1/HBsnf004UCZBfdgtrRHnE97jwlChE1DRZGRNTixkYaRz/2nc9HdtEtidNYrg01hePocH+o7BUSpyFqHVgYEVGLC/Z0Rv/2nhAC2HiIo0a3U1haiR0ZxulNOLUBUcthYUREkqjtmdl4KAt6A2+O/aNNR7NRpRfoFaBGd3/eAUvUUlgYEZEkHu7pC7WjPbKLbmHNgYYf29MaacursGzvJQBsuiZqaSyMiEgSKnsFEoYbZ6Wf/98zyNGy16jWR/85jYLSSnTwdjY1qhNRy2BhRESS+fMDwejbrg1KK6sxc/NJcL5Z4OcLBVhf03c1/6kwKO3YdE3UklgYEZFkFHIZ5j0VBnuFDLtO5+E/JzRSR5JURZUeMzadAAD85YFgRIZ4SJyIqPVhYUREkurs44pXh3YEAMxOOomicp3EiaSzeNd5XCksh6+bCtMe7iJ1HKJWiYUREUnu1Qc7oGNbFxSU6vDRf05LHUcSJ7O1WL7P2HD9weiecFXZS5yIqHViYUREklPaKTDvyV4AgA2HsrD/QoHEiVpWtd6Ad74/Dr1BYGQvPwzv7iN1JKJWi4UREVmEyBAP/OWBYADAu5tO4JZOL3GilvPV/kyczC6Gm8oOs0d1lzoOUavGwoiILMa0h7vA102FK4XlWJxyTuo4LeJKYRk+2Wn8Xd8b2R1tXVUSJyJq3VgYEZHFcFXZ44PRPQEAK/Zl4mS2VuJEzUsIgXc3nUBFlQExHTw5ZxGRBWBhREQWZXh3H4wM84PeIDD9u+Oo1hukjtRsvj2chf0XCqG0k+OjP/WCTCaTOhJRq8fCiIgszpzHe0DtaI9T14ux8qdMqeM0i/ySSny4zXgH3pvDOyPEy1niREQEsDAiIgvk7arE/xvZDQDwyc5zuFJYJnGipvf3H05Be6sKPfzdMGlgqNRxiKgGCyMiskhPRwQipoMnKqsNeHfTCZt6XEjK6VxsPZ4DhVyG+U+FwU7Bf4qJLAX/ayQiiySTyTD3yV5Q2smx/0Ihvj2cJXWkJlFaWY33Np8EAEwaGIqeAWqJExHR77EwIiKLFezpjIThnQEAH247jfySSokT3b+FyWeQo61AOw8nTI3tLHUcIvoDFkZEZNFeHBiKHv5u0N6qwt9/OCV1nPty+MoNfP3LFQDA3Cd7wdFBIXEiIvojFkZEZNHsFHLMfyoMCrkMW4/nYFdGrtSR7klltR7TvzsBIYz9UwM6ekkdiYhug4UREVm8ngFqTBpkvHNr5paTKKmokjiR+ZamXsSFvFJ4uTiY7rgjIsvDwoiIrMLUYZ0R7OmEHG0FFm4/K3Ucs5zPLcGSPRcAAHNG9UAbJweJExFRQ1gYEZFVcHRQYO6fegEA/vXLFRy6fEPiRI1jqJnBu0ovENutLUb28pM6EhHdgZ3UAWyRwWCATqeTOoZVsLe3h0LBBlRqnJiOXhgbGYgNh7LwzvcnsO1vA6G0s+y/n2/Sr+DI1SK4KO3wweiefOwHkYVjYdTEdDodMjMzYTDY7vOdmlqbNm3g6+vLDwxqlHcf7YbdZ/JxIa8UX+y5iDeHW+4t79eLbmH+f88AAKY/3AV+akeJExHR3bAwakJCCOTk5EChUCAoKAhyOa9U3okQAuXl5cjLywMA+PnxEgPdXRsnB/x9VA9MWXMEX6RewMgwP3T2cZU6Vj1CCMzcfBJlOj0igt3xXHSw1JGIqBFYGDWh6upqlJeXw9/fH05OTlLHsQqOjsZv0Hl5eWjbti0vq1GjPNrLF7HdfLDrdC6mf3cc374cA4XcskYctx7PQcqZPDgo5Jj3ZC/ILSwfEd0ehzSakF6vBwA4OPCOE3PUFpFVVdZ3CzZJQyaT4YPRPeCitMPRq0X4pmbSREtxs0yHOUnGySinPNgRnSxwRIuIbo+FUTNgr4x5eL7oXvipHTH9ka4AgAXJZ3C96JbEiX7zv/85jcIyHTr7uOCVoR2kjkNEZmBhRERW67modogMdkeZTo+Zm09CCCF1JPx0vgDfHs6CTAbMfTIMDnb8Z5bImvC/WCKyWnK5DPOe6gUHhRwpZ/Kw9XiOpHlu6fR4d9MJAED8A8GICHaXNA8RmY+FERFZtY5tXTHlwY4AgDlJp3CzTLo5xBbvOoerN8rhp1bhfx7uKlkOIrp3LIyIyOq9MrQDOvu4oLBMh//9z2lJMpzM1mL5vksAgA9H94SLkjf9ElkjFkaEr7/+Gp6enqisrKyzfPTo0fjLX/6Cixcv4oknnoCPjw9cXFzQr18/7Nq1y7Te559/jp49e5p+3rx5M2QyGZYtW2ZaFhsbi/fee6/5fxlqlRzs5Jj7ZBhkMuDbw1n46XxBix6/Sm/AtG+PwyCAx3v7Y1g3nxY9PhE1HRZGzUgIgXJdtSQvc5pQn376aej1eiQlJZmW5eXlYdu2bXjhhRdQWlqKRx99FCkpKTh69CgefvhhPP7447h69SoAYMiQIcjIyEB+fj4AYO/evfDy8kJqaioA4234aWlpGDp0aJOdW6I/igh2x4T+IQCAGZuO45ZO32LHXvlTJjJyitHGyR6zH+/eYscloqbHsd5mdKtKj+6ztkty7Iz34+Dk0Lj/ex0dHfHss88iMTERTz/9NADgm2++Qbt27TB06FDIZDL07t3btP4HH3yATZs2ISkpCa+99hp69uwJDw8P7N27F2PGjEFqaireeust/POf/wQAHDhwAFVVVYiJiWn6X5Tod96O64IdpzS4duMW/rHrHN59tFuzH/NyQRn+sfMcAOC9kd3h5aJs9mMSUfPhiBEBACZPnowdO3YgOzsbALBq1So8//zzkMlkKC0txdtvv41u3bqhTZs2cHFxwenTp00jRjKZDIMHD0ZqaiqKioqQkZGBV199FZWVlThz5gz27t2Lfv36cTZwanYuSjt8+CfjZd0V+y7hRJa2WY8nhMCM70+gstqAgR298FTfgGY9HhE1P44YNSNHewUy3o+T7Njm6NOnD3r37o2vv/4aI0aMwKlTp7Bt2zYAwNtvv42dO3di0aJF6NixIxwdHTFmzBjodL/d/TN06FB8+eWX2LdvH/r06QM3NzdTsbR3714MGTKkSX8/ooY81NUHo3r7I+nX65j+3XFseW0A7BXN8x1w46EspF0qhMpejo/+1IuTlRLZABZGzUgmkzX6cpYlmDRpEhYvXozs7GzExsYiKCgIALB//348//zz+NOf/gQAKC0txeXLl+tsO2TIEEydOhUbN2409RINHToUu3btwv79+/HWW2+15K9Crdysx7vjx/P5yMgpxqv/PoJA9+Z5qv13h7MAAG8N74J2nhwRJbIF1vOpTc3u2Wefxdtvv43ly5fj66+/Ni3v1KkTvv/+ezz++OOQyWSYOXMmDAZDnW3DwsLg7u6ONWvWYOvWrQCMhdHbb78NmUyGAQMGtOjvQq2bl4sSM0d2x1sbf8XOjNxmPVavADUmDghp1mMQUcu5p8JoyZIlWLhwITQaDXr37o3PPvsMUVFRt1239kP25MmTAICIiAh89NFHddYXQmD27NlYvnw5ioqKMGDAACxduhSdOnUCAKSmpuLBBx+87f4PHDiAfv36mfbz8ccf48svv8SVK1fg5eWFV199Ff/v//0/0/qpqalISEjAqVOnEBQUhPfeew/PP//8vZwGm6NWq/HUU09h27ZtGD16tGn5J598ghdeeAExMTHw8vLC9OnTUVxcXGdbmUyGQYMGYdu2bRg4cCAAY7Hk5uaGLl26wNnZuSV/FSI82TcAeoPAlRtlzXYMO7kcY/sFwa6ZLtURkQSEmdatWyccHBzEV199JU6dOiUmT54s2rRpI3Jzc2+7/rPPPiuWLFkijh49Kk6fPi2ef/55oVarRVZWlmmdefPmCbVaLTZv3ix+/fVXMWrUKBEaGipu3bolhBCisrJS5OTk1HlNmjRJhIaGCoPBYNrP66+/Lrp06SK2bNkiLl26JA4dOiR27Nhhev/SpUvCyclJJCQkiIyMDPHZZ58JhUIhkpOTG/37a7VaAUBotdp67926dUtkZGSYclujhx56SLz++ustekxbOG9ERGTZ7vT5/XtmF0ZRUVFiypQppp/1er3w9/cXc+fObdT21dXVwtXVVaxevVoIIYTBYBC+vr5i4cKFpnWKioqEUqkUa9euve0+dDqd8Pb2Fu+//75pWUZGhrCzsxNnzpxp8NjTpk0TPXr0qLNs3LhxIi4urlHZhbDdwujGjRvi+++/F3K5/I7nsDlY83kjIiLr0NjCyKzxX51Oh8OHDyM2Nta0TC6XIzY2FmlpaY3aR3l5OaqqquDh4QEAyMzMhEajqbNPtVqN6OjoBveZlJSEwsJCTJw40bTshx9+QPv27bF161aEhoYiJCQEkyZNwo0bN0zrpKWl1TkOAMTFxd0xe2VlJYqLi+u8bFGfPn3w/PPPY/78+ejSpYvUcYiIiCRhVo9RQUEB9Ho9fHzqTnfv4+ODM2fONGof06dPh7+/v6lA0Wg0pn38cZ+17/3RypUrERcXh8DAQNOyS5cu4cqVK9i4cSO+/vpr6PV6vPnmmxgzZgx2795tOtbtjlNcXIxbt27B0bH+nStz587F3//+90b9btbsj3eZERERtUYtelfavHnzsG7dOqSmpkKlUt3TPrKysrB9+3Zs2LChznKDwYDKykp8/fXX6Ny5MwBjARUREYGzZ8/e8yjIjBkzkJCQYPq5uLjYdBs7ERER2RazLqV5eXlBoVAgN7fu7a+5ubnw9fW947aLFi3CvHnzsGPHDoSFhZmW127X2H0mJibC09MTo0aNqrPcz88PdnZ2pqIIALp1Mz4OoHaGZl9f39sex83N7bajRQCgVCrh5uZW50VERES2yazCyMHBAREREUhJSTEtMxgMSElJQf/+/RvcbsGCBfjggw+QnJyMyMjIOu+FhobC19e3zj6Li4uRnp5eb59CCCQmJiI+Ph729vZ13hswYACqq6tx8eJF07Jz54zPLwoODgYA9O/fv85xAGDnzp13zH4vhBkPcCXUmxOJiIhIKmZfSktISMCECRMQGRmJqKgoLF68GGVlZaZG6Pj4eAQEBGDu3LkAgPnz52PWrFlYs2YNQkJCTH1DLi4ucHFxgUwmw9SpU/Hhhx+iU6dOCA0NxcyZM+Hv719nLh0A2L17NzIzMzFp0qR6uWJjY9G3b1+88MILWLx4MQwGA6ZMmYLhw4ebRpFefvllfP7555g2bRpeeOEF7N69Gxs2bDA9+uJ+2dvbQyaTIT8/H97e3nw8wF0IIaDT6ZCfnw+5XA4HBwepIxERUStndmE0btw45OfnY9asWdBoNAgPD0dycrKpqfnq1auQy38biFq6dCl0Oh3GjBlTZz+zZ8/GnDlzAADTpk1DWVkZXnrpJRQVFWHgwIFITk6u14e0cuVKxMTEoGvXrvVyyeVy/PDDD3j99dcxePBgODs745FHHsHHH39sWic0NBTbtm3Dm2++iX/+858IDAzEihUrEBfXNM8zUygUCAwMRFZWFpuZzeDk5IR27drV+bshIiKSgkzwuo9ZiouLoVarodVqG+w30uv1qKqqauFk1kmhUMDOzo6ja0RE1Kwa8/kN8FlpzUKhUEChMO/p9kRERCQ9XrsgIiIiqsHCiIiIiKgGCyMiIiKiGuwxMlNtr7qtPjONiIjIFtV+bt/tnjMWRmYqKSkBAD4WhIiIyAqVlJRArVY3+D5v1zeTwWDA9evX4erq2qS3mNc+g+3atWt87Mht8PzcGc/PnfH8NIzn5s54fu7Mms6PEAIlJSXw9/e/47x5HDEyk1wuR2BgYLPtn89juzOenzvj+bkznp+G8dzcGc/PnVnL+bnTSFEtNl8TERER1WBhRERERFSDhZGFUCqVmD17NpRKpdRRLBLPz53x/NwZz0/DeG7ujOfnzmzx/LD5moiIiKgGR4yIiIiIarAwIiIiIqrBwoiIiIioBgsjIiIiohosjCzEkiVLEBISApVKhejoaBw4cEDqSBbhxx9/xOOPPw5/f3/IZDJs3rxZ6kgWY+7cuejXrx9cXV3Rtm1bjB49GmfPnpU6lsVYunQpwsLCTBPP9e/fH//973+ljmWx5s2bB5lMhqlTp0odxSLMmTMHMpmszqtr165Sx7IY2dnZ+POf/wxPT084OjqiV69eOHTokNSxmgQLIwuwfv16JCQkYPbs2Thy5Ah69+6NuLg45OXlSR1NcmVlZejduzeWLFkidRSLs3fvXkyZMgW//PILdu7ciaqqKowYMQJlZWVSR7MIgYGBmDdvHg4fPoxDhw7hoYcewhNPPIFTp05JHc3iHDx4EP/3f/+HsLAwqaNYlB49eiAnJ8f0+umnn6SOZBFu3ryJAQMGwN7eHv/973+RkZGBjz/+GO7u7lJHaxK8Xd8CREdHo1+/fvj8888BGJ/HFhQUhNdffx3vvPOOxOksh0wmw6ZNmzB69Gipo1ik/Px8tG3bFnv37sXgwYOljmORPDw8sHDhQrz44otSR7EYpaWl6Nu3L7744gt8+OGHCA8Px+LFi6WOJbk5c+Zg8+bNOHbsmNRRLM4777yD/fv3Y9++fVJHaRYcMZKYTqfD4cOHERsba1oml8sRGxuLtLQ0CZORtdFqtQCMH/5Ul16vx7p161BWVob+/ftLHceiTJkyBSNHjqzzbxAZnT9/Hv7+/mjfvj2ee+45XL16VepIFiEpKQmRkZF4+umn0bZtW/Tp0wfLly+XOlaTYWEksYKCAuj1evj4+NRZ7uPjA41GI1EqsjYGgwFTp07FgAED0LNnT6njWIwTJ07AxcUFSqUSL7/8MjZt2oTu3btLHctirFu3DkeOHMHcuXOljmJxoqOjsWrVKiQnJ2Pp0qXIzMzEoEGDUFJSInU0yV26dAlLly5Fp06dsH37drzyyiv429/+htWrV0sdrUnYSR2AiO7flClTcPLkSfZA/EGXLl1w7NgxaLVafPvtt5gwYQL27t3L4gjAtWvX8MYbb2Dnzp1QqVRSx7E4jzzyiOl/h4WFITo6GsHBwdiwYUOrvxRrMBgQGRmJjz76CADQp08fnDx5EsuWLcOECRMkTnf/OGIkMS8vLygUCuTm5tZZnpubC19fX4lSkTV57bXXsHXrVuzZsweBgYFSx7EoDg4O6NixIyIiIjB37lz07t0b//znP6WOZREOHz6MvLw89O3bF3Z2drCzs8PevXvx6aefws7ODnq9XuqIFqVNmzbo3LkzLly4IHUUyfn5+dX7ctGtWzebudTIwkhiDg4OiIiIQEpKimmZwWBASkoKeyHojoQQeO2117Bp0ybs3r0boaGhUkeyeAaDAZWVlVLHsAjDhg3DiRMncOzYMdMrMjISzz33HI4dOwaFQiF1RItSWlqKixcvws/PT+ookhswYEC9qUHOnTuH4OBgiRI1LV5KswAJCQmYMGECIiMjERUVhcWLF6OsrAwTJ06UOprkSktL63xDy8zMxLFjx+Dh4YF27dpJmEx6U6ZMwZo1a7Blyxa4urqaetLUajUcHR0lTie9GTNm4JFHHkG7du1QUlKCNWvWIDU1Fdu3b5c6mkVwdXWt14/m7OwMT09P9qkBePvtt/H4448jODgY169fx+zZs6FQKDB+/Hipo0nuzTffRExMDD766COMHTsWBw4cwJdffokvv/xS6mhNQ5BF+Oyzz0S7du2Eg4ODiIqKEr/88ovUkSzCnj17BIB6rwkTJkgdTXK3Oy8ARGJiotTRLMILL7wggoODhYODg/D29hbDhg0TO3bskDqWRRsyZIh44403pI5hEcaNGyf8/PyEg4ODCAgIEOPGjRMXLlyQOpbF+OGHH0TPnj2FUqkUXbt2FV9++aXUkZoM5zEiIiIiqsEeIyIiIqIaLIyIiIiIarAwIiIiIqrBwoiIiIioBgsjIiIiohosjIiIiIhqsDAiIiIiqsHCiIiIiKgGCyMiIiKiGiyMiIiIiGqwMCIiIiKqwcKIiIiIqMb/B5N/DGLRPa22AAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from MITRotor import BEM, IEA15MW, UnifiedMomentum, IEA15MW\n", - "\n", - "\n", - "# Initialize rotor using the IEA10MW reference wind turbine model.\n", - "rotor = IEA15MW()\n", - "bem = BEM(rotor=rotor, momentum_model=UnifiedMomentum(averaging=\"rotor\"))\n", - "\n", - "# solve BEM for a control set point.\n", - "pitch, tsr, misalignment = np.deg2rad(0), 7.0, np.deg2rad(30.0)\n", - "yaw_sol = bem(pitch, tsr, misalignment)\n", - "# tilt_sol = bem(pitch, tsr, 0, misalignment)\n", - "\n", - "idx = 5\n", - "mu_mesh = yaw_sol.geom.mu_mesh[idx, :]\n", - "theta_mesh = yaw_sol.geom.theta_mesh[idx, :]\n", - "Cax_yaw = yaw_sol.a(grid = \"sector\")[idx, :]\n", - "# Cax_tilt = tilt_sol.a(grid = \"sector\")[idx, :]\n", - "\n", - "plt.plot(theta_mesh, Cax_yaw, label = \"yaw\")\n", - "# plt.plot(theta_mesh, Cax_tilt, label = \"tilt\")\n", - "plt.legend()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "84b0d3ca", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/example_04_aero_props_yaw_tilt.ipynb b/examples/example_04_aero_props_yaw_tilt.ipynb deleted file mode 100644 index 293f3a1..0000000 --- a/examples/example_04_aero_props_yaw_tilt.ipynb +++ /dev/null @@ -1,104 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 23, - "id": "d21f790b", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/sky/Library/Python/3.9/lib/python/site-packages/MITRotor/TipLoss.py:56: RuntimeWarning: divide by zero encountered in divide\n", - " rotor.N_blades / 2 * (1 - geometry.mu_mesh) / (np.maximum(geometry.mu_mesh, 0.0001) * np.abs(np.sin(phi)))\n", - "/Users/sky/Library/Python/3.9/lib/python/site-packages/MITRotor/TipLoss.py:62: RuntimeWarning: divide by zero encountered in divide\n", - " rotor.N_blades\n", - "/Users/sky/Library/Python/3.9/lib/python/site-packages/UnifiedMomentumModel/Momentum.py:184: RuntimeWarning: divide by zero encountered in divide\n", - " np.cos(yaw)\n", - "/Users/sky/Library/Python/3.9/lib/python/site-packages/UnifiedMomentumModel/Momentum.py:195: RuntimeWarning: invalid value encountered in divide\n", - " -dp / (0.5 * Ctprime * np.cos(yaw) ** 2)\n", - "/Users/sky/Library/Python/3.9/lib/python/site-packages/UnifiedMomentumModel/Momentum.py:196: RuntimeWarning: invalid value encountered in divide\n", - " + (1 - u4**2 - v4**2) / (Ctprime * np.cos(yaw) ** 2)\n", - "/Users/sky/Library/Python/3.9/lib/python/site-packages/UnifiedMomentumModel/Utilities/FixedPointIteration.py:56: RuntimeWarning: All-NaN axis encountered\n", - " max_resid = [np.nanmax(np.abs(_r)) for _r in residuals]\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from MITRotor import BEM, IEA15MW, UnifiedMomentum, IEA15MW\n", - "\n", - "\n", - "# Initialize rotor using the IEA10MW reference wind turbine model.\n", - "rotor = IEA15MW()\n", - "bem = BEM(rotor=rotor, momentum_model=UnifiedMomentum(averaging=\"sector\"))\n", - "\n", - "# solve BEM for a control set point.\n", - "pitch, tsr, misalignment = np.deg2rad(0), 7.0, np.deg2rad(30.0)\n", - "yaw_sol = bem(pitch, tsr, misalignment, 0)\n", - "tilt_sol = bem(pitch, tsr, 0, misalignment)\n", - "\n", - "idx = 5\n", - "mu_mesh = yaw_sol.geom.mu_mesh[:, idx]\n", - "theta_mesh = yaw_sol.geom.theta_mesh[:, idx]\n", - "Cax_yaw = yaw_sol.Cax(grid = \"sector\")[:, idx]\n", - "# Cax_tilt = tilt_sol.a(grid = \"sector\")[idx, :]\n", - "\n", - "plt.plot(mu_mesh, Cax_yaw, label = \"yaw\")\n", - "# plt.plot(theta_mesh, Cax_tilt, label = \"tilt\")\n", - "plt.legend()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "149a8a6c", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/example_04_yaw_tilt_rotor_comparison.py b/examples/example_04_yaw_tilt_rotor_comparison.py new file mode 100644 index 0000000..cc6e186 --- /dev/null +++ b/examples/example_04_yaw_tilt_rotor_comparison.py @@ -0,0 +1,36 @@ +import numpy as np +import matplotlib.pyplot as plt +from MITRotor import BEM, IEA15MW, UnifiedMomentum, IEA15MW +from UnifiedMomentumModel.Utilities.Geometry import calc_eff_yaw + +# Initialize rotor using the IEA10MW reference wind turbine model. +rotor = IEA15MW() +bem = BEM(rotor=rotor, momentum_model=UnifiedMomentum(averaging="rotor")) + +# solve BEM for a control set point. +yaw = np.deg2rad(20) +tilt = yaw +misalignment = calc_eff_yaw(yaw, tilt) +pitch, tsr = np.deg2rad(0), 7.0 + +yaw_sol = bem(pitch, tsr, yaw = misalignment, tilt = 0) +tilt_sol = bem(pitch, tsr, yaw = 0, tilt = misalignment) +yaw_tilt_sol = bem(pitch, tsr, yaw = yaw, tilt = tilt) + +idx = 5 +r_mesh = yaw_sol.geom.mu_mesh[idx, :] +theta_mesh = yaw_sol.geom.theta_mesh[idx, :] +yaw_val = yaw_sol.Cn(grid = "sector")[idx, :] +tilt_val = tilt_sol.Cn(grid = "sector")[idx, :] +yaw_tilt_val = yaw_tilt_sol.Cn(grid = "sector")[idx, :] + +rounded_deg_misalignment = np.round(np.rad2deg(misalignment), decimals=2) +plt.plot(theta_mesh, yaw_val, label = f"Yaw ${rounded_deg_misalignment}^\circ$", c = "r") +plt.plot(theta_mesh, tilt_val, label = f"Tilt ${rounded_deg_misalignment}^\circ$", c = "blue") +plt.plot(theta_mesh, yaw_tilt_val, label = f"Yaw ${np.rad2deg(yaw)}^\circ$ and Tilt ${np.rad2deg(yaw)}^\circ$", c = "purple") +plt.xlabel("$\\theta$ (radians)") +plt.ylabel("$C_T$") +plt.title(f"$C_T$ of BEM Rotor at r/R ={np.round(r_mesh[0], decimals=2)}") +plt.legend() + +print("woah") \ No newline at end of file diff --git a/tests/test_bem.py b/tests/test_bem.py index aeb6f32..bc10b55 100644 --- a/tests/test_bem.py +++ b/tests/test_bem.py @@ -16,20 +16,25 @@ def test_default_models(): rotor = IEA15MW() bem = BEM(rotor=rotor) +def test_BEM_pre_process(): + rotor = IEA15MW() + bem = BEM(rotor=rotor) + bem.pre_process(0.0, 7.0) def test_BEM_initial_guess(): rotor = IEA15MW() bem = BEM(rotor=rotor) + bem.pre_process(0.0, 7.0) bem.initial_guess(0.0, 7.0) def test_BEM_residual(): rotor = IEA15MW() bem = BEM(rotor=rotor) + bem.pre_process(0.0, 7.0) x0 = bem.initial_guess(0.0, 7.0) bem.residual(x0, 0.0, 7, 0) - def test_BEM_solve(): rotor = IEA15MW() bem = BEM(rotor=rotor) From 4991752e2cb861de4927b0d609afce59acc58e5e Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Tue, 28 Oct 2025 22:08:18 -0400 Subject: [PATCH 20/26] Add phase offset tests --- .../example_04_yaw_tilt_rotor_comparison.py | 49 ++++++++++++------- tests/test_bem.py | 37 +++++++++++++- 2 files changed, 67 insertions(+), 19 deletions(-) diff --git a/examples/example_04_yaw_tilt_rotor_comparison.py b/examples/example_04_yaw_tilt_rotor_comparison.py index cc6e186..5b39520 100644 --- a/examples/example_04_yaw_tilt_rotor_comparison.py +++ b/examples/example_04_yaw_tilt_rotor_comparison.py @@ -1,11 +1,14 @@ import numpy as np import matplotlib.pyplot as plt -from MITRotor import BEM, IEA15MW, UnifiedMomentum, IEA15MW +from MITRotor import BEM, IEA15MW, UnifiedMomentum, IEA15MW, BEMGeometry from UnifiedMomentumModel.Utilities.Geometry import calc_eff_yaw +from pathlib import Path +figdir = Path("fig") # Initialize rotor using the IEA10MW reference wind turbine model. rotor = IEA15MW() -bem = BEM(rotor=rotor, momentum_model=UnifiedMomentum(averaging="rotor")) +Nr, Ntheta = 10, 20 +bem = BEM(rotor=rotor, momentum_model=UnifiedMomentum(averaging="rotor"), geometry = BEMGeometry(Nr=Nr, Ntheta=Ntheta)) # solve BEM for a control set point. yaw = np.deg2rad(20) @@ -17,20 +20,32 @@ tilt_sol = bem(pitch, tsr, yaw = 0, tilt = misalignment) yaw_tilt_sol = bem(pitch, tsr, yaw = yaw, tilt = tilt) -idx = 5 -r_mesh = yaw_sol.geom.mu_mesh[idx, :] -theta_mesh = yaw_sol.geom.theta_mesh[idx, :] -yaw_val = yaw_sol.Cn(grid = "sector")[idx, :] -tilt_val = tilt_sol.Cn(grid = "sector")[idx, :] -yaw_tilt_val = yaw_tilt_sol.Cn(grid = "sector")[idx, :] +fig, axes = plt.subplots(nrows = 2, ncols = 5, figsize = (12, 6), sharex=True, sharey=False) +for idx in range(0, Nr): + i = 0 if idx < 5 else 1 + j = np.mod(idx, 5) + r_mesh = yaw_sol.geom.mu_mesh[idx, :] + theta_mesh = yaw_sol.geom.theta_mesh[idx, :] + yaw_val = yaw_sol.Cn(grid = "sector")[idx, :] + tilt_val = tilt_sol.Cn(grid = "sector")[idx, :] + yaw_tilt_val = yaw_tilt_sol.Cn(grid = "sector")[idx, :] -rounded_deg_misalignment = np.round(np.rad2deg(misalignment), decimals=2) -plt.plot(theta_mesh, yaw_val, label = f"Yaw ${rounded_deg_misalignment}^\circ$", c = "r") -plt.plot(theta_mesh, tilt_val, label = f"Tilt ${rounded_deg_misalignment}^\circ$", c = "blue") -plt.plot(theta_mesh, yaw_tilt_val, label = f"Yaw ${np.rad2deg(yaw)}^\circ$ and Tilt ${np.rad2deg(yaw)}^\circ$", c = "purple") -plt.xlabel("$\\theta$ (radians)") -plt.ylabel("$C_T$") -plt.title(f"$C_T$ of BEM Rotor at r/R ={np.round(r_mesh[0], decimals=2)}") -plt.legend() + rounded_deg_misalignment = np.round(np.rad2deg(misalignment), decimals=2) + axes[i, j].plot(theta_mesh, yaw_val, c = "r") + axes[i, j].plot(theta_mesh, tilt_val, c = "blue") + axes[i, j].plot(theta_mesh, yaw_tilt_val, c = "purple") + if i == 1: + axes[i, j].set_xlabel("$\\theta$ (radians)") + if j == 0: + axes[i, j].set_ylabel("$C_T$") + axes[i, j].set_title(f"r/R ={np.round(r_mesh[0], decimals=2)}") -print("woah") \ No newline at end of file +fig.legend( + [f"Yaw ${rounded_deg_misalignment}^\circ$", f"Tilt ${rounded_deg_misalignment}^\circ$", f"Yaw ${np.rad2deg(yaw)}^\circ$ and Tilt ${np.rad2deg(yaw)}^\circ$"], # labels + loc='lower center', + ncol=3, + bbox_to_anchor=(0.5, 0.05) +) +fig.subplots_adjust(bottom=0.2, hspace= 0.5, wspace = 0.75) +fig.suptitle("Azimuthal $C_T$ Values", size = 16) +plt.savefig(figdir / "example_4_ct_azimuthal_over_radius.png", dpi=300) diff --git a/tests/test_bem.py b/tests/test_bem.py index bc10b55..b721efd 100644 --- a/tests/test_bem.py +++ b/tests/test_bem.py @@ -1,4 +1,4 @@ -from MITRotor import BEM, IEA15MW, UnifiedMomentum +from MITRotor import BEM, IEA15MW, UnifiedMomentum, BEMGeometry from UnifiedMomentumModel.Utilities.Geometry import calc_eff_yaw import numpy as np from pytest import approx @@ -69,4 +69,37 @@ def test_model_yaw_tilt_comparison(): assert np.isclose(yaw_sol.Cl(), tilt_sol.Cl(), atol = atol) assert np.isclose(yaw_sol.Cd(), yaw_tilt_sol.Cd(), atol = atol) assert np.isclose(yaw_sol.aoa(), tilt_sol.aoa(), atol = atol) - assert np.isclose(yaw_sol.aoa(), yaw_tilt_sol.aoa(), atol = atol) \ No newline at end of file + assert np.isclose(yaw_sol.aoa(), yaw_tilt_sol.aoa(), atol = atol) + +def test_model_yaw_tilt_rotor_phase(): + Nr, Ntheta = 20, 40 + rotor = IEA15MW() + bem = BEM(rotor=rotor, momentum_model=UnifiedMomentum(averaging="rotor"), geometry = BEMGeometry(Nr=Nr, Ntheta=Ntheta)) + # solve BEM for a control set point. + yaw = np.deg2rad(20) + tilt = yaw + misalignment = calc_eff_yaw(yaw, tilt) + pitch, tsr = np.deg2rad(0), 7.0 + + yaw_sol = bem(pitch, tsr, yaw = misalignment, tilt = 0) + tilt_sol = bem(pitch, tsr, yaw = 0, tilt = misalignment) + yaw_tilt_sol = bem(pitch, tsr, yaw = yaw, tilt = tilt) + + for idx in range(5, 10): + theta_mesh = yaw_sol.geom.theta_mesh[idx, :] + yaw_val = yaw_sol.Cn(grid = "sector")[idx, :] + tilt_val = tilt_sol.Cn(grid = "sector")[idx, :] + yaw_tilt_val = yaw_tilt_sol.Cn(grid = "sector")[idx, :] + + yaw_max_idx = np.argmax(yaw_val) + tilt_max_idx = np.argmax(tilt_val) + yaw_and_tilt_max_idx = np.argmax(yaw_tilt_val) + + val_atol, deg_atol = 1e-3, 2 * np.pi / Ntheta + # all should be at a similar maximum value + assert np.isclose(yaw_val[yaw_max_idx], tilt_val[tilt_max_idx], atol = val_atol) + assert np.isclose(yaw_val[yaw_max_idx], yaw_tilt_val[yaw_and_tilt_max_idx], atol = val_atol) + # tilt and yaw should be offset by 90 degrees + assert np.isclose(np.abs(theta_mesh[yaw_max_idx] - theta_mesh[tilt_max_idx]), np.pi / 2, atol = deg_atol) + # yaw and evenly split yaw/tilt should be offset by 45 degrees + assert np.isclose(np.abs(theta_mesh[yaw_max_idx] - theta_mesh[yaw_and_tilt_max_idx]), np.pi / 4, atol = deg_atol) \ No newline at end of file From 4fcb5e22a81d62976116adf65aae4cea1107c9d0 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Wed, 29 Oct 2025 12:39:58 -0400 Subject: [PATCH 21/26] Update umm library --- poetry.lock | 126 ++++++++++++++++++++++++++-------------------------- 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/poetry.lock b/poetry.lock index c0c2239..530a638 100644 --- a/poetry.lock +++ b/poetry.lock @@ -4607,74 +4607,74 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo [[package]] name = "scipy" -version = "1.16.2" +version = "1.16.3" description = "Fundamental algorithms for scientific computing in Python" optional = false python-versions = ">=3.11" groups = ["main"] markers = "python_version >= \"3.12\"" files = [ - {file = "scipy-1.16.2-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:6ab88ea43a57da1af33292ebd04b417e8e2eaf9d5aa05700be8d6e1b6501cd92"}, - {file = "scipy-1.16.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:c95e96c7305c96ede73a7389f46ccd6c659c4da5ef1b2789466baeaed3622b6e"}, - {file = "scipy-1.16.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:87eb178db04ece7c698220d523c170125dbffebb7af0345e66c3554f6f60c173"}, - {file = "scipy-1.16.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:4e409eac067dcee96a57fbcf424c13f428037827ec7ee3cb671ff525ca4fc34d"}, - {file = "scipy-1.16.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e574be127bb760f0dad24ff6e217c80213d153058372362ccb9555a10fc5e8d2"}, - {file = "scipy-1.16.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f5db5ba6188d698ba7abab982ad6973265b74bb40a1efe1821b58c87f73892b9"}, - {file = "scipy-1.16.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec6e74c4e884104ae006d34110677bfe0098203a3fec2f3faf349f4cb05165e3"}, - {file = "scipy-1.16.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:912f46667d2d3834bc3d57361f854226475f695eb08c08a904aadb1c936b6a88"}, - {file = "scipy-1.16.2-cp311-cp311-win_amd64.whl", hash = "sha256:91e9e8a37befa5a69e9cacbe0bcb79ae5afb4a0b130fd6db6ee6cc0d491695fa"}, - {file = "scipy-1.16.2-cp311-cp311-win_arm64.whl", hash = "sha256:f3bf75a6dcecab62afde4d1f973f1692be013110cad5338007927db8da73249c"}, - {file = "scipy-1.16.2-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:89d6c100fa5c48472047632e06f0876b3c4931aac1f4291afc81a3644316bb0d"}, - {file = "scipy-1.16.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ca748936cd579d3f01928b30a17dc474550b01272d8046e3e1ee593f23620371"}, - {file = "scipy-1.16.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:fac4f8ce2ddb40e2e3d0f7ec36d2a1e7f92559a2471e59aec37bd8d9de01fec0"}, - {file = "scipy-1.16.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:033570f1dcefd79547a88e18bccacff025c8c647a330381064f561d43b821232"}, - {file = "scipy-1.16.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ea3421209bf00c8a5ef2227de496601087d8f638a2363ee09af059bd70976dc1"}, - {file = "scipy-1.16.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f66bd07ba6f84cd4a380b41d1bf3c59ea488b590a2ff96744845163309ee8e2f"}, - {file = "scipy-1.16.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e9feab931bd2aea4a23388c962df6468af3d808ddf2d40f94a81c5dc38f32ef"}, - {file = "scipy-1.16.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:03dfc75e52f72cf23ec2ced468645321407faad8f0fe7b1f5b49264adbc29cb1"}, - {file = "scipy-1.16.2-cp312-cp312-win_amd64.whl", hash = "sha256:0ce54e07bbb394b417457409a64fd015be623f36e330ac49306433ffe04bc97e"}, - {file = "scipy-1.16.2-cp312-cp312-win_arm64.whl", hash = "sha256:2a8ffaa4ac0df81a0b94577b18ee079f13fecdb924df3328fc44a7dc5ac46851"}, - {file = "scipy-1.16.2-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:84f7bf944b43e20b8a894f5fe593976926744f6c185bacfcbdfbb62736b5cc70"}, - {file = "scipy-1.16.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:5c39026d12edc826a1ef2ad35ad1e6d7f087f934bb868fc43fa3049c8b8508f9"}, - {file = "scipy-1.16.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e52729ffd45b68777c5319560014d6fd251294200625d9d70fd8626516fc49f5"}, - {file = "scipy-1.16.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:024dd4a118cccec09ca3209b7e8e614931a6ffb804b2a601839499cb88bdf925"}, - {file = "scipy-1.16.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7a5dc7ee9c33019973a470556081b0fd3c9f4c44019191039f9769183141a4d9"}, - {file = "scipy-1.16.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c2275ff105e508942f99d4e3bc56b6ef5e4b3c0af970386ca56b777608ce95b7"}, - {file = "scipy-1.16.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:af80196eaa84f033e48444d2e0786ec47d328ba00c71e4299b602235ffef9acb"}, - {file = "scipy-1.16.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9fb1eb735fe3d6ed1f89918224e3385fbf6f9e23757cacc35f9c78d3b712dd6e"}, - {file = "scipy-1.16.2-cp313-cp313-win_amd64.whl", hash = "sha256:fda714cf45ba43c9d3bae8f2585c777f64e3f89a2e073b668b32ede412d8f52c"}, - {file = "scipy-1.16.2-cp313-cp313-win_arm64.whl", hash = "sha256:2f5350da923ccfd0b00e07c3e5cfb316c1c0d6c1d864c07a72d092e9f20db104"}, - {file = "scipy-1.16.2-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:53d8d2ee29b925344c13bda64ab51785f016b1b9617849dac10897f0701b20c1"}, - {file = "scipy-1.16.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:9e05e33657efb4c6a9d23bd8300101536abd99c85cca82da0bffff8d8764d08a"}, - {file = "scipy-1.16.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:7fe65b36036357003b3ef9d37547abeefaa353b237e989c21027b8ed62b12d4f"}, - {file = "scipy-1.16.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6406d2ac6d40b861cccf57f49592f9779071655e9f75cd4f977fa0bdd09cb2e4"}, - {file = "scipy-1.16.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ff4dc42bd321991fbf611c23fc35912d690f731c9914bf3af8f417e64aca0f21"}, - {file = "scipy-1.16.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:654324826654d4d9133e10675325708fb954bc84dae6e9ad0a52e75c6b1a01d7"}, - {file = "scipy-1.16.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:63870a84cd15c44e65220eaed2dac0e8f8b26bbb991456a033c1d9abfe8a94f8"}, - {file = "scipy-1.16.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:fa01f0f6a3050fa6a9771a95d5faccc8e2f5a92b4a2e5440a0fa7264a2398472"}, - {file = "scipy-1.16.2-cp313-cp313t-win_amd64.whl", hash = "sha256:116296e89fba96f76353a8579820c2512f6e55835d3fad7780fece04367de351"}, - {file = "scipy-1.16.2-cp313-cp313t-win_arm64.whl", hash = "sha256:98e22834650be81d42982360382b43b17f7ba95e0e6993e2a4f5b9ad9283a94d"}, - {file = "scipy-1.16.2-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:567e77755019bb7461513c87f02bb73fb65b11f049aaaa8ca17cfaa5a5c45d77"}, - {file = "scipy-1.16.2-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:17d9bb346194e8967296621208fcdfd39b55498ef7d2f376884d5ac47cec1a70"}, - {file = "scipy-1.16.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:0a17541827a9b78b777d33b623a6dcfe2ef4a25806204d08ead0768f4e529a88"}, - {file = "scipy-1.16.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:d7d4c6ba016ffc0f9568d012f5f1eb77ddd99412aea121e6fa8b4c3b7cbad91f"}, - {file = "scipy-1.16.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9702c4c023227785c779cba2e1d6f7635dbb5b2e0936cdd3a4ecb98d78fd41eb"}, - {file = "scipy-1.16.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d1cdf0ac28948d225decdefcc45ad7dd91716c29ab56ef32f8e0d50657dffcc7"}, - {file = "scipy-1.16.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:70327d6aa572a17c2941cdfb20673f82e536e91850a2e4cb0c5b858b690e1548"}, - {file = "scipy-1.16.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5221c0b2a4b58aa7c4ed0387d360fd90ee9086d383bb34d9f2789fafddc8a936"}, - {file = "scipy-1.16.2-cp314-cp314-win_amd64.whl", hash = "sha256:f5a85d7b2b708025af08f060a496dd261055b617d776fc05a1a1cc69e09fe9ff"}, - {file = "scipy-1.16.2-cp314-cp314-win_arm64.whl", hash = "sha256:2cc73a33305b4b24556957d5857d6253ce1e2dcd67fa0ff46d87d1670b3e1e1d"}, - {file = "scipy-1.16.2-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:9ea2a3fed83065d77367775d689401a703d0f697420719ee10c0780bcab594d8"}, - {file = "scipy-1.16.2-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:7280d926f11ca945c3ef92ba960fa924e1465f8d07ce3a9923080363390624c4"}, - {file = "scipy-1.16.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:8afae1756f6a1fe04636407ef7dbece33d826a5d462b74f3d0eb82deabefd831"}, - {file = "scipy-1.16.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:5c66511f29aa8d233388e7416a3f20d5cae7a2744d5cee2ecd38c081f4e861b3"}, - {file = "scipy-1.16.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:efe6305aeaa0e96b0ccca5ff647a43737d9a092064a3894e46c414db84bc54ac"}, - {file = "scipy-1.16.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f3a337d9ae06a1e8d655ee9d8ecb835ea5ddcdcbd8d23012afa055ab014f374"}, - {file = "scipy-1.16.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bab3605795d269067d8ce78a910220262711b753de8913d3deeaedb5dded3bb6"}, - {file = "scipy-1.16.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b0348d8ddb55be2a844c518cd8cc8deeeb8aeba707cf834db5758fc89b476a2c"}, - {file = "scipy-1.16.2-cp314-cp314t-win_amd64.whl", hash = "sha256:26284797e38b8a75e14ea6631d29bda11e76ceaa6ddb6fdebbfe4c4d90faf2f9"}, - {file = "scipy-1.16.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d2a4472c231328d4de38d5f1f68fdd6d28a615138f842580a8a321b5845cf779"}, - {file = "scipy-1.16.2.tar.gz", hash = "sha256:af029b153d243a80afb6eabe40b0a07f8e35c9adc269c019f364ad747f826a6b"}, + {file = "scipy-1.16.3-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:40be6cf99e68b6c4321e9f8782e7d5ff8265af28ef2cd56e9c9b2638fa08ad97"}, + {file = "scipy-1.16.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:8be1ca9170fcb6223cc7c27f4305d680ded114a1567c0bd2bfcbf947d1b17511"}, + {file = "scipy-1.16.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:bea0a62734d20d67608660f69dcda23e7f90fb4ca20974ab80b6ed40df87a005"}, + {file = "scipy-1.16.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:2a207a6ce9c24f1951241f4693ede2d393f59c07abc159b2cb2be980820e01fb"}, + {file = "scipy-1.16.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:532fb5ad6a87e9e9cd9c959b106b73145a03f04c7d57ea3e6f6bb60b86ab0876"}, + {file = "scipy-1.16.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0151a0749efeaaab78711c78422d413c583b8cdd2011a3c1d6c794938ee9fdb2"}, + {file = "scipy-1.16.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b7180967113560cca57418a7bc719e30366b47959dd845a93206fbed693c867e"}, + {file = "scipy-1.16.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:deb3841c925eeddb6afc1e4e4a45e418d19ec7b87c5df177695224078e8ec733"}, + {file = "scipy-1.16.3-cp311-cp311-win_amd64.whl", hash = "sha256:53c3844d527213631e886621df5695d35e4f6a75f620dca412bcd292f6b87d78"}, + {file = "scipy-1.16.3-cp311-cp311-win_arm64.whl", hash = "sha256:9452781bd879b14b6f055b26643703551320aa8d79ae064a71df55c00286a184"}, + {file = "scipy-1.16.3-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:81fc5827606858cf71446a5e98715ba0e11f0dbc83d71c7409d05486592a45d6"}, + {file = "scipy-1.16.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:c97176013d404c7346bf57874eaac5187d969293bf40497140b0a2b2b7482e07"}, + {file = "scipy-1.16.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:2b71d93c8a9936046866acebc915e2af2e292b883ed6e2cbe5c34beb094b82d9"}, + {file = "scipy-1.16.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:3d4a07a8e785d80289dfe66b7c27d8634a773020742ec7187b85ccc4b0e7b686"}, + {file = "scipy-1.16.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0553371015692a898e1aa858fed67a3576c34edefa6b7ebdb4e9dde49ce5c203"}, + {file = "scipy-1.16.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:72d1717fd3b5e6ec747327ce9bda32d5463f472c9dce9f54499e81fbd50245a1"}, + {file = "scipy-1.16.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1fb2472e72e24d1530debe6ae078db70fb1605350c88a3d14bc401d6306dbffe"}, + {file = "scipy-1.16.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c5192722cffe15f9329a3948c4b1db789fbb1f05c97899187dcf009b283aea70"}, + {file = "scipy-1.16.3-cp312-cp312-win_amd64.whl", hash = "sha256:56edc65510d1331dae01ef9b658d428e33ed48b4f77b1d51caf479a0253f96dc"}, + {file = "scipy-1.16.3-cp312-cp312-win_arm64.whl", hash = "sha256:a8a26c78ef223d3e30920ef759e25625a0ecdd0d60e5a8818b7513c3e5384cf2"}, + {file = "scipy-1.16.3-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:d2ec56337675e61b312179a1ad124f5f570c00f920cc75e1000025451b88241c"}, + {file = "scipy-1.16.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:16b8bc35a4cc24db80a0ec836a9286d0e31b2503cb2fd7ff7fb0e0374a97081d"}, + {file = "scipy-1.16.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:5803c5fadd29de0cf27fa08ccbfe7a9e5d741bf63e4ab1085437266f12460ff9"}, + {file = "scipy-1.16.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:b81c27fc41954319a943d43b20e07c40bdcd3ff7cf013f4fb86286faefe546c4"}, + {file = "scipy-1.16.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0c3b4dd3d9b08dbce0f3440032c52e9e2ab9f96ade2d3943313dfe51a7056959"}, + {file = "scipy-1.16.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7dc1360c06535ea6116a2220f760ae572db9f661aba2d88074fe30ec2aa1ff88"}, + {file = "scipy-1.16.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:663b8d66a8748051c3ee9c96465fb417509315b99c71550fda2591d7dd634234"}, + {file = "scipy-1.16.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eab43fae33a0c39006a88096cd7b4f4ef545ea0447d250d5ac18202d40b6611d"}, + {file = "scipy-1.16.3-cp313-cp313-win_amd64.whl", hash = "sha256:062246acacbe9f8210de8e751b16fc37458213f124bef161a5a02c7a39284304"}, + {file = "scipy-1.16.3-cp313-cp313-win_arm64.whl", hash = "sha256:50a3dbf286dbc7d84f176f9a1574c705f277cb6565069f88f60db9eafdbe3ee2"}, + {file = "scipy-1.16.3-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:fb4b29f4cf8cc5a8d628bc8d8e26d12d7278cd1f219f22698a378c3d67db5e4b"}, + {file = "scipy-1.16.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:8d09d72dc92742988b0e7750bddb8060b0c7079606c0d24a8cc8e9c9c11f9079"}, + {file = "scipy-1.16.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:03192a35e661470197556de24e7cb1330d84b35b94ead65c46ad6f16f6b28f2a"}, + {file = "scipy-1.16.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:57d01cb6f85e34f0946b33caa66e892aae072b64b034183f3d87c4025802a119"}, + {file = "scipy-1.16.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:96491a6a54e995f00a28a3c3badfff58fd093bf26cd5fb34a2188c8c756a3a2c"}, + {file = "scipy-1.16.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cd13e354df9938598af2be05822c323e97132d5e6306b83a3b4ee6724c6e522e"}, + {file = "scipy-1.16.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:63d3cdacb8a824a295191a723ee5e4ea7768ca5ca5f2838532d9f2e2b3ce2135"}, + {file = "scipy-1.16.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e7efa2681ea410b10dde31a52b18b0154d66f2485328830e45fdf183af5aefc6"}, + {file = "scipy-1.16.3-cp313-cp313t-win_amd64.whl", hash = "sha256:2d1ae2cf0c350e7705168ff2429962a89ad90c2d49d1dd300686d8b2a5af22fc"}, + {file = "scipy-1.16.3-cp313-cp313t-win_arm64.whl", hash = "sha256:0c623a54f7b79dd88ef56da19bc2873afec9673a48f3b85b18e4d402bdd29a5a"}, + {file = "scipy-1.16.3-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:875555ce62743e1d54f06cdf22c1e0bc47b91130ac40fe5d783b6dfa114beeb6"}, + {file = "scipy-1.16.3-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:bb61878c18a470021fb515a843dc7a76961a8daceaaaa8bad1332f1bf4b54657"}, + {file = "scipy-1.16.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:f2622206f5559784fa5c4b53a950c3c7c1cf3e84ca1b9c4b6c03f062f289ca26"}, + {file = "scipy-1.16.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:7f68154688c515cdb541a31ef8eb66d8cd1050605be9dcd74199cbd22ac739bc"}, + {file = "scipy-1.16.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8b3c820ddb80029fe9f43d61b81d8b488d3ef8ca010d15122b152db77dc94c22"}, + {file = "scipy-1.16.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d3837938ae715fc0fe3c39c0202de3a8853aff22ca66781ddc2ade7554b7e2cc"}, + {file = "scipy-1.16.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:aadd23f98f9cb069b3bd64ddc900c4d277778242e961751f77a8cb5c4b946fb0"}, + {file = "scipy-1.16.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b7c5f1bda1354d6a19bc6af73a649f8285ca63ac6b52e64e658a5a11d4d69800"}, + {file = "scipy-1.16.3-cp314-cp314-win_amd64.whl", hash = "sha256:e5d42a9472e7579e473879a1990327830493a7047506d58d73fc429b84c1d49d"}, + {file = "scipy-1.16.3-cp314-cp314-win_arm64.whl", hash = "sha256:6020470b9d00245926f2d5bb93b119ca0340f0d564eb6fbaad843eaebf9d690f"}, + {file = "scipy-1.16.3-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:e1d27cbcb4602680a49d787d90664fa4974063ac9d4134813332a8c53dbe667c"}, + {file = "scipy-1.16.3-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:9b9c9c07b6d56a35777a1b4cc8966118fb16cfd8daf6743867d17d36cfad2d40"}, + {file = "scipy-1.16.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:3a4c460301fb2cffb7f88528f30b3127742cff583603aa7dc964a52c463b385d"}, + {file = "scipy-1.16.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:f667a4542cc8917af1db06366d3f78a5c8e83badd56409f94d1eac8d8d9133fa"}, + {file = "scipy-1.16.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f379b54b77a597aa7ee5e697df0d66903e41b9c85a6dd7946159e356319158e8"}, + {file = "scipy-1.16.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4aff59800a3b7f786b70bfd6ab551001cb553244988d7d6b8299cb1ea653b353"}, + {file = "scipy-1.16.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:da7763f55885045036fabcebd80144b757d3db06ab0861415d1c3b7c69042146"}, + {file = "scipy-1.16.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ffa6eea95283b2b8079b821dc11f50a17d0571c92b43e2b5b12764dc5f9b285d"}, + {file = "scipy-1.16.3-cp314-cp314t-win_amd64.whl", hash = "sha256:d9f48cafc7ce94cf9b15c6bffdc443a81a27bf7075cf2dcd5c8b40f85d10c4e7"}, + {file = "scipy-1.16.3-cp314-cp314t-win_arm64.whl", hash = "sha256:21d9d6b197227a12dcbf9633320a4e34c6b0e51c57268df255a0942983bac562"}, + {file = "scipy-1.16.3.tar.gz", hash = "sha256:01e87659402762f43bd2fee13370553a17ada367d42e7487800bf2916535aecb"}, ] [package.dependencies] @@ -5105,7 +5105,7 @@ figures = ["dualitic @ git+https://github.com/jaimeliew1/Dualitic.git", "ipykern type = "git" url = "https://github.com/Howland-Lab/Unified-Momentum-Model.git" reference = "sg/curled_wave_dev" -resolved_reference = "c1448896cc66ba8dcb2a0e94e709ecc4f5a7b760" +resolved_reference = "08e701a038e04f87e61b7f57dbe03f22500f9224" [[package]] name = "uri-template" From 12f587abb4e871c8ff348203adc06c60f48a47e6 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Wed, 29 Oct 2025 13:13:23 -0400 Subject: [PATCH 22/26] Update UMM compatibility --- poetry.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index 530a638..ea0a7c0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -5105,7 +5105,7 @@ figures = ["dualitic @ git+https://github.com/jaimeliew1/Dualitic.git", "ipykern type = "git" url = "https://github.com/Howland-Lab/Unified-Momentum-Model.git" reference = "sg/curled_wave_dev" -resolved_reference = "08e701a038e04f87e61b7f57dbe03f22500f9224" +resolved_reference = "75226c89439f4c57a6f26ac2354493ea33cd8c24" [[package]] name = "uri-template" From 08058bbe18f389926e715e1e9a12a1003f258286 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Wed, 29 Oct 2025 21:50:17 -0400 Subject: [PATCH 23/26] Update UMM version for cleanup --- poetry.lock | 6 +++--- pyproject.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index ea0a7c0..020ab8b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -5104,8 +5104,8 @@ figures = ["dualitic @ git+https://github.com/jaimeliew1/Dualitic.git", "ipykern [package.source] type = "git" url = "https://github.com/Howland-Lab/Unified-Momentum-Model.git" -reference = "sg/curled_wave_dev" -resolved_reference = "75226c89439f4c57a6f26ac2354493ea33cd8c24" +reference = "sg/curled_fix_args" +resolved_reference = "1213cbf41786834b35cbce21fcfb2f5601c41167" [[package]] name = "uri-template" @@ -5286,4 +5286,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = "^3.8" -content-hash = "2712c9679bfd6da3d38d01cceddf5b9d91371a3410ff496e5a3aab55c518113a" +content-hash = "a2e008ad6b9a3ba6d17c7c0830aa478c563bd4293fa2ff32f76b16de5a98749a" diff --git a/pyproject.toml b/pyproject.toml index 2d62bdd..7d9efd3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ packages = [{ include = "MITRotor" }] python = "^3.8" numpy = ">=1.16.5" scipy = ">=1.6" -unified-momentum-model = {git = "https://github.com/Howland-Lab/Unified-Momentum-Model.git", branch = "sg/curled_wave_dev"} +unified-momentum-model = {git = "https://github.com/Howland-Lab/Unified-Momentum-Model.git", branch = "sg/curled_fix_args"} pyyaml = "^6.0.1" [tool.poetry.group.dev.dependencies] From fee390bbe53d1b10f2e7311791a094f5d0b1c8fc Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Wed, 29 Oct 2025 22:25:03 -0400 Subject: [PATCH 24/26] Update UMM package dependency --- poetry.lock | 6 +++--- pyproject.toml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 020ab8b..5ab5738 100644 --- a/poetry.lock +++ b/poetry.lock @@ -5104,8 +5104,8 @@ figures = ["dualitic @ git+https://github.com/jaimeliew1/Dualitic.git", "ipykern [package.source] type = "git" url = "https://github.com/Howland-Lab/Unified-Momentum-Model.git" -reference = "sg/curled_fix_args" -resolved_reference = "1213cbf41786834b35cbce21fcfb2f5601c41167" +reference = "HEAD" +resolved_reference = "e55945a541db1a88d70b34f408dbf26a772f1c2c" [[package]] name = "uri-template" @@ -5286,4 +5286,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = "^3.8" -content-hash = "a2e008ad6b9a3ba6d17c7c0830aa478c563bd4293fa2ff32f76b16de5a98749a" +content-hash = "17b60b7f0f84b1543ebe4b7a60a1d2f82c598c22c88d20bcce764e657d644611" diff --git a/pyproject.toml b/pyproject.toml index 7d9efd3..efbf767 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "MITRotor" -version = "0.1.1" +version = "0.2.1" description = "" authors = ["Jaime Liew "] readme = "README.md" @@ -10,7 +10,7 @@ packages = [{ include = "MITRotor" }] python = "^3.8" numpy = ">=1.16.5" scipy = ">=1.6" -unified-momentum-model = {git = "https://github.com/Howland-Lab/Unified-Momentum-Model.git", branch = "sg/curled_fix_args"} +unified-momentum-model = {git = "https://github.com/Howland-Lab/Unified-Momentum-Model.git"} pyyaml = "^6.0.1" [tool.poetry.group.dev.dependencies] From 08eba32f537aaa6656e87e685196b913f152276e Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Wed, 29 Oct 2025 22:36:54 -0400 Subject: [PATCH 25/26] Add in tilt info to quick start guide --- examples/MITRotor_quickstart.ipynb | 87 +++++++++++++++++++++++------- 1 file changed, 69 insertions(+), 18 deletions(-) diff --git a/examples/MITRotor_quickstart.ipynb b/examples/MITRotor_quickstart.ipynb index 499b920..71288d7 100644 --- a/examples/MITRotor_quickstart.ipynb +++ b/examples/MITRotor_quickstart.ipynb @@ -13,14 +13,14 @@ "source": [ "`MITRotor` is used for setting up and solving customizable blade element models (BEMs). These models can either be solved on their own, or used within the `MITWindfarm` package to explore various wind farm dynamics. `MITRotor` allows the user to specify rotor definition, geometry, aerodynamic properties, tip loss method, axial induction calculation method, and tangential induction calculation method.\n", "\n", - "The two most important classes for a user are the `BEM` class and the `BEMSolution` class. The `BEM` class allows the user to build a BEM, which then calculates a `BEMSolution` when given the arguments `pitch`, `tsr`, and `yaw`. We will start this tutorial with initializing a `BEM` object.\n", + "The two most important classes for a user are the `BEM` class and the `BEMSolution` class. The `BEM` class allows the user to build a BEM, which then calculates a `BEMSolution` when given the arguments `pitch`, `tsr`, `yaw`, and `tilt`. We will start this tutorial with initializing a `BEM` object.\n", "\n", "Start with installing the code from GitHub. In order to run the notebook below, you will need to install `MITRotor`. Then import the code as follows:" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -36,7 +36,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -63,7 +63,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -94,7 +94,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -119,7 +119,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -154,12 +154,14 @@ "\n", "The `HeckMomentum` model with default arguments is provided to the `BEM` as the momentum model if the user doesn't provide one.\n", "\n", + "**Note: If you wish to solve a problem with non-zero tilt, you must use the `UnifiedMomentum` model.**\n", + "\n", "Here we show an example of the `UnifiedMomentum` model:" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -182,7 +184,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -200,12 +202,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "There are two options for aerodynamic models, `KraghAerodynamics` and `DefaultAerodynamics`, both of which are concrete subtypes of the `AerodynamicModel` class. They do not take any arguments, and are called internally to get the needed `AerodynamicProperties` for our calculations. As the name suggests, `DefaultAerodynamics` is the default for the BEM unless otherwise specified. The `KraghAerodynamics` class is based off the model in the 2014 paper: [Load alleviation of wind turbines by yaw misalignment](https://doi.org/10.1002/we.1612)." + "There are two options for aerodynamic models, `KraghAerodynamics` and `DefaultAerodynamics`, both of which are concrete subtypes of the `AerodynamicModel` class. They do not take any arguments, and are called internally to get the needed `AerodynamicProperties` for our calculations. As the name suggests, `DefaultAerodynamics` is the default for the BEM unless otherwise specified. The `KraghAerodynamics` class is based off the model in the 2014 paper: [Load alleviation of wind turbines by yaw misalignment](https://doi.org/10.1002/we.1612).\n", + "\n", + "**Note: If you wish to solve a problem with non-zero tilt, you must use the `DefaultAerodynamics` model.**" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -224,7 +228,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -249,14 +253,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now that we have defined a BEM model, we can solve for a `BEMSolution`. You can pass `pitch`, tip speed ratio (`tsr`), and `yaw` to the `BEM` model. This call will return a `BEMSolution`. Here we examine the solution for BEM created above with $0^\\circ$ pitch, a value of 7 for the tip speed ratio, and $20^\\circ$ yaw. For more information on what information can be retrieved from a `BEMSolution`, see the `BEMSolver.py` file." + "Now that we have defined a BEM model, we can solve for a `BEMSolution`. You can pass `pitch`, tip speed ratio (`tsr`), `yaw`, and `tilt` to the `BEM` model (note that for non-zero tilt the momentum model must be `UnifiedMomentum` and the aerodynamic model must be `DefaultAerodynamics`). This call will return a `BEMSolution`. Here we examine the solution for BEM created above with $0^\\circ$ pitch, a value of 7 for the tip speed ratio, and $20^\\circ$ yaw. For more information on what information can be retrieved from a `BEMSolution`, see the `BEMSolver.py` file." ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "BEM solution converged in 18 iterations.\n", + "Control setpoints: sol.pitch=0.00, sol.tsr=7.00, sol.yaw=0.35\n", + "Power coefficient: 0.39\n", + "Thrust coefficient: 0.60\n", + "Local thrust coefficient: 1.17\n", + "Axial induction: 0.24\n", + "Rotor-effective windspeed: 1.00\n", + "Far-wake streamwise velocity: 0.64\n", + "Far-wake lateral velocity: -0.05\n" + ] + } + ], "source": [ "pitch, tsr, yaw = np.deg2rad(0), 7.0, np.deg2rad(20.0)\n", "sol = bem_model(pitch, tsr, yaw)\n", @@ -286,9 +306,40 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "<>:7: SyntaxWarning: invalid escape sequence '\\m'\n", + "<>:7: SyntaxWarning: invalid escape sequence '\\m'\n", + "/var/folders/dt/wzb0_01j5yz8q2y9bz5sfjm00000gn/T/ipykernel_16176/2546713841.py:7: SyntaxWarning: invalid escape sequence '\\m'\n", + " axes[-1].set_xlabel(\"Radial position, $\\mu$ [-]\")\n" + ] + }, + { + "data": { + "text/plain": [ + "(0.0, 1.0)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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WCQ9acHsxAAAAGCWSfyWLFlCGzduFFUa7owseeihhzT3e/ToQT179qSoqCix3ahRo657n7lz54p+P/VnOAQAAAAwqHLj7+9PDg4OlJWVpbOeHwcFBTX52hUrVohws337dhFemtKhQwfxs5KSkhp83tnZWTMbMWYlBgAAgBaHG4VCQX379hXNRxLuUMyPBw0a1Ojrli1bRosWLaKtW7dSv379mv05ly5dEn1ugoODDdk9AAAAAMOHgnNzEM9ds2HDBjpz5ozo/FtaWkpTp04Vz/MIKG42knAfmtdff53Wr18v5sbhvjm8lJSUiOf59sUXX6Q//viDUlNTRVAaO3YsRUdHiyHmAAAAACbtczN+/HjKycmhefPmiZDSq1cvUZGROhmnpaWJEVSSNWvWiFFW999/v8778Dw5CxYsEM1cf//9twhLPBycOxvzPDhc6eHmJwAAAACTznNjiTDPDQAAgPUpsoR5bgAAAAAsHcINAAAAyArCDQAAAMgKwg0AAADICsINAAAAyArCDQAAAMgKwg0AAADICsINAAAAyArCDQAAAMgKwg0AAADICsINAAAAyArCDQAAAMgKwg0AAADICsINAAAAyArCDQAAAMgKwg0AAADICsINAAAAyArCDQAAAMgKwg0AAADICsINAAAAyArCDQAAAMgKwg0AAADICsINAAAAyArCDQAAAMgKwg0AAADICsINAAAAyArCDQAAAMgKwg0AAADICsINAAAAyArCDQAAAMgKwg0AAADISovCTXx8PEVERJCLiwvFxsbS4cOHG9123bp1NGzYMPLx8RHL6NGjm9x+2rRpZGdnRytXrmzJrgEAAICNMzjcbNq0iWbPnk3z58+no0ePUkxMDMXFxVF2dnaD2+/evZsmTJhAu3btooMHD1JYWBiNGTOGLl++fN22W7ZsoT/++INCQkJa9tsAAACAzbNTqVQqQ44CV2r69+9Pq1evFo+VSqUILLNmzaI5c+Y0+/ra2lpRweHXT5o0SbOeww6/97Zt2+iOO+6gZ599ViwNqaysFIukqKhI7ENhYSF5eXnZ/EkFAACwBvz57e3tbfTPb4MqN1VVVZSQkCCaljRvYG8vHnNVRh9lZWVUXV1Nvr6+mnUckB555BF68cUXqVu3bs2+x+LFi8XBkBYONgAAAADM0ZDDkJubKyovgYGBOuv58dmzZ/V6j5df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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "fig, axes = plt.subplots(3, 1, sharex=True)\n", "axes[0].plot(sol.geom.mu, sol.Cp(grid=\"annulus\"), label=\"$C_P$\")\n", From 496bfe9ca3ce708d30e8edc2a56124851051f2a8 Mon Sep 17 00:00:00 2001 From: Skylar Gering Date: Wed, 29 Oct 2025 22:55:12 -0400 Subject: [PATCH 26/26] Final cleanup --- MITRotor/Momentum.py | 8 ++++---- examples/example_01_basic_BEM.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/MITRotor/Momentum.py b/MITRotor/Momentum.py index 0bdf2a3..7f1dd1a 100644 --- a/MITRotor/Momentum.py +++ b/MITRotor/Momentum.py @@ -239,12 +239,12 @@ def __init__(self, averaging: Literal["sector", "annulus", "rotor"] = "rotor", b self.model_Ct = UMM.ThrustBasedUnified(beta=beta) - def compute_induction(self, *args, **kwargs) -> ArrayLike: - sol = self.model_Ct(*args, **kwargs) + def compute_induction(self, Cx: ArrayLike, yaw: float = 0.0, tilt: float = 0.0) -> ArrayLike: + sol = self.model_Ct(Cx, yaw = yaw, tilt = tilt) return sol.an - def compute_initial_wake_velocities(self, *args, **kwargs) -> ArrayLike: - sol = self.model_Ct(*args, **kwargs) + def compute_initial_wake_velocities(self, Cx: ArrayLike, yaw: float = 0.0, tilt: float = 0.0) -> ArrayLike: + sol = self.model_Ct(Cx, yaw = yaw, tilt = tilt) return sol.u4, sol.v4, sol.w4 diff --git a/examples/example_01_basic_BEM.py b/examples/example_01_basic_BEM.py index 7c05989..0d0168c 100644 --- a/examples/example_01_basic_BEM.py +++ b/examples/example_01_basic_BEM.py @@ -1,6 +1,6 @@ import numpy as np -from MITRotor import BEM, IEA10MW, UnifiedMomentum, IEA15MW +from MITRotor import BEM, IEA10MW if __name__ == "__main__": # Initialize rotor using the IEA10MW reference wind turbine model.